2013-10-24 5 views
1

почему Resubmit после обновления страницыпочему повторно после обновления страницы

перейти к http://qass.im/message-envelope/

и загрузить любой файл, но только вн "GIF", "JPEG", "JPG", "PNG", "молнии" , "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("abcdefghijklmnopqrstuvwxyz", 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); 
?> 
+0

прочитайте это также http://meta.stackoverflow.com/help/someone-answers, вам также необходимо принять ответ. –

ответ

1

Это особенность вашего браузера. Если вы сделали запрос POST и нажмите F5, браузер попытается повторно отправить запрос на отправку, и поэтому ваше изображение и ваши данные формы будут отправлены снова.

Одним из решений является то, что вы обновляете страницу с PHP как запрос GET.

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

Это работает только в том случае, если контент не был отправлен в выходной буфер. Выход из команды также очень важен, чтобы остановить выполнение скрипта.

+0

не работает! как это работает? – user2719452

+0

Что за проблема? Можете ли вы показать мне, как вы это пробовали? – andreashager

0

Единственный способ - обновить страницу после того, как файл был загружен. Добавьте следующий код сразу после move_uploaded_file ($ _ FILES ["uploadedfile"] ["tmp_name"], $ uploaded);

$page = "http://yoururl.com/upload.php?uploaded&url=".$uploaded; 
$sec = "1"; 
header("Location: $page"); 

и добавьте следующий код в конце PHP кода вопроса:

if(isset($_GET['uploaded'])){ 
$uploaded=$_GET['url']; 
echo '<a target="_blank" href="'.$uploaded.'">click</a>'; 
echo '<h3>'.$uploaded.'</h3>'; 
} 

Так что пользователь будет также получить файла загружены сообщений.

+0

To Downvoter: Почему? – Subin

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