Реализация вывода ошибок

1. Apeccc (23.01.2013 / 18:41)
Доброго времени.
Подскажите по реализации (код не нужен).
Есть регистрация.
Есть проверка условий(в этом же файле).
if($login == '' or $login == NULL or strlen($login) > 20 or eregi("|^[a-z\d\[\]_\-а-яе]{2,20}$|ui", $login)){
		header ("Location: reg.php");
		exit;
		}
		if($password == '' or $password == NULL or strlen($password) > 20){
		header ("Location: reg.php"); exit;
		}
Задача:
В случае ошибки в имени - вывести знак "!" у формы ввода имени, в случае с паролем - у пароля.

<form action="?go=reg" method="post">
<div class="main">
Логин (2-20 символов, а-Я, a-Z и символы [ ] _):
<br>
<input name="login"><br>
Пароль:
<br>
<input type="password" name="password">


2. ubnt (23.01.2013 / 18:45)
<form action="?go=reg" method="post">
<div class="main">
Логин (2-20 символов, а-Я, a-Z и символы [ ] _):
<br>

/// здесь вставить етот код
if($login == '' or $login == NULL or strlen($login) > 20 or eregi("|^[a-z\d\[\]_\-а-яе]{2,20}$|ui", $login)){
echo "!";
}

<input name="login"><br>
Пароль:
<br>
/// здесь вставить етот код
if($password == '' or $password == NULL or strlen($password) > 20){
echo "!";
}

<input type="password" name="password">

Добавлено через 01:13 сек.
там надо вставить код проверки заполнения поля, ну или правильности данних

Добавлено через 03:14 сек.
извините, нет русской розкладки...

3. Алексей (23.01.2013 / 18:49)
оффтоп: уже вижу вторую твою тему о не правильной организации кода и все из за того что изначально неверная архитектура приложения

4. Apeccc (23.01.2013 / 18:49)
Мне код не нужен, теорию, плиз.

Добавлено через 00:51 сек.
3. megabit, smile О какой организации речь, если мне теория нужна?

5. Изнаур (23.01.2013 / 19:02)
Если проверка и форма в одном файле:
теоретик из меня плохой,так что всё таки кодом,а там подправите под себя:
<?php
if(isset($_POST))
{
if(проверка какого либо поля)
если не прошел $error['password'] = 'что хочешь в качестве ошибки'
else
{
//если все условия пройдены
echo 'вы зарегались бла-бла бла';
include('ноги сайта');
exit;
}
}
echo '<input type="password" name="password">'. (!empty($error['password']) ? $error['password'] : '';
?>
довольно много получается но как лучше не знаю

6. iNeeXT (23.01.2013 / 19:18)
Если ошибка при вводе какого-либо поля, то забиваешь true в массив с флагами ошибок.
Например:
<?
$errors = array();
if(проверка) {
   if(проверка, например, логина) {
     // ошибка
     $errors['login_error'] = true;
   }
}
?>

А возле формы проверяешь через empty или isset переменную с ключом для нужного поля.
<?
  if(!empty($errors['login_error']))
    echo '!';
  // html code
?>


7. kilo (24.01.2013 / 18:05)
1. Ужасный У, почему используеш eregi?? preg_match гараздо быстрее!

8. shilo (24.01.2013 / 20:20)
ну так пиши в сессию код ошибки, и при выводе формы проверяй

9. Александр (24.01.2013 / 22:09)
Код дырявый благодаря eregi.

10. kilo (24.01.2013 / 22:26)
9. Муз-ТВ, вот вотsmile

11. Артур (24.01.2013 / 22:31)
Вообще находить ошибки лучше на уровне js тоже (помимо php), это снизит нагрузку на сервер. В твоем случае могу посоветовать то, что сделал сам: на уровне пыха при появлении исключительной ситуации выбрасывать исключение и ловить его в точке общего входа. Оттуда передавать специальную команду в js, а тот в свою очередь информирует пользователя об ошибке сервера указывая требуемое поле

URL: https://visavi.net/topics/36357