所以我对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>
所以我的动作文件,form.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();
?>
但每次我填写表格并点击提交时,我都会收到以下消息: 无法发布/form.php。
我从以下视频(https://www.youtube.com/watch?v=wp6Ngpk5XiY&index=2&list=PL530D33D6E548481F)获取此代码,这非常有用。但我真的无法连接。我在我的数据库上创建了我的表,包含所有正确的列。 我使用phpMyAdmin。
非常感谢能够提供帮助的人! :)
答案 0 :(得分:2)
让我们在这里概述错误。
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 - Hendra Nucleo
应该是password
而不是password1
。
最好使用正确的参考文献http://dev.mysql.com/doc/en/insert.html并使用PDO或prepared statements切换到mysqli_*
with prepared statements,因为mysql_*
函数已弃用。官方手册是最好的参考。
那个教程可能没有提到SQL injection的任何内容,所以这本身就是一个很好的阅读。
它也没有提到密码的任何内容。
我注意到您可能以纯文本格式存储密码。不建议这样做。
使用以下其中一项:
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接:
关于列长的重要说明:
如果您决定使用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(); }
答案 1 :(得分:0)
是的,@ gmiley提出了一个很好的问题,检查是否可以使用输入,而是使用insert查询和单个语句中的所有值。对于语法,您可以参考以下链接:http://www.w3schools.com/sql/sql_insert.asp