1

你好,我为 php mysql 分配创建了一个简单的登录:

<?php
/*Initialize session*/
session_start();

/*Store form data in variables*/
$username = $_POST['username'];
$password = $_POST['password'];

/*Connect to the database*/
$conn = mysql_connect("localhost", "twa174" , "a3wgrrzn")
or die ("Could not connect: " .mysql_error());

mysql_select_db("twa174", $conn)
or die ("Could not find Database: " . mysql_error() );


/*Create empty error log*/
$errors = '';

/*Check for login attempt*/
if(isset($_POST['submit'])) {
    if(!isset($username) || empty($username)) $errors .= '<p>Please enter a 
username!</p>';
    if(!isset($password) || empty($password)) $errors .= '<p>Please enter a 
password!</p>';
    /*Initialize login sequence on attempt*/
    if(empty($errors)){
        $query = mysql_query("SELECT * FROM school_info WHERE schoolID ='".$username."'");
        $numrows = mysql_num_rows($query);
        if($numrows!=0){
            while ($row = mysql_fetch_assoc($query)){
                $dbusername= $row['username'];
                $dbpassword= $row['password'];
            }           
            if($username==$dbusername&&$password==$dbpassword){
                header("Location: leavers.php");
            } 
            else {
                $errors .= '<p>Incorrect login details</p>';
            }
        }
    }
}

?>

<?php echo($errors);?>














<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <title>Login PHP Page</title>
    <link href="assign2.css" rel ="stylesheet" type="text/css"/>
</head>


<body>
<form action = "login.php" method="post">
<table>
<tr> <td>Username:</td>
<td><input type="text" name="username" />
</td> </tr>
<tr><td>Password:</td>
<td><input type="password"  name="password"/> </td></tr> 
<tr><td> <input type="submit"  name="submit" value="Submit" </td> 
<td> <input type="reset" name="reset" value="Reset"</td></tr>
</table>

</form>
</body>

</html>

它旨在在正确输入用户名和密码后重定向,但无论正确或不正确,它都停留在同一页面上。

过去,我在标题方面遇到了一些麻烦。

我不确定我是否有太多括号或者它不会重定向,因为我的标题函数上方已经有脚本。

有谁知道我哪里出错了?

4

3 回答 3

1

乍一看,我可以看到 if-else 不正确。你的 else 在你的 if 中。Thay 可能会导致问题。

 if($numrows!=0){
    while ($row = mysql_fetch_assoc($query)){
    $dbusername= $row['username'];
    $dbpassword= $row['password'];}

    if($username==$dbusername&&$password==$dbpassword){
    header("Location: leavers.php");}

    else{$errors .= '<p>Incorrect login details</p>';}}}}

另外,在 while 循环后输出 $dbusername 和 $dbpassword 以检查它们是否与 $username 和 $password 相同(因为数据库中可能存在重复的条目。

于 2013-05-05T07:14:42.563 回答
0

如果您遇到标题问题,也许您可​​以尝试使用 ob_start() - 在文件的开头 - 在 session_start() 之前

<?php ob_start(); ?>

它帮助到我。

于 2013-05-05T12:19:49.947 回答
0

首先确保在调用之前没有输出任何内容header()。我过去也遇到过类似的问题。
您也可以在调用ob_start()之前session_start()和之后放置。只是确保除了标题之外没有从脚本发送任何活动输出。ob_flush()header()ob_start()

于 2013-05-05T12:56:52.287 回答