2009-12-09 80 views
0

我正嘗試使用登錄表單連接到數據庫。目前數據庫中只有一個用戶,但按下提交時,頁面只會刷新並且不會重定向到主頁。這裏是我的代碼:到數據庫的PHP連接

<html> 
<head><title>Login</title></head> 
<body> 


<?php 
ob_start(); 
include('connect.php'); 

$handle = mysql_connect($hostname, $username, $password)or die("cannot connect"); 
$error = mysql_select_db($databasename,$handle); 

$myusername=$_POST['username']; 
$mypassword=$_POST['password']; 

$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM $tablename WHERE UserName='$myusername' and Password='$mypassword'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

if($count==1){ 
session_register("username"); 
session_register("password"); 
header("Location: home.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 


<form action='LoginREAL.php' 
       method='POST' style='margin: .5in'> 
    <p><label for='user_name' style='font-weight: bold; 
      padding-bottom: 1em'>USER ID: </label> 
     <input type='text' name='username' id='username' 
      value='' /></p> 
    <p><label for='password' style= 'font-weight: bold'>Password: </label> 
     <input type='password' name='password' id='password' 
      value='' /></p> 
    <p><input type='submit' value='Login'> </p> 
     <input type='hidden' name='sent' value='yes'/> 

<a href= "/home/jparry2/public_html/register.php">Register</a> 

    </form> 

</body> 
</html> 

回答

1

我的猜測是問題不在於您的登錄功能,而在於您的header()重定向語句。只有在任何html發送到瀏覽器之前,header()重定向纔會起作用。一旦html開始,http頭已經被髮送並且不能被改變。希望這是你唯一的問題。

+0

我改變了,但仍然有同樣的問題。有任何想法嗎? – user228180 2009-12-09 18:25:52

+0

好的,我可能會遺漏一些東西,但是當你使用session_register()時,爲什麼你要註冊「username」?如果我正確理解session_register(),那麼您只是設置了一個名爲「username」的會話變量,它沒有任何值。也許嘗試把「myusername」(這是你的變量與用戶名後的值)而不是「username」。我從來沒有使用過session_register(),所以我可能是錯的。 – darthnosaj 2009-12-09 18:38:29

+0

根據php手冊,反正session_register()已被棄用。我會嘗試使用$ _SESSION [「username」] = $ myusername。我希望這有幫助! – darthnosaj 2009-12-09 18:40:09

0

在將輸出發送到瀏覽器後,您不能使用header(),因此您需要將html內容放在html標籤之前。順便說一句,我不知道你的服務器是如何設置的,但我不認爲你的註冊鏈接可以工作(我假設public_html是服務器的根...)。

編輯:我看到你打開輸出緩衝,但你沒有沖洗緩衝區。有沒有特別的理由要這樣做?