当前位置:  开发笔记 > 编程语言 > 正文

如何在PHP/MySQL中验证用户?

如何解决《如何在PHP/MySQL中验证用户?》经验,为你挑选了2个好方法。

最近我学会了如何正确地为数据库添加用户名和密码.我的数据库是usersys,存储用户信息的表称为userdb.该表有两列 - 用户名(主要),密码.

注册表格运行良好,正确地将用户输入输入到数据库中,并检查用户的用户名是否已经在数据库中.

话虽如此,我问是否有人可以帮助我创建一个登录脚本.到目前为止,这就是我所拥有的:

$username = $_POST['username'];
$password = $_POST['password'];
$displayname = $_POST['username'];
$displayname = strtolower($displayname);
$displayname = ucfirst($displayname);           
echo "Your username: " . $displayname . "
"; mysql_connect("localhost", "root", "******") or die(mysql_error()); echo "Connected to MySQL
"; mysql_select_db("usersys") or die(mysql_error()); echo "Connected to Database
"; $lcusername = strtolower($username); $esclcusername = mysql_real_escape_string($lcusername); $escpassword = mysql_real_escape_string($password); $result = mysql_query("SELECT * FROM userdb WHERE username='$esclcusername' AND password='$escpassword'") or die(mysql_error()); $row = mysql_fetch_array( $result ); $validateUser = $row['username']; $validatePass = $row['password'];

POST数据来自之前的登录页面.我希望此脚本检查表(userdb)并找到用户从上一个表单输入的用户名的行,并验证输入的密码是否与userdb表中该行中设置的用户名密码相匹配.

我还想要某种方式检查输入的用户名是否存在,告诉用户如果在表中找不到输入的用户名,则输入的用户名不存在.



1> TechTravelTh..:

这不是这个问题的直接答案,而是一个好的增值.在存储到数据库之前,您应该使用MYSQL SHA1函数来加密密码.

$user = $_POST['userid'];
$pwd = $_POST['password'];
$insert_sql = "INSERT into USER(userid, password) VALUES($user, SHA1($pwd))";

$select_sql = "SELECT * FROM USER WHERE userid=$user AND password=SHA1($pwd))";


+1非常重要.但有两个更正:1.代码应使用mysql_escape_string/mysql_real_escape_string()以避免被SQL注入绕过.2.优选使用盐进行散列以避免被彩虹表破裂.见:http://tinyurl.com/jwb8o

2> Ólafur Waage..:

您可以使用会话.会话是全局变量,在设置时,在浏览网站时与用户保持联系.

由于您正在学习PHP,请在官方网站上试用本教程.

但是你在理论上会做的是当用户名和密码匹配时,你设置一个会话变量

$_SESSION["auth"] = true;
$_SESSION["user_id"] = $row["user_id"];

然后检查用户是否经过身份验证.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有