phpでログイン画面を作成し、ログインに成功したら以下のソースコードのファイルに移る。というプログラムを作成しました。
このコードは、ログインしているかをチェックしログインしていればbanされていないか。ポイントは何ポイント所持しているかを取得し表示したいです。
ですが、500エラーになって何も表示されません。
デバッグも何も表示されませんでした。
main.php
1<?php 2ini_set("display_errors", 1); 3error_reporting(E_ALL); 4?> 5<?php 6 7 8// ログイン状態チェック 9if (!isset($_SESSION["NAME"])) { 10 header("Location: Logout.php"); 11 exit; 12} 13 14?> 15<?php 16session_start(); 17$db['host'] = "localhost:3306"; // DBサーバのURL 18$db['user'] = "db"; // ユーザー名 19$db['pass'] = "db"; // ユーザー名のパスワード 20$db['dbname'] = "db"; // データベース名 21 22 23$dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); 24 25 // 3. エラー処理 26 try { 27 $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 28 29 $stmt = $pdo->prepare('SELECT * FROM userData WHERE name = ?'); 30 $stmt->execute(array($userid)); 31 32 33 if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 34 35 session_regenerate_id(true); 36 37 // 入力したIDのユーザー名を取得 38 $id = $row['id']; 39 $sql = "SELECT * FROM userData WHERE id = $id"; //入力したIDからユーザー名を取得 40 $stmt = $pdo->query($sql); 41 foreach ($stmt as $row) { 42 43$row['ban']; 44$row['point']; 45 // ユーザー名 46 } 47 $_SESSION["ban"] = $row['ban']; 48 $_SESSION["point"] = $row['point']; 49 // 処理終了 50 } else { 51 // 認証失敗 52 $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。'; 53 } 54 55 } catch (PDOException $e) { 56 57 //$errorMessage = $sql; 58 // $e->getMessage() でエラー内容を参照可能(デバッグ時のみ表示) 59 echo $e->getMessage(); 60 } 61 ?> 62<!doctype html> 63<html> 64 <head> 65 <meta charset="UTF-8"> 66 <title>メインページ</title> 67 </head> 68 <body> 69 <h1>メインページ</h1> 70 <!-- ユーザーIDにHTMLタグが含まれても良いようにエスケープする --> 71 <p>ようこそ<u><?php echo htmlspecialchars($_SESSION["NAME"], ENT_QUOTES); ?></u>さん<br>あなたは<u><?php echo htmlspecialchars($_SESSION["point"], ENT_QUOTES); ?></u>ポイント所持しています。</p> <!-- ユーザー名をechoで表示 --> 72 <ul> 73 <li><a href="Logout.php">ログアウト</a></li> 74 </ul> 75 </body> 76</html>
回答2件
あなたの回答
tips
プレビュー