我有两个名为' search.php'的脚本文件。和' share.php'我想从第一个到第二个发送信息。我创建了一个名为$ _SESSION [' search']的var,它是Search类的一个对象,但是我无法在第二个脚本文件中读取该对象。
session_start();
$_SESSION['search'] = new Search($text);
(...)
session_start();
$itemList = $_SESSION['search']->getItemList(); // Error
为什么呢?如何在PHP中将信息从一个脚本传递到另一个脚本?
答案 0 :(得分:0)
如果要使用会话传递变量,则需要将该变量添加到search.php中的会话中,如下所示:
$itemlist = new Search($text);
$_SESSION['search'] = $itemlist;
然后在share.php中返回变量,如下所示:
$itemlist = $_SESSION['search'];
echo $itemlist;
如果您遇到问题,我会检查“新搜索($ text);”在第一页上,并确保它是您实际想要存储的内容。
答案 1 :(得分:0)
PHP自动序列化会话中的对象。
您不能在该对象中拥有任何资源(即数据库连接等)。如果你需要它们,你需要将__sleep和__wake方法添加到你希望存储在会话中的对象。 __sleep将obj呈现为值obj(实际上是一个数组,因为必须返回一个数组),__ wake方法应该根据该数组重建obj。
阅读this
答案 2 :(得分:0)
也许你只是错过了包含Search
类的php文件的包含。
require_once('Search.php');
如果您从会话中反序列化对象时不知道该类,那么PHP会创建一个“虚拟”对象,仅包含属性,但不知道它的方法。如果包含该类,则PHP可以将其反序列化为此类的真实对象。