2012-01-07 2 views
-1

アップロードが成功した後、次のページにジャンプすると思いますが、この警告が表示されます。 「ヘッダーの警告を取り除く方法

警告:ヘッダー情報を変更することはできません - すでにによって送られたヘッダ(出力はCで開始:\ XAMP \ xamppの\ htdocsに\ギャラリーの\ uploader3.php:25)Cに:\ XAMP \ xamppの\ htdocsに\ここ

ライン51上のギャラリーの\ uploader3.phpはコードです:

<html> 
<head> 
<title> Sample1 - File Upload on Directory </title> 
</head> 
<body> 
<div align="center"> 
<form action="uploader3.php" method="post" enctype="multipart/form-data" > 
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
     Create an Album (limited to 10 images): <br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <br /> 
    <input type="submit" value="Upload File" /> 
</form> 
</div> 

<?php 
$target_path = "uploads1/"; 
if(!file_exists($target_path)) 
{ 
    if(!mkdir($target_path)) 
    { 
     die ("could not create the folder"); 
    } 
} 
else 
{ 
    for($count = 0; $count < count($_FILES['uploadedfile']); $count++) 
     { 
      $target_path = $target_path . basename($_FILES['uploadedfile']['name'][$count]); 

      if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'][$count], $target_path)) 
      { 
       /*echo "The file ". basename($_FILES['uploadedfile']['name'][$count]). 
      " has been uploaded";*/ 
      } 
      else 
      { 
      echo "There was an error uploading the file, please try again!"; 
      } 
     } 
} 
header('Location: index.html'); 
?> 
</body> 
</html> 

どのように私はこの問題を解決することができますか?ありがとうございました! :D

+0

私のポストに投票しないでください.. PHPで新しい.. ..( – SimonCode

+0

あなたのコードの流れを再考する必要があります。 –

+0

[PHPで既に送信されたヘッダー](0120-912-066)(英語) – Jocelyn

答えて

1

コードフローが間違っています。 PHPスクリプトは、ユーザーが

あなたはあなたのフォームがアクションであるターゲットthatsのようuploader3.phpする<?php ?>(これらのタグを含む)の間のコードのthatsを移動する必要があるフォームを送信していない、そのページがロード、とすぐに実行されていますに設定。

また、スクリプトをページの上部に配置してフォームデータが送信されたことを確認し、フォームタグからアクション属性を削除して、自分自身に戻ったり変更したりすることができます自身

<?php 

//Check that you have some post data 
if(isset($_POST['submit'])) 
{ 
    $target_path = "uploads1/"; 
    if(!file_exists($target_path)) 
    { 
     if(!mkdir($target_path)) 
     { 
      die ("could not create the folder"); 
     } 
    } 
    else 
    { 
     for($count = 0; $count < count($_FILES['uploadedfile']); $count++) 
      { 
       $target_path = $target_path . basename($_FILES['uploadedfile']['name'][$count]); 

       if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'][$count], $target_path)) 
       { 
        /*echo "The file ". basename($_FILES['uploadedfile']['name'][$count]). 
       " has been uploaded";*/ 
       } 
       else 
       { 
       echo "There was an error uploading the file, please try again!"; 
       } 
      } 
    } 
    header('Location: index.html'); 

} 
?> 

<html> 
<head> 
<title> Sample1 - File Upload on Directory </title> 
</head> 
<body> 
<div align="center"> 
<form method="post" enctype="multipart/form-data" > 
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
     Create an Album (limited to 10 images): <br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <input type="file" name="uploadedfile[]" /><br /> 
    <br /> 
    <input type="submit" name="submit" value="Upload File" /> 
</form> 
</div> 
</body> 
</html> 
1

TIPS:ページ

  • 書き込みexit()の上部に

    • 書き込みob_start()エラーが(いくつかの関数ヘッダを送信することを意味するだけheader()

  • +1

    OBはコード内の基本的なアーキテクチャ上の欠陥を修正しません。 –

    +0

    なぜ私はそれが ''解決策ではない 'TIPS'と言ったのです – diEcho

    +0

    解決策ではない何かで答えるのはなぜですか? – Repox

    0

    header('location')session_startなど)は、すでに送信されているため、送信できません。

    ほとんどの場合、これは、物を出力し始めると、暗黙的にヘッダーを送信するためです。よくある間違いは、開始タグofyour前で

    • 空白です:これが出力され、あなたが(session_startのように)あなたのPHPを開始する前に、ちょうど
    • HTMLの束(ヘッダ付き)

    を送って取得します警告が表示された行を見つけ、呼び出された関数をチェックし、その関数が必要かどうかを確認し、ヘッダを送信する場合は前もって送信しないようにしてください。

    @diEchoが示唆するように、これを修正するために出力バッファリングを使用できますが、これはすべての場合には必要ではないと思います。 (私は早く、ほとんどのケースがそれを必要としないと思う)。

    -1

    冒頭に書き込みOB_START。これにより警告が削除されますが、コードは2ページ目にリダイレクトするのに適切ではありません。

    +0

    これは実際にエンドユーザーに空白のページを与え、ブラウザに何も置かれていないので、最初に置かれた場合はフォーム自体を表示しません –

    関連する問題