Php 如何防止“空间”搜索MySQL数据库?

Php 如何防止“空间”搜索MySQL数据库?,php,javascript,mysql,search,Php,Javascript,Mysql,Search,目前,当有人点击空格键并点击回车键时,它将进入下一页,但不会搜索任何内容-我想完全阻止搜索。实现这一目标的最佳方式是什么?我不想阻止使用空格,即:如何修复此问题?-我只是不希望空格本身允许搜索。将查询变量包装为空: if(!empty(trim($_POST['searchterm'])) { // do search } 只需拿起绳子,修剪开头和结尾的空格,并检查长度;如果长度为0,则不要提交表单。除了@AlienWebguy answer之外,您还可以使用JavaScript进行客户

目前,当有人点击空格键并点击回车键时,它将进入下一页,但不会搜索任何内容-我想完全阻止搜索。实现这一目标的最佳方式是什么?我不想阻止使用空格,即:如何修复此问题?-我只是不希望空格本身允许搜索。

将查询变量包装为空:

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

只需拿起绳子,修剪开头和结尾的空格,并检查长度;如果长度为0,则不要提交表单。

除了@AlienWebguy answer之外,您还可以使用JavaScript进行客户端验证,以阻止页面进入后端。在客户端和服务器端进行验证无疑是一种很好的做法


在submit onsubmit事件处理程序中使用JavaScript并修剪前导空格:

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
}

如果您在后端使用php处理它,您可以只使用trim$input,但是为了更好的用户体验,请使用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>

去除空白?显示一些代码-当你这么含糊的时候没有人能帮你。嗯,什么?给我们看一些代码,我的水晶球目前正在修理。这没关系,但你不应该仅仅依靠客户端检查。更好的是防止表单在客户端提交。我认为OP确实记住了这一点,因为他标记了javascript。当然,为了执行该策略,服务器端也应该进行检查,但如果在不必要的情况下进行额外的检查(占流量的99%)超出了它的使用范围,这也是值得怀疑的,因为这样做不会造成太大的伤害。客户端验证本身就可以被忽略。您还需要进行后端检查。@gAMBOOKa:我编辑了我的评论,当然可以避开它,但是仅仅为了传递一个as搜索字符串就值得这么做吗?如果存在安全问题,那么服务器端当然也应该检查。@没人:你说得对。我只是想向一个新的程序员澄清一下,不要只进行客户端验证;如果一个字符串只包含空格,那么它将是所有前导空格,而不是尾随空格。相关有趣的read-@gAMBOOKa哈哈不错的链接,我是这类东西的超级书呆子!
<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>