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

PHP sending data to another page using session and form

所以我正在学习 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"];
?>

您没有收到第二页中的数据。您试图使用函数 send_values 在第一页本身获取第一页表单(value1value2)的数据,但这没有多大意义,因为数据被发送到第二页。在您的第二页中,您将获得如下值:

$_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
}

你的逻辑应该很简单:

第 1 页显示了用户输入数字的表单。该表单会将数据发送到第 2 页。您不要在此处使用 SESSION 或 GET。

Page2 接收 GET 数组中的数字,将它们保存到 SESSION,并显示一个带有 select 输入和可用操作(求和、减、乘等)的表单。表单会将数据发送到第 3 页。

Page3 采用 selected 操作,在这种情况下,您应该进行切换,例如:

switch($_GET['operation']) {
    case '+':
        $result = $_SESSION['value1'] + $_SESSION['value2'];
        break;

    case '-':
        $result = $_SESSION['value1'] - $_SESSION['value2'];
        break;

    // etc...
}

最后回应 $result

抱歉超出了答案范围。

不确定到底哪里出了问题,但您可以试试这些:

  • 交换 first.php 中函数调用的顺序,这样您的设置$_SESSION 就会在任何 HTML.

    之前
    send_values();
    create_form();
    
  • 您在 first.php 中保存到 $_SESSION[value1],但在 second.php
  • 中读出 $_SESSION[arvo5]
  • 使用var_dump($_SESSION)调试会话变量