Php 将会话值传递到其他页面

Php 将会话值传递到其他页面,php,session,Php,Session,我有两个页面:order.php和checkout.php。我在订单页面中有3个项目,我想将项目的数量传递到结帐页面 我想问题在于isset$\u POST['Submit']。我的猜测是,当我按submit时,它仍然会直接进入签出页面,而不会将值放入会话变量 我一直在尝试按如下顺序传递值: <?php echo '<?xml version="1.0" encoding="iso-8859-15"?> <!DOCTYPE html PUBLIC "-//W3C//DTD

我有两个页面:order.php和checkout.php。我在订单页面中有3个项目,我想将项目的数量传递到结帐页面

我想问题在于isset$\u POST['Submit']。我的猜测是,当我按submit时,它仍然会直接进入签出页面,而不会将值放入会话变量

我一直在尝试按如下顺序传递值:

<?php echo '<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">';
session_start();

?>
<html>
<head>
<title>Lomake-esimerkki</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
</head>
<body>

<?php
error_reporting(E_ALL); // raportoidaan virheet
ini_set('display_errors','On'); // näytetään ne myös

echo <<<END
<form action="checkout.php" 
method="post">
<p>Gaming Computer - 5 e/kpl <label>How many? <input type="text" name="maara1" /></label></p>
<p>Frigge - 10 e/kpl <label>How many? <input type="text" name="maara2" /></label></p>
<p>IKEA-table - 15 e/kpl <label>How many? <input type="text" name="maara3" /></label></p>
<p><input type="submit" name="submit" value="Order"/></p>
<input type=hidden name=price1 value=5>
<input type=hidden name=price2 value=10>
<input type=hidden name=price3 value=15>
</form>
<hr />
END;

if (isset($_POST['Submit'])) { 
    $_SESSION["maara1"] = $_POST["maara1"];
    $_SESSION["maara2"] = $_POST["maara2"];
    $_SESSION["maara3"] = $_POST["maara3"];
}
?>

</body>
</html>
在checkout中,我试图打印一个会话值作为测试:

<?php echo '<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">';
session_start();
?>
<html>
<head>
<title>Lomake-esimerkki</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
</head>
<body>

<?php
error_reporting(E_ALL); // raportoidaan virheet
ini_set('display_errors','On'); // näytetään ne myös

print ($_SESSION["maara1"]);
?>
</body>
</html>
我想问题在于isset$\u POST['Submit']

是的,问题在于if-isset$\u POST['Submit']

您的提交按钮名为提交,而不是提交

两种方法都可以。你只需要让两个字母大小写都匹配就行了。 现在的情况是,PHP正在寻找一个名为Submit的命名元素

单凭这一点,就应该:

未定义的索引提交

旁注:

我注意到:

<input type=hidden name=price1 value=5>
然后打印$_会话[maara1];从那里开始

您的第一页无法识别POST变量,因为它们尚未设置

编辑2:

您可以尝试为输入设置一个value={$\u SESSION[maara1]}

即:

旁注:你可以试试,而不是

然而,我不确定以下是否是你想要的。如果action=它确实有效,但在设置之前尝试获取值是无效的。这不是会话的工作方式

如果我可以说的话,这有点像在你还没有写的测试中期待A+

但正如您在评论中所说:如果我可以从$u POST引用会话变量,那么我在第二页使用会话变量有什么意义呢

A:没错。
我就这样去做了。它有两个按钮,现在也更接近webstore。所以我按下第一个按钮来添加项目的数量,同时设置会话变量。然后我按下第二个按钮进入第二页,即结帐。你们怎么想

第一页:

<?php echo '<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">';
session_start();

?>
<html>
<head>
<title>Lomake-esimerkki</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
</head>
<body>

<?php
error_reporting(E_ALL); // raportoidaan virheet
ini_set('display_errors','On'); // näytetään ne myös

echo <<<END
<form action="teht7.php" 
method="post">
<p>Gaming Computer - 5 e/kpl <label>How many? <input type="text" name="maara1" /></label></p>
<p>Fridge - 10 e/kpl <label>How many? <input type="text" name="maara2" /></label></p>
<p>IKEA-table - 15 e/kpl <label>How many? <input type="text" name="maara3" /></label></p>
<p><input type="submit" name="submit" value="Valitse tuotteet"/></p>

</form>
<hr />

<form action="teht7_kassa.php" 
method="post">
<p><input type="submit" name="submit" value="Siirry kasssalle"/></p>
<input type=hidden name=price1 value=5>
<input type=hidden name=price2 value=10>
<input type=hidden name=price3 value=15>
</form>
<hr />

END;

if (isset($_POST['submit'])) { 
    $ostostenmaara = $_POST["maara1"] + $_POST["maara2"] + $_POST["maara3"];
    print ("Ostoskorissa on: $ostostenmaara tuotetta");
    $_SESSION["maara1"] = $_POST["maara1"];
    $_SESSION["maara2"] = $_POST["maara2"];
    $_SESSION["maara3"] = $_POST["maara3"];
}

