|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
Source |
|
|||
Зеттабайт Профиль Группа: Участник Сообщений: 37 Регистрация: 3.8.2006 Где: Везде Репутация: 1 Всего: 1 |
Здравствуйте!
Помогите чайнику! На примере простого, ниже следующего кода... Мне нужно проверить переменную $age на целочисленность, и на непустоту. А переменную $name на строковую и тоже на непустую... Мне почему-то кажеться что пустота это !empty(), а строковость это is_string(). Только я незнаю как все это использовать вместе с is_numeric() в одном операторе if(is_numeric($age)).
|
|||
|
||||
Satana |
|
|||
Опытный Профиль Группа: Участник Сообщений: 564 Регистрация: 15.9.2004 Где: Ставрополь, СЗ ра йон Репутация: 2 Всего: 5 |
ну сделай вот так вот:
Это сообщение отредактировал(а) Satana - 3.1.2009, 00:07 -------------------- |
|||
|
||||
Source |
|
||||
Зеттабайт Профиль Группа: Участник Сообщений: 37 Регистрация: 3.8.2006 Где: Везде Репутация: 1 Всего: 1 |
Satana, спасибо! Но тут что-то не то... в if (((is_numeric($age)) and (!empty($age)) and (!empty($name)) and (is_string($name))) после if должно быть две скобки. И (is_string($name)) нига не проверяет $name на строковость. :( ЗЫ. Но теперь буду уметь пользоваться and! |
||||
|
|||||
theworldcreator |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Данные переданные через POST, насколько я знаю, не бывают нестроковыми. Для чего вы проверяете имя, чтобы безопасно записать в БД? Или чтобы можно было вывести не боясь XSS? Или просто так? Советую имя проверить регулярным выражением, чтобы в нем были только английские и русские буквы, а с возрастом поступить так:
Регулярка примерна такая выйдет:
Добавлено через 14 минут и 21 секунду
Добавлено через 14 минут и 31 секунду Написал "младше 14 лет", а не 13, так как у вас было условие что пришедшие должны быть старше тринадцати, и не старше или ровно тринадцать. |
||||||
|
|||||||
Source |
|
||||||||||||
Зеттабайт Профиль Группа: Участник Сообщений: 37 Регистрация: 3.8.2006 Где: Везде Репутация: 1 Всего: 1 |
Я просто так... Скажите, а чем отличается
от условия
О. Пордон. Я понял различие $age = (int)$_POST['age'] и (is_numeric($age))! Целочисленность. Это сообщение отредактировал(а) Source - 3.1.2009, 00:48 |
||||||||||||
|
|||||||||||||
theworldcreator |
|
||||||||
Опытный Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Приводит переменную к стандартному десятеричному виду, в отличие от простой проверки численности. Например строка
при использование is_numeric просто пройдет проверку, а при приведение к типу int станет числом 123. Да и ИМХО хранить числа как числа правильней чем хранить их как строки(заставляя процессор каждый раз приводить его к типу int при использование его в данном ключе). Добавлено через 1 минуту и 22 секунды P.S. Если нужна дробная часть приводите к типу float |
||||||||
|
|||||||||
Source |
|
||||||||||||
Зеттабайт Профиль Группа: Участник Сообщений: 37 Регистрация: 3.8.2006 Где: Везде Репутация: 1 Всего: 1 |
Понял, спасибо! Касательно вашего кода:
В if(preg_match('/^[a-zа-я]+$/i', $name)) надо было оставить (!empty($age)). (!empty($name)) Естественно не нужно. Во всем разобрался, спасибо! ЗЫ. if($age > 13) исправил на if($age >= 13) ! |
||||||||||||
|
|||||||||||||
theworldcreator |
|
|||
Опытный Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Если $_POST['age'] пусто, то после приведения к int оно становиться равно числу ноль. Ноль не больше или равен 13, так что !empty($age) оставлять - избыточно.
|
|||
|
||||
Source |
|
|||
Зеттабайт Профиль Группа: Участник Сообщений: 37 Регистрация: 3.8.2006 Где: Везде Репутация: 1 Всего: 1 |
Да, но без !empty($age) если в поле age я ничего не ввожу у меня не выскакивает echo "Ошибка!";, а мне нужно чтобы юзер заполнял и name и age! |
|||
|
||||
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |