PHP&MYSQL:注册/创建帐户
我也有使用数据库注册的代码。当我在表单中输入信息并提交时,什么都没有发生。任何帮助都将不胜感激!谢谢 -在我解决这个问题后,希望我能登录 register.phpPHP&MYSQL:注册/创建帐户,php,mysql,Php,Mysql,我也有使用数据库注册的代码。当我在表单中输入信息并提交时,什么都没有发生。任何帮助都将不胜感激!谢谢 -在我解决这个问题后,希望我能登录 register.php <!doctype html> <html> <head> <title>Register</title> </head> <body> <p><a href="register.php">Register</a>
<!doctype html>
<html>
<head>
<title>Register</title>
</head>
<body>
<p><a href="register.php">Register</a> | <a href="login.php">Login</a></p>
<h3>Registration Form</h3>
<form action="" method="POST">
Username: <input type="text" name="user"><br />
Password: <input type="password" name="pass"><br />
<input type="submit" value="Register" name="submit" />
</form>
<?php
if(isset($_POST["submit"])){
if(!empty($_POST['user']) && !empty($_POST['pass'])) {
$user=$_POST['user'];
$pass=$_POST['pass'];
$con=mysqli_connect('localhost','root','') or die(mysqli_error());
mysqli_select_db('database') or die("cannot select DB");
$query=mysqli_query("SELECT * FROM login WHERE username='".$user."'");
$numrows=mysqli_num_rows($query);
if($numrows==0)
{
$sql="INSERT INTO login(username,password) VALUES('$user','$pass')";
$result=mysqli_query($sql);
if($result){
echo "Account Successfully Created";
} else {
echo "Failure!";
}
} else {
echo "That username already exists! Please try again with another.";
}
} else {
echo "All fields are required!";
}
}
?>
</body>
</html>
请阅读以下两方面的手册: mysqli_select_db=> mysqli_查询=> 这就是你的代码失败的原因。两者都需要一个db连接,作为第一个参数,它们都在那里 另外,mysqli_错误还要求将db connection作为参数传递 mysqli_错误=> 同时检查查询中的错误;你没那么做 请注意您的连接 实际上,您可以完全摆脱mysqli_select_db,只需使用mysqli_connect中的所有4个参数: 手册中的示例:
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
密码
我还注意到,您可能正在以纯文本形式存储密码。不建议这样做
使用以下选项之一:
PHP5.5的函数。
PHP<5.5时的兼容性包
关于列长度的重要旁注:
如果您决定使用password_hash或兼容包(如果PHP<5.5),请务必注意,如果当前密码列的长度小于60,则需要将其更改为该长度或更高的长度。手册建议长度为255
您需要更改列的长度,并使用新的哈希重新开始,以使其生效。否则,MySQL将以静默方式失败
其他相关链接:
请阅读以下两方面的手册: mysqli_select_db=> mysqli_查询=> 这就是你的代码失败的原因。两者都需要一个db连接,作为第一个参数,它们都在那里 另外,mysqli_错误还要求将db connection作为参数传递 mysqli_错误=> 同时检查查询中的错误;你没那么做 请注意您的连接 实际上,您可以完全摆脱mysqli_select_db,只需使用mysqli_connect中的所有4个参数: 手册中的示例:
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
密码
我还注意到,您可能正在以纯文本形式存储密码。不建议这样做
使用以下选项之一:
PHP5.5的函数。
PHP<5.5时的兼容性包
关于列长度的重要旁注:
如果您决定使用password_hash或兼容包(如果PHP<5.5),请务必注意,如果当前密码列的长度小于60,则需要将其更改为该长度或更高的长度。手册建议长度为255
您需要更改列的长度,并使用新的哈希重新开始,以使其生效。否则,MySQL将以静默方式失败
其他相关链接:
你很容易被黑客攻击,你又害怕手册了,你做错事了你忘了在你的action属性中输入一个值:action=我假设你想把它发送到同一个页面,所以我建议使用action=并且我强烈建议阅读Fred-ii-发布的手册,考虑到你的代码极易被黑客攻击。@Webeng很好地指出,^他们打算将其作为自己使用,但使用htmlspecialchars$_服务器[PHP_self]更好。是的,XSS攻击非常常见,和一个简单的http://www.example.com/alert在url中写入“hello”以进入该网站已经会导致漏洞。您的网站很容易被黑客攻击,再次害怕手册,您这样做是错误的您忘记在操作属性中输入值:action=我假设您希望将其发送到同一页面,因此,我建议使用action=并且我强烈建议阅读Fred-ii发布的手册,因为您的代码极易被黑客攻击。@Webeng很好地指出,^他们打算将其用作self,但使用htmlspecialchars$_服务器[PHP_self]更好。是的,XSS攻击非常常见,和一个简单的http://www.example.com/alert在url中写入“hello”以进入该网站已经会导致违规。这是一个相当多的建议密码系统列表,但密码\u散列应为1,其余的仅基于需要知道的基础。这是唯一一个在不需要大量专业知识的情况下工作可靠的工具。你说得对@tadman,我已经做了编辑。谢谢你的反馈,谢谢这是一个推荐密码系统的列表,但是密码散列应该是1,其余的都是在需要知道的基础上。这是唯一一个在不需要大量专业知识的情况下工作可靠的工具。你说得对@tadman,我已经做了编辑。谢谢你的反馈,干杯