怎样用函数调用检测社保个人账户用户名密码用户名空

php基于表单密码验证与HTTP验证用法实例
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了php基于表单密码验证与HTTP验证用法,以实例形式较为详细的分析了表单密码验证与HTTP验证的原理与相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了php基于表单密码验证与HTTP验证用法。分享给大家供大家参考。具体分析如下:
PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本。在 Apache 模块的 PHP 脚本中,可以用 header() 函数来向客户端浏览器发送“Authentication Required”信息,使其弹出一个用户名/密码输入窗口。当用户输入用户名和密码后,包含有 URL 的 PHP 脚本将会加上预定义变量 PHP_AUTH_USER , PHP_AUTH_PW 和 AUTH_TYPE 被再次调用,这三个变量分别被设定为用户名,密码和认证类型。预定义变量保存在 $_SERVER 或者 $HTTP_SERVER_VARS 数组中。支持“Basic”和“Digest”(自 PHP 5.1.0 起)认证方法。感兴趣的朋友可以参阅header()函数相关信息。
PHP 版本问题: Autoglobals 全局变量,包括 $_SERVER 等,自 PHP 4.1.0 起有效, $HTTP_SERVER_VARS 从 PHP 3 开始有效。
以下是在页面上强迫客户端认证的脚本范例.
例子 34-1. Basic HTTP 认证范例
代码如下:&?php
&& if (!isset( $_SERVER [ 'PHP_AUTH_USER' ])) {&
&&&& header ( 'WWW-Authenticate: Basic realm="My Realm"' );&
&&&& header ( 'HTTP/1.0 401 Unauthorized' );&
&&& echo 'Text to send if user hits Cancel button' ;&
& } else {&
&&& echo "&p&Hello { $_SERVER [ 'PHP_AUTH_USER' ]} .&/p&" ;&
&&& echo "&p&You entered { $_SERVER [ 'PHP_AUTH_PW' ]} as your password.&/p&" ;&
例子 34-2. Digest HTTP 认证范例
本例演示怎样实现一个简单的 Digest HTTP 认证脚本,更多信息请参考 RFC 2617.
代码如下:&?php&
$realm = 'Restricted area' ;
//user =& password&
$users = array( 'admin' =& 'mypass' , 'guest' =& 'guest' );
if (!isset( $_SERVER [ 'PHP_AUTH_DIGEST' ])) {&
&&&& header ( 'HTTP/1.1 401 Unauthorized' );&
&&&& header ( 'WWW-Authenticate: Digest realm="' . $realm .&
&&&&&&&&&&& '" qop="auth" nonce="' . uniqid (). '" opaque="' . md5 ( $realm ). '"' );
&&& die( 'Text to send if user hits Cancel button' );&
// analize the PHP_AUTH_DIGEST variable&
preg_match ( '/username="(?P&username&.*)",s*realm="(?P&realm&.*)",s*nonce="(?P&nonce&.*)",s*uri="(?P&uri&.*)",s*response="(?P&response&.*)",s*opaque="(?P&opaque&.*)",s*qop=(?P&qop&.*),s*nc=(?P&nc&.*),s*cnonce="(?P&cnonce&.*)"/' , $_SERVER [ 'PHP_AUTH_DIGEST' ], $digest );
if (!isset( $users [ $digest [ 'username' ]]))&
&&& die( 'Username not valid!' );
// generate the valid response&
$A1 = md5 ( $digest [ 'username' ] . ':' . $realm . ':' . $users [ $digest [ 'username' ]]);&
$A2 = md5 ( $_SERVER [ 'REQUEST_METHOD' ]. ':' . $digest [ 'uri' ]);&
$valid_response = md5 ( $A1 . ':' . $digest [ 'nonce' ]. ':' . $digest [ 'nc' ]. ':' . $digest [ 'cnonce' ]. ':' . $digest [ 'qop' ]. ':' . $A2 );
if ( $digest [ 'response' ] != $valid_response )&
&&& die( 'Wrong Credentials!' );
// ok, valid username & password&
echo 'Your are logged in as: ' . $digest [ 'username' ];
兼容性问题:在编写 HTTP 标头代码时请格外小心,为了对所有的客户端保证兼容性,关键字“Basic”的第一个字母必须大写为“B”,分界字符串必须用双引号(不是单引号)引用;并且在标头行 HTTP/1.0 401 中,在 401 前必须有且仅有一个空格.
在以上例子中,仅仅只打印出了 PHP_AUTH_USER 和 PHP_AUTH_PW 的值,但在实际运用中,可能需要对用户名和密码的合法性进行检查,或许进行数据库教程的查询,或许从 dbm 文件中检索.
注意有些 Internet Explorer 浏览器本身有问题。它对标头的顺序显得似乎有点吹毛求疵。目前看来在发送 HTTP/1.0 401 之前先发送 WWW-Authenticate 标头似乎可以解决此问题。
自 PHP 4.3.0 起,为了防止有人通过编写脚本来从用传统外部机制认证的页面上获取密码,当外部认证对特定页面有效,并且 安全模式 被开启时,PHP_AUTH 变量将不会被设置,但无论如何, REMOTE_USER 可以被用来辨认外部认证的用户,因此可以用 $_SERVER['REMOTE_USER'] 变量.
配置说明:PHP 用是否有 AuthType 指令来判断外部认证机制是否有效。
注意,这仍然不能防止有人通过未认证的 URL 来从同一服务器上认证的 URL 上偷取密码.
Netscape Navigator 和 Internet Explorer 浏览器都会在收到 401 的服务端返回信息时清空所有的本地浏览器整个域的 Windows 认证缓存,这能够有效的注销一个用户,并迫使他们重新输入他们的用户名和密码,有些人用这种方法来使登录状态“过期”,或者作为“注销”按钮的响应行为.
例子 34-3.强迫重新输入用户名和密码的 HTTP 认证的范例
代码如下:&?php&
&& function authenticate () {&
&&&& header ( 'WWW-Authenticate: Basic realm="Test Authentication System"' );
&&&& header ( 'HTTP/1.0 401 Unauthorized' );&
&&& echo "You must enter a valid login ID and password to access this resourcen" ;&
& if (!isset( $_SERVER [ 'PHP_AUTH_USER' ]) ||&
&&&&& ( $_POST [ 'SeenBefore' ] == 1 && $_POST [ 'OldAuth' ] == $_SERVER [ 'PHP_AUTH_USER' ])) {&
&&& authenticate ();&
&& echo "&p&Welcome: { $_SERVER [ 'PHP_AUTH_USER' ]} &br /&" ;&
&& echo "Old: { $_REQUEST [ 'OldAuth' ]} " ;&
&& echo "&form action=' { $_SERVER [ 'PHP_SELF' ]} ' METHOD='post'& n " ;&
&& echo "&input type='hidden' name='SeenBefore' value='1' /&n" ;&
&& echo "&input type='hidden' name='OldAuth' value=' { $_SERVER [ 'PHP_AUTH_USER' ]} ' /& n " ;&
&& echo "&input type='submit' value='Re Authenticate' /&n" ;&
&& echo "&/form&&/p&n" ;&
该行为对于 HTTP 的 Basic 认证标准来说并不是必须的,因此不能依靠这种方法,对 Lynx 浏览器的测试表明 Lynx 在收到 401 的服务端返回信息时不会清空认证文件,因此只要对认证文件的检查要求没有变化,只要用户点击“后退”按钮,再点击“前进”按钮,其原有资源仍然能够被访问,不过,用户可以通过按“_”键来清空他们的认证信息.
在下例中,我们是使用$PHP_AUTH_USER和$PHP_AUTH_PW这两个变量来验证进入者是否合法并允许进入。在本例中被允许登录的用户名称和密码对分别为tnc和nature:
代码如下:&?php
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";&
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.";&
echo "Welcome tnc!";&
事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们.
根据指定的验证信息核实用户身份:
首先,我们可以使用以下代码确定用户是否已经输入了用户名和密码,并显示出用户输入的信息.
代码如下:&?php&
if (!isset($PHP_AUTH_USER)) {&
header('WWW-Authenticate: Basic realm="My Private Stuff"');&
header('HTTP/1.0 401 Unauthorized');&
echo 'Authorization Required.';&
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在客户端产生输入对话框.
下面,我们就来了解一下如何根据指定的验证信息核实用户身份,代码如下:
代码如下:&?php&
if (!isset($PHP_AUTH_USER)) {&
header('WWW-Authenticate: Basic realm="My Private Stuff"');&
header('HTTP/1.0 401 Unauthorized');&
echo 'Authorization Required.';&
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.';&
echo "&P&You're authorized!&/p&";&
在这里,我们首先检查用户是否已经输入了用户名称和密码,如果没有则弹出相应对话框要求用户输入身份信息,随后,我们通过判断用户输入的信息是否符合admin/123这一指定用户帐号来授予用户访问权限或提示用户再次输入正确的信息,这种方法适用于所有用户都使用同一登录帐号的网站.
另一种简易的密码验证
如果你是在windows98下面编写和运行着你的PHP脚本,或者是你在Linux下面按默认设置,将PHP安装成一个CGI程序的话,你将无法使用上面的PHP程序来实现验证功能,为此,无边给大家提供了另外一种简易的密码验证的方法,虽然实用性不大,但是拿来学习还是挺好的.
代码如下:&?php
if($_POST[Submit]=="提交"){& //如果用户提交了数据,则执行操作
$password=$_POST[password];    //获取用户输入的数据,并保存在变量 password 中
$cpassword=$_POST[cpassword];&& //获取用户输入的确认数据,保存在变量 $cpassord 中
if(emptyempty($password) || emptyempty($cpassword))
&&& die("密码不可空!");
elseif ( ((strlen($password) & 5) || (strlen($password) & 15)))
&&& die("密码长度在5和15之间");
&& //--- 值比较
elseif ( !(strlen($password) == strlen($cpassword)) )
&&& die("两次输入密码不匹配! ");
elseif( !($password === $cpassword)) //值和数据类型比较
 & die("两次密码不匹配! ");
else& //循环输出密码,因为是密码所以输出*号&
&&& for ($i=0;$i&strlen($password);$i++)
&&&&&&&&&&& echo "*";
&meta http-equiv="Content-Type" content="text/ charset=gb2312"&
&title&表单验证-密码字段验证&/title&
&form name="form1" method="post" action="&?=$_SERVER['PHP_SELF'] ?&"&
请输入密码:&input type="text" name="password"&&br&
确认密码:&input type="password" name="cpassword"&&br&
&input type="submit" name="Submit" value="提交"&
希望本文所述对大家的php程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具君,已阅读到文档的结尾了呢~~
基于BS结构的CRM系统的设计与..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于BS结构的CRM系统的设计与开发
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口请高手帮忙看下我写的这个Javascript脚本文件验证用户名和密码在登录是不能为空那里错了,怎么不出现提示_百度知道
请高手帮忙看下我写的这个Javascript脚本文件验证用户名和密码在登录是不能为空那里错了,怎么不出现提示
用户名和密码不能为空;&登录&text&&/&&& &center&/&p align=&quot: &p align=&html&center&& 密码;center& &);& action=&/错误提示.value==&script& &body&&lt:&lt.value==&错误提示;/&quot:用户名不能为空;p align=&& &html&input type=&head&username&
if (form1.value==&quot. name=&quot!&quot.username!&input type=& vlaue=& 用户名;)
{alert (& &#47!& &&body&
if(form1; name=&script language=&);input type=&form name=&&head&&Javascript&&password&&form1&pwd&/form>
return false:密码不能为空;& }&
& & pwd==&)
{alert (&submit&); & function check() {if(form1.& onsubmit="错误提示;)
{alert (&&#47&lt
提问者采纳
org/TR/xhtml1/DTD/xhtml1-body&/&input type=&).dtd& value=&)
alert (&script language=&quot!&-/pwd&/ name=&input type=&quot:用户名和密码不能为空;
}&html&错误提示;
&form id=&center&&&/&gt:&&&submit&&server&/).w3;&quot.
用户名;form&
& name=&form1&center&/ &#47!DOCTYPE html PUBLIC &input type=& runat=& onclick=&&
密码:密码不能为空;&html&gt.org/TR/xhtml1/DTD/xhtml1-
if (form1;password&quot.value==&W3C/text&Javascript&quot.return check()&&#47.value==&form1&body&
&;username&quot.0 Transitional/&quot!&quot.pwd.value==&quot!&&&head&gt.w3;& action=&
& name=&quot.&)
&script&&head& onsubmit=&EN&错误提示;p align=&)
&/);登录&quot:// function check() {
if(form1;center& && form1;p align=&quot://&&
return true:用户名不能为空.value==&&DTD XHTML 1&lt
提问者评价
非常感谢!新手上路,以后请多多指教!
来自团队:
其他类似问题
为您推荐:
其他1条回答
这样就可以调用函数了
试试;&&form1&& onsubmit=&return check();这里错了 onsubmit 没有调用js 应该改为 onsubmit=&& action=&form name=&quot&lt
脚本文件的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁编写一个Java的用户名口令检测函数,期望的情况是首先输入的用户名错误则退出程序,不必再输入密码_百度知道
编写一个Java的用户名口令检测函数,期望的情况是首先输入的用户名错误则退出程序,不必再输入密码
println(&&ZYH&quot.dlpu.
public static String inputUserPassword() {
Scanner userPassword = new Scanner(Spublic class Login {
public static void main(String[] args) {
String name = inputUserName().jsj2202;Wrong name&);
public static boolean checkNmae(String name) {
return (&import java.println(&
public static boolean checkPassword(String password) {
return (&quot.
System.S);
if (checkNmae(name)) {
if (checkPassword(password)) {
System:&quot.ooplab1;Please Input Your N
String password = userPPlease Input Your Password.println(&quot:&quot.equals(name)).xxxy.in););;
}}但这个程序即使用户名错了.).println(&
String password = inputUserPassword().util.
System.println(&quot.
public static String inputUserName() {
Scanner userNmae = new Scanner(System.nextLine(););;
System.out.in);Wrong password&quot.nextLine()Check OK&quot.equals(password));
String name = userNmae
提问者采纳
&&(checkNmae(inputUserName()))&&&&&&&{&&&&(&&/zhidao/pic/item/ae51f3deb48f8c54e888e28d3f292df5e0fe7f3c;&&&&&&&);&&&nbsp.nextLine();&&&nbsp.println(&}&&&&&&&&public&&&if&(checkPassword(inputUserPassword()))&}&&);&nbsp:&&nbsp://e.&&&&public&&{&);&&&&&password&;}&&}&password)&&return&&&&&&&&&S&&&&&&&&&&{&&checkPassword(String&P(&&&&nbsp.println(&&&Input&&&&&&&&=&&&public&password&{&userNS&&&Scanner(S&inputUserPassword()&nbsp://e;&Check&&nbsp:import&&nbsp.&&&Wrong&&return&else&public&=&&&args)&&Scanner(S&nbsp.&nbsp.println(&&static&&&&&&&&&&inputUserName();&&&&&&nbsp.&=&&}}<img class="ikqb_img" src="}&}&&checkNmae(String&&NString&&&Wrong&&&userNmae&&nbsp.Test&nbsp.main(String[]&String&&&Scanner&return&才会依次进行判断的;{&password.println(&String&&&&if&Input&Please&&nbsp.equals(password));&ZYH&&&nbsp原因是因为 开始的两句代码 就是要输入用户名和密码的代码String&&);&&&inputUserPassword();{&&static&&nbsp.jpg" esrc="name)&password&&}&&&nbsp.Sname&quot.&&static&&/zhidao/wh%3D600%2C800/sign=d8a46f8cd71b0ef46cbd9058edf47de2/ae51f3deb48f8c54e888e28d3f292df5e0fe7f3c;&&&new&&=&public&&&=&Scanner&&Your&nbsp.hiphotos。所以像你所说的那种效果的代码应该是;{&&.com/zhidao/wh%3D450%2C600/sign=d108cfeb38bc96756fc20/ae51f3deb48f8c54e888e28d3f292df5e0fe7f3c;&&&&void&=&&&&&String&&nbsp://e;&inputUserName()&&&userPname&&Please&nbsp.hiphotos
提问者评价
非常感谢大神的指导!!!
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 淘宝账户不记得用户名 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信