質問編集履歴

2

追記

2016/06/13 05:52

投稿

ssk
ssk

スコア332

test CHANGED
File without changes
test CHANGED
@@ -210,6 +210,154 @@
210
210
 
211
211
 
212
212
 
213
+ functions.php
214
+
215
+ ```PHP
216
+
217
+ <?php
218
+
219
+
220
+
221
+ /**
222
+
223
+ * ログイン状態によってリダイレクトを行うsession_startのラッパー関数
224
+
225
+ * 初回時または失敗時にはヘッダを送信してexitする
226
+
227
+ */
228
+
229
+ function require_unlogined_session()
230
+
231
+ {
232
+
233
+ // セッション開始
234
+
235
+ @session_start();
236
+
237
+ // ログインしていれば / に遷移
238
+
239
+ if (isset($_SESSION['user_id'])) {
240
+
241
+ header('Location: /');
242
+
243
+ exit;
244
+
245
+ }
246
+
247
+ }
248
+
249
+ function require_logined_session()
250
+
251
+ {
252
+
253
+ // セッション開始
254
+
255
+ @session_start();
256
+
257
+ // ログインしていなければ /login.php に遷移
258
+
259
+ if (!isset($_SESSION['user_id'])) {
260
+
261
+ header('Location: ./login.php');
262
+
263
+ exit;
264
+
265
+ }
266
+
267
+ }
268
+
269
+
270
+
271
+ /**
272
+
273
+ * CSRFトークンの生成
274
+
275
+ *
276
+
277
+ * @return string トークン
278
+
279
+ */
280
+
281
+ function generate_token()
282
+
283
+ {
284
+
285
+ // セッションIDからハッシュを生成
286
+
287
+ return hash('sha256', session_id());
288
+
289
+ }
290
+
291
+
292
+
293
+ /**
294
+
295
+ * CSRFトークンの検証
296
+
297
+ *
298
+
299
+ * @param string $token
300
+
301
+ * @return bool 検証結果
302
+
303
+ */
304
+
305
+ function validate_token($token)
306
+
307
+ {
308
+
309
+ // 送信されてきた$tokenがこちらで生成したハッシュと一致するか検証
310
+
311
+ return $token === generate_token();
312
+
313
+ }
314
+
315
+
316
+
317
+ /**
318
+
319
+ * htmlspecialcharsのラッパー関数
320
+
321
+ *
322
+
323
+ * @param string $str
324
+
325
+ * @return string
326
+
327
+ */
328
+
329
+ function h($str)
330
+
331
+ {
332
+
333
+ return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
334
+
335
+ }
336
+
337
+ ?>
338
+
339
+ ```
340
+
341
+
342
+
343
+ データベースはuserというテーブルで
344
+
345
+ tel
346
+
347
+ mail
348
+
349
+ password
350
+
351
+
352
+
353
+ と、構成されています。
354
+
355
+
356
+
357
+
358
+
359
+
360
+
213
361
  【追記】
214
362
 
215
363
  エラーは発生していません。

1

追記

2016/06/13 05:52

投稿

ssk
ssk

スコア332

test CHANGED
File without changes
test CHANGED
@@ -207,3 +207,9 @@
207
207
  <?php include('footer.php'); ?>
208
208
 
209
209
  ```
210
+
211
+
212
+
213
+ 【追記】
214
+
215
+ エラーは発生していません。