在主题的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\');
}
}
}
最合适的回答,由SO网友:user42826 整理而成
这是cookie在一小时(3600秒)内过期的正确格式:
setcookie(\'rma_member\', true, time() + 3600, COOKIEPATH, COOKIE_DOMAIN);
setcookie过期:cookie过期的时间。这是一个Unix时间戳,因此以自纪元以来的秒数为单位。换句话说,您很可能会使用time()函数加上您希望它过期之前的秒数来设置它。