一旦分配给会话类的属性,就无法检索会话值[关闭]

Posted

技术标签:

【中文标题】一旦分配给会话类的属性,就无法检索会话值[关闭]【英文标题】:Unable to retrieve Session Value once assigned to attribute of the session class [closed] 【发布时间】:2018-02-07 10:23:44 【问题描述】:

各位,我无法检索会话值。我已经尝试了一整天来解决这个问题,但失败了。我的情况是这样的:-

我在实例化时创建一个会话类,我通过构造函数自动启动会话。我从登录表单中获取两个值“用户名”和“密码”,然后在获取这些值后,我将它们分配给会话类属性,如下所示

$username=$_POST['username'];
$password=$_POST['password'];
$session_object->session_username=$username;
$session_object->session_password=$password;

。现在只要我回显 $session_object->session_username;在登录表单上显示值的任何地方。但是当我尝试在任何其他页面上显示该值时,它什么也没有显示。我是一名初学者 Web 开发人员,但我了解到会话存储在服务器端,并且可以在应用程序的任何位置访问。

我只有一个 Session 类的对象 $session_object,我不再创建任何对象。 请帮助您的帮助将不胜感激。使用 php 7.1,XAMPP 服务器。

【问题讨论】:

称它为“$session”并不能使它成为一个 php 会话 你的$session_object在哪里声明和分配? 我的 $session_object 在 session.php 中声明。我有一个在实例化时自动启动 session_start() 的构造函数 【参考方案1】:

您可以只使用 $_SESSION 全局数组。但首先你必须调用 session_start()。

session_start();
if ($_POST['username'] && $_POST['password']) 
    $username = $_POST['username'];
    $password = $_POST['password'];
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;
 else 
    $username = $_SESSION['username'];
    $password = $_SESSION['password'];


echo "Username is '$username', password is '$password'.";

http://php.net/manual/en/session.examples.basic.php

【讨论】:

为什么是$password = $_POST['password']; $_SESSION['password'] = $password; 而不是$_SESSION['password'] = $_POST['password']; ?? 因为下面使用了$password,无论如何。 @ili4 ***为什么是 $_SESSION['password'] ? *** 不好的做法! 当然!但问题是如何在会话中存储价值。 是的,如果我不使用类会话并手动存储会话,即程序 php。有用。唯一的问题是它应该也可以在 oop 中工作,但它并不可悲

以上是关于一旦分配给会话类的属性,就无法检索会话值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 gwt 中检索会话属性

Laravel 无法检索保存在 POST 请求中的会话数据

如何防止模态盒关闭?

cookie

Liferay 7 无法设置全局会话属性

cookie和session