1

我有一个 PHP 问题。我已经做了一个简单的登录系统,但是如果我登录它不会重定向到会员页面,它只会进入一个空白页面。登录有效,正如我尝试过的那样echo("success")。任何帮助将非常感激。

<?php
session_start();

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

if($username&&$password)
{
    $connect = mysql_connect("mysite","hidden","hidden") or die("Couldn't   connect");
    mysql_select_db("hidden") or die("Couldn't find db");   

    $query = mysql_query("SELECT * FROM users WHERE Username = '$username'");
    $numrows = mysql_num_rows($query);

    if($numrows!=0)
    {
        //code to login
        while($row = mysql_fetch_assoc($query))
        {
            //validate values
            $dbusername = $row['Username'];
            $dbpassword = $row['Password'];
        }
        //check to see if the values match
        if($username==$dbusername && $password==$dbpassword)
        {
            header('Location: memberHome.php');
            $_SESSION['username']=$dbusername;
        }
        else
            die("incorrect password");
    }
    else
        die("User doesn't exist");
}
else
    die("Please enter a username and a password");
?>
4

3 回答 3

1
header('Location: memberHome.php');
$_SESSION['username']=$dbusername;

如果您希望分配会话变量,则必须在标题将您传递到下一页之前这样做;)像这样:

$_SESSION['username']=$dbusername;
header('Location: memberHome.php');
于 2012-05-20T20:34:27.530 回答
0

与其先检查用户名是否存在,然后再检查密码是否正确,为什么不同时进行这两项操作呢?

    $row = mysql_fetch_assoc(mysql_query("SELECT * FROM users
    WHERE Username='$username' 
    AND pass='$password'"));

if($row['id']) { 
$_SESSION['username']=$dbusername;
header('Location: memberHome.php');
}

此外,明智的做法是不要*在您的SELECT声明中使用。只选择您真正需要的项目。

我没有看到您的代码没有重定向的任何问题。

我只是在我的机器上用这个代码在本地尝试了它并取出你的数据库连接。但是使用下面提供的代码,我能够让它重定向到 memberHome.php,这表明如果用户名和密码匹配,那么它工作正常。

<?php
session_start();

$username = "david";
$password = "password";

if($username&&$password)
{
    //$connect = mysql_connect("mysite","hidden","hidden") or die("Couldn't   connect");
   //mysql_select_db("hidden") or die("Couldn't find db");   

    //$query = mysql_query("SELECT * FROM users WHERE Username = '$username'");
    $numrows = 1;

    if($numrows!=0)
    {

            //validate values
            $dbusername = "david";
            $dbpassword = "password";

        //check to see if the values match
        if($username==$dbusername && $password==$dbpassword)
        {
            header('Location: memberHome.php');
            $_SESSION['username']=$dbusername;
        }
        else
            die("incorrect password");
    }
    else
        die("User doesn't exist");
}
else
    die("Please enter a username and a password");
 ?>
于 2012-05-20T20:45:03.117 回答
0

你试过在头球后死吗?

$_SESSION['username']=$dbusername;
header('Location: memberHome.php');
die;
于 2012-05-20T20:35:38.863 回答