2017-05-13 16 views
0

これは単純なコードですが、何が間違っているのかわかりません。ラジオボタンを除いて、フォームからの他のすべての入力が存在します。これは、PHPの一部であるHTML POSTフォームのラジオボタンがないPHP POST

<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 
    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) "" } 

私は見ていないですなぜ[ "性別"]その中に?

答えて

0

何も問題ありません。ラジオボタンの値が送信されるかどうかをチェックする必要があります。

ラジオボタンの1つをデフォルトとしてチェックしてみてください。これは$ _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 
} 
+0

ありがとうございました。私はそれをチェックしようとしなかったと信じられない.... – alxhftw

0

私は考え出しました。値なしで送信していたため、ラジオボタンの選択が行われていませんでした。その結果、 'gender'フィールドは実際には作成されないので、$ _POSTには 'gender'属性は存在しません。

0

もう1つのヒント:フォームの検証のためのフォームを使用していないため、$ _POST配列の値に直接アクセスしないでください。 たとえば、ユーザー名入力の場合は、次のようなフィルタリングを使用します。

$login = mysqli_real_escape_string(trim((filter_input(INPUT_POST, 'login', FILTER_VALIDATE_EMAIL)))); 
関連する問題