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
在第一页本身获取第一页表单(value1
和 value2
)的数据,但这没有多大意义,因为数据被发送到第二页。在您的第二页中,您将获得如下值:
$_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)
调试会话变量
所以我正在学习 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
在第一页本身获取第一页表单(value1
和 value2
)的数据,但这没有多大意义,因为数据被发送到第二页。在您的第二页中,您将获得如下值:
$_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 中读出 - 使用
var_dump($_SESSION)
调试会话变量
$_SESSION[arvo5]