Php 提交后在文本字段中保留文本

Php 提交后在文本字段中保留文本,php,html,textfield,Php,Html,Textfield,我正在构建一个表单,我希望所有插入的值都将被保留,以防表单提交失败。这是我的代码: <?php $error = ""; $name = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; // Verify $_POST['name'] greater than 4 chars if ( strlen($name) < 4 ){ $error= 'Name

我正在构建一个表单,我希望所有插入的值都将被保留,以防表单提交失败。这是我的代码:

<?php
$error = "";
$name = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $name = $_POST["name"];

   // Verify $_POST['name'] greater than 4 chars
   if ( strlen($name) < 4 ){
        $error= 'Name too short!';
    }
}
?>

<html>
<head>
</head>
<body>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" name="myForm" id="idForm">
       <input type="text" placeholder="Name" id="name" name="name" value=""/>
       <input type="submit" value="submit"/>
    </form>
        <?php 
            echo "<h2>Input:</h2>"; 
            echo $name;
            if($error) {
                // No Update AND refresh page with $name in text field
                echo "<br/>" . $error; 
            } else {
                // Update name in DB
            }
       ?>
</body>
</html>



如果希望保留所有值/输入以供进一步使用,可以使用php会话值实现

此外,您应该使用$\u服务器['SCRIPT\u NAME'],而不是$\u服务器['PHP\u SELF']


Mars

您只需在输入的value属性中回显$\u POST['name']。 确保检查POST值以避免XSS。 我还提供了updatedb函数,因为如果名称的长度超过4个字符,则不需要向用户显示表单

 <?php
$error = "";
$name = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (isset($_POST['name'])){ //change name content only if the post value is set!
       $name = filter_input (INPUT_POST, 'name', FILTER_SANITIZE_STRING); //filter value
   }
   // Verify $_POST['name'] greater than 4 chars
   if ( strlen($name) < 4 ){
        $error= 'Name too short!';
    } else {
        // Update name in DB
        // Redirect
    }
}
?>

<html>
<head>
</head>
<body>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" name="myForm" id="idForm">
       <input type="text" placeholder="Name" id="name" name="name" value="<?php echo $name; ?>"/>
       <input type="submit" value="submit"/>
    </form>
        <?php 
            echo "<h2>Input:</h2>"; 
            echo $name;
            if($error) {
                // No Update AND refresh page with $name in text field
                echo "<br/>" . $error; 
            };
       ?>
</body>
</html>


解决了。这就是我一直在寻找的解决方案。 我在输入的值标签中添加了以下内容:

<?php if (isset($_POST['name'])) echo $_POST['name']; ?>

因此,输入字段如下所示:

<input type="text" placeholder="Name" id="name" name="name" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>"/>

<input type="text" placeholder="Name" id="name" name="name" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>"/>