【问题标题】:$_SESSION Not displaying (Noob)$_SESSION 不显示(菜鸟)
【发布时间】:2017-07-11 05:33:49
【问题描述】:

我已经根据教程设置了登录/注册系统,现在我正在尝试使用会话来显示个人资料信息。我看过不少论坛和教程,我相信我有显示数据库中的实际信息所需的实际代码,但我无法让它显示。我可能做错了什么...我正在尝试从数据库中获取“电子邮件”部分并将其显示在配置文件中。

<?php
require('db.php');

// Create connection
$conn = new mysqli("XXXXXX");
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);

$_SESSION['email'] = $_POST['email'];


?>  
<?php
session_start();
?>
<p><strong>Email:</strong>&nbsp;<?php echo $_SESSION['email']; ?></p>

【问题讨论】:

  • 你需要把 session_start() 放在你的 php 文件的最顶部
  • 为什么最后是 session_start?它应该在 $_SESSION 之前
  • 简单:首先启动会话而不是之后,并确保 POST 数组具有值;不知道它来自哪里/如何。
  • 您已获得 cmets;请不要忽略它们或期望您发布的内容有一个神奇的答案,因为 POST 数组是未知的。祝你好运。
  • 我已经在顶部发布了 session_start(),谢谢。但它仍然没有显示任何内容。我相信当我按照教程进行登录时,会话是在其他地方创建的,它创建了一个会话,是否可以创建单独的实例?因为它似乎还没有工作

标签: php database session


【解决方案1】:

从有限的信息我能想到这一点:

  • 您已经完成了登录/注册模块
  • 用户成功登录后,您希望显示该用户的个人资料信息,对吗?

在这种情况下,这是您的情况的基本假设:

  1. 首先,如果您在登录后将用户转移到此页面,这意味着不会有 $_POST 数据(通常)。您可以使用 var_dump($_POST) 进行确认。

  2. 您在登录时已经在某处设置了 $_SESSION 变量。假设它是 $_SESSION['email'],你可以使用 var_dump($_SESSION) 来确认它。

基于此假设,您修改后的代码将如下所示:

<?php
require('db.php');

//This should come first before accessing $_SESSION
session_start();

// Create connection
$conn = new mysqli("XXXXXX");
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
} 

//This query should be used with WHERE as you only want to get data of one particular user. 
//This is just for an example purpose, in practice you should always use parameterized query Or at least escape data before using it. 
$sql = "SELECT id, username, email FROM users WHERE email = " . $_SESSION['email'] . ";";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
       //Assuming only one record will be returned because username/email should be unique
       $result = $row;
    }
} else {
    //Handle if you don't get any data
}

$email = $result['email']; 

?>  

<p><strong>Email:</strong>&nbsp;<?php echo $email; ?></p>

我希望这可能会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多