设置$ _POST变量

时间:2013-06-23 18:49:53

标签: php forms variables post

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

我试过了

$_POST['variable'] = $variable;

结果是空的。

6 个答案:

答案 0 :(得分:6)

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

隐藏字段

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

在表单提交后,使用$_POST['my_var'] someactionpage.php 之后获取。

会话变量

只需将其存储在$ _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 function

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

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

正如评论中Kolink所指出的那样,用户可以很容易地看到并更改字段值(通过POST发送)。所以总是喜欢会话变量,除非它确实是非关键信息。

答案 1 :(得分:1)

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

<?php
session_start();
$_SESSION['variable'] = 'my content';

答案 2 :(得分:1)

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

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

(注意,字段类型不必隐藏&#39;如前所述) 例如,如果您有从两种不同类型的屏幕处理表单的代码,并且必须在提交后更改其中一种表单变量,则只需在提交后的代码中执行此操作:

    $_POST['t_mytext'] = "changed value (or whatever)";

答案 3 :(得分:0)

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

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

如果您想在下次提交表单时设置发布变量,可以执行以下操作:

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

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

$variable = $_POST['variable'];

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

答案 4 :(得分:0)

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

会议1中的

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

在另一次调用服务器时检索:

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

答案 5 :(得分:-1)

试试这个:

$variable = isset($_POST['variable']) ? $_POST['variable'] : '';