簡體   English   中英

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

[英]Keep text in text field after submit

我正在構建一個表單,並且我希望所有插入的值都將保留,以防表單提交失敗。 這是我的代碼:

<?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代碼,但不起作用。 有任何想法嗎?

解決了。 這是我一直在尋找的解決方案。 我在輸入的值標簽中添加了以下內容:

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

感謝您的回復,對我有所幫助。

<?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>

您可以在輸入的value屬性中回顯$ _POST ['name']。 確保檢查POST值以避免XSS。 我還設置了update DB函數,因為如果名稱的長度超過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會話值來實現。

此外-您應該使用$ _SERVER ['SCRIPT_NAME']而不是$ _SERVER ['PHP_SELF']

火星

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM