在你不想让别人直接进入的网页开头加一段代码:
session_start(); //打开SESSION。
/*
* 定点提示跳转
*/
function jian($ce,$dizhi) {
echo ("");
exit;
} //第一个参数是提示信息,第二个参数是跳转地址
if ($_SESSION["name"] == "") {
jian('对不起,你没有登陆,无权访问!','login.php');
}
然后在你登陆处理页面(就是登陆后验证用户的页面),登陆成功后,跳转页面前加一句:$_SESSION["name"] = $name;
首先你身为管理员应该有一个自己的账号和密码,那么这个账号和密码即使你登陆网站的口令,也是你登陆这个有隐私页面的口令,我们先假设一个账号和密码,假如你的账号是:abc,密码是555555;那么在你的有隐私的页面里加上这样的门代码:
//如果有$_POST['myname']和$_POST['mypwd']提交过来,则进行赋值,否则跳过。
if(@$_POST['myname']!=''&&@$_POST['mypwd']!=''){
$_SESSION['username']=$_POST['myname'];
$_SESSION['userpwd']=$_POST['mypwd'];
}
if(@$_SESSION['username']!='abc'||@$_SESSION['userpwd']!='555555'){
//如果密码或者用户名不正确,则跳转到登陆这个页面的网页
echo '';
}
?>
要跟你说的一点就是你说的用cookie的方法是不可取的,因为cookie保存在本地,很容易被攻击被窃取,而且你用session保存你的账号和密码,这个账号密码是这个页面的唯一口令,你浏览了别的页面,session依然保存着,所以你回来这个页面的时候,会直接对session进行判断,所以不需要再次登陆,而只有你的用户名和密码不正确的时候才会跳转到提交用户名密码的页面。
此处解释上面括号里的:你登陆后,你的账号和密码也是这个页面唯一同行口令,所以只要你登陆了,你便可以直接进入这个页面了,而页面中的PHP代码会对所浏览这个页面的每个用户进行账号和密码判断,如果不是你来了,直接跳转,这里建议跳转到网站首页或者登陆页面!
//两种方法,一个是修改php.ini设置session相关的COOKIE的时间,它的默认设置是关闭浏览器就消失。设置一天后失效,然后把对应的SESSION存到数据库,这样可以避免把帐号密码存到客户端。
//第二中,直接把帐号和密码放到COOKIE中发到客户端。不安全。
session_start();
if($_COOKIE['user']&&$_COOKIE['pass']){
$user=$_COOKIE['user'];
$pass=$_COOKIE['pass'];
if(!check($user,$pass)){
header(Location:url);
}
$_SESSION['login']=TRUE;
}else{
$user=$_POST['user'];
$pass=$_POST['pass'];
if(!check($user,$pass)){
header(Location:url);
}
setcookie('user',$user,time()+28800);
setcookie('pass',$pass,time()+28800);
$_SESSION['login']=TRUE;
}
//从数据库读取和帐号相匹配的密码
function check($user,$pass){
$sql='select * from user where user.pass='.$pass.' and user='.$user;
$result=mysql_query($sql);
$res=mysql_row_nums($result);
if($res>0){
return true;
}else{
return false;
}
}
//如果返回的列大于0就登录成功,否则返回
//存入在SESSION里面,登录一次就可以在整个管理后台行走,不用重登录。
密码要保存到数据库中,用密文保存,这就需要一个用户表,表中有登录名和密码,再加一个sessionid就可以解决刷新问题,登录的时候先判断sessionid,是否需要重登录,然后将输入的密码明文加密与数据库中的对比是否一致就可以了!