我尝试制作一个脚本,当用户输入网址并按下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;
}
}
?>
答案 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。