PHP使用会话和表单将数据发送到另一个页面

时间:2017-01-11 19:50:17

标签: php forms session session-variables calculator

所以即时学习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"];
?>

2 个答案:

答案 0 :(得分:0)

您未在第二页中收到数据。您可以使用函数value1在第一页本身中获取第一页的表单(value2send_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();
    
  • 您将在first.php中保存到$_SESSION[value1]但在second.php中读出$_SESSION[arvo5]
  • 使用var_dump($_SESSION)调试会话变量