HTML 中的 PHP 表单,无法连接


PHP form in HTML, won't connect

所以我对PHP和数据库很陌生,所以请放纵! :)

我在 HTML 文件中创建了一个简单的表单:

<h1> Créez votre compte ici</h1>
<form action="form.php" method="post">
<p id="textdone"> </p>
<input type= "text" name="Surname" autocomplete="on" placeholder="Votre nom" required/> <br> <br>
<input type= "text" name="Name" autocomplete="on" placeholder ="Votre prenom" required/> <br> <br>
<input type= "email" name="Email" autocomplete="on" placeholder ="Adresse mail" required/> <br><br>
<input type= "text" name="Pseudo" autocomplete="off" placeholder ="Votre pseudo" maxlength="20" required/> <br>
<p>Ajoutez une photo de profil: <input type= "file" /> <br><br></p>
<p> Entrez un mot de passe: <input type="Password" name="Passwird" autocomplete="off"  maxlength="20" required placeholder="Mot de passe"/> <br><br>
Validez votre mot de passe: <input type="password1" autocomplete="off"  maxlength="20" required placeholder="Mot de passe"/> <br><br>
    </p>
<input type="submit" value="Soumettre"/>
</form>
    </body>

所以我的操作文件,表单.php文件,保存在同一个文件夹中(我确保)如下:

<?php
define('DB_NAME', 'Matchy');
define('DB_USER', 'root@localhost');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link){
    die('Could not connect: ' .mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
if (!$db_selected){
    die('Can''t use' . DB_NAME. ':'. mysql_error());
}
echo 'Successful connection';
$surname = $_POST['Surname'];
$name = $_POST['Name'];
$email = $_POST['Email'];
$pseudo = $_POST['Pseudo'];
$password = $_POST['Password'];
$sql = "INPUT INTO users (Name) VALUES ('$name')";
$sql1 = "INPUT INTO users (Surname) VALUES ('$surname')";
$sql2 = "INPUT INTO users (Pseudo) VALUES ('$pseudo')";
$sql3 = "INPUT INTO users (Email) VALUES ('$email')";
$sql4 = "INPUT INTO users (Password) VALUES ('$password')";
if (!mysql_query($sql)) {
    die ('Error: ' .mysql_error());
}
if (!mysql_query($sql1)) {
    die ('Error: ' .mysql_error());
}
if (!mysql_query($sql2)) {
    die ('Error: ' .mysql_error());
}
if (!mysql_query($sql3)) {
    die ('Error: ' .mysql_error());
}
if (!mysql_query($sql4)) {
    die ('Error: ' .mysql_error());
}
mysql_close();
?>

但是每次我填写表格并点击提交时,我都会收到以下消息:无法发布/表单.php。

我从以下视频(https://www.youtube.com/watch?v=wp6Ngpk5XiY&index=2&list=PL530D33D6E548481F)中获得了此代码,该视频非常有用。但我真的无法连接。我在数据库上创建了表,其中包含所有正确的列。我使用phpMyAdmin。

非常感谢任何可以提供帮助的人!! :)

让我们在这里概述一下错误。

INPUT INTO不是有效的 MySQL 表达式,语法INSERT INTO

然后你有不匹配的name="Passwird"$_POST['Password']和错误报告,http://php.net/manual/en/function.error-reporting.php 会告诉你的。

然后正如另一位成员的评论中所概述的那样:

<input type="password1" autocomplete="off" maxlength="20" required placeholder="Mot de passe"/>这个也没有提供爱。无输入类型密码1 – 亨德拉核

应该password而不是password1.

最好使用正确的官方引用 http://dev.mysql.com/doc/en/insert.html,并使用预准备语句切换到 PDO mysqli_*,或使用预准备语句切换到 PDO,因为mysql_*函数已弃用。官方手册是最好的参考。

  • 他们不会引导你错;-)

该教程可能没有提到任何关于SQL注入的内容,因此这本身就是一个很好的阅读。

它也没有提到任何关于密码的内容。

我注意到您可能以纯文本形式存储密码。不建议这样做。

使用以下方法之一:

  • CRYPT_BLOWFISH
  • crypt()
  • bcrypt()
  • scrypt()
  • 在开墙上
  • PBKDF2
  • PBKDF2 on PHP.net
  • PHP 5.5 的password_hash()函数。
  • 兼容包(如果 PHP <5.5)https://github.com/ircmaxell/password_compat/

其他链接:

  • PBKDF2 for PHP

关于列长的重要旁注:

如果您决定使用 password_hash() 或兼容包(如果 PHP <5.5)https://github.com/ircmaxell/password_compat/,请务必注意,如果您当前密码列的长度小于 60,则需要将其更改为该长度(或更高)。手册建议长度为 255。

您需要更改列的长度并使用新的哈希重新开始才能使其生效。否则,MySQL 将以静默方式失败。


编辑:

整个代码块可以很容易地在几行中完成,例如,没有对同一个表进行如此多的调用:

$sql = mysql_query("
        INSERT INTO users (Name, Surname, Pseudo, Email, Password) 
        VALUES ('$name', '$surname', '$pseudo', '$email', '$password')
        ");
if($sql){
echo "Success!";
}
else { "Error: " . mysql_error(); }

是的,@gmiley提出了一个很好的问题,请检查您是否可以使用输入,而是在单个语句中使用包含所有值的插入查询。有关语法,您可以参考以下链接:http://www.w3schools.com/sql/sql_insert.asp