-1

f5をクリックした後の再送信を防ぐ方法

アップロード後に f5 php を防止したい

私は試しheader();てみるinclude '';

しかし、機能していません!

解決策はありますか?

私のフォーム

<form id="pic-form" enctype="multipart/form-data" action="pic.php" method="POST">
<input name="uploadedfile" id="pic-upload" type="file"/>
<input type="submit" value="upload" id="submit" name="submit"/>
</form>

私のphpコード

<? include 'var.php';
if(isset($_POST['submit']) and $_SERVER['REQUEST_METHOD'] == "POST"){
if($terms == 'yes'){
if ((($_FILES["uploadedfile"]["type"] == "image/jpeg")
|| ($_FILES["uploadedfile"]["type"] == "image/jpg")
|| ($_FILES["uploadedfile"]["type"] == "image/x-png")
|| ($_FILES["uploadedfile"]["type"] == "image/gif")
|| ($_FILES["uploadedfile"]["type"] == "image/png"))
&& ($_FILES["uploadedfile"]["size"] < $max_file_size)
&& in_array($extension, $formats))
{   
move_uploaded_file($_FILES["uploadedfile"]["tmp_name"], 
$uploaded );
echo '<img src="'.$url.$uploaded.'"/>';
echo '<h3>'.$url.$short.'</h3>';
}
elseif(!empty ($_FILES["uploadedfile"]["error"])){
echo '<h3>Please choose file to upload it!</h3>'; // if you don't choose file
}
elseif(!in_array($extension, $formats)){
echo '<h3>This extension is not allowed!</h3>'; // if you choose file not allowed
}
elseif($_FILES["uploadedfile"]["size"] = $max_file_size ){
echo "Big size!"; // if you choose big file
}
}
}
?>
4

1 に答える 1

0

これを直接防ぐ方法はありません。PHP フォーム ハンドラーを使用header()して、データが投稿されていない結果ページにページをリダイレクトすることができます。ユーザーがそのページを更新した場合 (F5)、再投稿はありません。

これは、フォームを送信する前にフォームを検証するか、結果を URL 経由で渡す必要があることも意味します。例:

<? include 'var.php';
if(isset($_POST['submit']) and $_SERVER['REQUEST_METHOD'] == "POST"){
  if($terms == 'yes'){
    if ((($_FILES["uploadedfile"]["type"] == "image/jpeg")
    || ($_FILES["uploadedfile"]["type"] == "image/jpg")
    || ($_FILES["uploadedfile"]["type"] == "image/x-png")
    || ($_FILES["uploadedfile"]["type"] == "image/gif")
    || ($_FILES["uploadedfile"]["type"] == "image/png"))
    && ($_FILES["uploadedfile"]["size"] < $max_file_size)
    && in_array($extension, $formats)){   
      move_uploaded_file($_FILES["uploadedfile"]["tmp_name"], $uploaded );
      $src = $url.$uploaded;
      $short = $url.$short;
    }
    elseif(!empty ($_FILES["uploadedfile"]["error"])){
      $error = '<h3>Please choose file to upload it!</h3>'; // if you don't choose file
    }
    elseif(!in_array($extension, $formats)){
      $error = '<h3>This extension is not allowed!</h3>'; // if you choose file not allowed
    }
    elseif($_FILES["uploadedfile"]["size"] = $max_file_size ){
      $error = "Big size!"; // if you choose big file
    }
  }
}
if(isset($error)){
  header("location: errorpage.php?e=$error");
}else {
  header("location: successpage.php?sr=$src&sh=$short");
}
?>
于 2013-11-07T02:07:55.507 に答える