我使用以下代码将当前URI保存到cookie:
$redirect_address = JURI::current();
然后像这样设置cookie:
setcookie('redirect_to', $redirect_address, time() + (86400 * 30), "/", ".domain.com");
将'redirect_to' cookie的值保存为"http%3A%2F%2Fwww.domain.com/...... "
我遇到的问题是,当使用:
时,页面没有重定向$redirect = "<script type="text/javascript">location.href = '";
$redirect .= $_COOKIE['redirect_to'];
$redirect .= "';</script>";
我认为这是有趣的字符,它的替换时,保存在cookie的值,导致一个问题?我发现的所有资源都说这是传递给cookie并执行重定向的正确方法,所以我不确定我做错了什么。
我将setcookie()行改为:
setrawcookie('redirect_to', $redirect_address, time() + (86400 * 30), "/", ".domain.com");
这似乎奏效了
From http://php.net/manual/en/function.setcookie.php:
请注意,当你发送cookie时,cookie的值部分将自动被unlencoded,当它被接收时,它被自动解码并分配给一个与cookie名称相同的变量。如果你不希望这样做,你可以使用setrawcookie()代替,如果你使用的是PHP 5。
因此,该值是HTML编码的是正确的。但它也应该被自动解码;我刚刚测试了你的示例代码,它重定向很好。我猜错字在别处。
当然你可以继续使用setrawcookie