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

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

WBOY
WBOYOriginal
2016-05-26 15:22:061636Durchsuche

下面我们用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 {
    //成功登录进行相关操作
     . . .
}

               
               

教程地址:

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php mysql 数据库备份程序 Nächster Artikel:PDO 中相关的错误处理