teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

参考画像記載

2018/09/07 05:04

投稿

Roo
Roo

スコア55

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,8 @@
1
- ### 前提・実現したいこと
1
+ ![イメージ説明](392bc250aed460beeb71de138772d3d3.png)### 前提・実現したいこと
2
2
  phpで、ログイン機能を作成しています。
3
3
  アクセスした際には初期画面の入力フォームを空で表示させたいです。
4
- サブミットした際にバリデーション等で返ってきたときには、そのまま表示させたいです。
4
+ サブミットした際にバリデーション等で返ってきたときには、
5
+ 間違った入力値のまま表示させたいです。
5
6
 
6
7
 
7
8
  ### 発生している問題・エラーメッセージ

1

記載場所の変更

2018/09/07 05:04

投稿

Roo
Roo

スコア55

title CHANGED
File without changes
body CHANGED
@@ -13,15 +13,13 @@
13
13
  ### 該当のソースコード
14
14
 
15
15
  ```ここに言語名を入力
16
- php
17
- ```
18
16
  <?php
19
17
  // セッション開始
20
18
  session_start();
21
19
 
22
20
  if (isset($_SESSION["NAME"])) {
23
- header("Location: my.php");
21
+ header("Location: my.php");
24
- exit;
22
+ exit;
25
23
  }
26
24
 
27
25
  $db['host'] = "localhost"; // DBサーバのURL
@@ -35,92 +33,94 @@
35
33
 
36
34
  // ログインボタンが押された場合
37
35
  if (isset($_POST["login"])) {
38
- // 1. ユーザIDの入力チェック
36
+ // 1. ユーザIDの入力チェック
39
- if (empty($_POST["userid"])) { // emptyは値が空のとき
37
+ if (empty($_POST["userid"])) { // emptyは値が空のとき
40
- $errorMessage = '※UserIDまたはPasswordが間違っています。';
38
+ $errorMessage = '※UserIDまたはPasswordが間違っています。';
41
- } else if (empty($_POST["password"])) {
39
+ } else if (empty($_POST["password"])) {
42
- $errorMessage = '※UserIDまたはPasswordが間違っています。';
40
+ $errorMessage = '※UserIDまたはPasswordが間違っています。';
43
- }
41
+ }
44
42
 
45
- if (!empty($_POST["userid"]) && !empty($_POST["password"])) {
43
+ if (!empty($_POST["userid"]) && !empty($_POST["password"])) {
46
- // 入力したユーザIDを格納
44
+ // 入力したユーザIDを格納
47
- $userid = $_POST["userid"];
45
+ $userid = $_POST["userid"];
48
46
 
49
- // 2. ユーザIDとパスワードが入力されていたら認証する
47
+ // 2. ユーザIDとパスワードが入力されていたら認証する
50
- $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']);
48
+ $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']);
51
49
 
52
- // 3. エラー処理
50
+ // 3. エラー処理
53
- try {
51
+ try {
54
- $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
52
+ $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
55
53
 
56
- $stmt = $pdo->prepare('SELECT * FROM userdata WHERE name = ?');
54
+ $stmt = $pdo->prepare('SELECT * FROM userdata WHERE name = ?');
57
- $stmt->execute(array($userid));
55
+ $stmt->execute(array($userid));
58
56
 
59
- $password = $_POST["password"];
57
+ $password = $_POST["password"];
60
58
 
61
- if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
59
+ if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
62
- // if (password_verify($password, $row['password'])) {
60
+ // if (password_verify($password, $row['password'])) {
63
- if ( $password == $row['password']) {
61
+ if ( $password == $row['password']) {
64
- session_regenerate_id(true);
62
+ session_regenerate_id(true);
65
-
66
- //正常に叩かれた場合、SQL実施 時間
67
- $sql = "UPDATE userdata SET sdate='$date' WHERE id='1'";
68
- $result = $pdo->query($sql);
69
63
 
64
+ //正常に叩かれた場合、SQL実施 時間
65
+ $sql = "UPDATE userdata SET sdate='$date' WHERE id='1'";
66
+ $result = $pdo->query($sql);
67
+
70
- // 入力したIDのユーザー名を取得
68
+ // 入力したIDのユーザー名を取得
71
- $id = $row['id'];
69
+ $id = $row['id'];
72
- $sql = "SELECT * FROM userdata WHERE id = $id"; //入力したIDからユーザー名を取得
70
+ $sql = "SELECT * FROM userdata WHERE id = $id"; //入力したIDからユーザー名を取得
73
- $stmt = $pdo->query($sql);
71
+ $stmt = $pdo->query($sql);
74
- foreach ($stmt as $row) {
72
+ foreach ($stmt as $row) {
75
- $row['name']; // ユーザー名
73
+ $row['name']; // ユーザー名
76
- }
77
- $_SESSION["NAME"] = $row['name'];
78
- header("location: my.php");
79
- exit(); // 処理終了
80
- } else {
81
- // 認証失敗
82
- $errorMessage = '※UserIDまたはPasswordが間違っています。';
83
- }
84
- } else {
85
- // 4. 認証成功なら、セッションIDを新規に発行する
86
- // 該当データなし
87
- // $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。';
88
- $errorMessage = '※UserIDまたはPasswordが間違っています。';
89
- }
90
- } catch (PDOException $e) {
91
- header("Location: 500.php");
92
- //$errorMessage = $sql;
93
- // $e->getMessage() でエラー内容を参照可能(デバッグ時のみ表示)
94
- // echo $e->getMessage();
95
- }
96
- }
97
74
  }
75
+ $_SESSION["NAME"] = $row['name'];
76
+ header("location: my.php");
77
+ exit(); // 処理終了
78
+ } else {
79
+ // 認証失敗
80
+ $errorMessage = '※UserIDまたはPasswordが間違っています。';
81
+ }
82
+ } else {
83
+ // 4. 認証成功なら、セッションIDを新規に発行する
84
+ // 該当データなし
85
+ // $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。';
86
+ $errorMessage = '※UserIDまたはPasswordが間違っています。';
87
+ }
88
+ } catch (PDOException $e) {
89
+ header("Location: 500.php");
90
+ //$errorMessage = $sql;
91
+ // $e->getMessage() でエラー内容を参照可能(デバッグ時のみ表示)
92
+ // echo $e->getMessage();
93
+ }
94
+ }
95
+ }
98
96
  ?>
