在 $_SESSION 数组中存储多个值

我是 php 新手,这个问题一直困扰着我。我有三个页面, 1. classpage.php ---- 其中包含,


<?php

session_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']


GCT1015
浏览 242回答 3
3回答

动漫人物

您可能会继续覆盖会话数组。尝试检查它是否已经设置:if(!isset($_SESSION['recentlyView']))&nbsp;&nbsp;&nbsp;&nbsp;$_SESSION['recentlyView']&nbsp;=&nbsp;array();这只会设置一次数组,然后您的方法将添加到其中。另外,如另一个答案中所述,请确保将session_start();最顶层页面放在最开始。

一只甜甜圈

您必须session_start()在有任何输出之前调用。文档说明_要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()。当您展示您的代码时,加载的第一件事是front.php其中包括logic.php在classpage.php. (我看不到该页面是如何被引用的——无论是通过 include 还是 spl。您将演示文稿与逻辑分开的想法是正确的,但是您的顺序倒退了。需要发生的第一件事是相关 php 代码的执行和加载,而呈现是最后发生的事情。不幸的是,脚本中发生的第一件事就是立即开始输出。解决方案是通过 index.php 汇集所有请求(查找如何做 seo 友好的 url),然后使用“前端控制器”或“路由器”。除此之外,您需要在 front.php 顶部包含一个简短的 php 部分,以便在输出之前调用会话开始。<?php&nbsp; &nbsp; session_start();&nbsp; &nbsp; include 'logic.php'; // don't print anything from your logic; pass back a variable to print below.?><!DOCTYPE html><html lang="">....

梵蒂冈之花

试试这个,它应该可以解决你的问题。类添加股票{public function storeSessArray($stk_code){&nbsp; &nbsp;$_SESSION['recentlyView'][] =$stk_code;}}
打开App,查看更多内容
随时随地看视频慕课网APP