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>

这是登录检查文件:

<?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

}

一个建议,永远不要使用像 type=image 这样的不标准方法,最好使用type=submit与图像背景和正确定位。

于 2012-09-25T17:48:06.507 回答
0

您应该考虑在 mysql_ 函数上使用 PDO。http://php.net/manual/en/book.pdo.php PHP 的手册提供了很好的入门知识。

此外,据我所知,您的代码存在注入漏洞。确保在生产中使用此代码之前进行清理。

于 2012-09-25T18:56:00.880 回答