如何管理$ _POST []和$ _SESSION []来记住PHP中多个页面的表单?

时间:2011-12-26 00:26:45

标签: php session post

我正在玩小练习来理解会话和帖子,但不能让他们一起表现。你能帮忙吗?

场合

我有以下几页

  1. Page 1
  2. Page 2
  3. 第1页上,我有一个输入表单。输入是一个复选框,例如:

    <input type="checkbox" name="test" >
    
    • 我希望能够在没有收到错误的情况下到达第1页

    • 我希望复选框的未选中状态为 value of 0 ,所选状态为 value of 1

    • 无论分配了什么值(通过复选框),我希望该值存储在可以从第1页第2页的会话中和回来

    • 存储会话值后,我想选择或取消选中第1页上的复选框来更改值,允许我从第1页使用新值第2页返回


    以下是我的代码(不起作用):

    Page 1

    注意:我将此代码与表单放在同一页面上。 checkbox name="test"

    if (isset($_POST['test']))
    {
    $_SESSION['test'] = $_POST['test'];
    }
    
    if (empty($_SESSION['test']))
    {
    $_SESSION['test'] = 0;
    }   
    else
    {
    $_SESSION['test'] = 1;
    }
    
    var_dump($_SESSION['test']);
    

    第2页

    var_dump($_SESSION['test']);
    

    先谢谢你的帮助。


    更新

    如果您想查看这两个页面的完整代码,我已在此处发布:

    第1页:

    http://www.diigo.com/item/note/17zt6/ux45

    第2页:

    http://www.diigo.com/item/note/17zt6/gv6k

3 个答案:

答案 0 :(得分:1)

<?php

session_start();
if (isset($_POST['submit']) && isset($_POST['test']))
{
    $_SESSION['test'] = true; // sets the session if the checkbox was set
} elseif (isset($_POST['submit']) && !isset($_POST['test'])) {
    if (isset($_SESSION['test'])) unset($_SESSION['test']);
}

$checked = '';
if (isset($_SESSION['test'])) {
    $checked = 'checked="checked"'; // check the checkbox by default if the session is set
}
echo '<input type="checkbox" name="test" '.$checked.'>';
echo '<input type="submit" name="submit" value="Submit">';

答案 1 :(得分:0)

为什么不使用if (!isset($_SESSION['test']))代替if (empty($_SESSION['test']))

答案 2 :(得分:0)

将此代码用于page1.php

<?php 
session_start();

if(isset($_POST['submit']))
{
    if (isset($_POST['test']))
    {
        $_SESSION['test'] = $_POST['test'];
    }
    else
    {
        $_SESSION['test'] = 0;
    }
}
if (empty($_SESSION['test']))
{
    $_SESSION['test'] = 0;
    $checked = '';
} 
else
{
    $_SESSION['test'] = 1;
    $checked = 'checked="checked"';
}
var_dump($_SESSION['test']);
?>


<!DOCTYPE html>
<html>
<head>
    <title>Page 1</title>
</head>
<body>
    <form action="page1.php" method="post">
        Test:
        <input type="checkbox" name="test" <?php echo $checked; ?>>
        <input type="submit" name="submit" value="Test!">
    </form>
    <br />
    <a href="page2.php">Continue</a>
</body>
</html>