[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: У php претензия на интеллектуальность?
Vok
Народ, пишу первый раз поисковик по базе. Пришла мысль, что пользователь может ввести пробел в поиск и нажать кнопку. Реализовал.
Потом ведь он может и 2 и 3 пробела и так далее прикалываться. Короче, написал так:

$pusto = (($_POST['stroka'])!=='')||(($_POST['stroka'])!==' ')||(($_POST['stroka'])!==' ')?1:0;

if ($pusto!==1){

код

}else{
echo "пустой запрос на поиск";
}

Смысл тот, что если 3 пробела и нажата кнопка - вывести сообщение. А он теперь выводит даже если 30 пробелов и нажата клавиша. Это замечательно, так и нужно, но... почему? =) Кто нить может объяснить?



Спустя 9 минут, 33 секунды (16.01.2010 - 16:53) Joker написал(а):

Спустя 8 минут, 4 секунды (16.01.2010 - 17:01) arlamar написал(а):
if (trim($_POST['stroka'])!='') {
//что то делаем.
} else {
//говорим "пошёл вон"
}



Цитата
Прочитай про эту функцию думаю она тебе поможет сильно.

а empty тут при чём?

Спустя 4 минуты, 54 секунды (16.01.2010 - 17:06) Vok написал(а):
Joker Спасибо!

Спустя 2 минуты, 27 секунд (16.01.2010 - 17:08) Vok написал(а):
arlamar, дело не в том чтоб убрать пробел перед словом и после. У меня стоит эта функция, но вот пользователь возьмет и введет 3 пробела и нажмет кнопку.

Я понял про empty, переделаю. Вот только вопрос остался, мой код работает - но не пойму почему))))

Я ведь написал
 $pusto = (($_POST['stroka'])!=='')||(($_POST['stroka'])!==' ')||(($_POST['stroka'])!=='  ')?1:0; 


Значит если пользователь введет не 3 а 4 пробела то уже сработать не должно. А я вводил и по 30 пробелов - срабатывал...

Спустя 4 минуты, 41 секунда (16.01.2010 - 17:13) Platinum написал(а):
Можно ещё так сделать

if (empty(trim($_POST['stroka']))) //удаляем пробелы вначале и в конце, проверяем на пустоту.
{
// если переменная содержит только одни пробелы пропускаем это
}
else
{
htmlspecialchars($_POST['stroka']); // заменяем опасные символы
### Проверяем длину поискового запроса ###

if(strlen($_POST['stroka']) < 4)
{
echo 'Поисковый запрос должен состоять хотя бы из 4 символов';
exit();
}
}


Ну если тебе конечно нужно проверять на длину.. хотя я бы так и сделал на твоём месте smile.gif

Спустя 1 минута, 15 секунд (16.01.2010 - 17:14) arlamar написал(а):
короче если пользователь ввёл три пробела а ты проверяешь
if (!empty($stroka)) { 
//работаем
} else {
//не работаем
}

то твой скрипт будет "работать". а тебе надо слать нафиг...
так вот trim это самое то. т.к. строка состоит только из пробелов

Спустя 4 минуты, 52 секунды (16.01.2010 - 17:19) arlamar написал(а):
следуйщий код приведет к ошибке
if (empty(trim($_POST['stroka'])))

надо:
$str = trim($_POST['stroka']);
if (empty($str))

Спустя 8 минут, 26 секунд (16.01.2010 - 17:27) Vok написал(а):
Спасибо =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.