回答編集履歴

2

修正

2017/03/10 04:54

投稿

s8_chu
s8_chu

スコア14731

test CHANGED
@@ -508,13 +508,13 @@
508
508
 
509
509
  <ul>
510
510
 
511
- <li><?= h($name) ?>:<?= h($_SESSION["name"]) ?></li>
511
+ <li><?= h($_SESSION["name"]) ?></li>
512
-
512
+
513
- <li><?= h($gender) ?>:<?= h($_SESSION["gender"]) ?></li>
513
+ <li><?= h($_SESSION["gender"]) ?></li>
514
-
514
+
515
- <li><?= h($age) ?>代:<?= h($_SESSION["age"]) ?></li>
515
+ <li><?= h($_SESSION["age"]) ?></li>
516
-
516
+
517
- <li><?= h($message) ?>:<?= h($_SESSION["message"]) ?></li>
517
+ <li><?= h($_SESSION["message"]) ?></li>
518
518
 
519
519
  </ul>
520
520
 

1

追記

2017/03/10 04:54

投稿

s8_chu
s8_chu

スコア14731

test CHANGED
@@ -299,3 +299,335 @@
299
299
  </html>
300
300
 
301
301
  ```
302
+
303
+
304
+
305
+ 追記
306
+
307
+ ---
308
+
309
+ ```PHP
310
+
311
+ <?php
312
+
313
+ if (session_status() !== PHP_SESSION_ACTIVE) {
314
+
315
+ session_cache_expire(0);
316
+
317
+ session_cache_limiter('private_no_expire');
318
+
319
+ session_start();
320
+
321
+ }
322
+
323
+ if (!isset($_SESSION["token"])) {
324
+
325
+ $_SESSION["token"] = "";
326
+
327
+ }
328
+
329
+
330
+
331
+ $errorm = "";
332
+
333
+ $state = "";
334
+
335
+
336
+
337
+ function h($str)
338
+
339
+ {
340
+
341
+ return htmlspecialchars($str, ENT_QUOTES, "UTF-8");
342
+
343
+ }
344
+
345
+
346
+
347
+ function getToken()
348
+
349
+ {
350
+
351
+ $token = null;
352
+
353
+ if (is_null($token)) {
354
+
355
+ $token = hash("sha256", uniqid());
356
+
357
+ }
358
+
359
+ $_SESSION["token"] = $token;
360
+
361
+ return $token;
362
+
363
+ }
364
+
365
+
366
+
367
+ function checkToken($str)
368
+
369
+ {
370
+
371
+ return (isset($_SESSION["token"]) && $_SESSION["token"] === $str);
372
+
373
+ }
374
+
375
+
376
+
377
+ foreach (["name", "gender", "age", "message"] as $value) {
378
+
379
+ $$value = "";
380
+
381
+ }
382
+
383
+
384
+
385
+ if (filter_input(INPUT_POST, "submit")) {
386
+
387
+ if (checkToken(filter_input(INPUT_POST, "token"))) {
388
+
389
+ $state = "submit";
390
+
391
+ unset($_SESSION["token"]);
392
+
393
+ foreach (["name", "gender", "age", "message"] as $value) {
394
+
395
+ if (empty(filter_input(INPUT_POST, $value))) {
396
+
397
+ $errorm = "未入力箇所があります。";
398
+
399
+ $state = "";
400
+
401
+ break;
402
+
403
+ } else {
404
+
405
+ $_SESSION[$value] = filter_input(INPUT_POST, $value);
406
+
407
+ }
408
+
409
+ }
410
+
411
+ } else {
412
+
413
+ $state = "";
414
+
415
+ foreach (["name", "gender", "age", "message"] as $value) {
416
+
417
+ $$value = filter_input(INPUT_POST, $value);
418
+
419
+ }
420
+
421
+ }
422
+
423
+ } else if (filter_input(INPUT_POST, "confirm")) {
424
+
425
+ if (checkToken(filter_input(INPUT_POST, "token"))) {
426
+
427
+ $state = "confirm";
428
+
429
+ unset($_SESSION["token"]);
430
+
431
+ foreach (["name", "gender", "age", "message"] as $value) {
432
+
433
+ if (empty(filter_input(INPUT_POST, $value))) {
434
+
435
+ $errorm = "未入力箇所があります。";
436
+
437
+ $state = "";
438
+
439
+ break;
440
+
441
+ } else {
442
+
443
+ if ((!isset($_SESSION[$value])) || $_SESSION[$value] !== filter_input(INPUT_POST, $value)) {
444
+
445
+ $state = "";
446
+
447
+ }
448
+
449
+ }
450
+
451
+ }
452
+
453
+ } else {
454
+
455
+ $state = "";
456
+
457
+ }
458
+
459
+ //送られてきた内容の保存などの処理は省略。
460
+
461
+ }
462
+
463
+ ?>
464
+
465
+ <!DOCTYPE html>
466
+
467
+ <html lang="ja">
468
+
469
+ <head>
470
+
471
+ <meta charset="utf-8">
472
+
473
+ <title>タイトル</title>
474
+
475
+ <style type="text/css">
476
+
477
+ * {
478
+
479
+ margin: 0;
480
+
481
+ padding: 0;
482
+
483
+ }
484
+
485
+
486
+
487
+ label {
488
+
489
+ display: block;
490
+
491
+ }
492
+
493
+ </style>
494
+
495
+ </head>
496
+
497
+ <body>
498
+
499
+ <?php if (!empty($errorm)): ?>
500
+
501
+ <strong><?= $errorm ?></strong>
502
+
503
+ <?php endif; ?>
504
+
505
+ <?php if ($state === "submit"): ?>
506
+
507
+ <form action="" method="post">
508
+
509
+ <ul>
510
+
511
+ <li><?= h($name) ?>:<?= h($_SESSION["name"]) ?></li>
512
+
513
+ <li><?= h($gender) ?>:<?= h($_SESSION["gender"]) ?></li>
514
+
515
+ <li><?= h($age) ?>代:<?= h($_SESSION["age"]) ?></li>
516
+
517
+ <li><?= h($message) ?>:<?= h($_SESSION["message"]) ?></li>
518
+
519
+ </ul>
520
+
521
+ <input type="hidden" name="name" value="<?= h($_SESSION["name"]) ?>">
522
+
523
+ <input type="hidden" name="gender" value="<?= h($_SESSION["gender"]) ?>">
524
+
525
+ <input type="hidden" name="age" value="<?= h($_SESSION["age"]) ?>">
526
+
527
+ <input type="hidden" name="message" value="<?= h($_SESSION["message"]) ?>">
528
+
529
+ <input type="hidden" name="token" value="<?= h(getToken()) ?>">
530
+
531
+ <input type="submit" name="confirm">
532
+
533
+ </form>
534
+
535
+ <?php elseif ($state === "confirm"): ?>
536
+
537
+ <p>送信完了。</p>
538
+
539
+ <?php else: ?>
540
+
541
+ <form action="" method="post">
542
+
543
+ <label>お名前:
544
+
545
+ <input type="text" name="name" value="<?= h($name) ?>">
546
+
547
+ </label>
548
+
549
+ <span>性別</span>
550
+
551
+ <label>男性:
552
+
553
+ <input type="radio" name="gender" value="男性" <?php if ($gender === "男性") echo "checked"; ?>>
554
+
555
+ </label>
556
+
557
+ <label>女性:
558
+
559
+ <input type="radio" name="gender" value="女性" <?php if ($gender === "女性") echo "checked"; ?>>
560
+
561
+ </label>
562
+
563
+ <label>その他:
564
+
565
+ <input type="radio" name="gender" value="その他" <?php if ($gender === "その他") echo "checked"; ?>>
566
+
567
+ </label>
568
+
569
+ <label>年齢:
570
+
571
+ <select name="age"><?= $age ?>
572
+
573
+ <?php foreach (["10", "20", "30", "40", "50", "60"] as $value): ?>
574
+
575
+ <?php if ($age === $value): ?>
576
+
577
+ <?php if ($value === "10"): ?>
578
+
579
+ <option value="<?= $value ?>" selected><?= $value ?>代未満</option>
580
+
581
+ <?php elseif ($value === "60"): ?>
582
+
583
+ <option value="<?= $value ?>" selected><?= $value ?>代以上</option>
584
+
585
+ <?php else: ?>
586
+
587
+ <option value="<?= $value ?>" selected><?= $value ?>代</option>
588
+
589
+ <?php endif; ?>
590
+
591
+ <?php else: ?>
592
+
593
+ <?php if ($value === "10"): ?>
594
+
595
+ <option value="<?= $value ?>"><?= $value ?>代未満</option>
596
+
597
+ <?php elseif ($value === "60"): ?>
598
+
599
+ <option value="<?= $value ?>"><?= $value ?>代以上</option>
600
+
601
+ <?php else: ?>
602
+
603
+ <option value="<?= $value ?>"><?= $value ?>代</option>
604
+
605
+ <?php endif; ?>
606
+
607
+ <?php endif; ?>
608
+
609
+ <?php endforeach; ?>
610
+
611
+ </select>
612
+
613
+ </label>
614
+
615
+ <label>メッセージ(お問い合わせ内容):
616
+
617
+ <textarea name="message" rows="5" cols="50"><?= h($message) ?></textarea>
618
+
619
+ </label>
620
+
621
+ <input type="hidden" name="token" value="<?= h(getToken()) ?>">
622
+
623
+ <input type="submit" name="submit">
624
+
625
+ </form>
626
+
627
+ <?php endif; ?>
628
+
629
+ </body>
630
+
631
+ </html>
632
+
633
+ ```