2013-07-13 90 views
-2

我寫了條件是密碼和用戶名匹配,它根據條件登錄。但由於我是新來的PHP,我不知道爲什麼它不獲取登錄這不是登錄登錄?

<html> 
<head> 
</head> 
<body> 
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<form name="form1" method="post" action=""> 
<td> 
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> 
<tr> 
<td colspan="3"><strong>Member Login </strong></td> 
</tr> 
<tr> 
<td width="78">Username</td> 
<td width="6">:</td> 
<td width="294"><input name="username" type="text" id="username"></td> 
</tr> 
<tr> 
<td>Password</td> 
<td>:</td> 
<td><input name="password" type="password" id="password"></td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td>&nbsp;</td> 
<td><input type="submit" name="submit" value="Login"></td> 
</tr> 
</table> 
</td> 
</form> 
</tr> 
</table> 
</body> 
</html> 
<?php 
session_start(); 
if(isset($_POST['submit'])) 
{ 
include('connect.php'); 

// username and password sent from form 
$myusername=$_POST['username']; 
$mypassword=$_POST['password']; 

// To protect MySQL injection (more detail about MySQL injection) 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
while($query4=mysql_fetch_array($result)) 
{ 
extract($query4); 
$ul=$userlevel; 

if ($ul=='A') 
{ 
$_SESSION["username"]=$myusername; 
$_SESSION["password"]=$mypassword; 
header("location:projectmanager_main.php"); 
} 
else if ($ul=='B') 
{ 
$_SESSION["username"]=$myusername; 
$_SESSION["password"]=$mypassword; 
header("location:teamlead_main.php"); 
} 
else if ($ul=='C') 
{ 
$_SESSION["username"]=$myusername; 
$_SESSION["password"]=$mypassword; 
header("location:employees.php"); 
} 
else 
{ 
$_SESSION["username"]=$myusername; 
$_SESSION["password"]=$mypassword; 
header("location:admin_main.html"); 
} 

} 

} 

else 
{ 
echo "<p align='center'>"."<font color='red'>"."Wrong Username or Password. Please Try Again"."</font>"."</p>"; 
} 
} 
?> 
+0

首先,如果您是PHP新手,請嘗試使用「PDO」或「mysqli」而不是「mysql」擴展名。 – Red

+0

「作爲房屋建築的新人可以請某人免費爲我建造房屋?」嘗試引用任何建築公司提出這樣的建議。 – zerkms

+0

嘗試將PHP代碼放在HTML代碼之上,而不是在下面。 session_start()不應該在那裏工作.. session_start將cookies發送到瀏覽器。 Cookie在HTML/CSS或任何內容發送之前發送。在發送頭文件之前,必須使用session_start()和PHP中的其他頭文件相關功能。使用「回聲」或輸出任何東西(如HTML)將發送標題。 –

回答

1

您的問題是header()必須在打印的任何內容之前被調用頁。

你應該重新組織你的代碼是這樣的:

<?php 
if(isset($_POST['submit'])) 
{ 
    // Try to log in the user and redirect with header if successful 
} 
?> 
<html> 
<!-- display the login page --> 
    <?php 
    // if user has not been redirected 
    if(isset($_POST['submit'])){echo "login failed";} 
    ?> 
    <!-- display login form --> 
</html> 
1

我無法評論,但所以我會用一個答案去(雖然,我認爲這是比較合適的評論)

給大家進一步評估你的問題,你必須首先做到以下幾點:

  • 提供錯誤消息。無論什麼級別,這都是一個很好的開端。
  • 如果您在頁面上有任何require()require_once(),include(),include_once(),您也必須顯示。
  • 提供您已有的結果數據。像你的代碼一樣,$query4=mysql_fetch_array($result)$query4的值是多少?所以我們可以看到,如果你正在提取並比較下面的if-else的正確值。

正如我不能提供一個確切的回答你的問題,通過提供上述至少一個,我們可以進一步分解的問題。

+0

這將作爲一個評論更好,但我投了,因爲它是一個評論,因爲你現在不允許發表評論..:/ –

+1

謝謝。通過你的讚揚,我可以積累聲望來解鎖評論。 :) – dqlopez