首頁 >php教程 >php手册 >php 用户登录验证码的实现方法

php 用户登录验证码的实现方法

WBOY
WBOY原創
2016-05-26 15:22:061636瀏覽

下面我们用Mysql数据库来存储用户的身份,我们需要从数据库中提取每个帐号的用户名和密码以便与$PHP_AUTH_USER和$PHP_AUTH_PW变量进行比较,判断用户的真实性.

首先,在MySql中建立一个存放用户信息的数据库,数据库名为XinXiKu,表名为user;表定义如下:

create table user( 
	ID INT(4) NOT NULL AUTO_INCREMENT, 
	name VARCHAR(8) NOT NULL, 
	password CHAR(8) NOT NULL, 
	 PRIMARY KEY(ID) 
	)

说明:

1、ID为一个序列号,不为零而且自动递增,为主键;

2、name为用户名,不能为空;

3、password为用户密码,不能为空;

以下是用户验证文件login.php,实例代码如下:

//判断用户名是否设置 
if(!isset($PHP_AUTH_USER)) 
{ 
    header("WWW-Authenticate:Basic realm="身份验证功能""); 
    header("HTTP/1.0 401 Unauthorized"); 
    echo "身份验证失败,您无权共享网络资源!"; 
    exit(); 
} 
/*连接数据库*/ 
$db=mysql教程_connect("localhost","root",""); 
//选择数据库 
mysql_select_db("XinXiKu",$db); 
//查询用户是否存在 
$result=mysql_query("SELECT * FROM user where name='$PHP_AUTH_USER' and password='$PHP_AUTH_PW'",$db); 
if ($myrow = mysql_fetch_row($result)) 
{ 
    //以下为身份验证成功后的相关操作 
    ... 
} 
else 
{ 
    //身份验证不成功,提示用户重新输入 
    header("WWW-Authenticate:Basic realm="身份验证功能""); 
    header("HTTP/1.0 401 Unauthorized"); 
    echo "身份验证失败,您无权共享网络资源!"; 
    exit(); 
}

程序说明:

在程序中,首先检查变量$PHP_AUTH_USER是否已经设置,如果没有设置,说明需要验证,脚本发出HTTP 401错误号头标,告诉客户端的浏览器需要进行身份验证,由客户端的浏览器弹出一个身份验证窗口,提示用户输入用户名和密码,输入完成后,连接数据库,查询该用用户名及密码是否正确,如果正确,允许登录进行相关操作,如果不正确,继续要求用户输入用户名和密码.

函数说明:

1、isset():用于确定某个变量是否已被赋值,根据变量值是否存在,返回true或false

2、header():用于发送特定的HTTP标头,注意,使用header()函数时,一定要在任何产生实际输出的HTML或PHP代码前面调用该函数.

3、mysql_connect():打开 MySQL 服务器连接.

4、mysql_db_query():送查询字符串 (query) 到 MySQL 数据库.

5、mysql_fetch_row():返回单列的各字段.

用session实现服务器验证

对于需要身份验证的页面,使用apache服务器验证是最好不过的了,但是,apache服务器验证的界面不够友好,而且,cgi模式的php,iis下的php,都不能使用apache服务器验证,这样,我们可以利用session在不同页面间保存用户身份,达到身份验证的目的.

在后端我们同样利用上面的Mysql数据库存放用户信息,我们先编写一个用户登录界面,文件名为login.php,代码如下:

<form action="login1.php"> 
    用户名:<input type="text" name="name"><br> 
    口 令:<input type="text" name="pass"><br> 
    <input type="submit" value="登录"> 
</form>

login1.php处理提交的表单,代码如下:

<?php
$db = mysql_connect("localhost", "root", "");
mysql_select_db("XinXiKu", $db);
$result = mysql_query("SELECT * FROM user where name=&#39;$name&#39; and password=&#39;$pass&#39;", $db);
if ($myrow = mysql_fetch_row($result)) { //开源代码phprm.com
    //注册用户
    session_start();
    session_register("user");
    $user = $myrow["user"];
    // 身份验证成功,进行相关操作
     . . .
} else {
    echo "身份验证失败,您无权共享网络资源!";
}

这里需要说明的是,用户可以使用在后续的操作中用**http://domainname/next.php?user=用户名 **来绕过身份验证,所以,后续的操作应先检查变量是否注册:已注册,则进行相应操作,否则视为非法登录,相关代码如下:

session_start();
if (!session_is_registered("user")) {
    echo "身份验证失败,属于非法登录!";
} else {
    //成功登录进行相关操作
     . . .
}

               
               

教程地址:

欢迎转载!但请带上文章地址^^

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn