所以我正在尝试创建这个表单,每次我尝试创建一个虚拟用户时,它会在数据库中创建一个empy。
这是php代码 create.php :
<?php
session_start();
include ('connection.php');
$username = $_POST['usernamesignup'];
$email = $_POST['emailsignup'];
$password = $_POST['passwordsignup'];
mysql_query("INSERT INTO users (usernamesignup, passwordsignup, emailsignup)
VALUES ('$username', '$password', '$email')")or die (mysql_error());
header('Location: login.html');
mysql_close($db);
?>
以下是 Login.html 形式的部分:
<form action="create.php" autocomplete="on">
<h1> Sign up </h1>
<p><label for="usernamesignup" class="uname" data-icon="u">Your username</label>
<input id="usernamesignup" name="usernamesignup" required="required" type="text" placeholder="mysuperusername690" /></p>
<p><label for="emailsignup" class="youmail" data-icon="e" > Your email</label>
<input id="emailsignup" name="emailsignup" required="required" type="email" placeholder="mysupermail@mail.com"/></p>
<p><label for="passwordsignup" class="youpasswd" data-icon="p">Your password </label>
<input id="passwordsignup" name="passwordsignup" required="required" type="password" placeholder="eg. X8df!90EO"/></p>
<p><label for="passwordsignup_confirm" class="youpasswd" data-icon="p">Please confirm your password </label>
<input id="passwordsignup_confirm" name="passwordsignup_confirm" required="required" type="password" placeholder="eg. X8df!90EO"/></p>
<p class="signin button"><input type="submit" value="Sign up"/></p>
<p class="change_link">Already a member?<a href="#tologin" class="to_register"> Go and log in </a></p>
</form>
非常感谢任何帮助。
编辑:添加方法:“post”成功了。非常感谢大家的快速响应以及关于安全性的非常有效的建议,以及我应该如何更改为更新的形式而不是我在这里使用的形式。
答案 0 :(得分:2)
您需要在您的案例中指定POST方式。尝试
<form action="create.php" autocomplete="on" method="POST">
答案 1 :(得分:1)
您必须检查表单发送的值是否为空或字符串为空。请小心你的代码容易受到sql注入,并在sha512或类似的东西中哈希你的密码。
查看此功能:http://php.net/manual/en/function.empty.php
并尝试在表单中添加:
<form action="create.php" autocomplete="on" method="post">
答案 2 :(得分:1)
尝试将此添加到您的表单标记
method='post'
答案 3 :(得分:0)
表单的默认方法是GET,你试图从POST获取你的值,所以它们是空的......
你应该这样做:
$password = $_GET['password'];
// etc.
或者,如果您不知道:
$password = $_REQUEST['password'];
// etc.
答案 4 :(得分:0)
请考虑加入<form action="create.php" autocomplete="on" method="POST">
PDO
代替mysql_*
见这里:http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
答案 5 :(得分:0)
我建议你使用mysqli类。我自己在较小的项目中使用过这个:https://github.com/ajillion/PHP-MySQLi-Database-Class
您的代码中缺少“表单验证”。如果您将验证正确地集成到表单和后端代码中,这可以防止空表和恶意表单提交
如何确保在特定字段中输入数据的简单示例,请尝试以下操作:
<?php
if (empty($_POST['usernamesignup']), empty($_POST['...']))
{
echo 'Not all required data was submitted';
}
else
{
// Process the form, all data was received
}
4。你考虑过使用php框架吗?如果您想要更先进和可用的东西,请尝试Codeigniter或Laravel之类的内容。