【问题标题】:PHP Cookies not being set in WAMP未在 WAMP 中设置 PHP Cookie
【发布时间】:2013-08-01 18:57:11
【问题描述】:

我有两个脚本,一个用于处理登录,一个用于注册登录,它们都创建了一个 sessiod id 并将其插入到 cookie 和数据库中。数据库插入工作正常,但是未设置 cookie:

登录:

//...Stuff...
$sql = "SELECT * FROM dm_users WHERE username = '$username' LIMIT 1";
    $res = mysql_query($sql);
    if(mysql_num_rows($res) == 0) {
        header("Location: denied.php?u");
        die();
    }
    while($r = mysql_fetch_assoc($res)){
        $brought = $r['password'];
    }
    if (PassHash::check_password($brought, $password)) {  
        if($remember == 1) {
            $time = time() + (10 * 365 * 24 * 60 * 60);
        } else {
            $time = 0;
        }
        $val = uniqid() . time();
        setcookie("dmsesid",$val,$time);
        $sql = "INSERT INTO dm_sessions (username,sesid,`timestamp`) VALUES ('$username','$val',now())";
        $r = mysql_query($sql);
        $sql2 = "UPDATE dm_users set lastlogin = NOW() WHERE username = '$username'";
        $r2 = mysql_query($sql2);
        header('Location: ../characters.php');
    } else {  
        //...More stuff...

注册过程的工作方式大致相同,但只有 $time = 0;选项。

任何帮助将不胜感激!

【问题讨论】:

  • @DevZer0 我插入的会话 ID 不是 PHP 会话 ID,而是将用户计算机与 mysql 会话表相关联的唯一 ID。 cookie 值稍后会根据会话表(除其他外)进行检查,以确定用户是否已登录。
  • 您是否启用了错误报告?您在设置 cookie 之前是否发送任何数据(例如 HTML)?

标签: php cookies setcookie


【解决方案1】:

我认为你必须为 cookie 设置路径

setcookie("dmsesid",$val,$time, '/');

来自 PHP 手册:

cookie 可用的服务器上的路径。如果设置为“/”,cookie 将在整个域中可用。如果设置为 '/foo/',则 cookie 将仅在 /foo/ 目录和 domain 的 /foo/bar/ 等所有子目录中可用。默认值是设置 cookie 的当前目录。

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 2019-07-25
    相关资源
    最近更新 更多