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