所以我对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