Cookie is not set

时间:2017-04-10 作者:geoB

在主题的functions.php 使用下面的代码。对于测试,当在表单中输入了良好的凭据时,进程将停止die("I LIKE COOKIE!");. 因此,当该短语出现在浏览器中时,预计rma_member cookie可以在Chrome的设置中找到。没有饼干rma_member, 只是PHPSESSID, 4.wordpress..., 和2wp... 饼干。变参数2-n英寸setcookie() (尚未)产生任何影响。这个setcookie() 函数返回true.

编辑:真正的问题不是在该函数中是否设置了cookie,而是cookie的测试是否通过重定向页面。我在其他地方向自己证明,cookie与此代码无关,而是在新页面上。重定向似乎不满足此要求

add_action(\'init\', \'member_password_check\');
...
    function member_password_check() {
        if (isset($_POST[\'_email\'])) {
            $email = $_POST[\'_email\'];
            if (empty($email)) {
                die(\'No email provided!\');
            }
            $url = get_option(\'rma_base_url\');
            $get_hash = get_option(\'rma_get_hash\');
            $getURI = $url . $get_hash . \'/\' . $email;
            $data = wp_remote_get($getURI);
            $code = $data[\'response\'][\'code\'];
            if (\'200\' == $code) {
                //if good data returned
                $pwObject = json_decode($data[\'body\']);
                $hash = $pwObject[0]->password;
                $password = $_POST[\'_password\'];
                if (password_verify($password, $hash)) {
                    setcookie(\'rma_member\', true, 3600, COOKIEPATH, COOKIE_DOMAIN);
                    die("I LIKE COOKIE!");
                    wp_redirect(home_url(\'member_content\'));
                }
            } else {
                die(\'Username/password not found\');
            }
        }
    }

1 个回复
最合适的回答,由SO网友:user42826 整理而成

这是cookie在一小时(3600秒)内过期的正确格式:

setcookie(\'rma_member\', true, time() + 3600, COOKIEPATH, COOKIE_DOMAIN);
setcookie过期:cookie过期的时间。这是一个Unix时间戳,因此以自纪元以来的秒数为单位。换句话说,您很可能会使用time()函数加上您希望它过期之前的秒数来设置它。

相关推荐

External Authentication

我目前有一个拥有自己用户身份验证的网站。它的子目录中还有3个单独的WordPress安装,每个安装从3个单独的数据库加载数据。我想做的是加载wp includes/pluggable。php在主站点上验证用户以同时执行WordPress验证时,如以下回答所述:https://wordpress.stackexchange.com/a/11472然而,由于我有3个WordPress安装,我必须对用户进行身份验证并生成cookie,这将非常困难。有没有人对我如何做到这一点有什么建议/想法?谢谢