PHP Session没有通过多个页面传递多个帖子表单数据

时间:2017-06-08 15:52:34

标签: php forms session

我正在尝试从用户那里获取表单输入并将该信息传递给另一个表单,然后再次接受输入并将其与前一个数据一起传递给另一个将显示两个表单输入的页面。

在第一页上,用户将输入信息,单击“提交”,然后打开第二页,该页面将显示第一页的输入并要求他们输入更多信息。他们将在第二页上输入信息,然后再次点击提交,这将把他们带到第三页,显示他们之前页面中的所有输入。

当我运行我的代码时,它不会将表单中的值传递给下一页。

我知道有很多关于这个问题的问题,但我查看并尝试的所有答案都没有解决我的问题。

这是我的代码:

page1.php中

select 
    date
from 
    my_table
group by 
    client_id 
having 
    min(date) <> max(date)
    and count(*) > 1
order by
    date desc
limit 2

使page2.php

<?php
session_start();
echo 'session id: ';
echo session_id();
$_SESSION['test1'] = $_POST['test1'];
?>

<html>
<body>
    <p>Page 1 Form</p>
    <form action="page2.php" method="post">
        <input type="text" name="test1"/>
        <input type="submit" name="submit1" value="Submit!" />
    </form>
</body>
</html>

page3.php

<?php
session_start();
echo 'page2.php<br />';
echo 'session id: ';
echo session_id();
echo '<br />';
echo 'input from page1.php: ';
echo $_SESSION['test1'];
$_SESSION['test2'] = $_POST['test2'];
?>

<html>
<body>
    <p>Page 2 Form</p>
        <form action="page3.php" method="post">
            <input type="text" name="test2"/>
            <input type="submit" name="submit2" value="Submit!" />
        </form>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

$_POST['test1']永远不会被阅读,因为page1.php提交page2.phppage2.php提交test2

如果您只是在发布数据,也不需要使用会话。你可以这样做:

page1.php中

<html>
<body>
    <p>Page 1 Form</p>
    <form action="page2.php" method="post">
        <input type="text" name="test1"/>
        <input type="submit" name="submit1" value="Submit!" />
    </form>
</body>
</html>

使page2.php

<html>
<body>
    <p>Page 2 Form</p>
        <form action="page3.php" method="post">
            <input type="hidden" name="test1" value="<?php echo htmlspecialchars($_POST["test1"]);?>"/>
            <input type="text" name="test2"/>
            <input type="submit" name="submit2" value="Submit!" />
        </form>
</body>
</html>

page3.php

<?php
echo 'page3.php<br />'
var_dump($_POST["test1"]);
var_dump($_POST["test2"]);
?>

答案 1 :(得分:1)

你应该在解析值之后对值进行字段化。 我认为你有一个空话会是因为,

1. $_SESSION['test1'] = $_POST['test1'];

但是您的操作会转到&#34; page2.php&#34;,并且您在提交表单之前对会话进行了对话,这样您就会获得一个空值,更好的方法是将$ _SESSION [&#39; test1& #39;]在page2.php

2. $_SESSION['test2'] = $_POST['test2'];

你的行动将转到&#34; page3.php&#34;,你应该在page3.php上填写$ _SESSION [&#39; test2&#39;]

所以,完整的代码应如下所示。

第1页

<?php
session_start();
echo 'session id: ';
echo session_id();
?>

<html>
<body>
    <p>Page 1 Form</p>
    <form action="page2.php" method="post">
        <input type="text" name="test1"/>
        <input type="submit" name="submit1" value="Submit!" />
    </form>
</body>
</html>

第2页

<?php
session_start();
echo 'page2.php<br />';
echo 'session id: ';
echo session_id();
echo '<br />';
echo 'input from page1.php: '.$_POST['test1'];
$_SESSION['test1'] = $_POST['test1'];
?>

<html>
<body>
    <p>Page 2 Form</p>
        <form action="page3.php" method="post">
            <input type="text" name="test2"/>
            <input type="submit" name="submit2" value="Submit!" />
        </form>
</body>
</html>

第3页

<?php
session_start();
echo 'page3.php<br />'
echo 'session id: ';
echo session_id();
echo '<br />';
$_SESSION['test2'] = $_POST['test2'];
echo $_SESSION['test1'];
echo $_SESSION['test2'];
?>