0

こんにちは、初心者です。少し助けていただければ幸いです。これをオンライン チュートリアルから借用し、自分のニーズに合わせてカスタマイズしようとしています。

これはファイルに機能しますが、出力メッセージは別のページ/画面に出力されます。必要なのは、リダイレクトせずに同じページ/画面に検証メッセージを印刷することです。関数からを削除しようとしました$locationが、役に立たないようです。すべての検証メッセージを に表示するにはどうすればよいMSGPaneですか?

助けてくれてありがとう。

コードは次のとおりです。

<?php
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);
if(isset($_POST['submit']))
{
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);
$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploaded_files/';
$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'index.php';
$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . $_SERVER['PHP_SELF'];
$fieldname = 'file';
$errors = array(1 => 'php.ini max file size exceeded', 
                2 => 'html form max file size exceeded', 
                3 => 'file upload was only partial', 
                4 => 'no file was attached');

isset($_POST['submit'])
    or error('the upload form is neaded', $uploadForm);

($_FILES[$fieldname]['error'] == 0)
    or error($errors[$_FILES[$fieldname]['error']], $uploadForm);

@is_uploaded_file($_FILES[$fieldname]['tmp_name'])
    or error('not an HTTP upload', $uploadForm);

@getimagesize($_FILES[$fieldname]['tmp_name'])
    or error('only image uploads are allowed', $uploadForm);

$now = time();
while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name']))
{
    $now++;
}

@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)
    or error('receiving directory insuffiecient permission', $uploadForm);

header('Location: ' . $uploadSuccess);

}

function error($error, $location, $seconds = 5)
{
    header("Refresh: $seconds; URL=\"$location\"");

    echo "
    <div id='Upload'>\n\n
    <h1>Upload failure</h1><br>
    <p>An error has occured: 
    <span class='red'>. $error .</span><br>
    The upload form is reloading</p>
    </div>";
    exit;
}
$max_file_size = 3500000; // size in bytes
?>


<!doctype html>
<html>
<head><title></title></head>
<body>
<table>
  <tr>
    <td class='MSGPane'></td>
  </tr>
</table>
</html>
4

1 に答える 1

0

この行header("Refresh: $seconds; URL=\"$location\"");を関数から削除する必要があります。この行は、ユーザーを$locationで指定された場所にリダイレクトします。

編集:行も削除しますexit;

于 2013-08-25T12:52:32.317 に答える