Вывод ошибки

Aidar

Guest
Вывод ошибки

При вводе пользователем некорректных данных (недопустимые символы, неправильный емайл) в анкету низу страницы выводится ошибка. Вопросы:
1) Выводить сообщение об ошибке на новой странице. В данный момент выводится так:
PHP:
if (strlen($_POST['biography']) > 2000) {$Errors[] = 'Ваша биография не должно привышать 2000 символов.';}
    if(isset($Errors)) {
    echo '<center><div align="left" style="width:60%"><p align="center">При добавлении нового студента возникли ошибки:</p>';
      for( $i = 0; $i < sizeof( $Errors ); $i++ ) {
        echo 'Ошибка: '.$Errors[$i]."<br/>".phpinfo(32)."<br/>";
      }
      echo '</div></center>';
      return false;
    }
2) Как сделать так, чтобы поля после вывода ошибки не опустошались. А то переспектива заполнять все поля по новой не очень радует.
 

Фанат

oncle terrible
Команда форума
1) А зачем на новой?
2) Выводи своим скриптом в полях введённые значения. Как это сделать - посмотри в учебнике html.
 

bgm

&nbsp;
1) Проверяй поля "до отправки" формы - с помощью JavaSacript
2) Если же корректность данных "должна" проверяться на сервере, то при формировании сообщения об ошибке и страницы ввод - заполняй форму значениями из $_POST
 

Фанат

oncle terrible
Команда форума
bgm, запомни. корректность данных должна, безо всяких кавычек ВСЕГДА проверяться на сервере.
 

SelenIT

IT-лунатик :)
bgm
Корректность данных должна проверяться на сервере в любом случае. Клиентская проверка на JS - это не защита, а средство помощи юзеру. К тому же ее всегда можно отключить вместе с самим JS)
 

tolst

Новичок
1) Выводи ошибки прям на странице с самой формой... Просто пиши пользователю что он ввёл не корректно и всё, если всё корректно то действуй далее.......

2) Выводить данные можно вот так:
<input type="text" name="var_name" value="<?=htmlspecialchars($_POST[var_name])?>">
 

Aidar

Guest
Никак не соображу, как можно реализовать:
PHP:
switch( ( isset( $_GET['action'] ) ) ? $_GET['action'] : 'show' ) {
case 'add': {   
if(isset($_POST['apply']) && ('process' == $_POST['apply'])) {
  //проверка правильности заполнения полей. Если есть ошибки, записываем их в массив $Errors
  if (empty($_POST['specialty'])) {$Errors['specialty'] = 'Вы не выбрали специальность.';}
  //.....
  //если массив $Errors незаполнен, то добавляем запись, иначе выводим форму stud_add.php с ошибками рядом с соответстующими полями.
} else {
  if (isset($Errors)) {
    echo 'Пожалуйста исправте ошибки';
  }
  include_once(SHELL_PATH.'stud_add.php');
}
}
case 'edit': //.....
 

fixxxer

К.О.
Партнер клуба
PHP:
<?
$foo = "";
if (isset($_POST['foo']) && проверка_правильности($_POST['foo'])) {
  обработка_результата();
  header("Location: /ok.php");
  exit;
} else {
  $foo = htmlspecialchars($_POST['foo']);
}
?>
<form method=post>
<input type=text name=foo value="<?=$foo?>">
</form>
 

Фанат

oncle terrible
Команда форума
if($_SERVER['REQUEST_METHOD']=='POST') {
//проверка правильности заполнения полей. Если есть ошибки, записываем их в массив $Errors
if (!count($Errors)) {
if ($_POST['action']) == 'add') $query="INSERT";
else $query="UPDATE";
mysql_query($query);
header("Location: /ok.php");
exit;
} else {
$foo = htmlspecialchars($_POST['foo']);
}
?>
<form method=post>
<input type=text name=foo value="<?=$foo?>">
</form>
 

bgm

&nbsp;
Автор оригинала: Фанат
bgm, запомни. корректность данных должна, безо всяких кавычек ВСЕГДА проверяться на сервере.
Даже возражать не буду - должна. И даже не из соображений того, что JavaScript может быть отключён или что-то иное, а из элементарных правил безопасности.
 
Сверху