我有一个PHP脚本,可以将用户重定向到他们输入到文本框中的网站。如果用户在框中键入 www.google.com ,则会加载Google.com,如果他们输入 http://facebook.com (没有www)Facebook。 com将被加载。我有什么办法可以让脚本只有在前面有 www。的地址才会到达地址吗?我希望你能理解我的问题。
我的PHP脚本是:
<?php
if($_GET){
header('Location:http://'.$_GET['q']);
}
?>
<form method='get' action=''>
<input type='text' name='q'>
<input type='submit'>
</form>
答案 0 :(得分:2)
if (strpos($_REQUEST['q'], 'www.') === 0) {
// string starts with www.
}
正如Jonhoo所说,使用它可能更好:
if (stripos($_REQUEST['q'], 'www.') === 0) {
// string starts with www.
}
这确保当字符串的www部分中有一些(或全部)大写字符时它也可以工作。
答案 1 :(得分:1)
有几种方法,但最简单的方法可能只是一个简单的substr()调用:
if ( substr ( $_GET['q'], 0, 4 ) == 'www.' ) {
header ( ... );
}
你可能要小心这里,因为你在这里提供的是攻击者将不知情的用户重定向到不同URL的完美方法......
答案 2 :(得分:1)
if(preg_match('/((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+(www\.)[\w\d:#@%/;$()~_?\+-=\\\.&]*)/',$_GET['q']) > 0){
// process $_GET['q']
}
这将返回包含“www”的任何有效网址。协议之后
答案 3 :(得分:0)
检查strpos()... FALSE =未找到,否则它是位置(0 =第一个字符)。