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>
<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
пысы. проверка на яваскрипт - хорошее дело, сохраняет нервы пользователям. Но доверять ей нельзя.
Вместо $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Нимфа: а по проще никак нельзя? Я с явой вообще не знаком, поэтому мне трудно понять.((
$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) | ||
Мало ли, кто там и что отключает... При желании (необходимости) можно сделать так, что без 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 написал(а):
Семён, пока ты набрасываешь пример, я мало-мало прокомментирую
Ты всё правильно сказал насчет возможности подмены формы и насчет необходимости проверки на сервере. Просто тут одно другому не противоречит.
Проверка на JS - для "честных" юзеров (в первую очередь). Проверка на стороне сервера - для всех остальных.
Ты всё правильно сказал насчет возможности подмены формы и насчет необходимости проверки на сервере. Просто тут одно другому не противоречит.
Проверка на 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>
В поле Год должны быть только цифры... Проверьте плиииз код, где я допустил ошибку?
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 - а это что такое???
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> </td>
<td><input name="form-subm" type="submit" value="Отправить"></td>
</tr>
</table>
</form>
<?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> </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>
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>
<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 запросе. Но числовые не надо в кавычки, только строковые!
Сколько я слежу за этой темой, но так никто и не сказал про то, что у тебя нету защиты от 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 ';@^$%' |
Спустя 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):'');" /> |