?>

</body>
</html>
第二页:

<?php echo '<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">';
session_start();
?>
<html>
<head>
<title>Lomake-esimerkki</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
</head>
<body>

<?php
error_reporting(E_ALL); // raportoidaan virheet
ini_set('display_errors','On'); // näytetään ne myös




    $maara1 = $_SESSION["maara1"];
    $maara2 = $_SESSION["maara2"];
    $maara3 = $_SESSION["maara3"];
$summa = $_POST["price1"]*$maara1+$_POST["price2"]*$maara2+$_POST["price3"]*$maara3;
    print ("Ostostesi yhteissumma on: $summa euroa");

?>
</body>
</html>

实际上这没用。原因是当我按下submit按钮时,它会直接进入checkout.php,而不会再次查看order.php,对吗?正如您从第行看到的,重点是我必须在第一页而不是第二页设置会话内容。如果设置了$_POST['Submit']{$_session[maara1]=$_POST[maara1];$_session[maara2]=$_POST[maara2];$_session[maara3]=$_POST[maara3];},则需要移动整个块在第二页,而不是第一页。您的第一页无法识别POST变量,因为它们尚未设置@user3790046-查看我的编辑。因此,无论如何都没有必要在第一页设置会话内容?我的意思是,如果我可以从$\u POST中引用会话变量,那么在第二页使用会话变量有什么意义?
if (isset($_POST['submit']))
<input type=hidden name=price1 value=5>
<input type="hidden" name="price1" value="5">
if (isset($_POST['Submit'])) { 
    $_SESSION["maara1"] = $_POST["maara1"];
    $_SESSION["maara2"] = $_POST["maara2"];
    $_SESSION["maara3"] = $_POST["maara3"];
}
echo <<<END
<form action="checkout.php" method="post">
<p>Gaming Computer - 5 e/kpl <label>How many? <input type="text" name="maara1" value="{$_SESSION["maara1"]}" /></label></p>
<p>Frigge - 10 e/kpl <label>How many? <input type="text" name="maara2" /></label></p>
<p>IKEA-table - 15 e/kpl <label>How many? <input type="text" name="maara3" /></label></p>
<p><input type="submit" name="Submit" value="Order"/></p>
<input type=hidden name=price1 value=5>
<input type=hidden name=price2 value=10>
<input type=hidden name=price3 value=15>
</form>
<hr />
END;

if (isset($_POST['Submit'])){

$_SESSION["maara1"] = $_POST["maara1"];

$mar1 = $_SESSION["maara1"];

echo $mar1;

}
<?php echo '<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">';
session_start();

?>
<html>
<head>
<title>Lomake-esimerkki</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
</head>
<body>

<?php
error_reporting(E_ALL); // raportoidaan virheet
ini_set('display_errors','On'); // näytetään ne myös

echo <<<END
<form action="teht7.php" 
method="post">
<p>Gaming Computer - 5 e/kpl <label>How many? <input type="text" name="maara1" /></label></p>
<p>Fridge - 10 e/kpl <label>How many? <input type="text" name="maara2" /></label></p>
<p>IKEA-table - 15 e/kpl <label>How many? <input type="text" name="maara3" /></label></p>
<p><input type="submit" name="submit" value="Valitse tuotteet"/></p>

</form>
<hr />

<form action="teht7_kassa.php" 
method="post">
<p><input type="submit" name="submit" value="Siirry kasssalle"/></p>
<input type=hidden name=price1 value=5>
<input type=hidden name=price2 value=10>
<input type=hidden name=price3 value=15>
</form>
<hr />

END;

if (isset($_POST['submit'])) { 
    $ostostenmaara = $_POST["maara1"] + $_POST["maara2"] + $_POST["maara3"];
    print ("Ostoskorissa on: $ostostenmaara tuotetta");
    $_SESSION["maara1"] = $_POST["maara1"];
    $_SESSION["maara2"] = $_POST["maara2"];
    $_SESSION["maara3"] = $_POST["maara3"];
}

?>

</body>
</html>
<?php echo '<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">';
session_start();
?>
<html>
<head>
<title>Lomake-esimerkki</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
</head>
<body>

<?php
error_reporting(E_ALL); // raportoidaan virheet
ini_set('display_errors','On'); // näytetään ne myös




    $maara1 = $_SESSION["maara1"];
    $maara2 = $_SESSION["maara2"];
    $maara3 = $_SESSION["maara3"];
$summa = $_POST["price1"]*$maara1+$_POST["price2"]*$maara2+$_POST["price3"]*$maara3;
    print ("Ostostesi yhteissumma on: $summa euroa");

?>
</body>
</html>