这可能更像是一个“编程技巧”问题,但我不确定应该去哪个SO部分。
我正在努力建立一个“引导问题和(可用)答案”的网站 - 可能很容易在结构上描述为“选择你自己的冒险”类型方法。
我没有着手创建一个错综复杂的树,概述每一个“故事情节分支”然后硬编码(a href)以匹配,我想的是一个更动态的“旅程”,它以一个数组变量开头概述了将要问的问题的顺序。
例如,如果用户选择序列A; $ questionarray = [Q1,Q3,Q2,Q5,Q6] 如果用户选择序列B; $ questionarray = [Q1,Q2,Q4,Q3,Q7] 等等。
我的第一次尝试是尝试一些简单的事情,只需按顺序排列,如[Q1,Q2,Q3,Q4,Q5],在这种情况下,我不需要一个数组,而是一个简单的递增变量,比如$ qnum,和每个后续文件都会调用下一个文件,如下所示--Q1.htm调用Q2.htm,Q2.htm调用Q3.htm,但不是因为它在每个文件中都是硬编码的,而是由$的递增“统一变量”确定的qnum。 (想到的是,如果成功的话,那就是用上述数组变量'$ questionarray'替换$ qnum的简单例子。)
然后出现问题,在几个文档,HTML甚至PHP,$ qnum无法“传递”到下一个文件 - 没有写入服务器上的文本文件 - 保持跟踪。
我甚至试图将上述'兄弟呼叫兄弟'结构更改为'父母呼叫孩子'(通过“包含Q”。$ qnum。“。php”)但是$ _POST / document.reload也最终重置了$ qnum回到声明的价值。
我还有其他方法可以使用,我不知道 - 除了写入/读取服务器端的文本文件,这样效率很低,对吗?
答案 0 :(得分:2)
在Php中,您可以使用Sessions
来跟踪从一个请求到下一个请求的数据。
您需要先启动会话,然后才能在$_SESSION
数组中获取/设置数据。
例如:
在第一页
<?php
session_start();
$_SESSION['questions'] = array(1,2,4,3,7);
?>
在辅助页面上
<?php
session_start();
//Replace with whatever logic is needed
foreach($_SESSION['questions'] as $q){
echo $q
}
请注意,每个请求只应启动一次会话。要检查会话是否已启动,建议您执行以下操作:
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
如果您需要从会话中删除数据,可以通过两种方式进行处理:
删除$_SESSION
数组
unset($_SESSION['questions']);
销毁整个会话
session_destroy();
答案 1 :(得分:0)
如果您需要在网页上携带变量,那么Sessions就是您的选择。会话允许您跨多个页面传递变量,数组等。检查here是否进入会话。