查询文本中存在特定元素时提交查询

时间:2011-07-25 20:15:43

标签: php html

我有一个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>

4 个答案:

答案 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 =第一个字符)。