PHP登录问题

PHP登录问题,php,Php,我有以下代码。现在,当我按下登录按钮时,什么也没发生,用户名和密码都被清除了 <?php session_start(); $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="csduc"; // Database name $tbl_name="students"; // T

我有以下代码。现在,当我按下登录按钮时,什么也没发生,用户名和密码都被清除了

<?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";
    }
?>

如何解决此问题?

标题的正确名称是带有大写字母“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");
有关更多详细信息,请查看。

用于测试

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);

您的表单标签有问题

它需要如下:

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

假设操作与上面的代码是同一页。否则,将操作指向包含代码的页面。确保代码位于页面顶部,否则session start和header将不起作用

打印$sql以查看存储在那里的内容。什么都没有回来吗?只需在表单中设置一个looksession\u注册表的登录位就可以了:当我放置echo$sql时;这是来自学生的SELECT*输出,其中username='sermed'和password='111111'警告:无法修改标题信息-标题已由C:\Program Files\xampp\htdocs\login.php中的C:\Program Files\xampp\htdocs\login.php第35行的输出发送,代码中的注释解释了一个完全不同的逻辑,那么代码实际上在做什么呢?请在$\u POST变量周围使用mysql\u real\u escape\u字符串,因为这只是一个等待发生的问题。看起来您正在登录。标题警告是因为您被发送到main.php。问题在那里,而不是这里。