2013-04-26 2 views
-1

Я ищу как простой подход к исправлению ошибок, таких как несогласованные пароли, и людей, вставляющих пустые данные в форму в HTML.Регистрация формы Коррекция ошибок в PHP - Лучшее решение?

Я хочу использовать PHP, чтобы вернуть мне ошибку, когда это произойдет, я рассматривал возможность использования операторов if, но понял, что если это произойдет, не будет отображаться более одной ошибки.

Вот пример того, что я был делать, имея в виду, вход $ ПгвЬЫате является от POST:

if ($firstname == "") 
{ 
$_SESSION['nofirstname'] = 1; 
header('Location: register.php'); 
} 

В register.php он поднимает это, и предупреждает пользователя о том, что он вступил нет имени. Это классно, но не отображать дополнительные ошибки, если они есть. Я предполагаю, что переключатели и массивы - это путь вперед, но я не понимаю, как добавить запись в массив.

Любой, кто может помочь?

+0

является то, что ваш полный код и что вы пробовали? –

+0

Вместо перенаправления внутри вашего условного оператора сначала проверьте все свои «исключения» и установите соответствующие переменные сеанса. Затем, когда вы все проверили, вызовите заголовок. – SBI

+0

Вы упомянули, и я цитирую '' как добавить запись в массив ''; вы хотите «добавить» запись в 'array', с чего начинается ваш массив? –

ответ

1
session_start(); 
.... 
    $_SESSION['flag']=false; 
    if ($firstname == "") 
    { 
    $_SESSION['nofirstname'] = 1;$_SESSION['flag']=true; 
    } 
    if ($lastnamee == "") 
    { 
    $_SESSION['nolastname'] = 1;$_SESSION['flag']=true; 
    } 
    ... 

    header('Location: register.php'); 

в register.php

session_start(); 
... 
    if ($_SESSION['flag']==true){ 
     if ($_SESSION['nofirstname']==1) {///message} 
     if ($_SESSION['nolastname']==1) {///message} 
     ... 
    } 
+0

Если вы собираетесь предоставить «ответ», можете также «перейти на GOLD» и добавить 'session_start();' в начало вашего кода. ;-) –

+0

@ Фред, я предположил, что ОП это знает .. спасибо – Amir

+0

Я сомневаюсь. OP не появлялся во взаимодействии с теми, кто много работал, чтобы предоставить ему ответы/предложения. Этот «Мертвый в воде» как бы и второй раз, когда он никому не знает, что он еще жив, и не принял никаких ответов. «Дурайте меня однажды», позор на HIM ». Дурайте меня дважды «стыдно за МЕНЯ». «Я поддерживаю всех, кто дал ответ и опрокидывал его вопрос. –

1

Используйте вложенный, если, например;

<?php 
    if($firstcond){ 
     if($secondcond){ 

     }else{ 
      $_SESSION['error'] = 'Second Condition not met!'; 
      header('Location: register.php'); 
      //error 
     } 
    }else{ 
     $_SESSION['error'] = 'First Condition not met!'; 
     header('Location: register.php'); 
     //error 
    } 
?> 

Это означает, что для того, чтобы $secondcond быть подтверждено, $firstcond должны пройти все, что проверяет выполнения на нем первый :)

+0

Вы также упустили 'session_start();'. –

+1

@Fred Я предположил, что он уже начал сеанс где-то выше, не похоже, что код будет в самой верхней части страницы? – Dom

+0

'session_start();' должна быть следующая строка при открытии '

1
session_start(); 
    ob_start() 

if ($firstname == "") 
    { 
    $_SESSION['nofirstname'] = "Enter your name"; 
    header('Location: register.php'); 
    } 

Перенаправление страницы и отображения

echo isset($_SESSION['nofirstname'])?$_SESSION['nofirstname']:''; 

Try это.

+0

Приобретено для «усилия». Кажется, этот вопрос «Мертвый в воде». –

1

Попробуйте это:

session_start(); 

$errors = array(); 

if ($firstname == "") 
{ 
    $errors['nofirstname'] = 1; 
} 
if ($lastname == "") 
{ 
    $errors['nolastname'] = 1; 
} 

$run = 1; 
foreach ($errors AS $key => $value) 
{ 
    $_SESSION[$key] = $value; 
    $run = 0; 
} 

if (!$run) 
    header('Location: register.php'); 
+1

Если вы собираетесь использовать '$ _SESSION', вы упустили установку' session_start(); 'вверху. ;-) –

+0

Спасибо, что указали это. –

+0

No problemo amigo ;-) –

Смежные вопросы