[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как разрешить ввод в поле input только цифр?
Страницы: 1, 2
Kuzma92
Уважаемые специалисты, подскажите, пожалуйста, как разрешить пользователю в поле <input type="text" вводить только цифры? Интересует решение только средствами PHP. Как это сделать с помощью атрибута "pattern" я знаю. Как это сделать с помощью JavaScript или JQuery я тоже знаю. Но как это сделать только средствами PHP, и возможно ли такое?
Valick
Проверка данных на стороне сервера называется валидация. Запретить вводить нельзя, можно проверить цифра введена или текст. И если не цифра, то выдать ошибку.

https://www.php.net/manual/ru/function.filter-input
https://www.php.net/manual/ru/function.filt...input-array.php

Прочти наконец хотя бы одну книгу по РНР, большинство вопросов отпадёт, и научишься грамотно ставить задачи перед собой.

_____________
Стимулятор ~yoomoney - 41001303250491
Kuzma92
Цитата (Valick @ 4.04.2024 - 01:57)
Прочти наконец хотя бы одну книгу по РНР

Через 11 лет выйду на пенсию, обязательно прочту, и не одну. А сейчас извините, некогда, приходится на ходу делать/изучать.
Да, конечно, я знаю, что такое валидация. Я об этом впервые узнал еще в 98м, когда делал свой первый сайт, подключаясь к интернету через скрипящие (но такие на тот момент магически волшебные) звуки модема, работая еще на 386 компе в ОС DOS. Тогда еще сайт Фоменко был одним из самым популярных, может быть помните? Хотя нет, вру, термин "валидация", кажется, впервые был озвучен (только вот уже не помню конкретики) еще при изучении мной на уроках информатики в конце 80-х первого языка Бейсик, на котором я уже писал первые программки (одни писал, другие пытался взламывать). Но вот php я к сожалению про&бал, и очень жалею, что не выучил этот язык в свое время. Так что вот сейчас работаю и изучаю параллельно. А книги, Valick, на пенсии через 11 лет, всё чтение будет на пенсии, в очах да при лампе с лупой. Ну как-то так, что ли.
Valick
Зачем мне эта куча ненужной информации?
Что бы эффективно получать помощь на форуме нужна база, которой у тебя нет (базовые знания с огромными пробелами = отсутвие знаний). Одну книгу можно прочитать в течение двух-трёх недель даже при "отсутвии времени". В противном случае получается неоправданная трата времени на изобретение велосипедов и молотков.
Ну и в конце концов, если читать книгу по PHP не интересно и не увлекательно, то надо бросать программирование в принципе. И просто заказать нужный сайт у сторонних программистов. А если читать интересно, то ничто не остановит, ни отсутвие времени, ни мечты о пенсии.

P.S. Я на форуме для того что бы помогать, и не важно что и как я говорю (обращаюсь к собеседнику на ты или на вы) главное это результат.

_____________
Стимулятор ~yoomoney - 41001303250491
FatCat
Навскидку:

if( $_POST['numer'] != intval($_POST['numer']) )echo "требуется вводить только цифры!";


_____________
Бесплатному сыру в дырки не заглядывают...
Valick
FatCat, да я же там скинул ссылки на штатные функции.
Хочеться чего-то болшего пожалуйста https://habr.com/ru/articles/521292/
Ну и intval() уже много лет как деприкейтед, надо приведение к типу (int) юзать wink.gif


_____________
Стимулятор ~yoomoney - 41001303250491
FatCat
Цитата (Valick @ 4.04.2024 - 12:45)
Ну и intval() уже много лет как деприкейтед, надо приведение к типу (int) юзать

И это плохо, ибо увеличивает объем и ухудшает читаемость кода, и увеличивает потребление ресурсов:
$numer = (int) $_POST['numer'];
if( $_POST['numer'] != $numer )echo "требуется вводить только цифры!";


_____________
Бесплатному сыру в дырки не заглядывают...
FatCat
Цитата (Valick @ 4.04.2024 - 12:45)
я же там скинул ссылки на штатные функции

Офтопик
Я же не программист. Я врач.
Я не прочитал ни одной книги по программированию.
Когда мне нужно получить результат, я сначала придумываю последовательность действий к результату, а потом гуглю средства для каждого действия.

Прочитал по твоей ссылке про filter_input. Да, это, наверное, годится. Но…
Но если мне нужна только одна проверка, мне нет никакого резона тащить целый пакет возможностей. Иначе я приду к тому же, к чему пришли мы все. Игра вульфенштайн, весившая 3 метра и летавшая на 286 компьютере без памяти с современными библиотеками будет весить 3 гектара и потребует как минимум i3 процессор с парой гектаров памяти.
Я так не хочу.
И в медицине, если я могу услышать пневмлнию стетоскопом, я не погоню больного на компьютерную томографию, а сразу дам и антибиотики, и отхаркивающие, и он вылечится раньше, чем дождался бы бесплатной очереди на томографию.


_____________
Бесплатному сыру в дырки не заглядывают...
brevis
Цитата (Valick @ 4.04.2024 - 14:45)
Ну и intval() уже много лет как деприкейтед, надо приведение к типу (int) юзать wink.gif

В документации об этом молчат https://www.php.net/manual/ru/function.intval.php
Вообще если бы задеприкейтили intval() -- это была бы катастрофа.

_____________
Чатик в телеге
Valick
Цитата (FatCat @ 4.04.2024 - 16:18)
Я же не программист. Я врач.

Я знаю об этом, поэтому там смайкик ;)

