在不丢失存储在变量上的值的情况下重新运行PHP脚本

在不丢失存储在变量上的值的情况下重新运行PHP脚本,php,html,Php,Html,如何使用第一次运行时存储在PHP变量中的相同值再次执行PHP脚本 例如: HTML: php\test.php: <html> <body> <?php $length = $_POST['length']; echo $length; ?> <form method="POST" action="php\test.php"> <input type="submit" value="Run again!" /> </form&

如何使用第一次运行时存储在PHP变量中的相同值再次执行PHP脚本

例如:
HTML:


php\test.php:

<html>
<body>
<?php
$length = $_POST['length'];
echo $length;
?>
<form method="POST" action="php\test.php">
<input type="submit" value="Run again!" />
</form>
</body>
</html>

如何使按钮再次运行脚本而不丢失文本框中输入的“长度”值?当我点击按钮时,我得到一个错误,说找不到“长度”


谢谢

我建议将它们存储在
$\u会话中
。如果这不起作用,我会将它们存储在数据库中?

我建议将它们存储在
$\u会话中。如果这不起作用,请将它们存储在数据库中?

将变量放入隐藏输入:

<input type="hidden" name="myvariable" value="value-from-first-run">

或者使用session


PS:修复您的
操作
。即使在windows上,也应使用
/
而不是
\

将变量放入隐藏输入:

<input type="hidden" name="myvariable" value="value-from-first-run">

或者使用session


PS:修复您的
操作
。您应该使用
/
而不是
\
,即使在windows上也是如此。

您需要做的就是在输入HTML字段中打印长度参数的值:

php\test.php:
<html>
<body>
<?php
$length = $_POST['length'];
echo $length;
?>
<form method="POST" action="php\test.php">
<input type="submit" value="Run again!" />
<input type="text" value="<?php echo $length?>" name="length" />
</form>
</body>
</html>
php\test.php:

您只需在输入HTML字段中打印长度参数的值:

php\test.php:
<html>
<body>
<?php
$length = $_POST['length'];
echo $length;
?>
<form method="POST" action="php\test.php">
<input type="submit" value="Run again!" />
<input type="text" value="<?php echo $length?>" name="length" />
</form>
</body>
</html>
php\test.php:

将变量放入隐藏的输入字段:

<input type="hidden"
       name="length"
       value="<?php echo htmlspecialchars($_POST['length']); ?>">

将变量放入隐藏的输入字段中:

<input type="hidden"
       name="length"
       value="<?php echo htmlspecialchars($_POST['length']); ?>">

将长度存储在$\u会话中。像这样:

<html>
<body>
<?php
session_start();

//  First form
$form1 = '<form method="post" action="">
<input type="text" name="length" />
<input type="submit" value="Run again!" />
</form>';

// Resend form
$form2 = '<form method="POST" action="">
<input type="submit" value="Run again!" />
</form>';

if (isset($_POST['length'])) {
    $length = $_SESSION['length'] = $_POST['length'];
    print $length . '<br>';
    print $form2;
} else if (isset($_SESSION['length'])){
    $length = $_SESSION['length'];
    print $length . '<br>';
    print $form2;
} else {
    print $form1;
}
?>
</body>
</html>

将长度存储在$\u会话中。像这样:

<html>
<body>
<?php
session_start();

//  First form
$form1 = '<form method="post" action="">
<input type="text" name="length" />
<input type="submit" value="Run again!" />
</form>';

// Resend form
$form2 = '<form method="POST" action="">
<input type="submit" value="Run again!" />
</form>';

if (isset($_POST['length'])) {
    $length = $_SESSION['length'] = $_POST['length'];
    print $length . '<br>';
    print $form2;
} else if (isset($_SESSION['length'])){
    $length = $_SESSION['length'];
    print $length . '<br>';
    print $form2;
} else {
    print $form1;
}
?>
</body>
</html>


Oops。HTML表单上还有一个提交按钮。你知道,你可以编辑你的问题;)对多步骤表单应用$\u会话。HTML表单上还有一个提交按钮。你知道,你可以编辑你的问题;)将$\会话用于多步骤表单请记住,用户(对web有足够的了解)可以更改隐藏输入的值。这也不起作用。它说的是未定义的索引:“长度”。有什么比隐藏输入更好的替代方法吗?会话因为用户无法伪造这些值,也无法看到它们,所以理论上你可以把你想要的东西放在那里,并保持安全(必须采取一些预防措施,禁止会话cookie劫持等,但您可以在web上找到有关该主题的更多阅读资料,因此,如果不确定,请进入会话记住,用户(对web有足够的了解)可以更改隐藏输入的值。这也不起作用。它说的是未定义的索引:“长度”。有什么比隐藏输入更好的替代方法吗?会话因为用户无法伪造这些值,也无法看到它们,所以从理论上讲,您可以在那里放置任何您想要的内容,并保持安全(必须采取一些预防措施,以禁止会话cookie劫持等,但您可以在web上找到更多关于该主题的阅读资料,因此如果不确定-转到sessionmate,如果您直接运行该页面而不来自任何表单帖子,它将为您提供未定义的索引。在您的问题中有两个页面。无论如何,您似乎想要一个单页表单。请检查我的答案。)编辑过的帖子!mate如果你不从任何表单帖子直接运行该页面,它会为你提供未定义的索引。在你的问题中有两页。无论如何,你似乎想要一页表单。请查看我编辑过的帖子!