LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1362|回复: 2

apache+php+psql网页验证代码

[复制链接]
发表于 2007-4-14 23:30:15 | 显示全部楼层 |阅读模式
请大家看看,欢迎指出不足之处。






<?php

//用途:
//定义一个类login,判断访问者是否登录或是否有权查看此页面,否则要求验证。如用户登录,就将用
//户名、密码和权限将会放在全局变量$_SERVER['PHP_AUTH_USER']、$_SERVER['PHP_AUTH_USER']和
// $_SESSION['grade']中。

//调用方法:
//在每个需验证身份和权限的网页前加如下代码
//<?php $pagename ="xxxCOM";
//$grade=X;
//include   'login.inc';
//$thisdo =new  login;
//$thisdo->login1($grade,$pagename ); ?>

//运行环境:
//php4.0以上,数据库为postgresql,数据表中有一表示用户权限的数字列

//编写人:江西吉水zhuoli76


//定义类login
class login{
//定义函数login1,从数据库中提取用户的管理权限(0至5),5为管理员。
//需要先设定$grade(页面所需权限),$pagename(页面名称)
function  login1($grade,$pagename){
session_start();


if(!isset($_SERVER['PHP_AUTH_USER']) )
{
echo "你未登录。";
Header("WWW-Authenticate: Basic realm=$pagename");
Header("HTTP/1.0 401 Unauthorized");
exit;

}

$name =$_SERVER['PHP_AUTH_USER'] ;
$pass = $_SERVER['PHP_AUTH_PW'] ;
// 连接,选择数据库
$connect = pg_connect ("host=localhost dbname=mynet user=zhuoli")   
or die('Could not connect: ' . pg_last_error());
// 执行 SQL 查询login表(用户consumer为主键,不能有重复值,grade为用户权限,
$result = pg_query($connect,"SELECT consumer,pwd,grade
FROM login  WHERE consumer like '$name'  and pwd like '$pass' ")
or die('Query failed: ' . pg_last_error());


//如果认证失败,就清空验证数据,要求重新输入。
//成功的话,提取用户权限grade给全局变量$_SESSION['grade']
$amount = pg_numrows($result);


if($amount == 0) {
echo "登录失败,请正确输入用户名和密码。";
Header("WWW-Authenticate: Basic realm=\"$pagename\"");
Header("HTTP/1.0 401 Unauthorized");
exit;
}
else {
echo "你已登录";
$_SESSION['grade']=pg_result($result,0,"grade");  
if ($_SESSION['grade']<$grade)
{
echo ",但无权查看此页。";
exit;
}
}

// 释放结果集
pg_free_result($result);
// 关闭连接
pg_close($connect);
//结束函数showsql_field

//函数login1()结束
}
//类login的结束
}

?>
 楼主| 发表于 2007-4-16 14:03:24 | 显示全部楼层
觉得以上代码有不足之处,正在改正,改后发上来,请大家指出不足
回复 支持 反对

使用道具 举报

发表于 2007-4-17 09:18:48 | 显示全部楼层
原理都一样..
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表