webサービスのユーザー登録画面を作成中ですが、
登録フォームから各項目の入力を行ってもデータベースに反映されません。
この原因をご教示頂けませんでしょうか?
2つ目の「check.php」に原因があるように思われます。
・データベース
phpmyadminをしております。下記添付のような状態です。
コードは下記4つです。
1.index.php
<?php session_start(); if (!empty($_POST)) { //エラー項目の確認 if ($_POST['name'] == '') { $error['name'] = 'blank'; } if ($_POST['mail'] == '') { $error['mail'] = 'blank'; } if (strlen($_POST['pass']) < 4) { $error['pass'] = 'length'; } if ($_POST['pass'] == '') { $error['pass'] = 'blank'; } if (empty($error)) { $_SESSION['ドットインストール'] = $_POST; header('Location: check.php'); exit(); } } // 書き直し if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'rewrite') { $_POST = $_SESSION['ドットインストール']; $error['rewrite'] = true; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>新規会員登録</title> </head> <body> <p>必要事項をご記入ください</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ユーザー名<font color="red"> 必須</font></dt> <dd> <input type="text" name="name" size="35" maxlength="255" value="<?php if (isset($error['name'])) { echo htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); } ?>"> <?php if (isset($error['name']) && $error['name'] == 'blank'): ?> <p><font color="red">* ユーザー名を入力してください</font></p> <?php endif; ?> </dd> <dt>メールアドレス<font color="red"> 必須</font></dt> <dd> <input type="text" name="mail" size="35" maxlength="255" value="<?php if (isset($error['mail'])) { echo htmlspecialchars($_POST['mail'], ENT_QUOTES, 'UTF-8'); } ?>"> <?php if (isset($error['mail']) && $error['mail'] == 'blank'): ?> <p><font color="red">* メールアドレスを入力してください</font></p> <?php endif; ?> <?php if (isset($error['mail']) && $error['mail'] == 'duplicate'): ?> <p><font color="red">* 指定されたメールアドレスは既に登録されています</font></p><?php endif; ?> </dd> <dt>パスワード<font color="red"> 必須</font></dt> <dd> <input type="password" name="pass" size="10" maxlength="20" value="<?php if (isset($error['pass'])) { echo htmlspecialchars($_POST['pass'], ENT_QUOTES, 'UTF-8'); } ?>"> <?php if (isset($error['pass']) && $error['pass'] == 'blank'): ?> <p><font color="red">* パスワードを入力してください</font></p> <?php endif; ?> <?php if (isset($error['pass']) && $error['pass'] == 'length'): ?> <p><font color="red">* パスワードは4文字以上で入力してください</font></p> <?php endif; ?> </dd> </dl> <div><input type="submit" value="入力内容を確認"></div> </form> </body> </html>コード
2.check.php
<?php session_start(); require('dbconnect.php'); if(!isset($_SESSION['ドットインストール'])){ header('Location: index.php'); exit(); } if(!empty($_POST)){ //登録処理をする $sql = sprintf('INSERT INTO users SET name="", mail="%s", pass="%s"', mysqli_real_escape_string($db, $_SESSION['ドットインストール']['name']), mysqli_real_escape_string($db, $_SESSION['ドットインストール']['mail']), mysqli_real_escape_string($db, sha1($_SESSION['ドットインストール']['pass'])) ); mysqli_query($db, $sql) or die(mysqli_error($db)); unset($_SESSION['ドットインストール']); header('Location: thanks.php'); exit(); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>新規会員登録</title> </head> <body> <form action="" method="post"> <dl> <dt>ユーザー名</dt> <dd> <?php echo htmlspecialchars($_SESSION['ドットインストール']['name'], ENT_QUOTES, 'UTF-8'); ?> </dd> <dt>メールアドレス</dt> <dd> <?php echo htmlspecialchars($_SESSION['ドットインストール']['mail'], ENT_QUOTES, 'UTF-8'); ?> </dd> <dt>パスワード</dt> <dd> 【表示されません】 </dd> </dl> <div><a href="index.php?action=rewrite">« 書き直す</a> <input type="submit" value="登録する"></div> </form> </body> </html>コード
3 thanks.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>新規会員登録</title> </head> <body> <p>ユーザー登録が完了しました</p> <p><a href="../">ログインする</a></p> </body> </html>コード
4 dbconnect.php
<?php $db = mysqli_connect('localhost', 'root', '', 'Loginpage') or die(mysqli_connect_error()); mysqli_set_charset($db, 'utf8'); ?>コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。