99
97
 
100
98
  <!doctype html>
101
99
  <html>
102
- <head>
100
+ <head>
103
- <meta charset="UTF-8">
101
+ <meta charset="UTF-8">
104
- <title>ログイン</title>
102
+ <title>ログイン</title>
105
- <link rel="stylesheet" href="test.css">
103
+ <link rel="stylesheet" href="test.css">
106
- </head>
104
+ </head>
107
- <body>
105
+ <body>
108
- <div class="parent">
106
+ <div class="parent">
109
- <h1>login page</h1>
107
+ <h1>login page</h1>
110
- <form id="loginForm" name="loginForm" action="" method="POST">
108
+ <form id="loginForm" name="loginForm" action="" method="POST">
111
- <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div>
109
+ <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div>
112
- <br>UserIDとPasswordを入力してください</br>
110
+ <br>UserIDとPasswordを入力してください</br>
113
- <div class="kakko" >
111
+ <div class="kakko" >
114
- <label for="userid">UserID</label> &nbsp <input type="text" name="userid" value="">
112
+ <label for="userid">UserID</label> &nbsp <input type="text" name="userid" value="">
115
- <br>
113
+ <br>
116
- <label for="password">Password</label><input type="password" name="password" value="">
114
+ <label for="password">Password</label><input type="password" name="password" value="">
117
- </br>
115
+ </br>
118
- <input type="submit" id="login" name="login" value="login">
116
+ <input type="submit" id="login" name="login" value="login">
119
- </div>
117
+ </div>
120
- </div>
118
+ </div>
121
- </form>
119
+ </form>
122
- </body>
120
+ </body>
123
121
  </html>
122
+ ```
123
+
124
124
  ### 試したこと
125
125
 
126
126
  クッキーはこのページ作成してからのものは消去したつもりです。