说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

建设一个简单交互的网站(三)密码验证 -PHP初学入门教程7

HTML文档下载 WORD文档下载 PDF文档下载
介绍密码验证的方法。

 

6. 密码验证

 

  也许你想在自己的网站放上你的照片集,而且只想给自己知心的朋友看,这时你需要一个密码验证的程序。

 

6.1 基于HTTP验证

 

  如何用PHP来实现密码验证的功能呢?我们可以使用简短的PHP代码,使用函数header()发送HTTP标头强制验证,客户端浏览器则弹出供输入用户名和密码的对话框。在PHP中,客户端用户输入的信息传送到服务端之后自动保存在$PHP_AUTH_USER, $PHP_AUTH_PW, 以及 $PHP_AUTH_TYPE这三个全局变量中。利用这些变量,我们就可以根据实现保存在数据文件或数据库中的用户帐号信息验证用户身份。   不过在这里需要提醒使用者注意的一点是:只有在Apache模块方式运行的时候,PHP脚本才能使用$PHP_AUTH_USER, $PHP_AUTH_PW, 以及 $PHP_AUTH_TYPE这三个变量。如果用户使用的是CGI模式的PHP则无法实现基于HTTP的验证功能。 

 

6.2 下面,我们就来详细介绍一下如何使用PHP对用户身份进行验证。

 

  在下例中,我们是使用$PHP_AUTH_USER和$PHP_AUTH_PW这两个变量来验证进入者是否合法并允许进入。在本例中被允许登录的用户名称和密码对分别为tnc和nature:

