2013-05-09 4 views
0

Я пытаюсь создать простой пример для проверки формы, пустое поле или нет. Если поле не пустое действие, перенаправляйте меня на страницу ok.php, а если не обратно в formvalidation.php. и изменить поле css. У меня проблема с возвратом массива ошибок обратно в formvalidation.php и его тестирование для изменения css для поля ввода. Что я делаю не так?Механизм проверки базовой формы PHP

formvalidation.php

<?php require("includes/functions.php"); ?> 
<?php 
    global $errors; 
?> 

<form action="posting.php" method="p"> 
    <ul> 
     <li id="field"> 
      <label for="field">Contact person </label> 
      <input 
      <?php 
      if (empty($errors)) { 
       echo "style=\"background-color: #ECECEC;\""; 
      } else { 
       if (in_array("field", $errors)) { 
        echo "style=\"background-color: red;\"";} 
       } else { 
        echo "style=\"background-color:  #ECECEC;\""; 
       } 
      } 
      ?> 
      type="text" name="field"/> 
     </li> 
     <li> 
      <input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" /> 
     </li> 
    </ul> 
</form> 

action.php

<?php require("includes/functions.php"); ?> 
<?php 
    $errors = form_validation(); 

    if (!empty($errors)) { 
     redirect_to("formvalidation.php"); 
    } else { 
     redirect_to("ok.php"); 
    } 
?> 

функция

<?php 
function form_validation() { 

    $errors = array(); 

    $required_fields = array('field'); 
    foreach($required_fields as $fieldname) { 
     if (!isset($_POST[$fieldname]) || empty($_POST[$fieldname])) { 
      $errors[] = $fieldname; 
     } 
    } 

    return $errors; 

} 

ответ

0

После перенаправления $error переменной пуст Использовать $_SESSION

<?php 
    $_SESSION['error']=form_validation(); 

    if (!empty($_SESSION['error'])) { 
     redirect_to("formvalidation.php"); 
    } else {redirect_to("ok.php");} 
?> 

И formvalidation.php

$error=$_SESSION['error']; 
unset($_SESSION['error']); 

не забудьте убедиться, что session_start() находится на верхней части вашего кода

+0

Я изменил код действия с вашим, и я поставил session_start() в начало formvalidation.php, правильно? Но это не меняет css, так как я думаю, что он возвращает пустую $ error = $ _SESSION ['error']. Поле должно быть окрашено в красный цвет, если оно пустое, но оно остается серым. –

+0

print_r ($ _ SESSION ['error']); и пост-вывод. сеанс должен начинаться с action.php слишком – qisho

+0

Он выводит то, что должно было бы Array ([0] => поле) после публикации. Может быть проблема с хранением его в $ error. Как проверить whats в переменной, потому что echo $ error ничего не дает? Кроме того, следует отключить ($ _ SESSION ['error']); внизу страницы? –

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