3 回答
TA贡献1815条经验 获得超10个赞
您可能会继续覆盖会话数组。尝试检查它是否已经设置:
if(!isset($_SESSION['recentlyView'])) $_SESSION['recentlyView'] = array();
这只会设置一次数组,然后您的方法将添加到其中。
另外,如另一个答案中所述,请确保将session_start();最顶层页面放在最开始。
TA贡献1836条经验 获得超5个赞
您必须session_start()在有任何输出之前调用。文档说明_
要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()。
当您展示您的代码时,加载的第一件事是front.php其中包括logic.php在classpage.php. (我看不到该页面是如何被引用的——无论是通过 include 还是 spl。
您将演示文稿与逻辑分开的想法是正确的,但是您的顺序倒退了。需要发生的第一件事是相关 php 代码的执行和加载,而呈现是最后发生的事情。不幸的是,脚本中发生的第一件事就是立即开始输出。
解决方案是通过 index.php 汇集所有请求(查找如何做 seo 友好的 url),然后使用“前端控制器”或“路由器”。
除此之外,您需要在 front.php 顶部包含一个简短的 php 部分,以便在输出之前调用会话开始。
<?php
session_start();
include 'logic.php'; // don't print anything from your logic; pass back a variable to print below.
?>
<!DOCTYPE html>
<html lang="">
....
TA贡献1900条经验 获得超5个赞
试试这个,它应该可以解决你的问题。
类添加股票{
public function storeSessArray($stk_code){
$_SESSION['recentlyView'][] =$stk_code;
}
}
- 3 回答
- 0 关注
- 227 浏览
添加回答
举报
