2013-05-05 48 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()只是確保沒有活動輸出從腳本發送除了標頭。