Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как проверить все поля без перезагрузки формы
 
 автор: serjinio   (12.07.2008 в 02:04)   письмо автору
 
 

Как проверяются заполнение полей без перезагрузки формы или как с перезагрузкой ,но с сохранением введенных данных

   
 
 автор: Root   (12.07.2008 в 02:15)   письмо автору
 
   для: serjinio   (12.07.2008 в 02:04)
 

Ajax

   
 
 автор: sms-send   (12.07.2008 в 02:17)   письмо автору
 
   для: serjinio   (12.07.2008 в 02:04)
 

>или как с перезагрузкой ,но с сохранением введенных данных

Выводить проверяемые данные в эту же форму.

   
 
 автор: serjinio   (12.07.2008 в 03:11)   письмо автору
 
   для: sms-send   (12.07.2008 в 02:17)
 

Каким способом...или где посмотреть пример??

   
 
 автор: sms-send   (12.07.2008 в 03:17)   письмо автору
 
   для: serjinio   (12.07.2008 в 03:11)
 


<?php

echo '<form action="?" method="post">',
'<input type="text" name="field1" value="'.htmlspecialchars(isset($_REQUEST['field1'])?$_REQUEST['field1']:'').'"><br />',
'<input type="text" name="field2" value="'.htmlspecialchars(isset($_REQUEST['field2'])?$_REQUEST['field2']:'').'"><br />',
'<input type="text" name="field3" value="'.htmlspecialchars(isset($_REQUEST['field3'])?$_REQUEST['field3']:'').'"><br />',
'<input type="submit" value="Отправить"><br />',
'</form>';

?>


Остальное как обычно.

   
 
 автор: sim5   (12.07.2008 в 15:08)   письмо автору
 
   для: sms-send   (12.07.2008 в 03:17)
 

А зачем htmlspecialchars()?

   
 
 автор: Trianon   (12.07.2008 в 15:23)   письмо автору
 
   для: sim5   (12.07.2008 в 15:08)
 

>А зачем htmlspecialchars()?

Опять шутим?

   
 
 автор: BinLaden   (12.07.2008 в 15:29)   письмо автору
 
   для: Trianon   (12.07.2008 в 15:23)
 

> Опять шутим?

Похоже с sim5 это случается периодически :))

   
 
 автор: sim5   (12.07.2008 в 15:47)   письмо автору
 
   для: BinLaden   (12.07.2008 в 15:29)
 

Ну если я принимаю форму, то я знать буду, что, например, в поле А не должно быть никаких вещей типа тегов. А если мне пытаются их втюхивать, блокировать вообще передачу. А то что не запрещено - htmlspecialchars() при выводе из базы. Чем страшен тег в форме?

   
 
 автор: Trianon   (12.07.2008 в 15:54)   письмо автору
 
   для: sim5   (12.07.2008 в 15:47)
 

Там не тег в поле. Там плоский текст.
Чтобы плоский текст сделать значением атрибута, его СЛЕДУЕТ представить согласно стандартам.


PS. Между прочим, когда я пишу здесь <SCRIPT> , мне никакую передачу не блокируют.С чего бы?...
PPS. Sim5, я не верю, что Вы этого не знаете. И не смотря на это, Вас хочется послать делать 21-ю задачу.

   
 
 автор: sim5   (12.07.2008 в 16:04)   письмо автору
 
   для: Trianon   (12.07.2008 в 15:54)
 

Но зачем делать лишнее обрамляя в htmlspecialchars до проверки? Не проверив чего там, сразу ляп и... Я думаю так - поле имя, значит имя, не имя - "до свидания", мыло соответсвенно, а вот сообщение, тут уже варианты. Если разрешаем, то тогда htmlspecialchars(), нет, как и с именем. Нафига мне ненужный мусор в базе?

PS. Не надо меня "посылать" )). Я понимаю о чем вы. Собственно, если JS воткнут и его вернуть, развалится просто страница. Я говорю о том, что поля надо проверять, а не просто "обезопасивать" html-представлением.

   
 
 автор: Trianon   (12.07.2008 в 16:16)   письмо автору
 
   для: sim5   (12.07.2008 в 16:04)
 

В каком смысле, проверив чего там?

Там - текст. Текст может быть любым. То есть совершенно любым То есть абсолютно любым. На что его тогда проверять?
На длину разве что.

Почему текст не может быть внешне похож на JS-код? Например, когда является примером JS-кода?

   
 
 автор: BinLaden   (12.07.2008 в 16:17)   письмо автору
 
   для: sim5   (12.07.2008 в 16:04)
 

> Но зачем делать лишнее обрамляя в htmlspecialchars до проверки? Не проверив чего там, сразу ляп и ... Я думаю так - поле имя, значит имя, не имя - "до свидания"

Например, пользователь изначально ввел никнейм с лишним, "плохим" символом, который Вы ни за что на свете не согласитесь впихивать в базу данных. Нажал "Отправить". Появляется та же страница с матерным сообщением от разработчика. Мол чё ты пишешь, сволочь.
И что он увидит дальше? Что поле никнейм, в которое он вводил ник, стало вообще пустым или страница стала отображаться неверно? А ему всего-то надо было убрать этот символ.

   
 
 автор: sim5   (12.07.2008 в 16:32)   письмо автору
 
   для: BinLaden   (12.07.2008 в 16:17)
 

