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

建设一个简单交互的网站(三)密码验证 -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>";}?> 

 

不用 EOF 以加快记录循环-VB资料 处理Select语句中的单引号 -VB资料 断开所有的数据连接 -VB资料 访问VB外来数据库 非access数据库在vb中的编程及应用 关闭程序中所有创建的数据库连接。 -VB资料 关闭所有的数据连接 -VB资料 关于数据报表的打印设置-VB资料 VB建立、改变及重构Access数据库-VB资料 结构化查询语言(SQL)详解之一-VB资料 利用VB使ACCESS数据库在网络使用中保持同步 返回 连接Data到多个表单-VB资料 列出 SQL Server 数据库中所有的存储过程-VB资料 列出MDB档当中所有table的名称-VB资料 您想知道有谁正在使用您的 Access 文件吗?(多人环境中)-VB资料 主题:浅谈Excel 的VB编程 巧用VB6的DataGrid实现通用电子表格 VB取得正确的 RecordCount 值 主題:如何动态新增、移除 ODBC DSN? -VB资料 VB如何将表中的数据导出到电子表格中 VB如何将文本文件转换为ACCESS数据库 VB如何將 Excel 的文件导入 Access文件? VB如何判断数据中是否存在某一表或查询 VB如何删除FoxPro数据库的数据? VB如何设置对VB数据库连接的动态路径 VB如何使用 ADO 來压缩或修复 Microsoft Access 文件 VB如何修改Foxpro数据库(不是用VB实现的,不过也可以看看) VB如何在 SQL 语句中使用日期? 返回 VB如何在表中保存单引号? VB如何抓出 Access 的 Table 欄位中的【敘述】部份呢? 实现Access数据库的Web查询-VB资料 数据库连接的问题 怎样在代码中改变CComboBox中下拉框的高度? *** Application 中文件的读与写 *** 关于jsp里的浮点数位数的问题(急!!!) c++ primer中的几个翻译错误! 高分求解,不够再加,我有900分,在线等?关于重载DataGridColumnStyle 如何做bbs系统? 如何查找文本文件里面有某个特定字符串?并删掉它? 如何在php 里一个动作update 2个MYSQL表 谁知道在VC里除数为零的异常怎么捕获吗? 数据过滤 如何在程序中动态建立数据库? 谢谢各位大虾 请告诉我几个从C++转到C#的电子版书籍(马上给分) 在ACCESS里面怎样实现该功能 怎么改变这个界面,帮帮 我用的vs.net好像有个bug。 高分求解,不够再加,我有900分,在线等?关于重载DataGridColumnStyle加了一个用户控件 菜鸟提问:如何用VC制作类似“记事本”的编辑器? 请问那位大虾知道如何把占用一个特定SOCKET通讯端口的进程关掉. 有誰喜欢用TActionList控件,进来谈谈 谁知道在VC里除数为零的异常怎么捕获吗? 请教高手:中文问题 为什么不能比较i>application("tsum")的大小呢? 排版很难看,有人可以指点一二吗?http://www.gz111.net/product0.asp?id=1147 问一下,通过电话上网的,如果把本地的http服务启动,能从internet网也能访问吗? 请问那里有给光盘上复印封面的地方,限北京 请问Recordset的find方法和filter有什么区别? 动态链接库导入对话框资源的问题。在线求解 word中嵌入的金山词霸是怎样实现的? 过了试用期准备签合同。怎么办? Connect Sql server failed using 'sa' user, Why? 我在将一个大于127的long型整数做向左移24位的操作,说overflow,那该怎么办? 逆波兰式(后缀式)求值程序 请问那里有给光盘上复印封面的地方,限北京 悬赏:怎样象在DOS中方便的设置热键,如ESC、F1等? 乱码怎么办? 新手提問:當按下"Enter"的時候,如何用代碼來触發"Tab"事件,使光標移到下一個控鍵上? 请问javascript可以连续多页打印吗?(打印数据库记录) 无奈的法国队,无奈的齐达内! 上半场法国0:1落后于丹麦 初学ASP,怎么能在本机上运行ASP文件? 数据库的图像显示?? 如何改变默认的保存路径? 动态生成web controls的定位问题,急阿!!! 急!急!急!:请问ToolBar2000控件能使用Menu组件吗? MFC设计的程序中怎样保护对话框或别的资源不被EXESCOPE之类软件修改? CListBox应用求救(在线等) 差一点就解决的问题?高手帮我看看,50分!! 新手提問:當按下"Enter"的時候,如何用代碼來触發"Tab"事件,使光標移到下一個控鍵上? 请教一个初级问题! xml上传图片的例子,大家看看那错了 大家讨论一下:配有声音的flash动画在有的电脑上却没有声音,你认为,这可能有那些原因? 配制500毫升0.2摩每升氢氧化钠溶液需要氢氧化钠质量是多少. 用电压表测灯L1的电压,正确的电路是图,第八题抱歉,已经知道答案了,可以随便讲些关于电压的初二知识或者注意点,我都会采纳. 一道大学基础化学问题,图中23题,我做出来是150天,答案是100天,为什么 树一定要吸入二氧化碳才能释放氧气么 夏至日、冬至日是什么时候? 第七题不应该是不变么 彗星轨道问题为什么彗星轨道是椭圆的?适应什么理论?需要理论说明 不要说是万有引力哦。 我想知道的是爱因斯坦的相对论与万有引力的矛盾。 把被测物体放在()盘里,用()向右盘里加减砝码并调节()在横梁标尺上的位置,直到天平() 北半球从冬至日到夏至日A.北半球正午太阳高度不断减小B.迟到和北极圈之间地区白昼越来越长C.地球绕日公转的速度越来越慢D.太阳直射点位于赤道和北回归线之间2.“一山有四季,十里不同 在研究杠杆的平衡条件的实验中,一个杠杆,在水平位置放置右端翘起为时杠杆在水平位置平衡:1,此时应调节杠杆左端的螺母使其向( )移动2,或者调节杠杆右端的平衡螺母使其向( )移动 一架托盘天平,两臂等长,横梁也能调平,但没有砝码,游码标尺上刻度为0~5克,要从一堆沙粒里称出50克来,规定只能称4次,说说你的称量方法. 为什么会有春夏秋冬这四个季节? 利用盘子、铁丝、洗衣粉研究声现象声音在空气中以波的形式传播,使空气形成疏密相间的形势,但人却看不到.如何利用盘子、铁丝、洗衣粉,设计试验, 将矿石放在已调好的天平的左盘内,右盘放砝码,天平平衡时,右盘中的砝码与游码 在标尺上的位置如图所示(1)矿石的质量(2)矿石体积(3)矿石密度 彗星是什么样的天体? 撒哈拉沙漠成因 水城威尼斯,雅号与城市的特点有什么关系?发个号 由八大行星和彗星陨石组成的星体叫什么 撒哈拉沙漠形成的原因 什么是水泵的吸程, 为什么说彗星是特殊的天体我刚学高一,在教辅书上看到的,不懂啊. 塔克拉玛干沙漠与撒哈拉沙漠的不同成因 家用自吸泵扬程是什么意思 已知地球到太阳的距离为1.5亿公里(一个天文单位),估算太阳的质量.引力常量G值取:6.67×10-11N.m的平方/kg,结果保留整数 水通电分解过程中,不变的微粒是 一棵树上所有的叶子,怎么读?是一片树叶 还是别的 小明在家中听到音响时,忽然想起到课本上说声音能使空气形成疏密相间把声音传播到远处,“这写不开接下面他起身找来一个碟子,一段铁丝和一勺洗衣粉,做了一个实验证明是正确的,假如你 水通电分解过程中,不变的微粒是?(填化学符号) 一片树叶大约吸收多少二氧化碳?只要一个大概的值就可以了.比如多少平方米/克之类的. 课本上说声音能使空气形成疏密相间的波动,并通过空气将声音传到远方,声音的波动为什么看不见,说明理由 从原子,分子的角度简要分析,在通电分分解水的过程中.发生变化的粒子是( )不发生变化的粒子是( 以此为例说明,在化学反应中反应物的质量总和等于生成的质量总和的原因是( ) 二氧化碳从叶子哪里进,氧气从叶子哪里出? 为什么音响没有声音了?耳机插进去也是没有声音的,如果把声音都调到最大声,就会有嘶嘶的杂音= =到底是哪坏了啊... 华子冈 读音王维在《山中与裴秀才迪忆》中记载的一个地点,在辋川别墅附近,叫华子冈.这个“华”字的读音应该是什么? 如图所示是电压表测量灯泡L1两端电压的四种电路,其中正确的是 唱歌是使口中空气振动 再通过空气传播到人耳的 在手机网上下载歌 使手机进行一个程序从音响中传出声音那是什么原理. 夜登华子冈,辋水沦涟,与月上下,寒山远火,明灭林外.译成汉语 请问酒店行业里的PA职位是做什么的?PA的英文全称是什么? 行星,彗星,卫星的中心天体是太阳.这句话对吗?我指的是在太阳系范围内. 华子冈表达了作者什么的思想感情 什么花,晚上吸氧气,早上呼出二氧化碳.什么花,早上吸氧气,晚上呼出二氧化碳.怎样养花最科学? 太阳是以太阳为中心,由八大行星、矮行星、 、 、 、彗星等组成的一个天体系统. 当前,困扰非洲撒哈拉沙漠以南地区发展的三大问题好的有奖,速打,迟了没分 483gso4.10h2o 含有钠离子.硫酸根离子物质的量各是多少?含水分子数目是多少 有浓度为百分之五的盐水一杯,蒸发水分成浓度为百分之十的盐水,再加入300克浓度为百分之四的盐水,混有浓度为百分之五的盐水一杯,蒸发水分成浓度为百分之十的盐水,再加入300克浓度为百 困扰非洲撒哈拉沙漠以南地区发展的三大问题是? 动能是不是国际单位制基本单位 阴凉的盐水与加热的盐水蒸发后分离的情况有什么不同? 困扰非洲发展的三大问题是什么 若图中表示“低纬地区大气环流圈”,则形成赤道低气压带的是A甲处 B乙处 C丙处 D丁处 有若干4%的盐水,蒸发了一些水分后变成了10%的盐水,再加入300克的盐水,混合或变成6.4%的盐水,问最初加入的盐水质量~ 水平面上一个质量为m的物体,在一水平恒力F的作用下,由静止开始做匀加速直线运动,经时间t后撤去外力,又经时间2t物体停了下来,则物体受到的阻力是多少? 海市蜃楼发生在什么季节 用质量守恒定律解释实验比如:用质量守恒定律解释下列实验:(1)木炭在敞口容器中燃烧后质量减少了具体一点 天平平衡时其右盘的砝码有:100g的一个,20g的一个,10g的一个,游码示数为2.8g.已知这本书共有200页,试计算每张纸的平均质量 请问海市蜃楼一般出现在什么季节啊 用质量守恒定律解释现象 蜡烛燃烧质量变小了 山中与裴秀才迪书翻译表打达了王维游华子冈的思想感情 海市蜃楼多发生在什么季节 大学基础化学问题,图中16题我怎么做都是D啊
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