PHP会话变量在多个页面中

时间:2012-09-28 19:46:30

标签: php session

所以,我在这里有page1.php:

<form action="action_form.php" method="post">
<select name="font_syle">
<option value="tahoma">Tahoma</option>
<option value="arial">Arial</option>
</select>
<input type="submit" value="Done" />
</form>

这里是action_form.php:

<?php
session_start();
$font_style = $_POST["font_syle"];
$_SESSION["font_syle"] = $font_style;
if($_SESSION["font_syle"] == 'tahoma') $font_style = 10;
else if($_SESSION["font_syle"] == 'arial') $font_style = 20;

$total = $font_style;

echo $total;
?>

这里是page.php

<?php 
ob_start();
include 'action_form.php';
ob_end_clean();

echo $total;
?>

我不知道为什么“$ total”的值不会打印在page.php

3 个答案:

答案 0 :(得分:4)

page.php包含action_form.php。这会将$font_style的值设置为:

$font_style = $_POST["font_syle"];

由于page.php尚未通过表单发布,因此将$font_style设置为空字符串。因此,当你回应它时,没有任何东西可以回应。

答案 1 :(得分:0)

您可以在page.php中执行echo $_SESSION["font_syle"];打印

答案 2 :(得分:0)

原因是您的表单将转到action_form.php并将数据存储在变量$_SESSION中。

当您打开page.php时,数据不再存在,因为$total不会在页面之间移动。

这里的解决方案是改变:

<form action="action_form.php" method="post">

<form action="page.php" method="post">

OR

改为打印会话变量。