Ребята, если бы было так, например:

<?
$name  
= isset($_POST['name']) ? $_POST['name'] : "";
$mail  = isset($_POST['mail']) ? $_POST['mail'] : "";
$post  = isset($_POST['post']) ? $_POST['post'] : "";
if (
$name) {
  
//проверяем потроха
  //втюхивают запрещенное
  //хидером на фигу
  //если ошибочка просто,
  //а мы разрешили, то
  
$name =  htmlspecialchars($name); //и т.д.
}
//вывод формы со значениями $name, $mail, $post   
?>

тогда я понимаю, но зачем это делать до проверки, обрамив и забросив в значения.

>Например, пользователь изначально ввел никнейм с лишним, "плохим" символом

"Плохие" символы, если речь о нике - проверять надоть, нафига они мне нужны, я об этом и говорю.

   
 
 автор: Trianon   (12.07.2008 в 16:39)   письмо автору
 
   для: sim5   (12.07.2008 в 16:32)
 

Ну я, к примеру прочел
'<input type="text" name="field1" value="'.htmlspecialchars(@$_REQUEST['field1']).'"><br />',
в первую очередь как value="'.htmlspecialchars(...
А Вы , вероятно, как htmlspecialchars(@$_REQUEST['field1'])

   
 
 автор: sim5   (12.07.2008 в 16:47)   письмо автору
 
   для: Trianon   (12.07.2008 в 16:39)
 

Я прочитал также. Просто я привык, сперва проверять, потом принимать решение, а не наоборот.)

   
 
 автор: sms-send   (12.07.2008 в 23:10)   письмо автору
 
   для: sim5   (12.07.2008 в 16:47)
 

>Я прочитал также. Просто я привык, сперва проверять, потом принимать решение, а не наоборот.)


Форма будет отображена повторно только в том случае, если какая то из проверок покажет ошибку заполнения. Вы можете сначала проверить данные и в случае ошибки выполнить этот код, который покажет пользователю форму с его крякозябрами и сопровождающим текстом ошибок, которые он должен исправить.

   
 
 автор: serjinio   (13.07.2008 в 02:38)   письмо автору
 
   для: sms-send   (12.07.2008 в 23:10)
 

Сделал по другой схеме..
<?php 
if ($_SERVER['REQUEST_METHOD']=='POST') {
  foreach(
$_POST as $key => $value) {
    
$value=trim($value); // убираем пробелы в начале и в конце переменной.
    
if (get_magic_quotes_gpc()) $value stripslashes($value); //убираем слеши, если надо
    
$value=htmlspecialchars($value,ENT_QUOTES); //заменяем служебные символы HTML на эквиваленты
    
$_POST[$key]=$value//все изменения записываем в массив $_POST
  
}
  
$err='';
  if (!
$name$err.="Вы забыли написать свое имя<br>";
  if (!
$notes$err.="Вы забыли написать сам отзыв!<br>";
  }
  if (!
$err
  {
   
//если ошибок нет, то пишем куда надо...или выводим...
    
Header("Location: ".$_SERVER['PHP_SELF']);
    exit;
  }

else 
{
  
$_POST['name'] = $_POST['email'] = $_POST['notes'] ='';
}
?>
<html>
<head></head>
<body>
<? if ($err) echo '<font color=red><b>'.$err.'</b></font>'?>
<form action="<? echo $_SERVER['PHP_SELF'?>" method="POST"><br>
Name: <input type="text" name="name" value="<? echo $_POST['name'?>"><br>
Notes: <textarea rows="3" cols="30" name="notes"><? echo $_POST['notes'?></textarea><br>
<input type="submit" name="submit">
</form>
</body>
</html> 

   
 
 автор: sms-send   (13.07.2008 в 03:33)   письмо автору
 
   для: serjinio   (13.07.2008 в 02:38)
 

Вы проверяете уже html код, а не текст введённый пользователем. Если будут более сложные проверки, то могут возникнуть трудности. Да и хранить данные в виде html как то не удобно.

   
 
 автор: serjinio   (13.07.2008 в 04:12)   письмо автору
 
   для: sms-send   (13.07.2008 в 03:33)
 

Это для админки...т.е для себя.....

   
 
 автор: sim5   (13.07.2008 в 05:34)   письмо автору
 
   для: sms-send   (12.07.2008 в 23:10)
 

Вот я и говорю - проверить...

   
 
 автор: serjinio   (12.07.2008 в 19:59)   письмо автору
 
   для: sms-send   (12.07.2008 в 03:17)
 

Объясните какой смысл в этой конструкции..
value="'.isset($_REQUEST['field1'])?$_REQUEST['field1']:''.'"

я как понимаю, что если в поле введено что-то, то значение value=$_REQUEST['field1'], и в $field1---это что-то....
если поле пустое то значение value= равно пустоте...т.е пустое поле и в переменной $field1ничего нет...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования