【问题标题】:Displaying username using $_SESSION['username']使用 $_SESSION['username'] 显示用户名
【发布时间】:2016-07-27 13:28:27
【问题描述】:

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

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

echo "Welcome $user";

?>

用户已登录,不知道是不是我在check-login页面出错了。 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”吗? 非常感谢

【问题讨论】:

  • 你在哪里给$_SESSION['username']赋值?
  • 您在$username = trim($_POST['user']); 中传递的用户名不是超全局$_SESSION

标签: php session-variables login-script


【解决方案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

【讨论】:

  • 谢谢。能否在 include.php 中包含 session_start() 函数?
  • 谢谢,那么简单的事情。
【解决方案2】:

在您的 check_login 页面中,我没有看到 session_start将用户名保存到会话中的代码,因此您可以在其他页面上检索它。

在check_login页面请添加:

session_start();

在开始然后设置:

$_SESSION['username'] = $username;

以便您可以检索并显示在其他页面上。

【讨论】:

    【解决方案3】:

    请检查以下几点。

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

    从您的代码中,我没有看到如下任何一行:

    $_SESSION['username'] = $username
    

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

    • 如果您在使用$_SESSION 变量之前执行了session_start()

    session_start() 是使用 $_SESSION 变量时必须调用的函数。

    【讨论】:

      猜你喜欢
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2011-06-15
      • 1970-01-01
      • 2023-03-02
      • 2015-12-09
      相关资源
      最近更新 更多