[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать чтобы в поле были только цифры?
Randyboll
Всем доброго времени суток. Пожалуйста помогите с кодом. Дело в том что, нужно, чтобы, допустим, в поле "year" и "length" можно было писать только цифры, иначе чтобы выдавало сообщение о неправильно заданных параметрах. Спасибо

P.s. В таблице базы стоит тип Int, так что при добавлении буквенных символов в поле YEAR он пишет что успешно добавленно, но потом в этом поле просто стоит значение года по умолчанию 0.

вот код пхпшника.

<html>
<?
$db=mysql_connect("localhost","muz2","password");
if(!$db) echo("Cannot connect to database!");
if(!mysql_select_db(muz2)) echo ("Cannot connect to database");
mysql_query("SET NAMES cp1251");
$track_name=$HTTP_POST_VARS["track_name"];
$track_artist_id=$HTTP_POST_VARS["track_artist_id"];
$track_disk_id=$HTTP_POST_VARS["track_disk_id"];
$genre_id=$HTTP_POST_VARS["genre_id"];
$year=$HTTP_POST_VARS["year"];
$length=$HTTP_POST_VARS["length"];
$style=$HTTP_POST_VARS["style"];
mysql_query("INSERT INTO tracks(name,artist_id,disk_id,genre_id,year,length, style)
VALUES('$track_name','$track_artist_id','$track_disk_id','$genre_id','$year','$length','$style')");

mysql_close($db);
?>
<body>
<?echo "Successfully added";?>
</body>

</html>



Спустя 8 минут, 38 секунд (31.03.2009 - 13:56) Нимфа написал(а):
Необходими ставить проверку вводимых символов в конкретные поля. Это делается с помощью java script


<script type="text/javascript">

function check(evt)
{
    evt = (evt) ? evt : window.event;
        if(evt)
        {
             var elm = (evt.target) ?
                 evt.target : evt.srcElement;
             if(elm)
            {
                 var code = (evt.charCode)?
                     evt.charCode : evt.keyCode;
                 if((code>=48) && (code<=57) )
                {
                     return true;
                }
                 else
                {
                    return false;
                }
             }
        }
}

window.имя_формы.имя_текстового_инпута.onkeypress = check;
</script>

Спустя 1 минута, 21 секунда (31.03.2009 - 13:58) waldicom написал(а):
is_numeric(), ctype_digit()

Вместо $HTTP_POST_VARS лучше использовать $_POST


пысы. проверка на яваскрипт - хорошее дело, сохраняет нервы пользователям. Но доверять ей нельзя.

Спустя 2 минуты, 8 секунд (31.03.2009 - 14:00) FatCat написал(а):
Цитата (Randyboll @ 31.03.2009 - 13:48)
нужно, чтобы, допустим, в поле "year" и "length" можно было писать только цифры, иначе чтобы выдавало сообщение о неправильно заданных параметрах.

Пример для year:
PHP
if( intval($HTTP_POST_VARS["year"]) != $HTTP_POST_VARS["year"] )echo "Количество лет должно содержать только цифры и не начинаться с нуля!";

Спустя 37 минут, 7 секунд (31.03.2009 - 14:37) Randyboll написал(а):
написал вот так... но почему-то в любом случае он мне выдаёт echo "Successfully added";



$track_disk_id=$HTTP_POST_VARS["track_disk_id"];
$genre_id=$HTTP_POST_VARS["genre_id"];
$year=$HTTP_POST_VARS["year"];

if( intval($HTTP_POST_VARS["year"]) != $HTTP_POST_VARS["year"] )echo

"Количество лет должно содержать только цифры и не начинаться с нуля!";

$length=$HTTP_POST_VARS["length"];
$style=$HTTP_POST_VARS["style"];

mysql_query("INSERT INTO

tracks(name,artist_id,disk_id,genre_id,year,length, style)
VALUES('$track_name','$track_artist_id','$track_disk_id','$genre_id','$yea

r','$length','$style')");
echo "Successfully added";

mysql_close($db);
?>


</html>


2Нимфа: а по проще никак нельзя? Я с явой вообще не знаком, поэтому мне трудно понять.((

Спустя 24 минуты, 1 секунда (31.03.2009 - 15:01) Семён написал(а):
оооооо ребята... тут кто-то советует JS..... я когда делал внутри-сетевой сайт для задротов игр, они у меня умудрялись не только JS отключать, но и делать подмены форм и т.д. Поэтому самая лучшая проверка это только php

Спустя 14 минут, 44 секунды (31.03.2009 - 15:16) sergeiss написал(а):
Цитата (Семён @ 31.03.2009 - 15:01)
оооооо ребята... тут кто-то советует JS..... я когда делал внутри-сетевой сайт для задротов игр, они у меня умудрялись не только JS отключать, но и делать подмены форм и т.д. Поэтому самая лучшая проверка это только php

Мало ли, кто там и что отключает... При желании (необходимости) можно сделать так, что без JS вообще работать ничего не будет. Даже формы ввода не будет. Поэтому тут не стоит быть столь категоричным.

Спустя 2 минуты, 23 секунды (31.03.2009 - 15:18) Randyboll написал(а):
народ ну не отвлекайтесь пожалуйста, проблемма всё ещё не решена. Сделайте доброе дело помогите новичку)

Спустя 4 минуты, 23 секунды (31.03.2009 - 15:23) Семён написал(а):
Цитата (sergeiss @ 31.03.2009 - 16:16)
Цитата (Семён @ 31.03.2009 - 15:01)
оооооо ребята... тут кто-то советует JS..... я когда делал внутри-сетевой сайт для задротов игр, они у меня умудрялись не только JS отключать, но и делать подмены форм и т.д. Поэтому самая лучшая проверка это только php

Мало ли, кто там и что отключает... При желании (необходимости) можно сделать так, что без JS вообще работать ничего не будет. Даже формы ввода не будет. Поэтому тут не стоит быть столь категоричным.

Ну да JS будет то включен, но ещё раз повторюсь существует такая вещь как подмена формы......

Автор:

Делаешь форму (method post)
Делаешь php код в котором:
$pole = $_POST['pole'];
затем задаёшь условие:
if(is_numeric($pole)) { бла бла бла }
С проверкой полей JS - идею выкинь из головы, если её и делай то как дополнительную, но не основную.


Спустя 58 секунд (31.03.2009 - 15:23) Семён написал(а):
Щас набросаю простой пример

Спустя 4 минуты, 3 секунды (31.03.2009 - 15:28) sergeiss написал(а):
Семён, пока ты набрасываешь пример, я мало-мало прокомментирую smile.gif
Ты всё правильно сказал насчет возможности подмены формы и насчет необходимости проверки на сервере. Просто тут одно другому не противоречит.
Проверка на JS - для "честных" юзеров (в первую очередь). Проверка на стороне сервера - для всех остальных.

Спустя 2 минуты, 39 секунд (31.03.2009 - 15:30) Randyboll написал(а):
сделал, но он мне теперь всё время пишет, что:
В поле Год должны быть только цифры... Проверьте плиииз код, где я допустил ошибку?

mysql_query("SET NAMES cp1251");
$track_name=$HTTP_POST_VARS["track_name"];
$track_artist_id=$HTTP_POST_VARS["track_artist_id"];
$track_disk_id=$HTTP_POST_VARS["track_disk_id"];
$genre_id=$HTTP_POST_VARS["genre_id"];
$year=$_POST_VARS["year"];
$length=$_POST_VARS["length"];
$style=$HTTP_POST_VARS["style"];

if(is_numeric($year)){
mysql_query("INSERT INTO

tracks(name,artist_id,disk_id,genre_id,year,length, style)
VALUES('$track_name','$track_artist_id','$track_disk_id','$genre_id','$yea

r','$length','$style')");

echo("Успешно добавленно");

}

else{
echo ("В поле Год должны быть только цифры.\n");
}


mysql_close($db);
?>
<body>
</body>

</html>

Спустя 56 секунд (31.03.2009 - 15:31) Семён написал(а):
Просто я научен опытом, что такое подмена формы.... и не раз пытались ломать мои сайты)))

Спустя 8 минут, 13 секунд (31.03.2009 - 15:39) sergeiss написал(а):
Randyboll - а это что такое??? ohmy.gif

PHP
$_POST_VARS["year"];


Спустя 2 минуты, 4 секунды (31.03.2009 - 15:41) Семён написал(а):
Этот код поместить в 1 файл

<?php
$num = $_POST['num'];
$sim = $_POST['sim'];
if(isset($_POST['form-subm']) && $num != '' && $sim != '')
{
if(is_numeric($num)) { $numstatus = "<font color='green'><b>Поле состоит из цифр</b></font>"; } else { $numstatus = "<font color='red'><b>Неправильное заполнено поле</b></font>"; }
if(!is_numeric($sim)) { $simstatus = "<font color='green'><b>Поле состоит из букв или цифр</b></font>"; } else { $simstatus = "<font color='red'>Неправильное заполнено поле</font>"; }
}
?>
Заполните все поля формы:<hr/>
<form action="" method="post">
<table style="width: 100%">
<tr>
<td width="150px" style="height: 26px">Только Цифры</td>
<td style="height: 26px"><input name="num" type="text" value="<?php echo $_POST['num']; ?>">
<?php echo $numstatus; ?>
</td>
</tr>
<tr>
<td>Буквы и цифры</td>
<td><input name="sim" type="text" value="<?php echo $_POST['sim']; ?>">
<?php echo $simstatus; ?>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="form-subm" type="submit" value="Отправить"></td>
</tr>
</table>
</form>

Спустя 4 минуты, 56 секунд (31.03.2009 - 15:46) FatCat написал(а):
Цитата (Randyboll @ 31.03.2009 - 15:30)
if(is_numeric($year)){

А она не числовая, а строковая, потому как из полей формы на сервер передаются строки...

В Вашем коде вместо
PHP
if(is_numeric($year))
сделайте
PHP
if( intval($year) == $year )

Спустя 9 минут, 47 секунд (31.03.2009 - 15:56) Randyboll написал(а):
исправил, но всёравно не заработало:'( что бы я не ввёл - цифры или буквы, пишет успешно добавлено((((

mysql_query("SET NAMES cp1251");
$track_name=$HTTP_POST_VARS["track_name"];
$track_artist_id=$HTTP_POST_VARS["track_artist_id"];
$track_disk_id=$HTTP_POST_VARS["track_disk_id"];
$genre_id=$HTTP_POST_VARS["genre_id"];
$year=$_POST["year"];
$length=$_POST_VARS["length"];
$style=$HTTP_POST_VARS["style"];

if( intval($year) == $year ){
mysql_query("INSERT INTO tracks(name,artist_id,disk_id,genre_id,year,length, style)
VALUES('$track_name','$track_artist_id','$track_disk_id','$genre_id','$year','$length','$style')");

echo("Успешно добавленно");

}

else{
echo ("В поле Год должны быть только цифры.\n");
}


mysql_close($db);
?>
<body>
</body>

</html>

Спустя 1 минута, 29 секунд (31.03.2009 - 15:58) Семён написал(а):
Ты бы посмотрел мой пример.......

Спустя 5 минут, 40 секунд (31.03.2009 - 16:03) Randyboll написал(а):
Семён я посмотрел, но я не смогу им воспользоваться... у меня фрпма иакая </tr>
<tr>
<td align=left>Год</td>
<td align=right><input type=text name="year"></td>
</tr>
<tr>

Спустя 7 минут, 35 секунд (31.03.2009 - 16:11) sergeiss написал(а):
Randyboll - ты исправил в одном месте, но кто тебе мешает посмотреть САМОМУ, САМОСТОЯТЕЛЬНО (!) и исправить в другом месте одну и ту же ошибку?????

Код
$_POST_VARS

Спустя 4 минуты, 50 секунд (31.03.2009 - 16:16) sergeiss написал(а):
Да, и еще.
Сколько я слежу за этой темой, но так никто и не сказал про то, что у тебя нету защиты от SQL-инъекции.
А во-вторых, ты все без исключения величины заключаешь в кавычки, в SQL запросе. Но числовые не надо в кавычки, только строковые!

Спустя 5 минут, 31 секунда (31.03.2009 - 16:21) Randyboll написал(а):
sergeiss а что это может повлиять? ведь в данном случае мы рассматриваем переменную $year я её исправил, но она всёравно не работает(( сорри что достаю, но просто уже 3й день голову ломаю((

Спустя 26 секунд (31.03.2009 - 16:22) Dezigo написал(а):
Проверяй регулярными выражениями
Пропуска токо чисел.
Пример.

PHP
public function verification($field) { // checking for input chars. ignore ';@^$%'
if (! preg_match('/^[0-9]*$/i',stripslashes($field))) { 
     exit (
"<div class='error' align='center'>Error.. Data includes a bad character.</div>"); 
 }


Спустя 15 минут, 56 секунд (31.03.2009 - 16:38) Randyboll написал(а):
хэлп ми! хелп ми! очень нужна помощь спецов!

Спустя 5 минут, 24 секунды (31.03.2009 - 16:43) sergeiss написал(а):
Ты еще не показал код формы, где у тебя делаются эти присвоения. Скорее всего, там тоже что-то не так.

Спустя 1 час, 58 минут, 31 секунда (31.03.2009 - 18:41) bret написал(а):
Оффтоп - быстрое "только целое" поле
HTML
<input type="text" onblur="this.value=(parseInt(this.value)?parseInt(this.value):'');" onKeyUp="this.value=(parseInt(this.value)?parseInt(this.value):'');" />
Быстрый ответ:

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