为了账号安全,请及时绑定邮箱和手机立即绑定

通过ajax在另一个页面上设置cookie

通过ajax在另一个页面上设置cookie

PHP
宝慕林4294392 2022-01-08 20:40:08
我有 3 个文件……signup.js$("#signup-form").submit(function(e){e.preventDefault();var theForm = new FormData(this);$.ajax({    url: "php-includes/signup-parser.php",    method: "POST",    data: theForm,    contentType: false,     processData: false,    success:function(data){            // Redirecting            location.href = "account.php";        }    }})注册解析器.php        # Cookie creator        setcookie('id',1,60);        # Manually set it,if not set        if (!isset($_COOKIE['id']))            $_COOKIE['id'] = 1;最后是主页 account.php    # is_a_cookie_set is function that checks if a cookie is set.    if (!is_a_cookie_set()){        die("<h1>No cookie set</h1>");    }我的目的是在注册解析器上设置一个 cookie,然后重定向到帐户页面,这需要设置一个 cookie。问题是无法在注册解析器中设置 cookie……我一直没有设置 cookie……有什么想法是错误的吗?
查看完整描述

2 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

使用该功能实际上没有任何意义。您可以只使用empty(),它会检查它是否已设置以及是否包含值。现在,您只是在检查任何类型的 cookie。专注于找出你是否$_COOKIE['id']包含任何值,不要试图用这样的函数来幻想。


if(empty($_COOKIE['id']){

  die("No cookie");

}

setcookie 需要两个参数,其余的都是可选的。您的第三个参数不正确,您需要使用time() + (int)int 以秒为单位并使用 Unix 时间戳。


无论脚本返回什么,AJAX 请求都会返回成功,因此在 AJAX 请求上返回 false 仍被视为成功。只有当脚本执行失败(500 个错误)时,它才会返回错误。因此,无论是否设置了 cookie,您都会被重定向。


也尽量不要使用整数值,在它周围加上引号,或者将它存储在一个变量中。


setcookie('id', '1') ;

或者


$num = 1;

$time = (24 * 60 * 60); // one day

setcookie('id', $num, $time);

如果您仍然遇到问题,我建议您查看一些有关设置 cookie 的文档:https : //www.php.net/manual/en/function.setcookie.php https://www.w3schools.com/php/php_cookies。 ASP


查看完整回答
反对 回复 2022-01-08
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

第三个参数错误。您必须这样设置,cookie 将在接下来的 60 分钟内可用。您还需要第四个参数,以使 cookie 在整个域中可用。

 setcookie('id', 1, time() + 60, '/');


查看完整回答
反对 回复 2022-01-08
  • 2 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号