2013-05-05 101 views
1

您好香港专业教育学院创建了一个简单的登录一个PHP MySQL的分配: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> 

是指在用户名和密码的正确输入重定向,而是它没有停留在同一页面上事情正确或不正确。

我过去曾经有过抬头问题。

我不知道如果我有一个太多的括号或它不会重定向,因为我已经有我的头函数上面的脚本。

任何人都知道我出错了吗?

+0

代码请...... – 2013-05-05 07:10:19

+0

您的脚本容易受到SQL注入的影响。 – Gumbo 2013-05-05 07:10:45

+0

我知道@Gumbo – user2351394 2013-05-05 07:14:25

回答

1

乍一看,我可以看到if-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>';}}}} 

此外,输出$数据库用户名和$后DBPASSWORD while循环来检查它们是否相同$ username和$ password(因为有可能是在数据库中重复条目。

+0

不错,我会放弃。 – user2351394 2013-05-05 07:18:08

+0

脚本已修复,但仍未重定向 – user2351394 2013-05-05 07:30:06

+0

请使用更新的脚本编辑问题。 – akshayb 2013-05-05 09:29:51

0

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

<?php ob_start(); ?> 

它帮助我

0

首先确保你没有outputtin g致电header()之前的任何事情。我过去也遇到过类似的问题。
您也可以在致电header()之后,在session_start()ob_flush()之前放置ob_start()ob_start()只是确保没有活动输出从脚本发送除了标头。