我有一个使用 POST 的表单和一个变量。如何在 $_POST 中设置该变量,以便在提交表单后,我仍然可以获取该变量?
我试过了
$_POST['variable'] = $variable;
它最终是空的。
您应该将该变量作为隐藏字段放在表单中,或者使用会话变量。
<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 发送)。所以总是更喜欢会话变量,除非它真的是非关键信息。
PHP是一种服务器端语言!您不能设置变量并在另一个实例上使用它。这意味着,PHP 会在您处理重新加载后重置所有内容。要设置在重新加载后定义的变量,您必须使用当前会话。见:http ://de1.php.net/manual/en/book.session.php
<?php
session_start();
$_SESSION['variable'] = 'my content';
您可以在提交之前或之后设置 $_POST['my_var'] (任何名称):
<input type="text" name="my_var" value="<?= $myvar ?>" />
(注意,字段类型不必像之前发布的那样“隐藏”),例如,如果您有从两种不同类型的屏幕处理表单的代码,并且必须在提交后更改其中一个表单变量,只需在提交后代码:
$_POST['t_mytext'] = "changed value (or whatever)";
$_POST 变量从上一页发送到您当前所在的页面。
这意味着您实际上不应设置 POST 变量,而应仅检索其内容。
如果你想在下次提交表单时设置一个 post 变量,你可以这样做:
<input type="hidden" name="variable" value="<?php echo $_POST['variable']" />
这意味着您提交的页面将能够以这种方式访问您的变量:
$variable = $_POST['variable'];
如果您希望变量与某个用户保持一致,您应该查看会话。
您可以使用 $_POST['variable'] = $foo 设置发布变量。$_POST['variable'] 将继续设置,直到 php 脚本完成执行,或者直到您使用:unset($_POST['variable'])。如果您试图在会话之间保留变量(听起来像),您应该使用会话。
在第 1 场会议中:
session_start();
$_SESSION['variable'] = 'foo';
在对服务器的另一个调用中检索:
session_start();
$variable = $_SESSION['variable'];
试试这个:
$variable = isset($_POST['variable']) ? $_POST['variable'] : '';