表达的不太清楚,意思就是一个网站有个栏目里面有很多个会员,但是每个会员只能通过浏览自己的信息,不能查看其他会员的信息。
这是我现在的代码。先是登陆时的验证<?php
session_start();
include_once("./include/path.php"); //自定义的路径;
include_once("$include/name.php"); //自定义的各种命名;
include_once("$include/public.inc.php");
$name=$_POST['name'];
$passowrd=$_POST['psw'];
if ($name && $passowrd){
$sql = "select * from admin where name = '$name' and psw='$passowrd' limit 1";
$query = mysql_query($sql);
$result = mysql_fetch_array($query);
if($result['id']){
$_SESSION['id'] = $result['id'];
$_SESSION['name'] = $result['name'];
header("Location: admin.php?id=$result[id]");
exit;
}else{
echo "<script language=javascript>alert('用户名密码错误');window.location.href='index.php';</script>";
}
}else {
echo "<script language=javascript>alert('用户名密码不能为空');window.location.href='index.php';</script>";
}
?>然后进入到会员页面admin.php之后还有一个验证,相当于checkuser<?
session_start();
$sql1 = "select name from admin where id = $_GET[id]";
$query1 = mysql_query($sql1);
$row1 = mysql_fetch_array($query1);
if($_SESSION['id']==$row1['id'] or $_SESSION['name']=''){
echo "<script language=javascript>alert('对不起,未登录只有浏览权限');window.location.href='index.php';</script>";
}
?>
但是这样的话我用我的会员账号进来之后仍就可以通过修改url中的id值来浏览其他会员的信息。
现在我相当于陷入了一个死循环,只要我手动修改了url中的id值,那么我就相当于修改了$_GET[id]的值,那么接下来的验证也就没有意义了。求解怎么做这个会员?
貌似我最上面的会员登录就有问题,是不是这样admin.php?id=$result[id]来进行会员的登录取值非常不合适?
这是我现在的代码。先是登陆时的验证<?php
session_start();
include_once("./include/path.php"); //自定义的路径;
include_once("$include/name.php"); //自定义的各种命名;
include_once("$include/public.inc.php");
$name=$_POST['name'];
$passowrd=$_POST['psw'];
if ($name && $passowrd){
$sql = "select * from admin where name = '$name' and psw='$passowrd' limit 1";
$query = mysql_query($sql);
$result = mysql_fetch_array($query);
if($result['id']){
$_SESSION['id'] = $result['id'];
$_SESSION['name'] = $result['name'];
header("Location: admin.php?id=$result[id]");
exit;
}else{
echo "<script language=javascript>alert('用户名密码错误');window.location.href='index.php';</script>";
}
}else {
echo "<script language=javascript>alert('用户名密码不能为空');window.location.href='index.php';</script>";
}
?>然后进入到会员页面admin.php之后还有一个验证,相当于checkuser<?
session_start();
$sql1 = "select name from admin where id = $_GET[id]";
$query1 = mysql_query($sql1);
$row1 = mysql_fetch_array($query1);
if($_SESSION['id']==$row1['id'] or $_SESSION['name']=''){
echo "<script language=javascript>alert('对不起,未登录只有浏览权限');window.location.href='index.php';</script>";
}
?>
但是这样的话我用我的会员账号进来之后仍就可以通过修改url中的id值来浏览其他会员的信息。
现在我相当于陷入了一个死循环,只要我手动修改了url中的id值,那么我就相当于修改了$_GET[id]的值,那么接下来的验证也就没有意义了。求解怎么做这个会员?
貌似我最上面的会员登录就有问题,是不是这样admin.php?id=$result[id]来进行会员的登录取值非常不合适?
<?PHP
//管理員權限控制類
Class Power{
Public $Popedom = Array(0=>"進入后臺界面",
1=>"系統基本設定",
2=>"管理旅館類型",
3=>"管理房間類型",
4=>"管理房間設施",
5=>"管理旅館設施",
6=>"管理城市信息",
7=>"管理系統附件",
8=>"旅館信息管理",
9=>"房型信息管理"
); Function __construct(){
IF(!IsSet($_SESSION["UserId"]) Or !IsSet($_SESSION["GroupId"]) Or !IsSet($_SESSION["UserName"]) Or !IsSet($_SESSION["IsLock"])){
Alert("","".YJ_SysRoot."@manage/index.php?work=getout");Die();
}Else{
//判断用户是否为超级管理员
IF($_SESSION["GroupId"]==1){
$_SESSION["Isadmin"]=True;
}Else{
$_SESSION["Isadmin"]=False;
}
}
} //常规项目权限判断
//用法:IF(!$Power->_Item(6,3)){Alert("因为您的权限不足所以您暂时无法对{$Power->Popedom[6]}进行操作!");}
//参数:$Type为$Popedom的索引;$P是權限的層次取值范围:0初级;1中级;2高级;3全能
Function _Item($Type,$P=0){
IF($_SESSION["IsLock"]==1){Return False;}
IF($_SESSION["Isadmin"]){Return True;}
IF(!Is_numeric($Type) Or !Is_numeric($P)){Return False;} //检测指定的项目键名是否在用户的管理项目列表内
IF(Empty($_SESSION["PList"])){Alert("","index.php?work=getout");}
IF(Array_key_exists($Type,$_SESSION["PList"])){
IF($_SESSION["PList"][$Type]>=$P){
Return True;
}Else{
Return False;
}
}Else{
Return False;
}
} //目录访问权限判断
//用法:IF(!$Power->_cDir("../@Img")){Alert("因为您的权限不足所以您暂时无法对该目录进行操作!");}
//参数:$oPath为需要判断的文件夹路径;
Function _cDir($oPath){
IF($_SESSION["IsLock"]==1){Return False;}
IF(Empty($oPath)){Return False;}
IF($_SESSION["Isadmin"]){Return True;}
IF(!$_SESSION["Isadmin"] And Empty($_SESSION["UserDir"])){Return False;}
$oPath=Str_iReplace("\\","/",$oPath);
$oPath=Str_iReplace("//","/",$oPath); //检测指定的classid是否在用户的许可管理的分类列表内
IF(Stristr($oPath,$_SESSION["UserDir"])!==False){
Return True;
}Else{
Return False;
}
} //析构函数
Function __destruct(){
}// //方法,获取属性
// Function __get($property_name){
// IF(isset($this->$property_name)){
// Return ($this->$property_name);
// }Else{
// Return (NULL);
// }
// }
//
// //方法,设置属性
// Function __set($property_name,$value){
// $this->property_name=$value;
// }
}
?>另外这个类我用到了我开发的一个cms上,你可以通过研究这个cms的后台权限分配,理解我的思路
下载地址是
http://download.csdn.net/source/3248406
只需要判断 $_SESSION['id']是否和get过来的id相同就行了,如果不同就die掉,相同则说明就是用户本人了.
session_start();
$sql1 = "select name from admin where id = $_SESSION[id]";
$query1 = mysql_query($sql1);
$row1 = mysql_fetch_array($query1);
if($_SESSION['id']!='$_GET[id]'){
echo "<script language=javascript>alert('请先登录自己的账户');window.location.href='index.php';</script>";
}
?>这个是我思路,但是执行不出来,明明session和get的id值一样,但是它总是输出js。相反,如果我把!=改成==就可以了,我诧异了,到达哪里错了,为什么我的思路和执行的结果正好相反了?
这是执行成功的代码<?
session_start();
$sql1 = "select name from admin where id = $_SESSION[id]";
$query1 = mysql_query($sql1);
$row1 = mysql_fetch_array($query1);
if($_SESSION['id']=='$_GET[id]'){
echo "<script language=javascript>alert('请先登录自己的会员账号');window.location.href='index.php';</script>";
}
?>
把if($_SESSION['id']!='$_GET[id]')改成 if($_SESSION['id']!=$_GET[id])
就可以了,我加个引号就错了?
if($_SESSION['id']==$_GET['id']){