[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужно, чтобы в поле можно было ввести только число
planetary
Привет всем, кто читает эту тему. Как сделать, чтобы в поле формы можно было ввести только число? Или при отправки не только числа писал "вы ввели не число"
Помогите пожалуйста. И лучше с примером.
Вот поля:

<input name="sum" type="text">
<
input name="sub" type="submit">
</
form>





Спустя 22 минуты, 46 секунд (17.03.2011 - 21:39) inpost написал(а):
Это делается на JS, регуляркой проверяешь, либо на onKeyUp ставишь фунцию "привести к числу", либо регуляркой убираешь всё, что не число. Выбирай что тебе нравится и пробуй реализовать на JS

Спустя 10 минут, 1 секунда (17.03.2011 - 21:49) planetary написал(а):
а разве не пхп никак? вроде как-то где-то ставится %s или %d ...

Спустя 2 минуты, 43 секунды (17.03.2011 - 21:52) Arni написал(а):
Пхп это уже на сервере, и конечно же! Обязательно еще раз проверяем что пришло в пхп. Самый простой способ привести все что угодно к числовому формату это.

$var = (int)$var;

Спустя 6 минут, 18 секунд (17.03.2011 - 21:58) inpost написал(а):
planetary
Ты понимаешь разницу между "СЕРВЕРНАЯ СТОРОНА" и "КЛИЕНТСКАЯ СТОРОНА", если да, объясни мне в чём её разница, и на какой стороне находится "обработка ПХП кодов" и "браузер пользователя".

Спустя 3 минуты, 33 секунды (17.03.2011 - 22:01) neadekvat написал(а):
Arni, это не будет являтся проверкой. Значение тупо будет приведено в числовой формат, а пользователь так и не узнает, что случилось с введенными данными.

Можно, например, так:
echo preg_match('/^\d+$/', $_POST['int']) ? 'ok' : 'no';



Спустя 26 минут, 31 секунда (17.03.2011 - 22:28) planetary написал(а):
Цитата (inpost @ 17.03.2011 - 18:58)
planetary
Ты понимаешь разницу между "СЕРВЕРНАЯ СТОРОНА" и "КЛИЕНТСКАЯ СТОРОНА", если да, объясни мне в чём её разница, и на какой стороне находится "обработка ПХП кодов" и "браузер пользователя".

Обработка на сервере...

Спустя 1 минута, 43 секунды (17.03.2011 - 22:30) planetary написал(а):
Цитата (neadekvat @ 17.03.2011 - 19:01)
Arni, это не будет являтся проверкой. Значение тупо будет приведено в числовой формат, а пользователь так и не узнает, что случилось с введенными данными.

Можно, например, так:
echo preg_match('/^\d+$/', $_POST['int']) ? 'ok' : 'no';

Спасибо, но не понятно, как работает

Спустя 2 минуты, 48 секунд (17.03.2011 - 22:32) planetary написал(а):
Есть может функция, которая проверяет, $a - число или нет

Спустя 2 минуты, 15 секунд (17.03.2011 - 22:35) neadekvat написал(а):
Цитата (planetary @ 17.03.2011 - 22:30)
Спасибо, но не понятно, как работает

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (preg_match('/^\d+$/', $_POST['int']))
echo 'ok'
else
echo 'no';
}
?>

<form action="" method="post">
<
input type="text" name="int">
</
form>

А так?
С регулярными выражениями - уж пардон, тут, например Фридла почитайте.

Цитата (planetary @ 17.03.2011 - 22:32)
Есть может функция, которая проверяет, $a - число или нет

Есть, is_int(), но она не будет работать в данном случаи, т.к. _POST содержит либо строку, либо массив. Даже если в поле введено число. Вы, я надеюсь, в курсе, что число может иметь строковой тип?

Спустя 1 минута, 41 секунда (17.03.2011 - 22:36) Trianon написал(а):
надо заметить , что так проверяется лишь целое неотрицательное число.

Спустя 3 минуты, 57 секунд (17.03.2011 - 22:40) neadekvat написал(а):
Цитата (Trianon @ 17.03.2011 - 22:36)
надо заметить , что так проверяется лишь целое неотрицательное число.

Да, действительно. Спасибо за замечание.
Когда пишу первую версию регулярки, всегда беру самый простой случай :)

Спустя 18 минут, 38 секунд (17.03.2011 - 22:59) ZSH написал(а):
is_numeric($a)

Спустя 1 день, 14 часов, 37 минут, 44 секунды (19.03.2011 - 13:37) planetary написал(а):
Спасибо большое. Остановился на функции is_numeric($a)
Js применить не вариант, потому что оптытный программист сможет обматуть систему, поменяв код Js, ведь он сохраняется на компьютер.

Спустя 10 минут, 10 секунд (19.03.2011 - 13:47) neadekvat написал(а):
Цитата (planetary @ 19.03.2011 - 13:37)
Js применить не вариант, потому что оптытный программист сможет обматуть систему, поменяв код Js, ведь он сохраняется на компьютер.

js в данном случаи будет использоваться не как решающий обработчик, а как часть интерфейса для более его удобного использования.
Согласитесь, лучше получить предупреждение здесь и сейчас, чем отправить страницу, получить новую и увидеть ошибку только там.
При этом, конечно же, проверки на сервере никто и никуда не убирает - они должны быть обязательно.
Быстрый ответ:

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