1

ここにテキストと画像をアップロードするための管理パネルを作成しようとしているのは、html ページです。Html ページは正常に動作しています。壊れているのは php ページです。html は参照用です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>Administartor Panel</title>
<head>
<link rel="stylesheet" type="text/css" href="admin.css" />
</head>
<body>
<h1>Heritage House Administartor Panel</h1>
<br/>
<h2>
<a href="#eone">Event One</a>&nbsp;
<a href="#etwo">Event Two</a>&nbsp;
<a href="#ethree">Event Three</a>&nbsp;
<a href="#efour">Event Four</a>&nbsp;
<a href="#efive">Event Five</a>&nbsp;
<a href="#esix">Event Six</a>&nbsp;
</h2>
<br/>
<table>
<tr>
<td id="eone">
<br/>
<p>Event One</P>
<p> Please name the picture file1 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="afile" id="afile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt1.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical One:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="etwo">
<p >Event Two</P>
<p> Please name the picture file2 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="bfile" id="bfile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt2.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Two:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="ethree" >
<p >Event Three</P>
<p> Please name the picture file3 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="cfile" id="cfile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt3.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Three:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="efour" >
<p >Event Four</P>
<p> Please name the picture file4 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="dfile" id="dfile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt4.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Four:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="efive" >
<p >Event Five</P>
<p> Please name the picture file5 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="efile" id="efile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt5.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Five:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="esix" >
<p >Event Six</P>
<p> Please name the picture file6 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="ffile" id="file6" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt6.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Six:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
</body>
</html>

HTMLページafile、bfileなどのフォームに基づいてアップロードされたファイルの名前を変更しようとしています。私はこのphpファイルをさまざまな方法で試しました。大きな IF ステートメントを削除し、アップロード用に 6 つの個別のファイルを作成すると、動作させることができますが、1 つのファイルにすることを望んでいました。

        <?php
    //This function separates the extension from the rest of the file name and returns it
    function findexts ($filename)
    {
    $filename = strtolower($filename) ;
    $exts = split("[/\\.]", $filename) ;
    $n = count($exts)-1;
    $exts = $exts[$n];
    return $exts;
    } 
    //This if statement assigns the new file name to a variable and displays a message.
    if (file_exists($_FILES["afile"]["tmp_name"]))
      {
      $new = "file1.";
      $type = $_FILES ["afile"] ["type"];
      $size = $_FILES ["afile"] ["size"];
      $error = $_FILES ["afile"] ["error"];
      $name = $_FILES ["afile"] ["name"];
      $tmpname = $_FILES["afile"]["tmp_name"];
      $names = "afile";
      echo "file1 Uploaded <br />";
      }
    elseif (file_exists($_FILES["bfile"]["tmp_name"]))
      {
      $new = "file2.";
      $type = $_FILES ["bfile"] ["type"];
      $size = $_FILES ["bfile"] ["size"];
      $error = $_FILES ["bfile"] ["error"];
      $name = $_FILES ["bfile"] ["name"];
      $tmpname = $_FILES["bfile"]["tmp_name"];
      $names = "bfile";
      echo "file2 Uploaded <br />";
      }
    elseif (file_exists($_FILES["cfile"]["tmp_name"]))
      {
      $new = "file3.";
      $type = $_FILES ["cfile"] ["type"];
      $size = $_FILES ["cfile"] ["size"];
      $error = $_FILES ["cfile"] ["error"];
      $name = $_FILES ["cfile"] ["name"];
      $tmpname = $_FILES["cfile"]["tmp_name"];
      $names = "cfile";
      echo "file3 Uploaded <br />";
      }
    elseif (file_exists($_FILES["dfile"]["tmp_name"]))
      {
      $new = "file4.";
      $type = $_FILES ["dfile"] ["type"];
      $size = $_FILES ["dfile"] ["size"];
      $error = $_FILES ["dfile"] ["error"];
      $name = $_FILES ["dfile"] ["name"];
      $tmpname = $_FILES["dfile"]["tmp_name"];
      $names = "dfile";
      echo "file4 Uploaded <br />";
      }
    elseif (file_exists($_FILES["efile"]["tmp_name"]))
      {
      $new = "file5.";
      $type = $_FILES ["efile"] ["type"];
      $size = $_FILES ["efile"] ["size"];
      $error = $_FILES ["efile"] ["error"];
      $name = $_FILES ["efile"] ["name"];
      $tmpname = $_FILES["efile"]["tmp_name"];
      $names = "efile";
      echo "file5 Uploaded <br />";
      }
    elseif (file_exists($_FILES["ffile"]["tmp_name"]))
      {
      $new = "file6.";
      $type = $_FILES ["ffile"] ["type"];
      $size = $_FILES ["ffile"] ["size"];
      $error = $_FILES ["ffile"] ["error"];
      $name = $_FILES ["ffile"] ["name"];
      $tmpname = $_FILES["ffile"]["tmp_name"];
      $names = "ffile";
      echo "file6 Uploaded <br />";
      }

    //This applies the function to our file
    $ext = findexts ($_FILES ['$names'] ['name']) ;
        //This assigns the subdirectory you want to save into.
        $targett = "forms/upload/";
        //This combines the directory, the new file name, and the extension
        $target = $targett . $new.$ext; 
        // makes sure image meets specs
    if ((($type == "image/gif")
    || ($type == "image/jpeg")
    || ($type == "image/pjpeg"))
    && ($size < 2000000))
      {
      if ( $error > 0)
        {
        echo "Return Code: " . $error . "<br />";
        }
      else
        {
        echo "Thank You! <br />";
        }
    //saves uploaded file
        if (file_exists("forms/upload/" . $name))
          {
          move_uploaded_file( $tmpname, $target);
          echo $name . " Old File Over Written. ";
          }
        else
          {
          move_uploaded_file( $tmpname, $target);
          echo "Stored in: " . "forms/upload/" . $name;
          }   
?> 

私のelseifステートメントが壊れているのでしょうか?

私はこの php を使って約 1 週間しか遊んでいません。

グローバルで6つの関数を作成しようとすると move_uploaded_file($_FILES["file"]["tmp_name"], $target);、elseifステートメントに配置するよりもうまくいくでしょうか?

これは、作業中の php ページのコピーです

<?php
//This function separates the extension from the rest of the file name and returns it
function findexts ($filename)
{
$filename = strtolower($filename) ;
$exts = split("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
} 
//This applies the function to our file
$ext = findexts ($_FILES['afile']['name']) ;
    //This line assigns a random number to a variable. You could also use a timestamp here if you prefer.
    $new = "file1.";
    //This assigns the subdirectory you want to save into... make sure it exists!
    $targett = "forms/upload/";
    //This combines the directory, the random file name, and the extension
    $target = $targett . $new.$ext; 
if ((($_FILES["afile"]["type"] == "image/gif")
|| ($_FILES["afile"]["type"] == "image/jpeg")
|| ($_FILES["afile"]["type"] == "image/pjpeg"))
&& ($_FILES["afile"]["size"] < 2000000))
  {
  if ($_FILES["afile"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["afile"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["afile"]["name"] . "<br />";
    echo "Type: " . $_FILES["afile"]["type"] . "<br />";
    echo "Size: " . ($_FILES["afile"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["afile"]["tmp_name"] . "<br />";

    if (file_exists("forms/upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["afile"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["afile"]["tmp_name"], $target);
      echo "Stored in: " . "forms/upload/" . $_FILES["afile"]["name"];
      }
    else
      {
      echo "Invalid file";
      }
4

4 に答える 4

1

それは非常に多くのコードの繰り返しです! 6 つの個別の HTML フォームが本当に必要ですか? イベントを選択するためのドロップダウンを備えた 1 つのフォームを用意してみませんか?

<select name="event">
    <option value="afile">Event One</option>
    <option value="bfile">Event Two</option>
    ...etc
</select>

入力には、次を使用します。

<input type="file" name="userfile" id="file" />

次に、長い if/else 句の代わりに、次のようにします。

if ( isset($_POST['event']) && file_exists($_FILES['userfile']['tmp_name']) )
{
    // base this code on the value of $_POST['event']
}
于 2009-08-24T13:44:10.627 に答える
0

質問への回答を残してくれたすべての人に感謝したいと思います。質問への応答時間が短いことに非常に驚いていました。あなたの答えを試し、テストした後、私はまだ私の問題に対する実際の解決策を見つけられませんでした。私が答えに向かって進歩し始めたifステートメントを終了するのを忘れたことを発見するまではありませんでした。

 if ((($type == "image/gif")
    || ($type == "image/jpeg")
    || ($type == "image/pjpeg"))
    && ($size < 2000000))
      {

このifステートメントに終わりがあり、私はあなたのすべての答えを研究する時間があったので、私はこのページがすぐに私の好みに合うようになると確信しています。現在は機能していますが、まだ改良が必要です。これが私の作業中のhtmlページとphpページです。

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- 
html admin page for HH 
-->
<title>Administartor Panel</title>
<head>
<link rel="stylesheet" type="text/css" href="admin.css" />
</head>
<body>
<h1>Heritage House Administartor Panel</h1>
<br/>
<table>
<tr>
<td id="eone">
<br/>
<p>Event Uploader</P>
<form action="formupload.php" method="post"
enctype="multipart/form-data">
<label for="selection">Please select the event you would like to edit.</label>
<select name="selection">
<option value="file1">Event1</option>
<option value="file2">Event2</option>
<option value="file3">Event3</option>
<option value="file4">Event4</option>
<option value="file5">Event5</option>
<option value="file6">Event6</option>
</select>
<br />
<p> Please upload your event picture file here.</p>
<p align="center">
<label for="file">Photo:</label>
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Upload" />
</p>
</form>
<form action="WriteTxt1.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for the event artical:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>

</form>
</td>
</tr>
</body>
</html>

PHP

    //This function separates the extension from the rest of the file name and returns it
    function findexts ($filename)
    {
    $filename = strtolower($filename) ;
    $exts = split("[/\\.]", $filename) ;
    $n = count($exts)-1;
    $exts = $exts[$n];
    return $exts;
    } 
    //This if statement assigns the new file name to a variable from the value of the options menu in the html form selection.
 $new = $_POST ["selection"] . "."; 
    //This applies the function to our file
    $ext = findexts ($_FILES ["file"] ["name"]) ;
        //This assigns the subdirectory you want to save into.
        $targett = "forms/upload/";
        //This combines the directory, the new file name, and the extension
        $target = $targett . $new.$ext; 
        // makes sure image meets specs
    if ((($_FILES ["file"] ["type"] == "image/gif")
    || ($_FILES ["file"] ["type"] == "image/jpeg")
    || ($_FILES ["file"] ["type"] == "image/pjpeg"))
    && ($_FILES ["file"] ["size"]< 2000000))
      {
      echo "file check pass<br />";
      }
      //makes an error if file does not meet standards 
      if ( $_FILES ["file"] ["error"] > 0)
        {
        echo "Return Code: " . $_FILES ["file"] ["error"] . "<br />";
        }
      else
        {
        echo "Thank You! <br />";
        }
    //saves uploaded file
        if (file_exists("forms/upload/" . $_FILES ["file"] ["name"]))
          {
          move_uploaded_file( $_FILES ["file"]["tmp_name"], $target);
          echo $_FILES ["file"] ["name"] . " Old File Over Written. ";
          }
        else
          {
          move_uploaded_file( $_FILES["file"]["tmp_name"], $target);
          echo "Stored in: " . "forms/upload/" . $_FILES ["file"] ["name"];
          }   
?>
<html>
<!-- 
html to return user to admin page 
-->
<title>
Upload Result
</title>
<head>
<p>
<br />
Back To Admin Page
</p>
</head>
<body>
<form action="">
<a href="adminarea.html">
<input type="button" value="Back" />
</a>
</form>
</body>
</html>

注:コードの編集とエラーチェックには、notepad2とfirefoxのみを使用しています。私は彼らが彼らの権利からphpをデバッグするより良い方法だと思いますか?

于 2009-08-26T19:00:03.283 に答える
0

多分あなたは使うべきです

isset($_FILES["afile"])

それ以外の

file_exists($_FILES["afile"]["tmp_name"])

- 編集

タイトルのあなたの質問に答えるには: たとえば、$_FILES["afile"] が設定されている場合は可能です。そうすれば、新しい変数に配列ができます。

于 2009-08-24T13:25:42.693 に答える
0

実際の作業に非常に近い。

//Uses $names as a key in $_FILES - no single quotes for variable expansion....
$ext = findexts($_FILES[$names]['name']);

大量のコードを貼り付けた大きな elseif の代わりに、ある種のループを使用することもお勧めします。使用された 2 つの改善: $_FILES 配列のforeach抽出

foreach ($_FILES as $fileKey => $values)
{
  // Sets $type, $size, $name, $tmp_name, $error
  extract($values);
  //This applies the function to our file
  $ext = findexts($name) ;

  //This assigns the subdirectory you want to save into.
  $targett = "forms/upload/";
  //This combines the directory, the new file name, and the extension
  $target = $targett . $new.$ext; 
  // makes sure image meets specs
  if ((($type == "image/gif")
    || ($type == "image/jpeg")
    || ($type == "image/pjpeg"))
    && ($size < 2000000))
  {
    if ($error > 0)
    {
      echo "Return Code: " . $error . "<br />";
    }
    else
    {
      echo "Thank You! <br />";
    }
    //saves uploaded file
    if (file_exists("forms/upload/" . $name))
    {
      move_uploaded_file( $tmp_name, $target);
      echo $name . " Old File Over Written. ";
    }
    else
    {
      move_uploaded_file( $tmp_name, $target);
      echo "Stored in: " . "forms/upload/" . $name;
    }         
  }
}
于 2009-08-24T13:29:19.787 に答える