1

ログインフォームがあるホームページのコードは次のとおりです。

<?php
session_start();
if(isset($_SESSION['fb'])){
    echo $_SESSION['fb'];
    session_destroy();
}
?>


<html>
<head><title></title>
</head>
<body bgcolor=#818181>
<center><img src=logo.png>
<br>

<img src=voterslogin.png><br>
<a href=voterregister.php><font style='font-family:Century Gothic' size=2>Register</a><br>


<form action="login.php" method="post">
<input type="text" name="login" size=11  style="background-image:url(field.png); border: 2px;  "><br>
<input type="password" name="password" size=11 style="background-image:url(field.png); border: 2px;  "><br>
<input type="image" src="submit.png" alt="Submit button" name="submit"><br>
</form>
____________________________________________________
<br>

<img src=text1.png><br>
<a href=mayor.html><img src=menu1.gif></a><img src=bullet.png><a href=vicemayor.html><img src=menu22.gif></a><img src=bullet.png><a href=senator.html><img src=menu3.gif></a>
<img src=bullet.png><a href=congressman.html><img src=menu4.gif></a><br><a href=councilor.html><img src=menu5.png></a><img src=bullet2.png><a href=partylist.html><img src=menu6.gif></a>
<br>
____________________________________________________
<br><br><br>
<a href=adminlogin.php><img src=login.png></a><br>
</body>
</html>

これがlogincheckファイルです。

<?php
session_start();

if(isset($_POST['submit'])){
    $username = $_POST['login'];
    $password = $_POST['password'];

    if(!empty($username) && !empty($password)){
        mysql_connect('localhost', 'root', '');
        mysql_select_db('voters');


        $result = mysql_query("SELECT * FROM tbvoter WHERE username='$username' AND password='$password'");

        if(mysql_num_rows($result) == 1){
            $row = mysql_fetch_array($result);
            $_SESSION['voter_id'] = $row[0];
            header('Location: ballot.php');
        }else{
            $_SESSION['fb'] = '<p style="color: red">Invalid Username/Password!</p>';
            header('Location: home.php');
        }
    }else{
        $_SESSION['fb'] = '<p style="color: red">Fill in all fields!</p>';
        header('Location: home.php');
    }
}


?>

最初に、クエリが実際にmysqlで実行されるかどうかを確認しました。できます。ユーザー名とパスワードを正しく入力すると結果が出ます。ただし、ログインすると、ユーザー名とパスが正しいかどうかに関係なく、アドレスバーにlogin.phpが表示された空白のページに移動します。

何故ですか?

4

3 に答える 3

1

header() を使用しているときは、次のように ob_start() を配置して、コードが開始されている場所を常に指定する必要があります。

<?php
ob_start();

session_start();
if(isset($_SESSION['fb'])){
    echo $_SESSION['fb'];
    session_destroy();
}
?>
于 2012-09-25T17:31:37.357 に答える
0

ログインチェックファイルには何も表示されないheader('Location:login.php')ので、チェックファイル自体が login.php であると仮定します。ページが空白の場合は、出力がないか、スクリプトを終了させるエラーが発生したことを意味します。最初に、php 構成でエラー報告がオンになっているかどうかを確認します。

入力 type=image name=submit 、値がなく、 $_POST として使用できないため、コードの先頭を次のように変更します

if(isset($_POST['login']) && isset($_POST["password"]))
{
$username = $_POST['login'];
$password = $_POST['password'];
//code continues here

}

1 つの提案として、type=image のような非標準的な方法は絶対に使用しないでください。画像の背景と適切な配置でtype=submitを使用することをお勧めします。

于 2012-09-25T17:48:06.507 に答える