2011-08-25 27 views
0

目前,当某人刚刚点击空格键并点击输入时,它将转到下一页,但不搜索任何内容 - 我想完全阻止搜索。什么是完成这个最好的方法?我不想阻止空间被使用(即:我如何解决这个问题?) - 我只是不想让空间本身来允许搜索。如何防止“空间”搜索MySQL数据库?

+7

strip whitespaces? – Nobody

+1

显示一些代码 - 没有人可以帮助你,当你这种模糊。 – Randy

+1

呃什么?给我们看一些代码,我的水晶球现在在修理店里。 – Cyclone

回答

5

环绕你查询变量在empty条件:

if(!empty(trim($_POST['searchterm'])) 
{ 
    // do search 
} 
+1

更好的办法是防止表单在客户端提交。我认为OP确实记住了这一点,因为他标记了javascript。当然,为了执行服务器端应该检查的策略,但是如果在不必要的情况下(应该占流量的99%)进行附加检查超过了使用seens的情况下的使用是有问题的,还因为存在没有太大的伤害。 – Nobody

+0

客户端验证本身可以是旁观者。您还需要后端检查。 – HyderA

+2

@gAMBOOKa:我编辑了我的评论,当然它可以被回避,但是为了传递一个“”作为搜索字符串是否值得这么做?如果存在安全问题,那么服务器端当然也应该检查。 – Nobody

0

就拿字符串,修剪的最初和最后空间,并检查长度;如果长度为0,则不要提交表单。

+0

这是好的,但你不应该仅仅依靠客户端检查。 –

1

除了@AlienWebguy答案,您可以使用JavaScript来做客户端验证,以阻止页面甚至到达后端。在客户端服务器端进行验证确实是一种很好的做法。

Live Demo

form.onsubmit = function(){ 
    if(input.value.replace(/^\s/,"").length === 0){ 
     return false; 
    } 
} 
+0

您不需要修剪前导和尾随空格;如果一个字符串只包含空格,那么它将是所有前导空格和后续空格。 – Ryan

+0

@minitech好点。 – Loktar

+0

相关的有趣阅读 - http://blog.stevenlevithan.com/archives/faster-trim-javascript – HyderA

3

使用JavaScript和修剪的submitonsubmit)事件处理前导空格:

var searchField = document.getElementById('search'); // or whatever the id of the field is 
if(searchField.value.replace(/^\s+/, '').length === 0) { 
    return false; // or evt.preventDefault(). 
} 

应该还好这里依赖于客户端验证,因为如果用户想欺骗搜索引擎,然后他们不会介意被带到空白页面。如果允许这有一个实际的服务器端的问题,然后执行相同的检查服务器端:

if(!isset($_REQUEST['search']) || !trim($_REQUEST['search'])) { 
    // Don't perform the search 
} 
+1

+ 1结合这两个答案。 – Loktar

0

如果你与你可以只使用trim($input)后端PHP procecssing,但更好的用户的遭遇使用JavaScript。设置一个表单验证器,这样它就不会提交,除非有空格以外的内容。

<form onsubmit="return verify()"> 
    <input id="foo" name="foo" /> 
    <input type="submit" />c 
</form> 
<script type="text/javascript"> 
    function verify() { 
     if (document.getElementById("foo").value.match(/[^\s]/) == null) { 
     alert('only whitespace'); 
     return false; 
     } else { 
     alert('found substance'); 
     return true; 
     } 
    } 
</script>