PHP URL重定向错误

时间:2017-10-21 05:59:32

标签: php

我正在尝试编写一个简单的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的新手,无法弄清楚,有什么帮助吗?

3 个答案:

答案 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';
}