1

ページを更新した後に再送信する理由

http://qass.im/message-envelope/にアクセスしてください

任意のファイルをアップロードしますが、ext "gif"、"jpeg"、"jpg"、"png"、"zip"、"pdf"、"docx"、"rar"、"txt" のみをアップロードします

アップロード後、F5 ボタンをクリックしてページを更新します

今すぐ再送信して、ファイルを再度アップロードしてください!

なぜ?

jqueryなしでファイルをアップロードした後の再送信を無効にしたい

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png", "zip", "pdf", "docx", "rar", "txt", "doc");
$temp = explode(".", $_FILES["uploadedfile"]["name"]);
$extension = end($temp);
$newname = $extension.'_'.substr(str_shuffle(str_repeat("0123456789abcdefghijklmnopqrstuvwxyz", 7)), 4, 7);
$imglink = 'attachment/attachment_file_';
$uploaded = $imglink .$newname.'.'.$extension;
if ((($_FILES["uploadedfile"]["type"] == "image/jpeg")
|| ($_FILES["uploadedfile"]["type"] == "image/jpeg")
|| ($_FILES["uploadedfile"]["type"] == "image/jpg")
|| ($_FILES["uploadedfile"]["type"] == "image/pjpeg")
|| ($_FILES["uploadedfile"]["type"] == "image/x-png")
|| ($_FILES["uploadedfile"]["type"] == "image/gif")
|| ($_FILES["uploadedfile"]["type"] == "image/png")
|| ($_FILES["uploadedfile"]["type"] == "application/msword")
|| ($_FILES["uploadedfile"]["type"] == "text/plain")
|| ($_FILES["uploadedfile"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|| ($_FILES["uploadedfile"]["type"] == "application/pdf")
|| ($_FILES["uploadedfile"]["type"] == "application/x-rar-compressed")
|| ($_FILES["uploadedfile"]["type"] == "application/x-zip-compressed")
|| ($_FILES["uploadedfile"]["type"] == "application/zip")
|| ($_FILES["uploadedfile"]["type"] == "multipart/x-zip")
|| ($_FILES["uploadedfile"]["type"] == "application/x-compressed")
|| ($_FILES["uploadedfile"]["type"] == "application/octet-stream"))
&& ($_FILES["uploadedfile"]["size"] < 5242880) // Max size is 5MB
&& in_array($extension, $allowedExts))
{   
move_uploaded_file($_FILES["uploadedfile"]["tmp_name"],
$uploaded );
echo '<a target="_blank" href="'.$uploaded.'">click</a>';
echo '<h3>'.$uploaded.'</h3>';
}
if($_FILES["uploadedfile"]["error"] > 0){
echo '<h3>Please choose file to upload it!</h3>'; // If you don't choose file
}
elseif(!in_array($extension, $allowedExts)){
echo '<h3>This extension is not allowed!</h3>'; // If you choose file not allowed
}
elseif($_FILES["uploadedfile"]["size"] > 5242880){
echo "Big size!"; // If you choose big file
}

    unset($_FILE); //add these two lines
    unset($_REQUEST);
?>
4

2 に答える 2

1

これはブラウザの機能です。POST リクエストを作成して F5 キーを押すと、ブラウザは POST リクエストを再送信しようとするため、画像とフォーム データが再度送信されます。

1 つの解決策は、GET 要求として PHP からページを更新することです。

header('Location: /yoururl'); // May use $_SERVER['REQUEST_URI'] ;)
exit;

これは、コンテンツが出力バッファに送信されていない場合にのみ機能します。コマンドの後の終了も、スクリプトの実行を停止するために非常に重要です。

于 2013-10-24T13:07:00.197 に答える