Отправить форму ПОСЛЕ проверки - PullRequest
0 голосов
/ 20 марта 2011

Надеемся, что это будет простой вопрос.

Я пытаюсь проверить размер / тип изображения перед обработкой содержимого формы на отдельной странице PHP.

Проверка работает отличноперенаправление на страницу и обработка формы - не.

$image = $_FILES['files']['name'];
$ext = strrchr($_FILES['files']['name'], ".");

if (isset($_POST['submitNews'])) {
    if ($image != NULL && $_FILES["files"]["size"]<5000) {  
        if ($ext == '.png' || $ext == '.jpg') {
            $message = "Good file type";
        }
        else {
            $message = "Bad file type";
        }
    }
    elseif ($image != NULL && $_FILES["files"]["size"]>5001) {
        $message = "Too big";
    }
    else {
        //Process form
        header("Location: ../includes/manage_news.php");
    }
}

?>

Перенаправление заголовка не является правильным решением, поскольку данные формы не попадают на страницу manage_news.php.

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

У вас есть две возможности:

  1. Сделать проверку частью отправки формы, т. Е. Не выполнять перенаправление (конечно, вы все равно можете хранить свою логику в отдельных файлах).
  2. Используйте сессий для сохранения данных POST между запросами.
0 голосов
/ 20 марта 2011

Вы должны рефакторинг вашего кода.Что-то вроде этого должно помочь

if (isset($_POST['submitNews'])) {
   if (validateImage() === true) {
      //image passed validation, process form
   }
}

function validateImage() {
   $image = $_FILES['files']['name'];
   if ($image != NULL && $_FILES["files"]["size"]<5000) {  
        if ($ext == '.png' || $ext == '.jpg') {
            return true;
        }
        else {
            return "Bad file type";
        }
    }
    elseif ($image != NULL && $_FILES["files"]["size"]>5001) {
        return "Too big";
    }
    return false; //or true, depends on how you want it
}

Это просто идея, вы можете адаптировать ее к своему коду.Я возвращаю TRUE, если он проходит все ваши тесты и возвращает сообщение, если он не проходит проверки.Вот почему я проверяю, используя ===.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...