php – 检查数据库上的用户名和密码(包含脚本)
发布时间:2020-12-13 13:20:09 所属栏目:PHP教程 来源:网络整理
导读:我发布了我的问题 here,在我编辑帖子之前它已经关闭,因为这不是一个真正的问题! 我有一个这样的登录表单: html head titlePassword Checking Script/title /head body form action="check_user-pass.php" method="POST" h3Please Login/h3 User Name: inpu
我发布了我的问题
here,在我编辑帖子之前它已经关闭,因为这不是一个真正的问题!
我有一个这样的登录表单: <html> <head> <title>Password Checking Script</title> </head> <body> <form action="check_user-pass.php" method="POST"> <h3>Please Login</h3> User Name: <input type="text" name="user_name"><br> Password: <input type="password" name="password"> <input type="submit" name="submit" value="Login!"> </form> </body> </html> 如您所见,此表单通过check_user-pass.php对用户进行身份验证. 所以我的问题是:我应该在check_user-pass.php中包含哪些代码? <?php ob_start(); $host=""; // Host name $username=""; // Mysql username $password=""; // Mysql password $db_name=""; // Database name $tbl_name=""; // Table name // Connect to server and select databse. mysql_connect("$host","$username","$password") or die(mysql_error()); echo "Connected to MySQL<br />"; mysql_select_db("$db_name") or die(mysql_error()); echo "Connected to Database<br />"; // Check $username and $password /* if(empty($_POST['username'])) { echo "UserName/Password is empty!"; return false; } if(empty($_POST['password'])) { echo "Password is empty!"; return false; } */ // Define $username and $password $username=$_POST['username']; $password=md5($_POST['pass']); // To protect MySQL injection (more detail about MySQL injection) $username = stripslashes($username); $password = stripslashes($password); $username = mysql_real_escape_string($username); $password = mysql_real_escape_string($password); $sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $username and $password,table row must be 1 row if ($count==1) { echo "Success! $count"; } else { echo "Unsuccessful! $count"; } ob_end_flush(); ?>
您的表单中的名称是user_name,但在您的脚本中,您需要查找用户名
$username=$_POST['username']; 应该 $username=$_POST['user_name']; 编辑: $sql="SELECT * FROM $tbl_name WHERE username='$username'"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $username and $password,table row must be 1 row if($count==1){ $row = mysql_fetch_assoc($result); if (crypt($password,$row['password']) == $row['password']){ session_register("username"); session_register("password"); echo "Login Successful"; return true; } else { echo "Wrong Username or Password"; return false; } } else{ echo "Wrong Username or Password"; return false; } 编辑: $sql="SELECT * FROM $tbl_name WHERE username='$username'"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $username and $password,table row must be 1 row if($count==1){ $row = mysql_fetch_assoc($result); if (md5(md5($row['salt']).md5($password)) == $row['password']){ session_register("username"); session_register("password"); echo "Login Successful"; return true; } else { echo "Wrong Username or Password"; return false; } } else{ echo "Wrong Username or Password"; return false; } 此外,散列是一种方法,因此您无法获取数据库中已有的密码,您只需让用户更改/更新其密码即可.如果以上工作,那么你就不必关闭加密,一切都应该没问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |