0

私はこのコードを持っています、

<?php 
include('menu/menu.html');
if (isset ($_POST['submit'])){
?>
<div id="search">
<form action="upload.php" method="post" enctype="multipart/form-data">
<table><tr><td><input type="file" name="filename"/></td>
<td align="right"><input type="submit" name="submit" value="Descargar"></td></tr>      </table>
</form>
</div>
<div id="result">
<div id="nresult">
<?php
if ($_FILES['filename']['type'] != "application/pdf")
  {
  echo "Error " . $_FILES['filename'] . ": el archivo no es pdf.<br>";
  }
else
  {

そして、私はこのエラーを抱えています、

注意: 未定義のインデックス: D:\xampp\htdocs\PHPEx\capsordenadores\Main.menu\upload.php の 27 行目のファイル名

注意: 未定義のインデックス: D:\xampp\htdocs\PHPEx\capsordenadores\Main.menu\upload.php の 29 行目のファイル名

インデックスを定義したときにこのエラーが発生する理由がわかりません。

4

2 に答える 2

0

何も定義していません。フォームをレンダリングしてから、フォームが最終的に後続のリクエストでアップロードする可能性のあるデータにアクセスしようとしています。ユーザーがそのfilenameフォームの送信ボタンを押すまで、インデックスは作成されず、利用できません。

通常、フォーム処理ロジックを一番上に配置します。ここで、データがポストバックされない限り、フォームを実行して条件付きでレンダリングできます。

于 2013-03-28T17:18:53.330 に答える
0

投稿しているコードのロジックが正しくありません。

最初にファイルをアップロードする場合、次の 2 つのロジックがありました。

1-フォームの表示とアップロードの処理に同じphpファイルを使用します。

ファイル フィールドを含むフォーム レイアウトをブロックに配置し、アップロード プロセスを別のブロックに配置します。

つまり、コードを 2 つの部分に分割する必要があります。

  • 最初の部分は、ページに初めてアクセスした場合に実行されます。この場合、アップロードするファイルについてユーザーに尋ねるフォームをページに表示する必要があります。

  • ページがポストバックのためにアクセスされた場合に実行される 2 番目の部分 (ユーザーがこのページを指すフォーム内の送信ボタンを押した後にこのページにアクセスする)

ファイル [upload.php] のコードは次のようになります。

<?php 
include('menu/menu.html');
if (!isset($_POST['submit']))
    {
    ?>
    <div id="search">
        <form action="upload.php" method="post" enctype="multipart/form-data">
            <table>
                <tr>
                    <td><input type="file" name="filename"/></td>
                    <td align="right"><input type="submit" name="submit" value="Descargar"></td>
                </tr>
            </table>
        </form>
    </div>
    <?php
    }
else
    {
        ?>
        <div id="result">
        <div id="nresult">
        <?php
        if ($_FILES['filename']['type'] != "application/pdf")
            {echo "Error " . $_FILES['filename'] . ": el archivo no es pdf.<br>";}
        else
            {\\Procces your upload}
    }

2-2番目のロジックは、フォームレイアウトをファイルに入れ、アップロードプロセスを別のファイルに入れ、最初のページのフォームを次のように2番目のページに向けることです:

[uploadlayout.php]という名前のファイルに入れます

<div id="search">
<form name="form1" method="post" action="uploadcode.php" enctype="multipart/form-data">
    <table>
        <tr>
            <td><input type="file" name="filename"/></td>
            <td align="right"><input type="submit" name="submit" value="Descargar"></td>      
        </tr>
    </table>
</form>
</div>

そして、[uploadecode.php] という名前のファイルで

<?php
if ($_FILES['filename']['type'] != "application/pdf")
    {echo "Error " . $_FILES['filename'] . ": el archivo no es pdf.";}
else
    {//Proccess your upload}

?>

「uploadlayout.php」ページにアクセスしてファイルを参照し、「Descragar」ボタンを押すと、選択したファイルが「uploadcode.php」ページに投稿され、ファイル タイプのテストが行​​われます。実行され、成功した場合はアップロード プロセスが実行され、失敗した場合は「el archivo no es pdf」というエラーが表示されます。

私はそれを明確に説明したことを願っています。別の質問がある場合、または明確化が必要な場合は、私に知らせてください:)

于 2013-03-28T18:32:57.503 に答える