php - Cookie 在 Chrome 中有效,但在 IE 或 Safari 中无效?

标签 php mysql sql cookies browser

我在登录系统中使用 cookie,该系统在 Chrome 上运行,但当我转到 IE 或 Safari 时,它无法运行。由于某种原因未设置 cookie,我尝试回显它们但无济于事。

下面是制作 cookie 的代码:

if(isset($_POST['log_in_iniator'])){
    $username = $_POST['username'];
    $password = $_POST['password'];
    $log_in_checker_status = check_user_data($username, $password);
    if($log_in_checker_status == 'true'){
        //user has successfully logged in, create two cookies
        //cookie 1 username
        setcookie('username', $username, 0, 'http://shkeek.com');
        setcookie('loginstatus', 'true', 0, 'http://shkeek.com');
        header("Location: index.php");
    }else{
        setcookie('loginstatus', 'invalid', 0);
        header("Location: index.php");
    }
}

最佳答案

更改:

 setcookie('username', $username, 0, 'http://shkeek.com');

致:

 setcookie('username', $username, (24*60*60), '/');

或者:(见下文)

 setcookie('username', $username, (24*60*60), '/', '.shkeek.com');

为什么:

您正在将“过期”时间设置为从现在起 0 秒。因此,Chrome 正在创建一个“ session ”cookie(当您关闭浏览器时将过期),而 IE 和 FF 将完全按照您告诉他们的操作 - 使任何匹配的 cookie 过期。

(24*60*60) 是“一天”;从现在起 24 小时 * 60 分钟 * 60 秒。

“域路径”部分,只需设置当前服务器和服务器路径的“/”即可。

如果您的网站支持多个子域,请改用'/', '.shkeek.com'。这样您就可以支持 www.shkeek.comshkeek.comimg.shkeek.com 以及 的任何其他子域.shkeek.com.

有关更多详细信息,请查看PHP docs

关于php - Cookie 在 Chrome 中有效,但在 IE 或 Safari 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20735818/

相关文章:

javascript - PHPSESSID从B域到A域在Chrome和Firefox上使用,而不是在Safari和IE上使用

php - 在 Eloquent Relation 中访问父值

sql - 将两列中的动态值拆分为多列 - 删除重复项

PHP Socket 帮助理解

javascript - 基础交换下载两次

mysql - Qt qtablewidget数据录入、保存和访问

mysql - 1064 - '' 附近的 SQL 语法 (...) 有错误

mysql - MAMP/MAMP Pro 数据库冲突

sql - (SQL/PostgreSQL) 在查询中,如何使用另一个表作为查找将字段的值转换为更易于阅读的值?

java - 将 Apache Commons Codec 添加到 Oracle 数据库的步骤