PHP中使用crypt()实现用户身份验证的代码
发布时间:2020-12-13 06:09:48 所属栏目:PHP教程 来源:网络整理
导读:了解crypt() 只要有一点使用非Windows平台经验的读者都可能对crypt()相当熟悉,这一函数完成被称作单向加密的功能,它可以加密一些明码,但不能反过来将密码重新转换为原来的明码。crypt()函数定义如下。 string crypt (string input_string [,string salt])
了解crypt() 只要有一点使用非Windows平台经验的读者都可能对crypt()相当熟悉,这一函数完成被称作单向加密的功能,它可以加密一些明码,但不能反过来将密码重新转换为原来的明码。crypt()函数定义如下。 string crypt (string input_string [,string salt]) 其中,input_string参数是需要加密的明文字符串,第二个可选的salt是一个位字串,能够影响加密的暗码,进一步排除被破解的可能性。缺省情况下,PHP使用一个2个字符的DES干扰串,如果系统使用的是MD5(参考下一节内容),PHP则会使用一个12个字符的干扰串。可以通过执行下面的命令发现系统将要使用的干扰串的长度。 print "My system salt size is: ". CRYPT_SALT_LENGTH; crypt()支持4种加密算法,表19.1显示了其支持的算法和相应的salt参数的长度。 表crypt()支持四种加密算法
从表面上看,crypt()的函数似乎没有什么用处,但该函数的确被广泛用来保证系统密码的完整性。因为,单向加密的口令即使落入第三方的手里,由于不能被还原为明文,也没有什么大用处。 用crypt()实现用户身份验证 上一部分简单介绍了crypt()函数的功能,下面利用其来实现用户的身份验证,其所要实现的目标同19.2.3节所介绍的一致。 代码如下: $user_name=$_POST["user_name"]; require_once("sys_conf.inc"); //系统配置文件,包含数据库配置信息 //连接数据库 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD); mysql_select_db($DBNAME); //选择数据库my_chat //查询是否存在登录用户信息 $str="select name,password from user where name ='$user_name'"; $result=mysql_query($str,$link_id); //执行查询 @$rows=mysql_num_rows($result); //取得查询结果的记录笔数 $user_name=$_SESSION["user_name"]; $password=$_POST["password"]; $salt = substr($password,2); $password_en=crypt($password,$salt); //使用crypt()对用户密码进行加密 //对于老用户 if($rows!=0) { list($name,$pwd)=mysql_fetch_row($result); //如果密码输入正确 if($pwd==$password_en) { $str="update user set is_online =1 where name ='$user_name' and password='$password_en'"; $result=mysql_query($str,$link_id);//执行查询 require("main.php"); //转到聊天页面 } //密码输入错误 else { require("relogin.php"); } } //对于新用户,将其信息写入数据库 else { $str="insert into user (name,password,is_online) values('$user_ name','$password_en',1)"; $result=mysql_query($str,$link_id); //执行查询 require("main.php"); //转到聊天页面 } //关闭数据库 mysql_close($link_id); ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- PHP中的\u0026\u0026运算符
- PHP for for循环中的循环.尝试对多个数组列求和以获得组合
- php array_intersect_uassoc 使用用户自定义的函数计算两个
- PHP判断数组是否为空的常用方法(五种方法)
- php模拟登陆的实现方法分析
- PHP curl出现SSL certificate problem: self signed certif
- php – 我需要一个htaccess规则,如果url在主域后面包含问号
- 详谈php ip2long 出现负数的原因及解决方法
- php – CORS预检请求返回“403 Forbidden”;后续请求然后仅
- php – 没有查询的资产自动缓存清除?