所以即时学习PHP,我一直试图用它做一些基本的东西。 香港专业教育学院一直试图用三个不同的PHP页面制作简单的计算 第一页需要2个数字值。在第二页上,您可以选择要提交的计算(现在只有value1 + value2),第三页只是打印结果。 所以这是超级简单的PHP的东西,我让它以不同的方式工作,但当我尝试使用会话时,我不能让它工作。它看起来像在第一页上我不能得到我的会话变量的值,我不知道如何解决这个问题。 如果有人告诉我如何使用session进行这项工作,那么我会非常感激。我很快就会有关于php的考试,很高兴知道这是如何工作的。
我的第一个php页面代码:
session_start();
create_form();
send_values();
function create_form()
{
?>
<form action="testilasku.php" method="get">
<input type="text" name="value1">
<input type="text" name="value2">
<input type="submit" name="count">
</form>
<?php
}
function send_values()
{
if (!isset($_GET["count"]))
{
$_SESSION["value1"] = $_GET["value1"];
$_SESSION["value2"] = $_GET["value2"];
}
}
?>
我的第二个php页面代码:
session_start();
$result = 0;
$value1 = 0;
$value2 = 0;
//$_SESSION["arvo5"] = $_GET["arvo1"];
//$_SESSION["arvo6"] = $_GET["arvo2"];
$value1 = $_SESSION["arvo5"];
$value2 = $_SESSION["arvo6"];
laskin($value1,$value2,$result);
set_values($result);
create_form();
echo $value1;
echo $value2;
echo $result;
function set_values($result)
{
$_SESSION["result"] = $result;
}
function create_form()
{
?>
<form method="get" action="tulostin.php">
<input name="result" type="submit">
</form>
<?php
}
function laskin($value1,$value2,&$result)
{
$result = $value1 + $value2;
}
?>
<a href="testilaskin.php">Go Back</a>
我的第三页:
<?php
session_start();
var_dump($_SESSION);
echo $_SESSION["result"];
?>
答案 0 :(得分:0)
您未在第二页中收到数据。您可以使用函数value1
在第一页本身中获取第一页的表单(value2
和send_values
)的数据,但这并不是&{ #39; t很有意义,因为数据被发送到第二页。在第二页中,您将获得如下值:
$_SESSION["arvo5"] = $_GET["value1"];
$_SESSION["arvo6"] = $_GET["value2"];
$value1 = $_SESSION["arvo5"];
$value2 = $_SESSION["arvo6"];
这样您可以将表单值设置为SESSION
数组和其他变量。
如果您希望将数字保存在第一页(因为第二页中有后退按钮),您的第一页将如下所示:
<?php
session_start();
create_form();
function create_form() {
// Here we get the values only if they are set.
$value1 = isset($_SESSION['arvo5']) ? $_SESSION['arvo5'] : '';
$value2 = isset($_SESSION['arvo6']) ? $_SESSION['arvo6'] : '';
?>
<form action="testilasku.php" method="get">
<input type="text" name="value1" value="<?= $value1 ?>">
<input type="text" name="value2" value="<?= $value2 ?>">
<input type="submit" name="count">
</form>
<?php
}
你的逻辑应该很简单:
Page1显示用户输入数字的表单。表单会将数据发送到第2页。您不会在此处使用SESSION或GET。
Page2接收GET数组中的数字,将它们保存到SESSION,并显示带有可用操作的选择输入的表单(sum,sub,mult等)。表单将数据发送到第3页。
Page3采用所选操作,在这种情况下,您应该进行切换,例如:
switch($_GET['operation']) {
case '+':
$result = $_SESSION['value1'] + $_SESSION['value2'];
break;
case '-':
$result = $_SESSION['value1'] - $_SESSION['value2'];
break;
// etc...
}
最后回应$result
。
很抱歉超越答案。
答案 1 :(得分:0)
不确定失败的确切位置,但您可以尝试这些:
在first.php中交换函数调用的顺序,以便在任何HTML之前设置$_SESSION
。
send_values();
create_form();
$_SESSION[value1]
但在second.php中读出$_SESSION[arvo5]
var_dump($_SESSION)
调试会话变量