有没有办法在HTML文档(或PHP脚本)中携带变量?

时间:2017-02-12 18:22:27

标签: html php

这可能更像是一个“编程技巧”问题,但我不确定应该去哪个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回到声明的价值。

我还有其他方法可以使用,我不知道 - 除了写入/读取服务器端的文本文件,这样效率很低,对吗?

2 个答案:

答案 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是否进入会话。