为了账号安全,请及时绑定邮箱和手机立即绑定

在 $_SESSION 数组中存储多个值

在 $_SESSION 数组中存储多个值

PHP
GCT1015 2022-01-24 11:00:44
我是 php 新手,这个问题一直困扰着我。我有三个页面, 1. classpage.php ---- 其中包含,<?phpsession_start();class addStock{    public function storeSessArray($stk_code){         array_push($_SESSION['recentlyView'],$stk_code);    }}?>logic.php ---持有,$_SESSION['recentlyView']=array();$checkSession = new addStock;$chkSession = $checkSession->storeSessArray($val);echo '<pre>';print_r($_SESSION);echo '</pre>';?>和 3. front.php包含<!DOCTYPE html><html lang=""><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>Title Page</title></head><body><?php   $val='5';?><?php   include 'logic.php';?></body></html>$_SESSION['recentlyView']当有人加载front.php时,我想保留一个存储在数组中的值数组。但是每次我为 $val 分配不同的值时,只有存储在 $val 中的最后一个值出现在$_SESSION['recentlyView']数组中。我希望使用的每个值都$val存储在$_SESSION['recentlyView']
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您可能会继续覆盖会话数组。尝试检查它是否已经设置:

if(!isset($_SESSION['recentlyView']))    $_SESSION['recentlyView'] = array();

这只会设置一次数组,然后您的方法将添加到其中。

另外,如另一个答案中所述,请确保将session_start();最顶层页面放在最开始。


查看完整回答
反对 回复 2022-01-24
?
一只甜甜圈

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="">

....


查看完整回答
反对 回复 2022-01-24
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

试试这个,它应该可以解决你的问题。


类添加股票{


public function storeSessArray($stk_code){


   $_SESSION['recentlyView'][] =$stk_code;


}

}


查看完整回答
反对 回复 2022-01-24
  • 3 回答
  • 0 关注
  • 227 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号