2011-02-23 275 views
0

我有以下代碼。現在,當我按下登錄按鈕時,什麼也沒有發生,並且用戶名和密碼被清除。PHP登錄問題

<?php 
    session_start(); 
    $host="localhost"; // Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password 
    $db_name="csduc"; // Database name 
    $tbl_name="students"; // Table name 

    // Connect to server and select databse. 
    $connect=mysql_connect("$host", "$username", "$password") or die("cannot connect"); 
    mysql_select_db("$db_name") or die("cannot select DB"); 

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

    // To protect MySQL injection (more detail about MySQL injection). 

    $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
    $result=mysql_query($sql,$connect); 
    $row=mysql_fetch_array($result); 

    // Mysql_num_row is counting table row. 
    //$count=mysql_num_rows($result); 
    // If result matched $myusername and $mypassword, table row must be 1 row. 

    if($row) 
    { 
     // Register $myusername, $mypassword and redirect to file "login_success.php". 
     session_register("myusername"); 
     session_register("mypassword"); 
     header("location: main.php"); 
    } 
    else 
    { 
     echo "Wrong Username or Password"; 
    } 
?> 

我該如何解決這個問題?

+2

表單代碼在哪裏? – 2011-02-23 07:37:58

+0

打印您的$ sql以查看存儲的內容。什麼都沒有回報?把你的HTML(只是在表單裏面的登錄位)看一看 – JohnP 2011-02-23 07:38:44

+1

session_register已被棄用:http://php.net/manual/en/function.session-register.php – 2011-02-23 07:39:11

回答

1

標題的正確名稱是「位置」(大寫'L')。這可能或可能不重要。另外,在技術上,位置標題需要絕對URL(例如「http://example.com/main.php」) - 某些瀏覽器會接受相對url,但規範要求絕對url。再次,這可能會或可能不會導致您的問題。

所以,要更加「技術上是正確的」您的重定向可以改成這樣的:

$host = $_SERVER['HTTP_HOST']; 
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/'); 
header("Location: http://$host$uri/main.php"); 

退房的php documentation page for the header() function瞭解更多詳情。

0

爲了測試使用

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

並使用SQL作爲密碼,因爲可以編碼

$sql="SELECT * FROM $tbl_name WHERE username='$myusername'"; 
$result=mysql_query($sql,$connect); 
$row=mysql_fetch_array($result); 
1

您的表單標籤有問題。

它需要如下:

<form method="POST" action=""> 

假設動作是相同的頁與上述代碼。否則,將動作指向包含代碼的頁面。確保代碼位於頁面頂部,否則會話開始和標題將不起作用