仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 979|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之PHP中利用crypt()完成用户身份验证

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:59:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,皮皮我的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。     在开辟PHP使用中假如不想本人开辟新的加密算法,还可以使用PHP供应的crypt()函数来完成单向加密功效。

  懂得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()撑持四种加密算法

算法Salt长度CRYPT_STD_DES2-character (Default)CRYPT_EXT_DES9-characterCRYPT_MD512-character beginning with $1$CRYPT_BLOWFISH16-character beginning with $2$
  从外表上看,crypt()的函数仿佛没有甚么用途,但该函数切实其实被普遍用来包管体系暗码的完全性。由于,单向加密的口令即便落入第三方的手里,因为不克不及被复原为明文,也没有甚么大用途。

  用crypt()完成用户身份验证

  上一局部复杂引见了crypt()函数的功效,上面使用其来完成用户的身份验证,其所要完成的方针同19.2.3节所引见的分歧。

1 <!--check_user_crypt.php:利用crypt() 函数验证用户---------------->
2 <?php
3 $user_name=$_POST["user_name"];
4 require_once("sys_conf.inc"); //体系设置装备摆设文件,包括数据库设置装备摆设信息
5
6 //毗连数据库
7 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);
8 mysql_select_db($DBNAME); //选择数据库my_chat
9
10 //查询是不是存在登录用户信息
11 $str="select name,password from user where name ='$user_name'";
12 $result=mysql_query($str,$link_id); //履行查询
13 @$rows=mysql_num_rows($result); //获得查询了局的纪录笔数
14 $user_name=$_SESSION["user_name"];
15 $password=$_POST["password"];
16 $salt = substr($password, 0, 2);
17 $password_en=crypt($password,$salt); //利用crypt()对用户暗码停止加密
18
19 //关于老用户
20 if($rows!=0)
21 {
22 list($name,$pwd)=mysql_fetch_row($result);
23
24 //假如暗码输出准确
25 if($pwd==$password_en)
26 {
27 $str="update user set is_online =1 where name ='$user_name' and password='$password_en'";
28 $result=mysql_query($str, $link_id);//履行查询
29 require("main.php"); //转到聊天页面
30 }
31 //暗码输出毛病
32 else
33 {
34 require("relogin.php");
35 }
36
37 }
38 //关于新用户,将其信息写入数据库
39 else
40 {
41 $str="insert into user (name,password,is_online) values('$user_ name','$password_en',1)";
42 $result=mysql_query($str, $link_id); //履行查询
43 require("main.php"); //转到聊天页面
44 }
45 //封闭数据库
46 mysql_close($link_id);
47 ?>
  示例与上一节所引见的利用XOR加密算法来回护用户信息十分相似,其中心局部在于第16、17行利用crypt()函数获得加密后的暗码,而经由过程在第25行对照数据库中的暗码和加密后的暗码是不是相等来反省用户是不是正当。

  上面,经由过程一个实例来看一下加密后的暗码会酿成甚么模样。

  例如,用户名为rock,暗码为123456,则加密后的暗码为:

  12tir.zIbWQ3c

  下面就完成了一个复杂的用户身份验证体系。在利用crypt()回护主要的秘密信息时,需求注重的是,在缺省形态下利用crypt()并非最平安的,只能用在对平安性请求较低的体系中。算是1个熟悉的过程,所以c语言的基础有就更好,没有也不怕。
变相怪杰 该用户已被删除
沙发
发表于 2015-2-4 07:54:45 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-2-9 19:18:06 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
admin 该用户已被删除
地板
发表于 2015-2-23 07:25:40 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
因胸联盟 该用户已被删除
5#
发表于 2015-2-28 01:25:31 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
再现理想 该用户已被删除
6#
发表于 2015-3-6 23:45:38 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
7#
发表于 2015-3-11 08:07:32 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
活着的死人 该用户已被删除
8#
发表于 2015-3-13 04:25:06 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
透明 该用户已被删除
9#
发表于 2015-3-13 05:10:34 | 只看该作者
当然这种网站的会员费就几十块钱。
爱飞 该用户已被删除
10#
发表于 2015-3-20 13:40:47 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
海妖 该用户已被删除
11#
发表于 2015-3-24 04:59:24 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
兰色精灵 该用户已被删除
12#
 楼主| 发表于 2015-4-4 19:38:07 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
小魔女 该用户已被删除
13#
发表于 2015-4-26 20:09:43 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
金色的骷髅 该用户已被删除
14#
发表于 2015-5-1 09:07:39 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
只想知道 该用户已被删除
15#
发表于 2015-5-9 11:20:45 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
小女巫 该用户已被删除
16#
发表于 2015-5-9 14:35:39 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
再见西城 该用户已被删除
17#
发表于 2015-7-9 00:19:20 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
小妖女 该用户已被删除
18#
发表于 2015-7-9 21:39:21 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
若天明 该用户已被删除
19#
发表于 2015-7-11 07:37:26 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
乐观 该用户已被删除
20#
发表于 2015-7-12 10:28:17 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-7 02:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表