记住我的功能不适用于移动设备

时间:2018-03-16 11:04:15

标签: php mobile browser login

我已经记住了我的PHP网站登录功能。

我设置了一个带有哈希的Cookie,我也存储在数据库中。在index.php上,我读取了Cookie值并检查它是否在数据库中。

在任何浏览器上的任何PC上都可以正常运行。

但是:在移动设备(智能手机和平板电脑)上,它根本无法正常工作。我测试了不同的移动浏览器没有像“退出时删除Cookie”等设置,我在任何浏览器上都接受第三方Cookie。

任何人都可以帮助我吗?谢谢! 克里斯

编辑: 这是我的代码。 第一:选中“记住我”复选框时设置Cookie。 第二:检查Cookie是否已设置且令牌是否在DB中。

// Set Cookie?
if (isset($checkme) && $checkme == 1) {

    // generate Token:
    $token = bin2hex(random_bytes(30));
    // hash toke for DB
    $tokenDB = hash('sha384', $token);

    // set Cookie for 18 days
    setcookie('myCookieName', $token, time() + 60 * 60 * 24 * 18, "/", "sub.mydomain.ch", 1, 1);

    // write hasehd Token in DB.
    $res = db_abfrage( 'INSERT INTO tokens (users_fk, token) VALUES ('.$userid.', "'.$tokenDB.'")' );

}


// Check Cookie
if (isset($_COOKIE['myCookieName']) && $_COOKIE['myCookieName'] != "") {

    $tokenHash = filter_var($_COOKIE['myCookieName'], FILTER_SANITIZE_STRING);
    $res = db_abfrage( 'SELECT * FROM tokens WHERE token = "' . hash('sha384', $tokenHash) . '" LIMIT 1' );
    $logininfos = mysqli_fetch_assoc( $res );

    if ( mysqli_num_rows($res) == 1 ) {

        // Valid Token in Database...log user in!

    }

}

0 个答案:

没有答案