我是编程新手,所以不要过于强烈判断!
在我的localhost上,我有一个包含2个输入字段的HTML表单:$ 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函数我正在保存用户输入。在使用Developers Tools的浏览器中,我可以看到$ _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中存储它们。
提前谢谢!
P.S。 这是我的第一个问题,如果我做错了,我很抱歉。
答案 0 :(得分:1)
这不是饼干的工作方式。来自documenation of setcookie
:
设置好Cookie后,可以使用
$_COOKIE
或$HTTP_COOKIE_VARS
数组在下一页上访问这些Cookie。
因此,由于网络的无状态特性,页面加载时会设置$_COOKIE
。因此,当页面再次加载时,您将能够看到$_COOKIE
值。
使用var_dump($_COOKIE);
查看数组中的内容。为了您的目的,您应该使用$_SESSION
代替。
答案 1 :(得分:0)
你可以试试这个:
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'];
$secondTerm = $_GET['secondTerm'];
$operation = $keysGet[2];
switch ($operation) {
case "summ":
$result = $firstTerm + $secondTerm;
setcookie('firstTerm_summ', $firstTerm, time()+604800);
setcookie('secondTerm_summ', $secondTerm, time()+604800);
setcookie('result_summ', $result, time()+604800);
break;
case "difference": $result = $firstTerm - $secondTerm;
setcookie('firstTerm_difference', $firstTerm, time()+604800);
setcookie('secondTerm_summ', $secondTerm, time()+604800);
setcookie('result_difference', $result, time()+604800);
break;
case "multiply": $result = $firstTerm * $secondTerm;
setcookie('firstTerm_multiply', $firstTerm, time()+604800);
setcookie('secondTerm_multiply', $secondTerm, time()+604800);
setcookie('result_multiply', $result, time()+604800);
break;
case "divide": $result = $firstTerm / $secondTerm;
setcookie('firstTerm_divide', $firstTerm, time()+604800);
setcookie('secondTerm_divide', $secondTerm, time()+604800);
setcookie('result_divide', $result, time()+604800);
break;
}
echo "<h3>Your result is $result</h3>";
}