mysql_select_db("dhbase",$conn);
$sql="select * from dh_admin where uname='$lname' and upass='$ckpass' and work=1";
$result=mysql_query($sql,$conn);
if(mysql_num_rows($result)<=0)
{
echo "<font color=red>账号信息有误</font>";
exit;
}
else
{
$row=mysql_fetch_array($result);
$lid=$row["id"];
$ltime=date('y-m-d h:i:s',time());
$user_IP=@($_SERVER["HTTP_VIA"])?$_SERVER["HTTP_X_FORWARDED_FOR"]:$_SERVER["REMOTE_ADDR"];
$user_IP=($user_IP)?$user_IP:$_SERVER["REMOTE_ADDR"];
$lsql="INSERT INTO dh_alog(aid,logtime,logip) VALUES ('$lid','$ltime','$user_IP')";
if(!mysql_query($lsql,$conn))
{
die('Error: '.mysql_error());
}
setcookie("uname",$lname,time()+3600);
//echo $_COOKIE["uname"];
echo "<script>location.href='index_home.php';</script>";
exit;
}
这段登陆验证并写入cookie 输出cookie也是正常的
接着跳转到index_home.php这页面,该页面调用了验证页面admin_chk.php
代码如下:
<?php
session_start();
if(isset($_COOKIE["uname"]))
{
echo $_COOKIE["uname"];
}
else
{
echo "<script>alert('温馨提示:您的权限已经超时,请重新登录');location.href='index.php'</script>";
exit;
}
?>
这代码哪里写错了么?我这调试一登录就温馨提示:您的权限已经超时,请重新登录。
求高人指点,谢谢cookie验证

解决方案 »

  1.   

    谢谢啊 难道PHP还跟浏览器有关啊?
      

  2.   

    我这换了IE 和 火狐 还是不行额
    我直接在admin_chk.php 输出 $_COOKIE["uname"] 它报错说未定义。怎么回事哦,我这刚学PHP就遇到这么奇怪的事啊
      

  3.   

    不知道你的 admin_chk.ph 代码是如何写的
      

  4.   

    <?php
    header("Content-Type: text/html; charset=gb2312");
    session_start();
    if(!isset($_COOKIE["uname"]))
    {
    echo "<script>alert('温馨提示:您的权限已经超时,请重新登录');location.href='index.php'</script>";
    exit;
    }
    ?>这是admin_chk.php 文件其中index_home.php 和 admin_chk.php 不是在一个目录下的
    index_home.asp 引用:
    <?php
    include "inc/admin_chk.php"
    ?>
    ....
      

  5.   

    index_home.php 就是那点代码,前面还有不有?
      

  6.   

    文档布局
    index_home.php
    inc/admin_chk.phpinc/admin_chk.php 中有 setcookie("uname",$lname,time()+3600);是这样吧?那么
    setcookie("uname",$lname,time()+3600);
    应写作
    setcookie("uname",$lname,time()+3600, '/');
      

  7.   

    前面没了 后面就是一些html代码了
    setcookie("uname",$lname,time()+3600); 这句是在登录验证login_ck.php的时候就写了的登录界面是通过ajax 异步login_ck.php验证:<?php
    header("Content-Type: text/html; charset=gb2312");
    session_start();
    $lname=$_POST["Loname"];
    if($lname=="")
    {
    echo "<font color=red>请输入用户名</font>";
    exit();
    }
    $lpass=$_POST["Lopass"];
    if($lpass==""){
    echo "<font color=red>请输入密码</font>";
    exit();
    }
    $lsx=$_POST["Losx"];
    if($lsx=="")
    {
    echo "<font color=red>请输入密令</font>";
    exit();
    }
    if($lsx!="dhsystem")
    {
    echo "<font color=red>密令错误</font>";
    exit();
    }
    $lcode=strtolower($_POST["Locode"]);
    if($lcode=="")
    {
    echo "<font color=red>请输入验证码</font>";
    exit();
    }
    if($lcode!=strtolower($_SESSION["randcode"]))
    {
    echo "<font color=red>验证码输入错误</font>";
    exit();
    }
    $ckpass=substr(md5($lpass),9,12);
    $conn = mysql_connect("localhost","root","*******");
    if(!$conn)
    {
    die('Could not connect: '.mysql_error());
    }
    mysql_select_db("dhbase",$conn);
    $sql="select * from dh_admin where uname='$lname' and upass='$ckpass' and work=1";
    $result=mysql_query($sql,$conn);
    if(mysql_num_rows($result)<=0)
    {
    echo "<font color=red>账号信息有误</font>";
    exit;
    }
    else
    {
    $row=mysql_fetch_array($result);
    $lid=$row["id"];
    $ltime=date('y-m-d h:i:s',time());
    $user_IP=@($_SERVER["HTTP_VIA"])?$_SERVER["HTTP_X_FORWARDED_FOR"]:$_SERVER["REMOTE_ADDR"];
    $user_IP=($user_IP)?$user_IP:$_SERVER["REMOTE_ADDR"];
    $lsql="INSERT INTO dh_alog(aid,logtime,logip) VALUES ('$lid','$ltime','$user_IP')";
    if(!mysql_query($lsql,$conn))
    {
    die('Error: '.mysql_error());
    }
    setcookie("uname",$lname,time()+3600);
    //echo $_COOKIE["uname"];
    echo "<script>location.href='index_home.php';</script>";
    exit;
    }mysql_close($conn);
    ?>这个是login_ck.php的
      

  8.   

    你的登陆不是请求到 inc/admin_chk.php 的吗?
    那么在 inc/admin_chk.php 中设置的 cookie 只在 inc 目录中有效bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )参数 path
    说明 Cookie 在服务器端的有效路径。
      如果该参数设为 '/' 的话,cookie 就在整个 domain 内有效,如果设为 '/foo/',cookie 就只在 domain 下的 /foo/ 目录及其子目录内有效,例如 /foo/bar/。默认值为设定 cookie 的当前目录。  
      

  9.   

    搞到了 真是路径问题 我之前用asp的 PHP 这cookie还存在路径问题啊谢谢啊 谢谢