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

我有 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……有什么想法是错误的吗?


宝慕林4294392
浏览 227回答 2
2回答

白板的微信

使用该功能实际上没有任何意义。您可以只使用empty(),它会检查它是否已设置以及是否包含值。现在,您只是在检查任何类型的 cookie。专注于找出你是否$_COOKIE['id']包含任何值,不要试图用这样的函数来幻想。if(empty($_COOKIE['id']){&nbsp; die("No cookie");}setcookie 需要两个参数,其余的都是可选的。您的第三个参数不正确,您需要使用time() + (int)int 以秒为单位并使用 Unix 时间戳。无论脚本返回什么,AJAX 请求都会返回成功,因此在 AJAX 请求上返回 false 仍被视为成功。只有当脚本执行失败(500 个错误)时,它才会返回错误。因此,无论是否设置了 cookie,您都会被重定向。也尽量不要使用整数值,在它周围加上引号,或者将它存储在一个变量中。setcookie('id', '1') ;或者$num = 1;$time = (24 * 60 * 60); // one daysetcookie('id', $num, $time);如果您仍然遇到问题,我建议您查看一些有关设置 cookie 的文档:https : //www.php.net/manual/en/function.setcookie.php https://www.w3schools.com/php/php_cookies。 ASP

缥缈止盈

第三个参数错误。您必须这样设置,cookie 将在接下来的 60 分钟内可用。您还需要第四个参数,以使 cookie 在整个域中可用。&nbsp;setcookie('id',&nbsp;1,&nbsp;time()&nbsp;+&nbsp;60,&nbsp;'/');
打开App,查看更多内容
随时随地看视频慕课网APP