Freitag, Februar 23, 2007

PHP+MYSQL用户登录程序示例

一个用户登陆程序不单单是判断用户是否合法,还应该实现一些其它的功能。比如用SESSION保存用户信息等,提供给用户一些方便之处。

我尝试做了一个用户登陆程序,基本上实现了用户输入的合法性检查,用户的合法性检查,用户对其他页面访问的合法性检查,长时间未操作要求用户重新登陆的功能等等。

本程序块由以下部分组成:
db.inc 数据库连接的配置信息
may.inc 判断用户对页面的访问是否允许(长时间未操作要求用户重新登陆的功能).
session.inc 设置session的一些配置信息
login.php 用户登陆主文件
这个文件需要实现的功能包括:
一:检验用户输入数据的合法性
二:连接数据库,检查用户的合法性
三:为合法访问设置会话

以下是具体文件说明:

db.inc


//这里是数据库连接的配置信息db.inc
$db_host="localhost";
$db_user="db_user";
$db_password="db_password";
$db_name="db_name";
$user_table="user_table";
$access_table="access_table";
//可以在这里插入其它配置信息



上面文件的右边内容为用户自定义内容
如我们建立如下的用户表
CREATE TABLE access (
ID int(6) NOT NULL auto_increment,
username varchar(9) NOT NULL,
password varchar(9) NOT NULL,
enable tinyint(1) DEFAULT '0' NOT NULL,
PRIMARY KEY (ID)
);
则db.inc中$user_table="user_table";一句应该改为$user_table="access";
其它内容也是如此.
这样做的目的是为了提供一个方便管理的接口.


session.php


//这里是SESSION.PHP
//设置SESSION的配置文件
session_start();
session_register('s_username');
session_register('time_last_load');
$s_username=$username;
$time_last_load=time();
//在这里可以继续补充其它设置,以实现需要的功能




may.inc


//这里是MAY.INC
//用来判断用户访问的合法性的函数
if(!isset($s_username))
{
$info="你还没有登陆,请先登陆";
header("location:login.php?info=$info");
exit;
}
else
{
$time_now=time();
//$time_last_load 为SESSION中注册的变量
$time_interval=$time_now-$time_last_load;
if($time_interval>600)
{
$info="你的帐号闲置过久,请重新登陆";
session_destroy;
header("location:login.php?info=$info");
exit;
}
$time_last_load=time();
}



login.php


//这里是用户登陆文件LOGIN.PHP
//这个文件需要实现的功能包括:
//一:检验用户输入数据的合法性
//二:连接数据库,检查用户的合法性
//三:为合法访问设置会话
//*****************************************
include("db.inc");
if(isset($login)) //LOGIN为登陆按钮的NAME属性
{
if($username=="")
{
$info="请输入会员名";
header("location:login.php?info=$info");
exit;
}
else if($password=="")
{
$info="请输入密码";
header("location:login.php?info=$info");
exit;
}
else
{
$link=mysql_connect($db_host,$db_user,$db_password);
$db=msql_select_db($db_name,$link);
$query="select password,enable from $user_table
where username=$username";
$result=mysql_query($query);
if($result)
{
$row=mysql_fetch_array($result);
$member_password=$row[0];
$member_enable=$row[1];
mysql_close($link);
if($member_password!=$password)
{
$info="密码不正确,请重新输入";
header("location:login.php?info=$info");
exit;
}
else if($member_enable==0)
{
$info="帐号失效,请联系管理员";
header("location:login.php?info=$info");
exit;
}
else
{
$info="登陆成功";
include("session.inc");
header("location:index.php?info=$info");
exit;
}
} //结束 if($result) 语句块
else
{
mysql_close($link);
$info="用户不存在,请先注册";
header("location:register.php?info=$info");
exit;
}
}
} //结束if(isset($login))语句块



至于网页制作方面的事情,呵呵,想必不用我说了吧?

来源:http://www.shi8.com/121.html

Keine Kommentare: