форма POST стирает вид - PullRequest
0 голосов
/ 27 июня 2011

Как заставить html-элементы моего очень простого представления повторно появляться после POST формы?

Я выкладываю HTML-элементы управления ниже, а затем, когда пользователь выбирает Кнопка «Загрузить», файл загружен (успешно), но все ранее выложенные элементы вида исчезают. Опять загрузка файла работает нормально. Просто элементы управления html, которые я отображал на index.php исчезают, когда форма загружается и окно браузера пусто.

Как мне вернуть мой очень простой вид после POST формы?

ЭТО index.php:

<body>
<img src="/theWebsite/images/banner2.jpg" /img>
<br />

<input type="button" value="Play" onclick="showAnAlert(){}" />
     // other buttons and text field html elements not shown

<form enctype="multipart/form-data" action="file-upload.php" method="POST">
      Please choose a file: <input name="uploaded" type="file" /><br />
      <input type="submit" value="Upload" />
 </form>

 </body>

Вот файл-upload.php :

<?php
    $target = "upload/";
    $target = $target . basename( $_FILES['uploaded']['name']) ;

    $uploadingFile = $_FILES['uploaded']['tmp_name'] ;
    if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
    {
        // I thought the problem was this 'echo' but the main view still goes blank after
         // I commented this out here....
        //echo "The file ". basename( $_FILES['uploaded']['name']). " has been uploaded";
     }
     else {
            // echo "errmsg"
           }
 ?> 

Ответы [ 3 ]

2 голосов
/ 27 июня 2011

После публикации формы на file-upload.php вы не перенаправляете ее обратно на index.php, где находится HTML.После обработки формы вам необходимо вызвать перенаправление:

if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
    // I thought the problem was this 'echo' but the main view still goes blank after
     // I commented this out here....
    //echo "The file ". basename( $_FILES['uploaded']['name']). " has been uploaded";

    // Redirect back....
    header("Location: http://www.example.com/index.php");
    // Always call exit() right after a redirection header to prevent further script execution.
    exit();
 }
 else {
        // echo "errmsg"
 }

Возможно, вам также понадобится перенаправить сообщение об ошибке.В этом случае поместите вызов header() в самый конец.

2 голосов
/ 27 июня 2011

Файл file-upload.php должен либо перенаправить пользователя обратно в ваш index.php после завершения загрузки, либо включить исходный файл index.php внизу.

Я голосую за то, чтобы вы либо перенаправили назад, либо просто полностью удалили файл file-upload.php и обработали его в своем файле index.php.

1 голос
/ 27 июня 2011

Для действия вашей формы укажите переменную $ _SERVER ['PHP_SELF']:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

Затем обязательно добавьте логику для обработки формы в том же файле .php, который выводит html.для вашей формы.Другой метод заключается в вызове header (), который снова перенаправляет на вашу форму:

<form action="process_form.php" method="POST">

затем в process_form.php:

header("Location: http://mydomain.com/form_page.html");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...