Как предотвратить "пробел" от поиска в базе данных MySQL? - PullRequest
0 голосов
/ 26 августа 2011

В настоящее время, когда кто-то просто нажимает пробел и нажимает клавишу ввода, он переходит на следующую страницу, но ничего не ищет - я хочу вообще запретить поиск. Каков наилучший способ сделать это? Я не хочу запрещать использование пробелов (например: как это исправить?) - я просто не хочу, чтобы сами пробелы позволяли выполнять поиск.

Ответы [ 5 ]

5 голосов
/ 26 августа 2011

Оберните вашу переменную запроса в empty условие:

if(!empty(trim($_POST['searchterm']))
{
   // do search
}
3 голосов
/ 26 августа 2011

Использовать JavaScript и обрезать начальные пробелы в обработчике событий submit (onsubmit):

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 голос
/ 26 августа 2011

В дополнение к ответу @AlienWebguy вы можете использовать JavaScript, чтобы выполнить проверку на стороне клиента, чтобы не дать странице даже добраться до серверной части. Это определенно хорошая практика для проверки на стороне клиента И на стороне сервера.

Демонстрация в реальном времени

form.onsubmit = function(){
    if(input.value.replace(/^\s/,"").length === 0){
      return false;
    }
}
0 голосов
/ 26 августа 2011

Если вы обрабатываете его с помощью 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>
0 голосов
/ 26 августа 2011

Просто возьмите строку, обрежьте начальный и конечный пробелы и проверьте длину; если длина равна 0, не отправляйте форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...