我在php标头函数中面临一种奇特的行为。
以下代码正常,
header("Location: https://www.facebook.com/logout.php?api_key=148814828480550&next=http%3A%2F%2Fmysite.com&session_key=2.HP0X33OURpJRDPfkvWYtAQ__.3600.1285146000-1039666914");
但是当我将URL作为变量传递时,它会将我带到facebook页面,但不会回到mysite。
$location = $facebook->getLogoutUrl(array('next' => 'mysite.com')); header("Location: $location");
我检查了$ location的内容,它是以字符串形式提供的同一个url。
请建议。
由于
答案 0 :(得分:4)
尝试使用以下代码: -
$location = (string) html_entity_decode($facebook->getLogoutUrl(array('next' => 'mysite.com')));
header("Location: $location");
exit();
另外,在使用上述代码时,请检查所有查询字符串索引是否可用,以及相同的值: -
使用“header()
”功能时,必须确保在“exit()
”功能调用之后使用“header()
”功能。
此外,当使用这个“header()
”函数时,必须在向浏览器输出任何信息(从PHP或HTML)之前调用它,因此最好使用输出缓冲,通过调用此函数“{{1 “在PHP开始标记之后的网页的第一行(ob_start()
)。
希望它有所帮助。
答案 1 :(得分:1)
一点也不奇怪,我忘了做html_entity_decode($ location);
我回应了$ location,当我var_dump()编辑它时,我发现'&'实际上是'&安培;'
感谢您的回答。
答案 2 :(得分:0)
这可能与字符编码有关