3

我有一个使用 POST 的表单和一个变量。如何在 $_POST 中设置该变量,以便在提交表单后,我仍然可以获取该变量?

我试过了

$_POST['variable'] = $variable;

它最终是空的。

4

6 回答 6

6

您应该将该变量作为隐藏字段放在表单中,或者使用会话变量。

隐藏字段

<form method="POST" action="someactionpage.php">
    <input type="hidden" name="my_var" value="<?php echo $myvar; ?>" />
    <!-- ... -->
</form>

并在提交表单时在someactionpage.php中获取它$_POST['my_var']

会话变量

只需将其存储在 $_SESSION 变量中

<?php
    session_start (); // Just once at the beginning of your code
    // ...
    $_SESSION['my_var'] = $myvar;
?>

并在另一个页面上检索它

<?php
    session_start (); // Same than before
    // ...
    echo $_SESSION['my_var'];
?>

附加信息

正如一些答案和评论中指出的那样,您应该始终检查变量是否存在,因为您不能保证这一点。只需使用isset 功能

if (isset ($_SESSION['my_var']))
    // Do stuff with $_SESSION['my_var']

或者

if (isset ($_POST['my_var']))
    // Do stuff with $_POST['my_var']

正如Kolink在评论中指出的那样,用户可以轻松查看和更改字段值(通过 POST 发送)。所以总是更喜欢会话变量,除非它真的是非关键信息。

于 2013-06-23T18:51:59.370 回答
1

PHP是一种服务器端语言!您不能设置变量并在另一个实例上使用它。这意味着,PHP 会在您处理重新加载后重置所有内容。要设置在重新加载后定义的变量,您必须使用当前会话。见:http ://de1.php.net/manual/en/book.session.php

<?php
session_start();
$_SESSION['variable'] = 'my content';
于 2013-06-23T18:57:44.057 回答
1

您可以在提交之前或之后设置 $_POST['my_var'] (任何名称):

    <input type="text" name="my_var" value="<?= $myvar ?>" />

(注意,字段类型不必像之前发布的那样“隐藏”),例如,如果您有从两种不同类型的屏幕处理表单的代码,并且必须在提交后更改其中一个表单变量,只需在提交后代码:

    $_POST['t_mytext'] = "changed value (or whatever)";
于 2015-04-01T11:30:49.757 回答
0

$_POST 变量从上一页发送到您当前所在的页面。

这意味着您实际上不应设置 POST 变量,而应仅检索其内容。

如果你想在下次提交表单时设置一个 post 变量,你可以这样做:

<input type="hidden" name="variable" value="<?php echo $_POST['variable']" />

这意味着您提交的页面将能够以这种方式访问​​您的变量:

$variable = $_POST['variable'];

如果您希望变量与某个用户保持一致,您应该查看会话。

于 2013-06-23T18:53:32.287 回答
0

您可以使用 $_POST['variable'] = $foo 设置发布变量。$_POST['variable'] 将继续设置,直到 php 脚本完成执行,或者直到您使用:unset($_POST['variable'])。如果您试图在会话之间保留变量(听起来像),您应该使用会话。

在第 1 场会议中:

session_start();
$_SESSION['variable'] = 'foo';

在对服务器的另一个调用中检索:

session_start();
$variable = $_SESSION['variable'];
于 2013-06-23T18:54:06.627 回答
-1

试试这个:

$variable = isset($_POST['variable']) ? $_POST['variable'] : '';
于 2013-06-23T18:51:17.247 回答