回答編集履歴

3

修正

2019/11/09 01:50

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -178,7 +178,7 @@
178
178
 
179
179
 
180
180
 
181
- いずれにしてもheader()の前に出力があるのでPHPの構文的にNGですし、なくしたら何も表示く勝手に戻される。
181
+ いずれにしてもheader()の前に出力があるのでPHPの構文的にNGですし、そのNG出力をなくしたら何も表示く勝手に戻される。
182
182
 
183
183
 
184
184
 

2

修正

2019/11/09 01:50

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -82,7 +82,85 @@
82
82
 
83
83
 
84
84
 
85
+ 6.きちんとコードフォーマット、インデントをしよう。
86
+
87
+ login_output.phpをEclipseでフォーマットかけた上で、整理してみました。
88
+
89
+ 提示のコードとどっちが読みやすいか見比べてみると良いです。
90
+
91
+
92
+
93
+ ※ロジックは直してません。
94
+
95
+ ```php
96
+
97
+ <?php
98
+
99
+ session_start();
100
+
101
+ unset($_SESSION["customer"]);
102
+
103
+
104
+
105
+ $pdo = new PDO("mysql:host=localhost;dbname=shop7;charset=utf8", "staff", "password");
106
+
107
+ $sql = $pdo->prepare("select*from customer where login=? and password=?");
108
+
109
+
110
+
111
+ foreach ($sql->fetchAll() as $row) {
112
+
113
+
114
+
115
+ $_SESSION["customer"] = [
116
+
117
+ "id" => $row["id"],
118
+
119
+ "name" => $row["name"],
120
+
121
+ "address" => $row["address"],
122
+
123
+ "login" => $row["login"],
124
+
125
+ "password" => $row["password"]
126
+
127
+ ];
128
+
129
+ }
130
+
131
+
132
+
133
+ if (isset($_SESSION["customer"])) {
134
+
135
+ echo "いらっしゃいませ", $_SESSION["customer"]["name"], "さん";
136
+
137
+
138
+
139
+ header('Location: list.php');
140
+
141
+ exit();
142
+
143
+ }
144
+
145
+ else {
146
+
147
+ echo "ログイン名またはパスワードが違います";
148
+
149
+ }
150
+
151
+
152
+
153
+ ```
154
+
155
+ 細かいこと言うとログイン後は[session_regenerate_id()](https://www.php.net/manual/ja/function.session-regenerate-id.php)を流した方が良いし、`$_SESSION["customer"]`のunset()はログイン時ではなくログアウト時(自動ログアウト含めて)であるべき。
156
+
157
+
158
+
159
+ # ここから本題
160
+
161
+
162
+
85
- .そりゃ、速攻でログアウトしますわ
163
+ .そりゃ、速攻でログアウトしますわ
86
164
 
87
165
  ```php
88
166
 
@@ -127,3 +205,11 @@
127
205
 
128
206
 
129
207
  何らかの方法を用いてタイムアウトしたことが分かる区分やフラグなどを渡してメッセージを表示させるのがベターなやり方です。(そこは考えてください。画面間情報の受け渡しなので手法はそこまで種類はありません)
208
+
209
+
210
+
211
+ -------
212
+
213
+
214
+
215
+ 細かいことを言い続けるとキリがないので、他にも気になる点はたくさんありますが、この辺で。

1

修正

2019/11/08 12:20

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- 2.「意味のない空白行」という理由で ファイルの最後の?>もその後に出力ないなら不要。
49
+ 2.同じく「意味のない空白行」という理由で [ファイルの最後の?>もその後に出力ないなら不要](https://qiita.com/tadsan/items/fb496e450fc27c8c4494#%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%A8%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%81%AF%E5%88%86%E3%81%91%E3%82%8D)
50
50
 
51
51
 
52
52