我正在尝试编写一个简单的PHP URL重定向脚本,但它无法正常工作。
<?php
if (isset($_GET['link'])) {
header('Location: $_GET['link']');
}else{
echo 'invalid link';
}
?>
如果我以http://www.example.com/redirect.php的身份访问该脚本,那么它会进入其他循环,然后输出为“无效链接”#39;在浏览器中。
但如果我以https://www.example.com/redirect.php?link=https://www.google.com访问它,那么我会收到HTTP错误500.理想情况下,页面应重定向到https://www.google.com
我是PHP的新手,无法弄清楚,有什么帮助吗?
答案 0 :(得分:1)
尝试以下方法:
if (isset($_GET['link'])) {
header("Location: {$_GET[link]}");
}else{
echo 'invalid link';
}
'
单引号无法在php中转义variables
,您需要使用"
双引号。在字符串中使用时,不需要用索引括起索引。至于我使用的{}
花括号,请查看Complex Curly Brackets
此外,正如您使用'Location: $_GET['link']'
所做的那样,还有另一个问题,即字符串是从'Location:
开始但是以$_GET['
结尾,因为它正在关闭单引号那里也造成了错误。
答案 1 :(得分:1)
你给的是无效的字符串匹配字符串
if (isset($_GET['link'])) {
header('Location:'.$_GET['link']);
}else{
echo 'invalid link';
}
或此方法也有效
header("Location: " . $_SERVER['REQUEST_URI']);
看到差异$ _GET [&#39; link&#39;]和$ _SERVER [&#39; REQUEST_URI&#39;]
what is the difference between $_SERVER['REQUEST_URI'] and $_GET['q']?
答案 2 :(得分:1)
$url = !empty($_GET['link']) ? $_GET['link'] : '';
if ($url){
header('Location:' . $url);
exit;
}else{
echo 'invalid link';
}