-1

Web 開発の実践のために、ユーザーがユーザー名とパスワードを使用してログインし、その組み合わせが正しいと仮定して、ファイル アップローダー インターフェイスにアクセスし、ファイルを取得する方法を提供するドロップボックスのようなサイトを作成することにしました。機能するものがありますが、1つの問題に遭遇しました。ユーザーがユーザー名とパスワードを送信するとすぐに、新しい php コードでページがリロードされます (これで問題ありません)。ただし、URL はユーザー名とパスワードの両方が表示される場所にわずかに変更されます。これが起こらないようにする方法を誰かに教えてもらえますか?

index.php ファイルは次のとおりです。

<?php
  function checkCredentials()
  {
    if($_GET && $_GET["username"]=="kwaugh" && $_GET["password"]=="password")
  {
?>

    <html>
        <head>
                <title>File Storage</title>
                    <style>
                        body{font-size:.85em ;font-family:Arial;}
                    </style>
        </head>

        <body>
            <center>
                <br>Please select the file that you would like to upload:<br><br>
                    <form method="post" enctype="multipart/form-data">
                        <input type="file" name="filename"/>
                        <input type="submit" value="Upload" />
                    </form>
            </center>
        </body>
    </html>
    <?php
        if ($_FILES)
        {
            $name = $_FILES['filename']['name'];
            move_uploaded_file($_FILES['filename']['tmp_name'], $name);
            if(file_exists($name))
            {
                ?>
                <html>
                    <body>
                        <div style="color:red; font-size:2em; font-family:Arial">
                            <center>The file has been successfully uploaded <br />Click <a href="getFiles.php">here</a> to go to your uploaded files</center>
                        </div>
                    </body>
                </html>

                <?php
            }
            else
            {
                    ?>
                    <html>
                        <body>
                            <div style="color:red; font-size:2em; font-family:Arial">
                                <center>Well crap, something went wrong.  The file could not be uploaded :'( </center>
                            </div>
                        </body>
                    </html>

                    <?php
            }
    }
    die();
}
elseif($_GET && $_GET["username"]!=="kwaugh" || $_GET && $_GET["password"]!=="password")
{
    ?>
    <script>
        alert("You have entered an incorrect username/password combination");
    </script>

    <?php
}
}
checkCredentials();
?>
<html>
<head>
    <title>File Storage</title>
</head>

<body> <br /><br />
    <center>
        <img src="elephant.jpg">
        <form name="credentials">
            Please enter your username and password to upload files: <br     />
            Username: <input type="text" name="username"><br />
            Password: <input type="password" name="password"><br />
            <input type="submit" value="Submit" >
        </form>
        <br />Or click <a href="getFiles.php">here</a> to access stored files.
    </center>
</body>
</html>
4

4 に答える 4

2

フォームに使用POSTしますcredentials。デフォルトでは、methodGETにパラメータを追加しますURL。明らかに、これは$_POST配列ではなく配列内の変数をチェックすることを意味します$_GET

別の提案をすることができれば、アプリケーションを複数のファイルに分割します。ログインとアップロード インターフェースを同じスクリプトに含めないでください。そうしないと、アプリケーションのスケールアップに大きな問題が発生します。

  • ページを追加すると、スクリプトのどの部分を実行し、どのパラメーターを使用して何を出力するかを知ることはほとんど不可能になります。html
  • ユーザーが何をしようとしているのかを内部的に知るために、ページに「状態」を渡す必要があります。ロジックを複数のphpファイルに分散すると、操作が簡単になります。
  • ファイルが大きくなり、実際に何が実行されているのかを理解するのが難しくなり、デバッグが難しくなります。
  • php他の開発者と一緒に作業を開始する場合は、ファイルを編集する際の競合を最小限に抑えるために、機能を別のファイルに分割する方が「開発者にとって使いやすい」でしょう。

多くの Web アプリケーションは複数のページに分割されます (多くの場合、controllerに実装されます)。ここでは、次のようになります。

  • Welcome Page(ランディングページ、ログインを許可、サインインを許可、製品に関する情報を表示)
  • Authentication Page(ログインを検証してからプロファイル ページにリダイレクトする、サインイン フォームを表示する、検証する、新しいユーザーを作成するなど...)
  • Profile Page(ログインしているユーザーの場合は、そのユーザーの情報を表示します)

これにはFile Management、ユーザーが所有するすべてのファイルを表示したり、ページを追加/削除したりできるようにするページを追加する必要があります...

于 2012-12-09T03:53:37.170 に答える
1

使用する:

<form name="credentials" method="post">

if($_POST && $_POST["username"]=="kwaugh" && $_POST["password"]=="password")
于 2012-12-09T03:53:41.043 に答える
1

POSTフォームと$_POSTPHP コードで使用します。

<form name="credentials" method="post" action="whatever-page.php">

if ($_POST["username"]=="kwaugh" && $_POST["password"]=="password")

于 2012-12-09T03:54:21.307 に答える
1

<form>POST のメソッドを持つようにログインを変更します

<form method="POST" name="credentials">

また、Web サイトを複数の .php ファイルに分割することを検討してください。1 つのファイルにすべてを含めることはできません。最も単純なサイト以外は管理できなくなるからです。

于 2012-12-09T03:55:41.487 に答える