【问题标题】: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() 的构造函数

标签: php oop session-cookies


【解决方案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 中工作,但它并不可悲
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
  • 2013-10-22
相关资源
最近更新 更多