1

フラットファイルログインシステムを作成しています。login.phpページの[送信]ボタンをクリックすると、protected.phpに移動し、内部サーバーエラーが返されますが、フォームをすべて使用せずにprotected.phpページを読み込むとうまくいきます。

login.php

<html>
    <link rel="stylesheet" type="text/css" href="style.css">
    <body>
        <center><img src="logo.png"></center>
        <div id="login">
            <form action="protected.php" method="post">
            </br>
            Username  <input type="text" name="user" class="text"/>
            <p></p>
            Password <input type="password"" name="pass" class="text" />
            <p></p>
                <input type="submit" value="Login" class="button">
            </form>
        </div>
    </body>
</html>

protected.php

<?php
$usr = "admin";
$pass = "admin";

$iusr = $_POST["user"];
$ipass = $_POST["pass"];

if ($iuser !== $usr || $ipass !== $ipass) {
?>
<html>
<script type="text/javascript">
<!--
window.location = "login.php"
//-->
</script>
</html>
<?php
}
?>
<html>
    <link rel="stylesheet" type="text/css" href="style.css">
    <body>

    </body>
</html>

助けてください!前もって感謝します!

4

3 に答える 3

2

「内部サーバーエラー」はいくつかのことを意味する可能性がありますが、ほとんどの場合、PHPコードのエラーを意味します。これにはdisplay_errors、php.iniでプロパティを「1」に設定する必要があります。問題は起動エラーである可能性もあるため、プロパティも検討することをお勧めしdisplay_startup_errorsます。

http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors

あなたの質問とは関係のない、コードに関する2つのコメント:1)式$ipass !== $ipassは常に返されるため、タイプミスのように見えますFALSE。2)この「セキュリティ」は、JavaScriptをオフにすることで簡単に回避できます。header()代わりにリダイレクトに使用することを検討してください。

http://us2.php.net/manual/en/function.header.php

編集:$iuser ...この特定のケースでは、エラーは未定義の変数の使用です。以前にそれをとして宣言しました$iusr。エラーレポートをオンにするか、ログを確認すると、この種の問題を簡単に見つけるための適切なエラーメッセージが表示されます。

于 2012-11-28T04:56:01.493 に答える
0

login.php

<html>
<link rel="stylesheet" type="text/css" href="style.css">
<body>
    <center><img src="logo.png"></center>
    <div id="login">
        <form action="protected.php" method="POST">
        </br>
        Username  <input type="text" name="user" class="text"/>
        <p></p>
        Password <input type="password"" name="password" class="text" />
        <p></p>
            <input type="submit" name="submit" value="Login" class="button">
        </form>
    </div>
</body>

protected.php

<?php
$usr = "admin";
$pass = "admin";

$iusr = $_POST["user"];
$ipass = $_POST["password"];
if(isset($_POST["submit"])){
if ($iusr != $usr || $ipass != $pass) {
?>
<html>
<script type="text/javascript">

window.location = "login.php"

</script>
</html>
<?php
}}
?>
<html>
<link rel="stylesheet" type="text/css" href="style.css">
<body>

</body>

于 2012-11-28T05:23:05.997 に答える
0

問題は、protected.phpファイルに間違った条件を記述したことです。コードには、次の ような 条件が($iuser !== $usr 必要です。更新されたprotected.phpファイルです。if ($iusr !== $usr || $ipass !== $pass) {$ipass !== $ipass$ipass !== $pass

<?php
$usr = "admin";
$pass = "admin";

$iusr = $_POST["user"];
$ipass = $_POST["pass"];

if ($iusr !== $usr || $ipass !== $pass) {
    ?>
    <html>
        <script type="text/javascript">
            window.location = "login.php"
        </script>
    </html>
    <?php
}
?>
<html>
    <link rel="stylesheet" type="text/css" href="style.css">
    <body>
        Login success
    </body>
</html>
于 2012-11-28T05:43:43.927 に答える