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

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

 

VB中Winsock控制的UDP协议的使用 VB中的时间处理问题 Windows操作平台下CGI的实现 -VB资料 按下某组键(HotKey)便执行某程式-VB资料 把所有的字体名称放到 ComboBox -VB资料 把文件置入到Text或RichText中-VB资料 捕捉 MouseExit 事件 -VB资料 操作过程动态显示 -VB资料 查找月份的最后一天-VB资料 程序启动时,如何自动判断 MDB文件是否损坏并自动修复?-VB资料 读取和修改Windows注册表 -VB资料 对VB的IDE环境的扩展 防止文本控件中的部分滚动-VB资料 关闭正在运行的程序 -VB资料 关机消息的拦截 -VB资料 VB获得、设置鼠标双击间隔时间 VB获取当前系统平台 记载Windows使用的时间-VB资料 加速Visual Basic For Application(VBA) 监视程序的运行情况 -VB资料 交换鼠标按钮 -VB资料 交换鼠标左右键 -VB资料 禁止使用 Alt-Tab 或 Ctrl-Alt-Del -VB资料 控制光驱门的开关 -VB资料 VB利用 窗口函数监视系统的运行情况(VB类) VB判断是否在VB5环境下运行 VB判断一个32位程序是否结束 VB判断一个程序启动完成(不是结束) 屏蔽TextBox的系统菜单 -VB资料 启动时禁止装入 Add-Ins -VB资料 让Timer控件每5分钟触发一次事件 -VB资料 parodox数据库问题 各位平时用 VC 作东西,都用那些辅助工具?  高分争解 【 http://www.esoftware.com.cn/search.php?condition=%BA%AB%C1%F7%C0%B4%CF%AE&page=1&mode=3 】 JBuilder的使用问题 在VFP中,编程执行SQL语句时,怎样使系统的查询结果不出现? 一个程序流程的问题 为什么当我的SpeedButton的enabled为false时,上面的图标就没有了? 囡囡(baicolt)请进,问你一点事情 简单问题,请赐教 高分相赠!!!:操作系统和SQL SEVER2000都是英文版,用VB连接如何可以正确的输入和显示中文? 则么在程序中得到sql的存储过程的返回值? 请问 VB 6.0 有没有最新的升级文件之类的东西?高分争解 谢谢 谁有用java做的复杂一点的图行界面的例子 网管来看看,为什么不能给分了!右边的文本框又不见了! 各位用 VB 编程都用那些辅助工具? 高分争解 关于ShellExecute 装了redhat7,在/etc里没有inetd.conf文件,谁见过这咋整 菜鸟请教大侠!很急!谢谢!!只有10分对不起! 请问一个关于CLASSWIZARD 的问题 这里有PB反编译程序,你信吗? 怎样解 关于大数据量的问题,经验丰富者里面谈! 我想在程序里控制程序外的浏览器窗口资源管理器窗口,怎么做呢?急呀!!!!!! 请问:我用JavaMail收下的邮件主题,发信人姓名不能正常显示。。。。。 认识我的人都进来跟我聊聊吧,我最近新换了工作,还没有适应,你们各位是怎么换工作? 请问如何在Delphi中表示二进制,或者十六进制数呢? 各位35以后干什么?我们能干什么? ????? 如何将eltree中的数据和某数据表关联 有没有比RECORDCOUNT快的方法实现同样的功能? 鉴于目前有些东西说话不知轻重,把这个旧闻再贴一遍,不要以为真的在网上 “没人知道你是一只狗” Java 工具 怎样解决vb中编译成exe文件中出现的问题? 你别说国企,只要是沾的国企的气味就他妈的黑! api函数我不懂。 我要开发一个网络监听的程序,捕获所有以太网中所有的帧,象NT和Win2000中的网络监视器一样 找了半天,看不到一个熟人,认识的过来报到 请问哪里有下载jdk啊? 问题征集算法 偶烦!偶郁闷!咿呀~~~~~~~~老哥进来安慰偶。。。。快!快!快!!! 在ListView中,如何象Windows资源管理器那样将剪贴了的文件图标变虚? 清华大学的学生素质真差 打开数据库为什么出错? WinCE的串口通讯读和写之间有相互制约的问题吗? 强烈抗议IBM蓝色“快”车服务的速度和质量!!各位同志请帮我广帖出去! outlook 求助 jsp的小问题 关于cjlib中显示中文的问题 山东快书 《武松上网》 送给大家一张图片,开开心心灌水,快快乐乐上班 各位高手,老题新问 请教Win2000下SetWindowsHookE的问题 氢化钙 钙鉴别能用与水反应生成的氢气的量吗物质的量相同 只用一种试剂一次性就能验证锌、铜、银三种金属活动性强弱,该试剂为( )A 硫酸铜溶液 B 硫酸锌溶液 C 硝酸银溶液 D 稀盐酸 铜和硝酸汞反应的方程式 为什么登山制取氢气用氢化钙而不电解水?制取同等质量的氢气需要的水的质量要比氢化钙要少,负担更少,而且电解水还能产生氧气,为社么登山制取氢气用氧化钙而不电解水? 要验证锌、铁、铜三种金属的活动顺序,可选用(?),为什么?A.Cu.FeCl2.Zncl2B.Fe.CuSO4.ZnCl2C.Zn.CuO.FeSO4D.Fe.Cu.ZnCl2那如果是:A.Fe、Cu、Zn(NO3)2溶液。B.Cu、FeCl2溶液、ZnCl2溶液C.Zn、CuSO4溶液、FeSO4溶液 铜与硝酸汞溶液能不能发生反应,若是能写出化学方程式,若是不能 化学题设计个过氧化钠的小实验过氧化钠保存不当容易变质1,某过氧化钠样品已经部分变质,请设计实验,限用一种溶液,证明过氧化钠已经变质2,检验样品中还有过氧化钠的方法是都回答得很好 1 能用于证明锌 铜 银的金属活动性顺序的一组试剂是()A 铜 银 硝酸锌溶液 B 锌 银 硝酸铜溶液 稀硫酸 C 锌 铜 稀硫酸 硝酸银溶液 D 锌 铜 银 稀硫酸 我认为b c都行,1 能用于证明锌 铜 银的金属 铜和硝酸汞溶液反应的方程式还有三氧化硫和水反应,氧化钙和水反应,氧化钠和水反应,碳酸银和稀硝酸反应的方程式 设计试验(化学)现在就要!1.设计试验证明二氧化碳具有下述性质:(1)二氧化碳的密度比空气的大;(2)二氧化碳能溶与水.2.设计实验证明汽水中含有二氧化碳.(别太复杂) 甲同学为探究铝、铁和铜三种金属的活动性、甲同学为了探究铝、铁和铜三种金属的活动性,他用铜丝、铁丝、铝丝和稀盐酸四种试剂,设计了以下只用一支试管,取一次盐酸的探究方案.⑴请你 铜与硝酸汞溶液反应是的主要现象 化学设计实验现有一白色粉末是由氯化钠、硫酸钠中的一种或两种共同组成.给你四种溶液:硝酸银溶液、氢氧化钠溶液、碳酸钠溶液、硝酸钡溶液,要你证明此粉末只由硫酸钠组成(两步). 为测定铁.铜和银的金属活动性顺序,下列不能达到目的的是:A Ag、Fe、CuSO4溶液B Ag、FeSO4、CuSO4溶液C Fe、Cu、AgNO3溶液D Cu、FeSO4、AgNO3溶液原因 正确答案我知道 是 B、C 铜和硝酸汞溶液发生反应的问题.铜和硝酸汞溶液反应后生成硝酸铜溶液和汞,但问题是这个置换出来的汞会粘在铜片上,并且拿纸都擦不掉!常温下汞不是液态吗?并且把铜片拿出后过了一段时 求5篇化学家庭实验 实验报告拜托各位高手帮我找5篇家庭小实验的实验报告包括目的.步骤.现象.结论注意:要是家里能做的实验.最好是收集沼气,、葱汁写密信、收集沼气.要5篇啊,谢谢如果 下列各组物质能证明铁 银 铜的金属活动性强弱的是A 铁 硫酸铜溶液 硝酸银溶液 B 铁 铜 硝酸银溶液C 银 铜 氯化亚铁溶液 D 铁 银 硫酸铜溶液不然我还是不会做 铜与硝酸汞反应,生成的汞是固体吗,为什么 利用下列各组反应,能够验证铁、铜、银三种金属活动性顺序的是利用下列各组物质之间的反应,能够验证铁、铜、银三种金属活动性顺序的是( ) A、氯化亚铁溶液、铜、银 B、氯化亚铁溶液、 小刚设计实验探究铁、铜、银三种金属的活动性顺产并分析相关问题.请填空: ⑴他设计的四种实验方案 什么金属既能与稀硫酸反应生成氢气,又能与硝酸汞反应生成汞 A.银 B.钠 C.镁 D.铜 关于化学方程式与化合价.“O正上方一个-2”中-2代表什么?“2O”的O右上方有一个-2,这个-2代表什么? 利用下列各组物质之间的反应,能够验证铁、铜、银三种金属活动性顺序的是(  )A、氯化亚铁溶液、铜、银B、氯化亚铁溶液、氯化铜溶液、银 C、铁、氯化铜溶液、银 D、氯化铁溶液、铜 验证铜 镁 铁 金属活动性的实验? 怎么用化合价写化学方程式比如Fe+O2--- 怎么写后面的生成物、、怎么用化合价写他们下面的小数字、 利用下面各组物质之间的反应,能够验证铁,铜,银三种金属活动性顺序的是( )A.氯化亚铁溶液,铜,银B.氯化亚铁溶液,氯化铜溶液,银C.铁,氯化铜溶液,银D.氯化铁溶液,铜,硝酸银溶液我觉得应 证明镁,锌,铁,铜,银的活动性顺序实验设计这个实验的过程,与结论 为什么氢氧化钙的化学式是Ca(OH)2?为什么氢氧化钙的化学式Ca(OH)2和其他有些物质的化学式要加括号?是因为这样简便些么? 设计实验关于判断铝铁铜的金属活泼性强弱顺序4种方案 用实验证明锌和铜两种金属的活动性顺序时,可选用的试剂是用稀硫酸好还是用氯化锌好 硝酸HNO3和氢氧化钙Ca(OH)2 什么试剂能直接验证铝 铁 铜的活动性顺序 辨别金属活动性的实验:铁铜锌 氢氧化钙化学式Ca(OH)2 为啥oh要加括号 证明铁、铝、铜三种金属的活动性顺序,选用哪些试剂?A 盐酸、硝酸银溶液B 盐酸、氯化亚铁溶液C 硝酸、硝酸铜溶液D 氯化镁溶液、硫酸铜溶液为什么? 无机化学题 解释 分别在 硝酸汞溶液和硝酸亚汞溶液中 逐滴滴加钾碘化钾,(1)分别有什么现象(2)当碘化钾 过量时,有分别有什么现象. CaH2 + 2H2O====2H2 + Ca(OH)2.氧化剂与还原剂的比值是多少? 铝、铁、铜是人类广泛使用的三种金属,与我们生活息息相关.3)用下列试剂验证这三种金属的活动性顺序,能达到目的是 (填序号). A.硫酸铝溶液 B.硫酸亚铁溶液 C.硫酸铜溶液 选什 硝酸汞中汞的化合价是多少? 化学变化的分辨有放热,发光,生成沉淀,生成气体或颜色变化现象发生的一定是化学变化吗?请各举一例加以说明 为验证铁、铜、铝三种金属的活动性顺序,可选用的一组物质是(  )A.FeSO4溶液、Cu、AlCl3溶液B.CuSO4溶液、Fe、AlC13溶液C.CuSO4溶液、Fe、AlD.AlCl3溶液、Fe、Cu我知道答案是B,我想知道C为 下列各金属分别投入硝酸汞溶液中,不能置换出汞的是()下列各金属分别投入硝酸汞{Hg(NO3)2}溶液中,不能置换出汞的是( )A.Zn锌B.Fe铁C.Ag银D.Cu铜另外原因是什么?它们的活动性由强到弱怎样 怎么区分物理和化学变化酒精蒸发是什么变化 怎样证明铝、铁、铜三种金属的化学活泼性大小,解释为什么这三种金属只有铁最容易生锈. 在硝酸汞中汞显几价,关于这个化合价的取值有什么特殊规律吗?还有我是在写化学式的过程中出现的问题不能按化学式为零的方法算啊,我是说,在写化学方程式的过程中如何判断有多价的 和化学变化的区别在于? 设计实验探究铝和铜的金属活动性大小顺序要实验的具体步骤材料:硫酸铜,铝片,试管……(是先放硫酸铜进试管还是先放铝片?) 铜与硝酸汞反应的现象 如何区分化学中物质的性质与变化举出具体事例说明 用Fe,ZnSO4溶液,CuSO4溶液,验证锌、铁、铜三种金属活动性顺序,可不可以? 加热铜丝的现象 现象和变化的区别 铜是金属活动性弱的金属,那么怎么配置硫酸铜溶液 铜丝加热后的现象请问铜丝加热后会有什么现象? 登上运动员用氢化钙CaH2固体提供能源有什么优点 验证铝和银的金属活动性顺序用稀盐酸还是硫酸铜?这俩不都行吗? 铜丝在空气中燃烧现象 能否用燃烧现象鉴别氢化钙和钙? 铝和硫酸铜溶液反应Al+CuSO4+H2O=?不是置换反应,是生成沉淀的那种 氯气与铜丝反应现象
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn