iam有点混乱,我去年开始学习php 5 OO方式。第一个项目是用Zend框架完成的。OOP - 会话和PHP
但是我的一些朋友正在讨论将对象存储在$ _SESSION超全局数组中。但是,我不能找到一个很好的例子,为什么或当这是nesecarry?
这将是伟大的,如果有人可以给我一个提示,为什么要在会议中存储对象。
iam有点混乱,我去年开始学习php 5 OO方式。第一个项目是用Zend框架完成的。OOP - 会话和PHP
但是我的一些朋友正在讨论将对象存储在$ _SESSION超全局数组中。但是,我不能找到一个很好的例子,为什么或当这是nesecarry?
这将是伟大的,如果有人可以给我一个提示,为什么要在会议中存储对象。
会话本质上是一个变量,你可以存储任何你想要的东西,数字,字符,字符(字符串),结构.....对象。
它也是一个变量,通过页面保持不变。其最commanly用于保存用户登录信息
我如何使用Session对象如下:
可以说我有一个用户表在我的数据库,我需要显示的名字,大多名字我的所有网页的。
我能做些什么两样东西......老办法:
$result = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE userId=1"));
$_SESSION['userId'] = $result['userId'];
$_SESSION['firstname'] = $result['firstname'];
$_SESSION['lastname'] = $result['lastname'];
现在你可以做到这一点是不错,但它会是好多了,如果你已经可以说下面的代码:
class user{
_construct($userId){
$qry_str = mysql_query("SELECT * FROM users WHERE Id=$userId");
$result = mysql_fetch_array($qry_str);
$this->userId = $userId;
$this->firstname = $result['firstname'];
$this->lastname = $result['lastname'];
}
public $userId, $firstname, $lastname;
}
并初始化
$_SESSION['user'] = new user(1);
或者说多用户:
$_SESSION['user'][1] = new user(1);
$_SESSION['user'][2] = new user(2);
$_SESSION['user'][3] = new user(3);
然后在你的代码中,你需要做的是:在登录时通过userId指定用户,然后使用存储的类来显示所有信息。
有很多更强大的事情你可以用类做。但上面显示了一个简单而有效的解决方案。
试试这个:如果添加和statments死statments在构建用户类......这构建用户时,你可以错误检查
希望这有助于
其优先序列化对象然后存储在会话中。也访问需要反序列化 – 2016-11-23 07:34:16
HTTP是无状态的。如果你想在不同的页面抓取之间获得数据到persist,你需要一些其他的机制。 Cookie是一种方式,但由于它们存储在客户端,所以它们在服务器上不可信。 $_SESSION
是持久可靠的存储方法之一。最常见的用法是登录系统。请注意,会话ID来自客户端,因此它们不可信,但您可以确定会话本身中存储的数据不会被欺骗。另一种选择是使用数据库,但是您必须添加代码以序列化/反序列化或以其他方式将存储在数据库中的数据转换为PHP对象或从其中转换。数据库关于会话的一个优点是数据不能在会话之间轻松共享。
至于存储对象而不是其他类型,这只是您的特定应用程序使用的问题,但它不是必需的。以登录示例为例,如果要在对象中存储经过身份验证的用户信息(例如用户ID和客户端IP地址),则可以将该对象存储在$_SESSION
之内。
又例如,假设您正在编写一个使用对象来模拟消息的消息传递应用程序(例如论坛,电子邮件)。消息可以有附件,但附件表单是一个单独的页面,因此您将消息对象存储在$_SESSION
中。不是最实用的设计,而是常见的设计,尽管AJAX的出现并不那么容易。
你通常*不*需要将它们存储在会话中。无论如何,你可能不应该传递大量数据......也许是一个ID或两个,但就是这样。也就是说,将这些数据放入一个对象并将其传递给对象没有任何问题。 – mpen 2009-10-15 05:54:35
ty for accept ....:D – 2009-10-15 06:25:12