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

时间:2014-09-04 12:21:32

标签: 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 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代码,但不起作用。有什么想法吗?

4 个答案:

答案 0 :(得分:5)

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

<?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']; ?>"/>

感谢您的回复,帮助了我。

答案 1 :(得分:2)

<?php
$error = "";
$name = isset($_POST["name"])?$_POST["name"]:""; //Added condition

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="<?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; 
            } else {
                // Update name in DB
            }
       ?>
</body>
</html>

答案 2 :(得分:1)

您可以在输入的value属性中回显$ _POST [&#39; name&#39;]。 确保检查POST值以避免XSS。 我还提出了更新数据库功能,因为如果名称的长度超过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>

答案 3 :(得分:0)

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

此外 - 你应该使用$ _SERVER [&#39; SCRIPT_NAME&#39;]而不是$ _SERVER [&#39; PHP_SELF&#39;]

火星