2014-09-04 64 views
0

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

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

回答

3

已解決。這是我正在尋找的解決方案。 我輸入的值標籤增加了以下內容:

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

如果您想保留所有值/輸入以供進一步使用,可以使用php會話值實現。

而且 - 你應該使用$ _ SERVER [ 'SCRIPT_NAME'],而不是$ _ SERVER [ 'PHP_SELF']

火星

0

可以在價值屬性只回聲$ _ POST [ '名']輸入。 確保您檢查POST值以避免XSS。 我也放了更新DB功能,因爲如果名稱中的字符長度更長,您不需要向用戶顯示窗體!

<?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> 
相關問題