性別以外の
ユーザー名、パスワード等は、データベースに登録されるのですが、
性別のみ登録されません。
原因がわかりません。
ちなみに、
phpmyadminでカラムsextype
データ型はtinyint(1)で登録しました。
php
1<?php 2require 'password.php'; // password_hash()はphp 5.5.0以降の関数のため、バージョンが古くて使えない場合に使用 3// セッション開始 4session_start(); 5 6$db['host'] = "xxx"; // DBサーバのURL 7$db['user'] = "xxx"; // ユーザー名 8$db['pass'] = "xxx"; // ユーザー名のパスワード 9$db['dbname'] = "xxx"; // データベース名 10 11// エラーメッセージ、登録完了メッセージの初期化 12$errorMessage = ""; 13$signUpMessage = ""; 14 15// ログインボタンが押された場合 16if (isset($_POST["signUp"])) { 17 // 1. ユーザIDの入力チェック 18 if (empty($_POST["username"])) { // 値が空のとき 19 $errorMessage = 'ユーザーIDが未入力です。'; 20 } else if (empty($_POST["password"])) { 21 $errorMessage = 'パスワードが未入力です。'; 22 } else if (empty($_POST["password2"])) { 23 $errorMessage = 'パスワードが未入力です。'; 24 } 25 26 if (!empty($_POST["username"]) && !empty($_POST["sextype"]) && !empty($_POST["password"]) && !empty($_POST["password2"]) && $_POST["password"] === $_POST["password2"]) { 27 // 入力したユーザIDとパスワードを格納 28 $username = $_POST["username"]; 29 $password = $_POST["password"]; 30 $sextype = $_POST["sextype"]; 31 32 // 2. ユーザIDとパスワードが入力されていたら認証する 33 $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); 34 35 // 3. エラー処理 36 try { 37 $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 38 39 $stmt = $pdo->prepare("INSERT INTO userData(name, password) VALUES (?, ?)"); 40 41 $stmt->execute(array($username, password_hash($password, PASSWORD_DEFAULT))); // パスワードのハッシュ化を行う(今回は文字列のみなのでbindValue(変数の内容が変わらない)を使用せず、直接excuteに渡しても問題ない) 42 $userid = $pdo->lastinsertid(); // 登録した(DB側でauto_incrementした)IDを$useridに入れる 43 44 $signUpMessage = '登録が完了しました。あなたの登録IDは '. $userid. ' です。パスワードは '. $password. ' です。'; // ログイン時に使用するIDとパスワード 45 } catch (PDOException $e) { 46 $errorMessage = 'データベースエラー'; 47 // $e->getMessage() でエラー内容を参照可能(デバック時のみ表示) 48 // echo $e->getMessage(); 49 } 50 } else if($_POST["password"] != $_POST["password2"]) { 51 $errorMessage = 'パスワードに誤りがあります。'; 52 } 53} 54?> 55 56<!doctype html> 57<html> 58 <head> 59 <meta charset="UTF-8"> 60 <title>新規登録</title> 61 </head> 62 <body> 63 <h1>新規登録画面</h1> 64 <form id="loginForm" name="loginForm" action="" method="POST"> 65 <fieldset> 66 <legend>新規登録フォーム</legend> 67 <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div> 68 <div><font color="#0000ff"><?php echo htmlspecialchars($signUpMessage, ENT_QUOTES); ?></font></div> 69 <label for="username">ユーザー名</label><input type="text" id="username" name="username" placeholder="ユーザー名を入力" value="<?php if (!empty($_POST["username"])) {echo htmlspecialchars($_POST["username"], ENT_QUOTES);} ?>"> 70 <br> 71 <label for="password">パスワード</label><input type="password" id="password" name="password" value="" placeholder="パスワードを入力"> 72 <br> 73 <label for="password2">パスワード(確認用)</label><input type="password" id="password2" name="password2" value="" placeholder="再度パスワードを入力"> 74 75 <br> 76 <span>性別</span> 77 <input name="sextype" value="1" checked="checked" class="" id="sextype1" type="radio"> 78 <label for="sextype1">男性</label> 79 <input name="sextype" value="2" class="" id="sextype2" type="radio"> 80 <label for="sextype2">女性</label> 81 82 <input type="submit" id="signUp" name="signUp" value="新規登録"> 83 </fieldset> 84 </form> 85 <br> 86 <form action="Login.php"> 87 <input type="submit" value="戻る"> 88 </form> 89 </body> 90</html>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。