Цитата (FatCat @ 4.04.2024 - 16:05)
И это плохо, ибо увеличивает объем и ухудшает читаемость кода


if( $_POST['numer'] != (int)$_POST['numer'] ) {
echo "требуется вводить только цифры!";
}

Цитата (FatCat @ 4.04.2024 - 16:18)
нет никакого резона тащить целый пакет возможностей

О каком пакете речь? filter_ Это функция PHP такая-же как и все остальные и является неотъемлимой частью вне зависимости используется она или нет. Вот ссылка про валидаторы, там да, там классы (библиотеки) которые надо подключать.

_____________
Стимулятор ~yoomoney - 41001303250491
FatCat
Цитата (Valick @ 4.04.2024 - 16:16)
if( $_POST['numer'] != (int)$_POST['numer'] )

Не знал, что такой синтаксис допустим.
Тогда ровно то же самое, что intval.


Цитата (Valick @ 4.04.2024 - 16:16)
Это функция PHP такая-же как и все остальные

Да.
Но сам вызов этой функции скушает ресурсов намного больше, чем приведение одного типа.

_____________
Бесплатному сыру в дырки не заглядывают...
Valick
brevis, виноват, запамятовал. Для меня всё что шторм зачёркивает автоматом
деприкейт. В любом случае никакой катастрофы нет в использовании Int вместо intval.

_____________
Стимулятор ~yoomoney - 41001303250491
Valick
Цитата (FatCat @ 4.04.2024 - 17:32)
Но сам вызов этой функции скушает ресурсов намного больше, чем приведение одного типа.

Да унас вроде как 2024 год на дворе, нет смысла экономить на спичках.
А вот привыкать ходить в лоток грамотно писать код надо чем раньше тем лучше.
Эдак мы и ООП объявим анафему :-)

_____________
Стимулятор ~yoomoney - 41001303250491
Kuzma92
Хорошо, такой вопрос. Я выполняю следующую проверку:

    $_POST['numer']=intval($_POST['numer']);
if($_POST['numer'] <= 0 ) $info="Обязательное поле";


Подскажите, пожалуйста, как правильно добавить сюда же (не создавая новую) дополнительную проверку на заполнение только цифр?
FatCat
Цитата (Kuzma92 @ 4.04.2024 - 17:43)
Я выполняю следующую проверку:

Если ввести «1бублик», твоя проверка признает ввод правильным.

_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

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