2017-01-17 2 views
0

PHP(MySQLまたはSQLiteなし)のみを使用してログインシステムを作成しようとしています。しかし何らかの理由で、エラーを表示するはずのコードは間違っていますが、空白のページが表示されます。正しい場合は動作します。 (これはテストのためだけのプロトタイプである私は、各ユーザーの「IF/ELSE」を作るつもりはありません。) 私のコード は:50近くユーザー名とパスワードが間違っている間にページが空白になる - ログイン - PHP

<?php 

if (isset($_POST['user']) && isset($_POST['pass'])) { 
if ($_POST['user'] == "jakeajames" && $_POST['pass'] == "test123") { 
    setcookie("loggedin", "yes", time() + 60 * 60 * 3, "/"); 
    header("Location: home.php"); 
} 
elseif ($_POST['user'] != "jakeajames" && $_POST['pass'] != "test123" && isset($_COOKIE['failed3'])) 
{ 
    switch ($_COOKIE['failed3']) { 
    case "1": 
    setcookie("failed3", "2", time() + 60, "/"); 

echo '<html> 
<head><title>Login</title></head> 
<body> 
<center> 
<p style="color: red;"> 2 attempts remaining</p> 
<form method="post"> 
Usename: <input type="text" placeholder="username" name="user"></input><br> 
Password: <input type="password" placeholder="password" name="pass"></input><br> 
<input type="submit"></input> 
</form> 
</body> 
</html>'; 

    break; 
    case "2": 
setcookie("failed3", "3", time() + 60, "/"); 
echo '<html> 
<head><title>Login </title></head> 
<body> 
<center> 
<p style="color: red;"> 1 attempt remaining</p> 
<form method="post"> 
Usename: <input type="text" placeholder="username" name="user"></input><br> 
Password: <input type="password" placeholder="password" name="pass"></input><br> 
<input type="submit"></input> 
</form> 
</body> 
</html>'; 
break; 
case "3": 
    echo "You need to wait 60 seconds till you can login again"; 
    break; 
} 


} 
elseif ($_POST['user'] != "jakeajames" && $_POST['pass'] != "test123" && isset($_COOKIE['failed3'])) { 
    setcookie("failed3", "1", time() + 60, "/"); 
} 

} 



if (!isset($_POST['user']) && !isset($_POST['pass'])) { 
echo '<html> 
<head><title>Login</title></head> 
<body> 
<center> 

<form method="post"> 
Usename: <input type="text" placeholder="username" name="user"></input><br> 
Password: <input type="password" placeholder="password" name="pass"> </input><br> 
<input type="submit"></input> 
</form> 
</body> 
</html>'; 
} 
?> 
+0

*ブランクページ*は何かが壊れていることを意味します。これらの行をPHPスクリプトの最上部、 'ini_set( 'display_errors'、1)に追加してください。 error_reporting(E_ALL); 'エラーが発生したかどうかを確認します。 –

+0

うーん。それがエラーであれば、私がチェックしたエラーログに表示されます。また、これは最初から試してみると2回目ですが、同じことが起こるのは – Jakeashacks

+2

あなたのコードに他の条件がないので、その空白があるかもしれません。ユーザー名またはパスワードのどちらかが正しいときに何も表示されない1つの条件 – reza

答えて

1

正しい行番号は、再度、同じ条件をチェックしています

elseif ($_POST['user'] != "jakeajames" && $_POST['pass'] != "test123" && isset($_COOKIE['failed3'])) { 
                     ^add !here 
    setcookie("failed3", "1", time() + 60, "/"); 
} 

と正しいものが

elseif ($_POST['user'] != "jakeajames" && $_POST['pass'] != "test123" && !isset($_COOKIE['failed3'])) { 
    setcookie("failed3", "1", time() + 60, "/"); 
} 

出力

あります

after corrected

+0

ああ、どのように私はそれを逃しました! – Jakeashacks

+0

何度か起こる:) – msk

+0

今私は別の問題がある。ページの読み込み時にクッキー "failed3"をチェックしてエラーを表示するようにするにはどうしたらいいですか? – Jakeashacks

関連する問題