是因为我的查询方式有错吗? 这是检查用户是否存在的一部分
$sql="select * from users where id='".$_COOKIE["id"]."'";
$query=mysql_query($sql);
$user=mysql_fetch_array($query);
if(empty($user))
{
echo "<script language='javascript'>alert('用户不存在!点击“确定”重新输入');location.href=('login.php')</script>";
}

解决方案 »

  1.   

    $sql="select * from users where id='".$_COOKIE["id"]."'";
    echo $sql;  //这里看看, 说不定$_COOKIE没东西
    //另外建议, where id= 过滤后的COOKIE, 比如intval,addslashes, 因为COOKIE是可改的
    $query=mysql_query($sql) or die(mysql_error()); //后面那部分可以在查询错的时候看看问题,不过会中断..
    $user=mysql_fetch_array($query);
    if(empty($user))
    {
        echo "<script language='javascript'>alert('用户不存在!点击“确定”重新输入');location.href=('login.php')</script>";
    }
      

  2.   

    $sql="select * from users where id='".$_COOKIE["id"]."'";
    echo $sql; //这里看看, 说不定$_COOKIE没东西
    //另外建议, where id= 过滤后的COOKIE, 比如intval,addslashes, 因为COOKIE是可改的
    $query=mysql_query($sql) or die(mysql_error()); //后面那部分可以在查询错的时候看看问题,不过会中断..
    $user=mysql_fetch_array($query);
    if(!$user)
    {
      echo "<script language='javascript'>alert('用户不存在!点击“确定”重新输入');location.href=('login.php')</script>";
    }
      

  3.   

    直接使用$_COOKIE["id"]是一种非常危险的行为,典型的注入
      

  4.   

    $sql="select * from users where id=".$_COOKIE["id"]."";id是int字段吧,不用单引号。
      

  5.   

    ".$_COOKIE["id"]."'";???问题在这
      

  6.   

    $user=mysql_fetch_array($query);
    if(empty($user))
    大致改成mysql_num_rows,,cookie尽量不要用得好。有时候setcookie("user",$username) ,有时候要写$user,有时候$_COOKIE['user'] 具体情况具体看 
      

  7.   


    为什么我$_COOKIE['id']是空的?我写了setcookie("id",$_POST["id"]);的呀
    因为$_COOKIE['id']是空的,所以SQL语句就有错了。
    怎么解决呀。。