【发布时间】:2015-12-11 13:55:35
【问题描述】:
我是编程新手,所以不要判断太强!
在我的本地主机上,我有一个 HTML 表单,其中包含 2 个输入字段:$firstTerm 和 $secondTerm,以及 4 个按钮:Summ、Difference、Multiply、Divide。
<form>
Enter first term: <input type="number" step="0.001" name="firstTerm">
Enter second term: <input type="number" step="0.001" name="secondTerm">
<button name="summ" id="summ">Summ</button>
<button name="difference" id="difference">Difference</button>
<button name="multiply" id="multiply">Multiply</button>
<button name="divide" id="divide">Divide</button>
</form>
在该表单中,我使用 GET 方法返回 $result。
*if((isset($_GET['firstTerm']) && isset($_GET['secondTerm'])) && (isset ($_GET['summ']) || isset ($_GET['difference']) || isset ($_GET['multiply']) || isset ($_GET['divide']))){
$keysGet = array_keys($_GET);
$firstTerm = $_GET['firstTerm'];
setcookie('firstTerm', $firstTerm, time()+604800);
$secondTerm = $_GET['secondTerm'];
setcookie('secondTerm', $secondTerm, time()+604800);
$operation = $keysGet[2];
switch ($operation) {
case "summ": $result = $firstTerm + $secondTerm; break;
case "difference": $result = $firstTerm - $secondTerm; break;
case "multiply": $result = $firstTerm * $secondTerm; break;
case "divide": $result = $firstTerm / $secondTerm; break;
}
setcookie('result', $result, time()+604800);
echo "<h3>Your result is $result</h3>";
}*
使用 setcookie() php 函数,我可以保存用户输入。在带有开发者工具的浏览器中,我可以看到存储在 $_COOKIE 中的 3 个值。
问题:如何在他计算期间(当他在浏览器的同一页面上计算时)保存所有用户输入(按下按钮后)?
换句话说:每次按下按钮时,我都需要将 cookie 中的所有值存储在另外 3 个数组 $firstTermCookie[] $secondTermCookie[] $resultCookie[] 中,并从我需要的这 3 个新数组中存储随机值。
我试过了:
$firstTermCookie = [];
$secondTermCookie = [];
$resultCookie = [];
$firstTermCookie[] = $_COOKIE['firstTerm'];
$secondTermCookie[] = $_COOKIE['secondTerm'];
$resultCookie[] = $_COOKIE['result'];
但它只存储每个操作的值,擦除以前的值。 使用 foreach $_COOKIE 循环,它会存储相同的值 3 次,同时也会删除以前的值。 我知道 $_SESSION 的可能性,但我需要从 $_COOKIE 中存储它们。
提前致谢!
附: 这是我在这里的第一个问题,如果我做错了什么,我很抱歉。
【问题讨论】:
-
您要保存所有结果吗?反对所有 4 项行动?
-
@devpro 是的,所有 4 项操作的条款和结果。
-
为什么要在计算之前使用设置的 cookie?
-
您可以为每个函数添加单独的 COOKIES,否则您可以创建具有不同索引的数组。
-
@devpro 我需要稍后再使用它们,当用户在同一页面上时。