使用$ _SESSION ['username']显示用户名

时间:2013-05-17 19:02:55

标签: php session-variables login-script

当我尝试显示已登录用户的用户名时,我会收到“欢迎,1”,其中1应该是登录用户的用户名。 这是我在members.php中的代码。注释掉的行也不起作用。

<?php
require_once('include.php');
?>
<?php
// echo "welcome, {$_SESSION['username']}";     
$user = $_SESSION['username'];

echo "Welcome $user";

?>

用户已登录,我想知道我是否在检查登录页面中犯了错误。 check_login页面的代码是:

<?php 
require_once('include.php');

$username = trim($_POST['user']);
$password = trim($_POST['pass']);

$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

$sql="SELECT * FROM user WHERE username='$username' and password='$password';";
$result = mysql_query($sql);

$count = mysql_num_rows($result);

if($count !== 0){

$_SESSION['logged-in'] = true;
header("location:members.php?user=$username");
exit; 
}
else {
$_SESSION['logged-in'] = false;
header("location:login_again.php");
exit;
}
?>

成功登录后重定向到members.php页面。 任何人都有任何想法为什么用户名每次都是'1'? 非常感谢

3 个答案:

答案 0 :(得分:1)

代码顶部的某处需要session_start()

<?php session_start();
require_once('include.php');
?>
<?php
// echo "welcome, {$_SESSION['username']}";     
$user = $_SESSION['username'];

echo "Welcome $user";

?>

您还需要先设置它,然后使用此文件顶部的session_start

进行访问
if($count>0){
$_SESSION['username']=$username;
$_SESSION['logged-in'] = true;
header("location:members.php?user=$username");
exit; 
}

你的代码是针对sql注入攻击开放的,而是使用prepared statements代替

答案 1 :(得分:0)

在check_login页面中,我看不到 session_start 和用于将用户名保存到会话中的代码,以便您可以在其他页面上检索它。

在check_login页面中,请添加:

session_start();

在开始时然后设置:

$_SESSION['username'] = $username;

以便您可以在另一页上检索并显示它。

答案 2 :(得分:0)

请检查以下几点。

  • 确保在Session变量中设置用户名。

从您的代码中,我没有看到如下所示的行:

$_SESSION['username'] = $username

没有设置,你什么也得不到。

  • 如果您在使用session_start()变量之前完成了$_SESSION
如果要使用$ _SESSION变量,

session_start()是必需的函数。