2011-02-23 291 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=""> 

假设动作是相同的页与上述代码。否则,将动作指向包含代码的页面。确保代码位于页面顶部,否则会话开始和标题将不起作用