PHP登录并获取用户信息

问题:如何在用户成功登录时获取用户信息?

这是我的login.php代码

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
  $username = $_POST['username'];
  $password = $_POST['password'];
  // mysql connect function here....
  // mysql query here....
  $sql = "SELECT * FROM user_accounts WHERE username = '$username' and password = '$password'";
  $result = mysql_query($sql);
  $count = mysql_num_rows($result);

  if($count == 1) {
    session_register(username);
    session_register(password);
    header('location: index.php');
  }
  else {
    $error = "Invalid Username or Password Please Try Again";
  }

}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?=$error=?>
Username : <input type="text" name="username">
Password : <input type="password" name="password">
<input type="submit" />
</form>


这里是我的index.php代码

<?
  session_start();
  if(!session_is_registered(username)){
  header("location:login.php");
  }
$username = session_is_registered(username);
  $password = session_is_registered(password);
echo $username;
  echo $password;
  ?>


例如:这是数据库信息。

User ID  --> 001
Username --> admin
Password --> admin

当我回显$ username$ password时 ,用户名= 1和密码= 1的结果。我想要的结果是username = admin和password = admin。

我如何获取记录的用户名和密码? 因为我需要查询,所以我可以得到他/她的名字,姓氏。
我已经得到了这个,但我忘记了如何去做。 =)

非常感谢您的答复。 =)


您已经拥有来自POST数组的用户名和密码,您可以像这样将它们存储在会话中:

session_start(); // this will go on top of the page
.........

if($count == 1) {
    session_register(username);
    session_register(password);

    $_SESSION['username'] = $_POST['username']; // store username
    $_SESSION['password'] = $_POST['password']; // store password

    header('location: index.php');
  }
  else {
    $error = "Invalid Username or Password Please Try Again";
  }

稍后,您可以像这样获取它们:

echo $_SESSION['username'];
echo $_SESSION['password'];

请注意 ,您应该在会话注销文件中销毁它们。

注2 session_register从PHP 5.3.0开始已经被拒绝。 只需使用$_SESSION数组来存储您的值。


您正在使用旧的会话功能,并且您错误地使用了它们。 让我告诉你如何使用$ _SESSION数组来完成它。 请注意,自PHP 5.3起,session_register()和session_is_registered()是不推荐使用的函数,这意味着它们可能会在稍后被移除。 当你想在查询中使用它的时候,你总是应该逃避来自用户的输入。 您可能想要使用准备好的语句,PDO或mysqli。

<?php
    // login.php
    session_start();
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        // mysql connect function here.... (moved up here)
        $username = mysql_real_escape_string($_POST['username']);
        $password = mysql_real_escape_string($_POST['password']);
        $sql = "SELECT * FROM user_accounts WHERE username = '$username' AND password = '$password'";
        $result = mysql_query($sql) or die( "MySQL Error: ".mysql_error() );
        $user = mysql_fetch_assoc($result);
        if($user !== false) {
            $_SESSION['username'] = $user['username'];
            $_SESSION['password'] = $user['password'];
            header('Location: index.php');
        } else {
            $error = "Invalid Username or Password Please Try Again";
        }
    }
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?=$error=?>
Username : <input type="text" name="username">
Password : <input type="password" name="password">
<input type="submit" />
</form>

注意mysql_real_escape_string()函数和上例中$_SESSION超全局的使用。

<?php
    // index.php
    session_start();
    if(!isset($_SESSION['username'])) {
        header("Location: login.php");
    }
    $username = $_SESSION['username'];
    $password = $_SESSION['password'];
    echo $username;
    echo $password;
?>

您可以使用isset()而不是session_is_registered()来检查是否设置了会话值。


session_is_registered是布尔值,所以它会检查它是否被设置为不能得到它。

你会希望$username = $_SESSION['username'];

$password= $_SESSION['password'];

尽管不要使用用户名和密码作为会话名称。

我发现它已经通过mysql并将mysql用户名和密码存储在会话中

编辑

session_register也被弃用

链接地址: http://www.djcxy.com/p/69801.html

上一篇: PHP login and get user information

下一篇: syntax error, unexpected end of file