|
请大家看看,欢迎指出不足之处。
<?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的结束
}
?> |
|