background image

PHP+MYSQL 身份验证的方法

    近日在为学校制做校友录时,需要身份验证,在对比之后决定采用 PHP+MYSQL 进行
身份验证。
 之前也曾考虑过用 cookies 或 session。但是用 cookies,在用户离线再上线后,只要
cookies 不过期,不用登录仍然可以保持在线,这对于网吧来说是个隐患。而且用户可以
关闭 cookies,这样身份验证就不成功。也考虑过用 session,session 在浏览过程中不断的将
访问信息加入到 session 中,如果用户在网站内时间很长,浏览的页面很多,就用导致
session 越来越大,浏览速度降低,最后只有重新登录,虽然这种情况不多见,但不是我
们所希望的。
  
  我在做这个身份验证时的想法是,在身份验证的同时,记录浏览信息。
    用 户 ID 在 每 个 页 面 间 传 递 , ID 值 是 用 MD5() 函 数 加 密 得 到 的 。 验 证 函 数 是
validate_id(),返回值为
(0,1),

成功为 1”。

  思路:
        判 断 被 传 入 的

ID

值 是 否 为 匿 名 登 录

ID(a684dd572b1887661782981659331eed),32 位,如果是返回 0,并且
  将浏览信息加入数据库。如果否,则查询数据库,看数据库中的用户 ID,用户 IP 与
传入的 ID,IP 值是否相等
  并且最近浏览时间距当前时间不到 20 分钟的记录。
    
    判断得到的记录数,如果为 0,则认为离线,并用匿名 ID 登录浏览信息,返回
0。记录不为 0 时,将
  用户 ID,用户 IP 值,加入数据库,返回 1。
 
创建数据库:
  
  create table logging{
id int unsigned not null primary key auto_increment,
user_id char(32) not null,//用户 ID
logging_ip varchar(20) not null,//记录用户 IP 地址
page_name varchar(30) not null,//浏览网页名
view_time timestamp not null,
student_id varchar(20)
);
 
创建函数:
 
 
function validate_id($link,$id,$ip,$page_name,$student_id=""){
if($id==a684dd572b1887661782981659331eed or $id=){
$query=insert

 

into

 

logging(user_id,logging_ip,page_name,student_id)

 

values