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

PHP使用会话和表单将数据发送到另一个页面,php,forms,session,session-variables,calculator,Php,Forms,Session,Session Variables,Calculator,所以我在学习PHP,我一直在尝试用它做一些基本的事情。 我一直在尝试用三个不同的php页面制作简单的计算器。 第一页采用2个数值。在第二页,您选择要提交的计算(现在只有值1+2),第三页只是打印结果。 这是一个超级简单的PHP工具,我用了很多不同的方法,但是当我尝试在上面使用session时,我无法让它工作。看起来在第一页上,我无法获取会话变量的值,我不知道如何解决这个问题。 所以,如果有人能告诉我如何使用session来实现这一点,我将非常感激。我很快就要考试php了,很高兴知道它是如何工作的

所以我在学习PHP,我一直在尝试用它做一些基本的事情。 我一直在尝试用三个不同的php页面制作简单的计算器。 第一页采用2个数值。在第二页,您选择要提交的计算(现在只有值1+2),第三页只是打印结果。 这是一个超级简单的PHP工具,我用了很多不同的方法,但是当我尝试在上面使用session时,我无法让它工作。看起来在第一页上,我无法获取会话变量的值,我不知道如何解决这个问题。 所以,如果有人能告诉我如何使用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"];
}
}
?>
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>
session_start();
创建表单();
发送_值();
函数create_form()
{    
?>
我的第二个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"];
}
}
?>
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>
session_start();
$result=0;
$value1=0;
$value2=0;
//$\会话[“arvo5”]=$\获取[“arvo1”];
//$\会话[“arvo6”]=$\获取[“arvo2”];
$value1=$\u会话[“arvo5”];
$value2=$\会话[“arvo6”];
拉斯金($value1,$value2,$result);
设置_值($result);
创建表单();
echo$value1;
echo$value2;
回声$结果;
函数集_值($result)
{
$\会话[“结果”]=$result;
}
函数create_form()
{ 
?>
我的第三页:

<?php
session_start();

var_dump($_SESSION);
echo $_SESSION["result"];
?>

您没有收到第二页中的数据。您正在尝试获取第一页表单的数据(
value1
value2
)在第一页中,使用函数
发送\u值
,但这没有多大意义,因为数据会发送到第二页。在第二页中,您会得到如下值:

$_SESSION["arvo5"] = $_GET["value1"];
$_SESSION["arvo6"] = $_GET["value2"];

$value1 = $_SESSION["arvo5"];
$value2 = $_SESSION["arvo6"];
<?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
}
这样,就可以将表单值设置为
会话
数组和其他变量

如果希望数字保留在第一页中(因为在第二页中有“后退”按钮),则第一页将如下所示:

$_SESSION["arvo5"] = $_GET["value1"];
$_SESSION["arvo6"] = $_GET["value2"];

$value1 = $_SESSION["arvo5"];
$value2 = $_SESSION["arvo6"];
<?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
}
最后回显
$result


很抱歉超出了答案。

不确定失败的确切位置,但您可以尝试以下方法:

  • 在first.php中交换函数调用的顺序,以便在任何HTML之前设置
    $\u SESSION

    send_values();
    create_form();
    
  • 您正在first.php中保存到
    $\u会话[value1]
    ,但在second.php中读取到
    $\u会话[arvo5]
  • 使用
    var\u dump($\u SESSION)
    调试会话变量

你的前两页没有
为什么你有不同的会话?我的意思是:首先在
$\u会话[“value1”]
中写一些东西,然后从
$\u会话[“arvo5”]
(混乱的脸)。你的代码很难理解,这也有助于了解你的“第一页”、“第二页”和“第三页”调用,因此我们可以跟踪表单的发送位置。目前,在查看实际代码时,我们无法跟踪流程。@Magnueriksson您可以在表单的
操作
属性中看到页面名称。它们是
testilaskin.php
testilasku.php
tulostin.php
。您需要从您在
操作中的页面上的表单中获取数据,而不是表单本身所在的页面。您还需要使用相同的会话名称谢谢您的回答。我尝试了一下,但遗憾的是它没有工作。