我有一个使用POST的表单和一个变量。 如何在$ _POST中设置该变量,以便在提交表单后,我仍然可以获取变量?
我试过了
$_POST['variable'] = $variable;
结果是空的。
答案 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'] : '';