使用JURI::current()保存到cookie时格式化错误


Error in formatting when using JURI::current() to save to cookie

我使用以下代码将当前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