Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-设置cookie和重定向_Php_Cookies - Fatal编程技术网

PHP-设置cookie和重定向

PHP-设置cookie和重定向,php,cookies,Php,Cookies,我正在尝试设置cookie并重定向。使用Debian GNU/Linux 6.0(64位)和PHP 5.3.3-7+squeeze19以及Suhosin补丁(cli)(构建时间:2014年2月17日10:10:23)和Apache/2.2.16(Debian) 出于某种原因,这是可行的: <?php $cookie_name = $_GET['a']; $cookie_value = $_GET['b']; setcookie($_GET['a'], $_GET['

我正在尝试设置cookie并重定向。使用Debian GNU/Linux 6.0(64位)和PHP 5.3.3-7+squeeze19以及Suhosin补丁(cli)(构建时间:2014年2月17日10:10:23)和Apache/2.2.16(Debian)

出于某种原因,这是可行的:

<?php
    $cookie_name = $_GET['a'];
    $cookie_value = $_GET['b'];
    setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day
?>
出于某种原因,每当我重定向时,即使使用下面的javascript,cookie也不会添加

<?php
    $cookie_name = $_GET['a'];
    $cookie_value = $_GET['b'];
    setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<!DOCTYPE HTML>
<html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="refresh" content="1;url=http://www.example.com">
        <script type="text/javascript">
            window.location.href = "http://www.example.com"
        </script>
        <title>Page Redirection</title>
    </head>
    <body>
        If you are not redirected, follow <a href='http://www.example.com'>this link</a>!
    </body>
</html>

window.location.href=”http://www.example.com"
页面重定向
如果没有重定向,请跟随!

为什么第一个示例有效,而其他示例无效?

使用include而不是redirect

这也为浏览器保存了一个往返HTTP请求

<?php
    $cookie_name = $_GET['a'];
    $cookie_value = $_GET['b'];
    setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day
    include('/home/user/public_html/index.html');
    exit;
?>
它的工作原理与预期的一样:

我也有这种奇怪的感觉,但是有了js重定向。在xp上使用chrome浏览器进行测试

我解决这个问题的方法是使用document.cookie对注入的js进行cookie设置=

                ?>
                <script type="text/javascript">
                    function setCookie(cname, cvalue, exdays) {
                        var d = new Date();
                        d.setTime(d.getTime() + (exdays*24*60*60*1000));
                        var expires = "expires="+d.toUTCString();
                        document.cookie = cname + "=" + cvalue + "; " + expires;
                    }
                    setCookie("foo","<?php echo $bar; ?>",30);
                    window.location = "<?php echo $destination_page; ?>.php";
                </script>
                <?php
?>
函数setCookie(cname、cvalue、exdays){
var d=新日期();
d、 设置时间(d.getTime()+(exdays*24*60*60*1000));
var expires=“expires=“+d.toutString();
document.cookie=cname+“=”+cvalue+”;“+expires;
}
setCookie(“foo”,30);
window.location=“.php”;

尝试将头代码放在setcookie()之前;IIRC头必须先于任何函数调用。yi:这个问题在现代浏览器中不再存在。不起作用,但可能是因为/home/user/public_html/index.html中存在头('Location:),您必须重定向到(包括)一个没有重定向的页面。cookie应该使用重定向头。你有没有一个我可以尝试的链接,它有`header('Location:);`header('Location:example.com/index?c=d'))该位置上没有.html,它将重定向到一个索引目录或一个没有扩展名的文件名索引。我用设置cookies和重定向创建了我的页面,浏览器有cookies。重定向重定向是否重定向到其他域或子域?不知道是否与
<?php
    $cookie_name = $_GET['a'];
    $cookie_value = $_GET['b'];
    setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day
    include('/home/user/public_html/index.html');
    exit;
?>
setcookie('test', 'test', time() + (86400 * 30), "/");
header("Location: http://www.intel.com");
                ?>
                <script type="text/javascript">
                    function setCookie(cname, cvalue, exdays) {
                        var d = new Date();
                        d.setTime(d.getTime() + (exdays*24*60*60*1000));
                        var expires = "expires="+d.toUTCString();
                        document.cookie = cname + "=" + cvalue + "; " + expires;
                    }
                    setCookie("foo","<?php echo $bar; ?>",30);
                    window.location = "<?php echo $destination_page; ?>.php";
                </script>
                <?php