简单重定向脚本问题

时间:2013-12-24 15:02:59

标签: redirect header

我尝试制作一个脚本,当用户输入网址并按下Go时,它将转到该网页。我做到了,但我注意到它只适用于

http://
在它面前。所以我用strpos函数检查是否

http://

在字符串中,如果不是,则会将其添加到网址并转到网站。它可以工作,但现在当用户输入网址 'Http://'时,它会加倍,所以它会是这样的:

'http://http://www.example.com'. 

我该如何解决这个问题? 这是代码:

<?

if ($_POST['submit']) {

$urlgo = $_POST['url'];

if (strpos($urlgo,'http://') == false) {

$url = "http://$urlgo";
header("Location: $url "); /* Redirect browser */

} else {

$urlgo = $_POST['url'];

header("Location: $urlgo "); /* Redirect browser */

exit;
} 

}


?>

1 个答案:

答案 0 :(得分:1)

if (strpos($urlgo,'http://') == false) {

是问题所在。如果“needle”字符串(strpos)位于“haystack”(0)的开头,http://可以返回LEGITIMATE $urlgo。 PHP中0 == false为TRUE。您需要使用严格比较运算符:

if (strpos(...) === false) {

(注意, 3 =标志)比较类型AND值。 php中的0 === false为FALSE。