当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

5.3.1使用表单提交用户身份认证信息

9/17/2020 9:38:49 PM 人评论

5.3.1使用表单提交用户身份认证信息

5.3 用户身份认证

很多Web应用程序都需要对用户进行身份认证,本节专门讨论如何在PHP中接收用户身份认证信息的技术。

5.3.1 使用表单提交用户身份认证信息

5.1节中已经介绍了通过表单提交数据的方法,5.2节中介绍了在PHP中接收和处理表单数据,本小节使用这些技术设计登录页面,实现用户身份认证的功能。

设计用户登录页面Login.html,界面如图5-13所示。

figure_0102_0162

图5-13 用户登录页面Login.html

表单的定义代码如下:

<form method="POST" action="check.php">

......

</form>

可以看到,处理提交的用户身份认证信息的脚本为check.php。

用户名文本框的定义代码如下:

<input type="text" name="txtUserName" size="20">

密码文本框的定义代码如下:

<input type="password" name="txtPwd" size="20">

按钮的定义代码如下:

<input type="submit" value="登录" name="B1" style="font-size: 11pt; font-family:宋体" onclick="return form_onsubmit(this.form)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<input type="reset" value="重 置" name="B2" style="font-family: 宋体; font-size: 11pt">

单击“登录”按钮时会调用 Javascript 函数 form_onsubmit()验证是否输入了用户名和密码。form_onsubmit()函数的代码如下:

<script language="javascript">

function form_onsubmit(obj)

{

if(obj.txtUserName.value == "") {

alert("请输入用户名");

return false;

}

if(obj.txtPwd.value == "") {

alert("请输入密码");

return false;

}

return true;

}

</script>

请参照5.2.4小节理解。

check.php的代码如下:

<?PHP

//取输入的用户名和密码

$UID=$_POST['txtUserName'];

$PWD=$_POST['txtPwd'];

//验证用户名和密码

if($UID == "admin" and $PWD == "pass")

echo("您已经登录成功,欢迎光临。");

else

echo("登录失败,请返回重新登录。");

?>

在实际应用中,用户名和密码是存储在数据库中的,程序应该从数据库中检索用户信息并与接收到的用户名和密码进行比较。但现在并没有介绍管理 MySQL 数据库的方法,因此假定存在一个有效用户名admin,密码为pass。如果接收到的用户名为admin并且密码为pass,则显示“您已经登录成功,欢迎光临。”;否则显示“登录失败,请返回重新登录。”。

在第11章中,将结合二手交易市场系统介绍从数据库中检索并验证用户身份信息的方法。

5.3.2 使用HTTP认证机制

HTTP认证是一种用来允许Web浏览器,或其他客户端程序在请求时提供以用户名和口令形式的凭证。PHP的HTTP认证机制仅在PHP以Apache模块方式运行时才有效。可以使用header()函数实现此功能,它的语法如下:

void header ( string $string [, bool $replace = true [, int $http_response_code ]] )

header()函数会向Web服务器发送一个HTTP报头,参数$string指定HTTP报头的内容。可选参数$replace指定该报头是否替换之前的报头,或添加第二个报头。默认值为true(替换),如果为false,则允许相同类型的多个报头。可选参数$http_response_code用于强制指定HTTP响应代码的值。

调用header()函数客户端浏览器发送HTTP报头'WWW-Authenticate: Basic realm="My Realm"'和'HTTP/1.0 401 Unauthorized',弹出一个输入用户名/密码的窗口,代码如下:

header('WWW-Authenticate: Basic realm="My Realm"');

header('HTTP/1.0 401 Unauthorized');

用户输入用户名和密码后,在PHP中可以通过服务器变量$_SERVER获取用户的输入数据。$_SERVER是一个全局数组,与HTTP身份认证有关的键包括:

• PHP_AUTH_USER,用户名;

• PHP_AUTH_PW,密码。

【例5-5】 使用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';

exit;

} else {

echo "<p>您好{$_SERVER['PHP_AUTH_USER']}.</p>";

echo "<p>您输入的密码是{$_SERVER['PHP_AUTH_PW']} .</p>";

}

?>

浏览此脚本会弹出如图5-14所示的登录对话框。输入用户名和密码后单击“确认”按钮,会在页面中显示输入用户名和密码,如图5-15所示。

figure_0104_0163

图5-14 例5-5的登录对话框

figure_0104_0164

图5-15 例5-5显示输入用户名和密码

相关教程

共有条评论 网友评论

验证码: 看不清楚?