<?if(!isset($PHP_AUTH_USER)) {Header("WWW-Authenticate: Basic realm="My Realm"");Header("HTTP/1.0 401 Unauthorized");echo "Text to send if user hits Cancel buttonn";exit;} else {if ( !($PHP_AUTH_USER=="tnc" && $PHP_AUTH_PW=="nature") ){// 如果是错误的用户名称/密码对,强制再验证Header("WWW-Authenticate: Basic realm="My Realm"");Header("HTTP/1.0 401 Unauthorized");echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.";exit;} else {echo "Welcome tnc!";}?>
 事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。 
6.3 根据指定的验证信息核实用户身份
  首先,我们可以使用以下代码确定用户是否已经输入了用户名和密码,并显示出用户输入的信息。
<?php if (!isset($PHP_AUTH_USER)) {header('WWW-Authenticate: Basic realm="My Private Stuff"');header('HTTP/1.0 401 Unauthorized');echo 'Authorization Required.';exit;}else {echo "<P>You have entered this username: $PHP_AUTH_USER<br>You have entered this password: $PHP_AUTH_PW<br>The authorization type is: $PHP_AUTH_TYPE</p>";}?>
说明:
isset()函数用于确定某个变量是否已被赋值。根据变量值是否存在,返回true或false。
header()函数用于发送特定的HTTP标头。注意,使用header()函数时,一定要在任何产生实际输出的HTML或PHP代码前面调用该函数。
  虽然上述代码相当简单,没有根据任何实际值对用户输入的用户名和密码进行有效验证,但是至少我们了解了如何使用PHP在客户端产生输入对话框。
  下面,我们就来了解一下如何根据指定的验证信息核实用户身份。代码如下:
<?phpif (!isset($PHP_AUTH_USER)) {header('WWW-Authenticate: Basic realm="My Private Stuff"');header('HTTP/1.0 401 Unauthorized');echo 'Authorization Required.';exit;}else if (isset($PHP_AUTH_USER)) {if (($PHP_AUTH_USER != "admin") || ($PHP_AUTH_PW != "123")) {header('WWW-Authenticate: Basic realm="My Private Stuff"');header('HTTP/1.0 401 Unauthorized');echo 'Authorization Required.';exit;} else {echo "<P>You're authorized!</p>";}}?>
在这里,我们首先检查用户是否已经输入了用户名称和密码,如果没有则弹出相应对话框要求用户输入身份信息。随后,我们通过判断用户输入的信息是否符合admin/123这一指定用户帐号来授予用户访问权限或提示用户再次输入正确的信息。这种方法适用于所有用户都使用同一登录帐号的网站。 
6.4 另一种简易的密码验证
  如果你是在windows98下面编写和运行着你的PHP脚本,或者是你在Linux下面按默认设置,将PHP安装成一个CGI程序的话,你将无法使用上面的PHP程序来实现验证功能。为此,无边给大家提供了另外一种简易的密码验证的方法。虽然实用性不大,但是拿来学习还是挺好的。
<?php$password = "123"; // check passwordif($pass != $password){echo "<html><head><title>管理密码</title></head><body>";echo "<form method="post" action=$PHP_SELF>";echo "请输入你的管理密码:<br>";echo "<input type="password" name="pass">";echo "<input type="submit" value="continue">";echo "</form></body></html>";}else{echo "<html><head><title>恭喜你,你已经通过了密码验证</title></head>";echo "<script>";echo 'window.location="http://www.okbase.net/test/index.php3"';# 通过密码验证后转入的页面echo "</script>";}?> 

 

如何写小执行程序-Delphi资料 如何隐藏桌面上的图标-Delphi资料 如何用API更改改计算机名字-Delphi资料 如何用Delphi映射网络驱动器? 如何在字符串截取中避免分割到半个汉字-Delphi资料 如何知道用户点击了窗口的最小化按钮?-Delphi资料 如何中断线程的执行-Delphi资料 如何终止一个线程-Delphi资料 如何转让控制权-Delphi资料 使用Delphi 4.0编写多线程 使用Delphi获取系列信息 使用DELPHI实现文本文件显示和声音同步播放 为系统菜单添加新菜单-Delphi资料 显示密码编辑框中的密码-Delphi资料 写小执行程序-Delphi资料 隐藏和显示Windows的任务条-Delphi资料 隐藏桌面上的图标-Delphi资料 用DELPHI编制Windows95下的钩子函数 用Delphi的THML控件实现触摸屏的使用 用Delphi实现禁止用户关闭Window9X 用Delphi制作能够干净地删除自己的程序 用DELPHI 做一个简单的屏幕保护程序 用Enter键代替Tab键-Delphi资料 用修改文件时间的方法来加密文件-Delphi资料 用最原始的方法编制程序-Delphi资料 运用Delphi编写Windows NT中服务程序 在DELPHI编程中确定系统运行模式 在Delphi程序中调用控制面板设置功能 在DELPHI下读取与设置系统时钟 在Delphi中避免2000年问题的捷径 在Delphi中调用API函数 INDY 资料! 请分析这段代码,谢谢 怎样获得DataGrid的DataSource? 有关struts的问题,返回页面结果不对!在线等待,以解决就结帖 怎么改变快捷菜单PopupMenu1的颜色? 用OWC组件做柱状图,需要显示不同颜色的柱状以及显示不同颜色的图例 VS.NET中如何让自定义的事件出现在属性编辑器中? javascript 中有没有能返回指定某年某月中总天数的函数 如何将主窗体中的变量传到报表中,以供dataset查询用,急急急!!! 新手探路 不知道这是不是一个bug 函数返回值类型问题 兄弟我现在改行搞传统的邮政商业信函业务!给点建议!来者有分! 装有isa客户端的机器不能用FlashGet或者蚂蚁下载 网路多少钱才要交税? Kingofark关于英语及外语学习的50个观点 adotable定位记录有哪些方法?如何使用? 超高难度求sql语句,非高手莫进,在线等.......... petshop有些代碼不明白。。。。。。。。。。。 哎,运算符重载把我卡住了!求救!!! 最后 请问函数传递,设置默认值问题! 通过ODBC连接INFORMIX的问题!急!急!急! 有没有VC高手想在上海找工作? 求一个发送邮件的例子(急!!) 有谁碰到过多人同时改写几十个xml文件从而导致xml文件混乱的情况? 我在datawindow中设置initial vlaue=0,为什么写到数据库里的值还是null 请问联众和中游客户端的聊天大厅是基于chtmlview还是crichedit编程的? WINDOWS高级用户或技术支持人员请进! 通过ODBC连接INFORMIX的问题!急!急!急! 将数据保存到数据库问题 ???急。。。在线等待。。。 一个动态模板列的问题 请各位兄弟姐妹扔个FontTwister1.3的注册码上来,谢过了。 高分求救:怎么时查询后的记录成高亮状态! jsp中如何得到 select 控件的值??? 初学者求救!!!! NetBSD China站点开通<CSTC团队> 从数据库读出字段类型为int型的数据,如何转换成字符型的? 想用C来做个东西,但不知做什么好 exchange 2003 rc1版安装后后没有M盘?就是没有M盘,还是安装的问题? 关于水晶报表打印的问题,请各路大侠指点迷津 请大家(特别是安逸)指点一下关于pppoe的开发。 弱弱一问,dll 能静态连接吗? 在jbuilder中project webapplication jsp什么关系 疑问 请教一个简单问题 有关加载菜单与工具栏的问题? 不能上网,但是可以QQ,为什么哦??? 能不能把XSL放到HTML网页中呢 如何从一个ResultSet里获得所有字段的名称? DirectDraw的问题 dangle和swing什么区别?阿甘正传中阿甘说他跟珍妮学swing 珍妮跟他学dangle,就没弄明白怎么回事,不过阿甘的dangel是倒挂,珍妮的swing是用手抓住树干晃,阿甘好像没晃,是不是swing更强到晃, “求也退,故进之;由也兼人,故退之. 王昭君的故乡在哪里? 小学曾学习过王安石描写江南春色的一首诗,请把名句写出. 有谁知道王昭君的故乡在哪啊? 带“春江”的古诗词? 王昭君的故乡是哪里? 中国四大美人王昭君的故乡是哪里? 王昭君在家乡的爱情故事 java.swingclass testLogin extends JFrame{public testLogin(){setTitle("1234");setSize(370,450);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);JLabel lab=new JLabel(new ImageIcon("1.jpg"));add(lab);JLabel lab1=new JLabel("aaa");lab.add(lab1); 子曰:“与其进也,不与其退也 \"中学毕业生清华成长奖\"颁发 浙史上最给力的大学生创业支持政策出台暴风影音因视频侵权被判赔29万 已经11月7日首届上海国际童书展将盛大揭中小学教师资格考试举行 师范生当老师大学生自创恋爱APP 获80万元大奖中国代表在联大全会阐述对国际刑事法院救人干部王青意、蔡福想抢救画面曝光 新加坡制造业和服务业下调未来半年前景全球首辆太阳能小轿车在新加坡亮相德国海关发现1500余幅毕加索等大师27岁小伙出租屋内死亡 穿女式内衣裹大屏+长续航 nubia Z11 M兼职行业首例业内并购背后,是疯狂刷单被埋没的国宝 全世界仅存三把剑A股明天揭晓 大盘操作精准策略揭秘中日工业真实差距惊人曝光:看后陷入深沙特”拖垮油价,“中俄”背后再补一刀放假周边游:一路向“锡”——微风吹过蓝红搭配,OPPO R9巴萨定制版美广西烧鸭技术配方培训 冻鸭解冻步骤你油价大涨迎接欧佩克会议 但一件恐怖的
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