PHP cookie不会在某些浏览器上持久存在

时间:2015-01-14 23:27:23

标签: php cookies

在我尝试的几乎所有浏览器中,我的应用程序的cookie都是正常创建的,并且应该保持原样。但是在Opera for android上,浏览器看不到cookie。要么它不能识别它,要么没有创建cookie,要么在某些时候删除它。有人看到我的代码有问题吗?

这是登录页面的片段

require("inc/dbinfo.inc");

$fc_username = trim($_POST['username']);
$fc_password = trim($_POST['password']);

$hashedPass = hash( "sha256", $fc_password );

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare(" << AUTHENTICATE USER >> ");
    $stmt->execute(array($fc_username,$hashedPass));

    // set the resulting array to associative
    $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    $result = $stmt->fetchAll();

    if(sizeof($result) == 1){
        // Login success!

        // Bake up a cookie
        $cookie_expire = time()+86400; // 24 hr life
        //time() - 3600; // overdue expiration date. deletes cookie
        $cookie_domain = $_SERVER['HTTP_HOST'];

        setcookie("userid", $result[0]["id"], $cookie_expire, $cookie_domain);
        setcookie("name", $result[0]["name"], $cookie_expire, $cookie_domain);


        header("Location: welcome.php");
        exit;
    }else{
        // Login failure
        header("Location: login.php?msg=badlogin");
        exit;
    }

}catch(PDOException $e){
    echo "Error: " . $e->getMessage();
}
$conn = null;

从主页:

<?php 
if(!isset($_COOKIE['name']) && !isset($_COOKIE['userid'])){
    header("Location: login.php?msg=nocookie");
    exit;
}
?>

您可能会注意到我的setcookie实现与official documentation不同。我在previous question中详细说明了这一点,但这是唯一适用于我的实现。问题可能出在这里,但我还没有找到任何其他工作方式来使用setcookie。不确定是什么导致了这个问题。

提前致谢。

0 个答案:

没有答案