###前提・実現したいこと
現在、少々急ぎで PHPとmysqlを使ったログイン・マイページの作成しています。
手っ取り早くネットで見つけたコードをカスタマイズしているのですが、
データベースからのデータの取得から表示がよくわかりません。
ログイン機能はネットにあるコードを使用しているのでログインできますが、
ログイン後の画面でデータベースにあるログイン者の情報を表示させたいのです。
login.php でログイン
ログイン後に表示されるmain.phpにログイン者の情報を表示
データベースにある情報
データベース名:data
テーブル:userData
カラム:id, pas, name, mail, ag, bir,
この中で例えば、ログイン者のagだけ表示させるとしたら
どのようなコードをmain.phpに加える必要があるでしょうか?
###該当のソースコード(ネットのコピペ)
////////////////// login.php ////////////////// <?php require 'password.php'; session_start(); $db['host'] = "〇〇"; $db['user'] = "〇〇"; $db['pass'] = "*****"; $db['dbname'] = "data"; $errorMessage = ""; if (isset($_POST["login"])) { if (empty($_POST["userid"])) { $errorMessage = 'ユーザーIDが未入力です。'; } else if (empty($_POST["password"])) { $errorMessage = 'パスワードが未入力です。'; } if (!empty($_POST["userid"]) && !empty($_POST["password"])) { // 入力したユーザIDを格納 $userid = $_POST["userid"]; // 2. ユーザIDとパスワードが入力されたら認証 $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); // 3. エラー処理 try { $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); $stmt = $pdo->prepare('SELECT * FROM userData WHERE id = ?'); $stmt->execute(array($userid)); $password = $_POST["password"]; if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if (password_verify($password, $row['password'])) { session_regenerate_id(true); // 入力したIDのユーザー名を取得 $id = $row['id']; $sql = "SELECT * FROM userData WHERE id = $id"; //入力したIDからユーザー名を取得 $stmt = $pdo->query($sql); foreach ($stmt as $row) { $row['name']; // ユーザー名 } $_SESSION["NAME"] = $row['name']; header("Location: Main.php"); // メイン画面へ遷移 exit(); // 処理終了 } else { // 認証失敗 $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。'; } } else { // 4. 認証成功なら、セッションIDを新規に発行する // 該当データなし $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。'; } } catch (PDOException $e) { $errorMessage = 'データベースエラー'; //$errorMessage = $sql; // $e->getMessage() でエラー内容を参照可能(デバック時のみ表示) // echo $e->getMessage(); } } } ?> <!doctype html> <html> <head> <meta charset="UTF-8"> <title>ログイン</title> </head> <body> <h1>ログイン画面</h1> <form id="loginForm" name="loginForm" action="" method="POST"> <fieldset> <legend>ログインフォーム</legend> <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div> <label for="userid">ユーザーID</label><input type="text" id="userid" name="userid" placeholder="ユーザーIDを入力" value="<?php if (!empty($_POST["userid"])) {echo htmlspecialchars($_POST["userid"], ENT_QUOTES);} ?>"> <br> <label for="password">パスワード</label><input type="password" id="password" name="password" value="" placeholder="パスワードを入力"> <br> <input type="submit" id="login" name="login" value="ログイン"> </fieldset> </form> <br> <form action="SignUp.php"> <fieldset> <legend>新規登録フォーム</legend> <input type="submit" value="新規登録"> </fieldset> </form> </body> </html> ////////////////// main.php ////////////////// <?php session_start(); // ログイン状態チェック if (!isset($_SESSION["NAME"])) { header("Location: Logout.php"); exit; } ?> <!doctype html> <html> <head> <meta charset="UTF-8"> <title>メイン</title> </head> <body> <h1>メイン画面</h1> <!-- ユーザーIDにHTMLタグが含まれても良いようにエスケープする --> <p>ようこそ<u><?php echo htmlspecialchars($_SESSION["NAME"], ENT_QUOTES); ?></u>さん</p> <!-- ユーザー名をechoで表示 --> <ul> <li><a href="Logout.php">ログアウト</a></li> </ul> </body> </html>
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2017/08/10 02:14