簡體   English   中英

HTML表單中的PHP POST缺少單選按鈕

[英]PHP POST missing radio button from HTML form

它是如此簡單的代碼,但是我無法弄清楚它到底出了什么問題。 除單選按鈕外,表單中的所有其他輸入都存在。

這是我的表格:

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"
      method="POST">
  <div class="form-group">
    <label>Username</label>
    <input class="form-control" type="text" name="username">
    <span class="errorMsg"> <?php echo $usernameErr; ?></span>
  </div>
  <div class="form-group">
    <label>Password</label>
    <input class="form-control" type="password" name="password1">
    <span class="errorMsg"> <?php echo $passwordErr; ?></span>
    <label>Confirm Password</label>
    <input class="form-control" type="password" name="password2">
    <span class="errorMsg"> <?php echo $confirmPasswordErr; ?></span>
  </div>
  <hr>
  <div class="form-group">
    <label>E-mail</label>
    <input class="form-control" type="email" name="email">
    <span class="errorMsg"> <?php echo $emailErr; ?></span>
  </div>
  <div class="form-group">
    <label class="radio-inline">
      <input type="radio" name="gender" value="m"> Male
    </label>
    <label class="radio-inline">
      <input type="radio" name="gender" value="f"> Female
    </label>
    <span class="errorMsg"> <?php echo $genderErr; ?></span>
  </div>
  <div class="form-group">
    <button class="btn btn-default" type="submit" name="submitted">Submit</button>
  </div>
</form>

這是PHP部分:

<?php
  if (isset($_POST['submitted'])) {
    $min = 5;
    $max = 10;

    $username = $_POST['username'];
    $password = $_POST['password1'];
    $confirmPassword = $_POST['password2'];
    $email = $_POST['email'];
    $gender = $_POST['gender'];
    echo "----------------------";
    print_r($_POST);
  }
?>

它顯示了什么:

array(5) { ["username"]=> string(0) "" ["password1"]=> string(0) "" ["password2"]=> string(0) "" ["email"]=> string(0) "" ["submitted"]=> string(0) "" } 

為什么在其中看不到[“ gender”]?

沒有錯誤。 必須檢查單選按鈕以發送其值。

嘗試檢查默認情況下的單選按鈕之一,它應該在$ _POST中可用。

<input type="radio" name="gender" value="m" checked="checked">

您可以執行以下操作來測試選中了哪個單選按鈕:

if (isset($_POST['gender']) && $_POST['gender'] == 'm') { 
    // Male checked
} elseif (isset($_POST['gender']) && $_POST['gender'] == 'f') { 
    // Female checked 
}

我想通了。 我提交的內容沒有任何值,這意味着未對單選按鈕進行選擇。 結果,“性別”字段並未真正創建,因此$ _POST中不存在“性別”屬性。

另一個提示:您不執行任何形式的表單驗證,也不應直接訪問$ _POST數組值,您應該首先過濾它們,因為用戶可能會輸入一些混亂的內容。 例如,對於用戶名輸入,請使用以下過濾:

$login = mysqli_real_escape_string(trim((filter_input(INPUT_POST, 'login', FILTER_VALIDATE_EMAIL))));

暫無
暫無

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

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