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

回答編集履歴

3

見直し

2020/02/11 06:47

投稿

退会済みユーザー
answer CHANGED
@@ -20,7 +20,7 @@
20
20
  $data = [];
21
21
  $err_msg = [];
22
22
  // パスワードを設定する。
23
- $pass = 1234;
23
+ $pass = '1234'; // 文字列として持つことを意識する
24
24
  // パスワードを受け取る
25
25
  //$form_pass = $_REQUEST["pass"];
26
26
  if (isset($_POST["pass"])) {
@@ -31,7 +31,7 @@
31
31
 
32
32
  }
33
33
  // 値が$form_passと等しいか評価する
34
- if ($form_pass === $pass) {
34
+ if ($form_pass === $pass) { // 文字列として比較して一致したら
35
35
  header("Location: /test.php");
36
36
  exit;
37
37
  }

2

見直し

2020/02/11 06:47

投稿

退会済みユーザー
answer CHANGED
@@ -11,4 +11,60 @@
11
11
  else {
12
12
  $data['pass'] = ''; // データがないときにどうするかは自分で決める
13
13
  }
14
+ ```
15
+
16
+ で、全部書き改めてみた。あくまで机上のコードで動かしてないので、
17
+ 突っ込みどころがあればコメントよろしく。
18
+ ```php
19
+ <?php
20
+ $data = [];
21
+ $err_msg = [];
22
+ // パスワードを設定する。
23
+ $pass = 1234;
24
+ // パスワードを受け取る
25
+ //$form_pass = $_REQUEST["pass"];
26
+ if (isset($_POST["pass"])) {
27
+ $form_pass = $_POST["pass"];
28
+ }
29
+ else {
30
+ $form_pass = '';
31
+
32
+ }
33
+ // 値が$form_passと等しいか評価する
34
+ if ($form_pass === $pass) {
35
+ header("Location: /test.php");
36
+ exit;
37
+ }
38
+ $data['pass'] = $form_pass;
39
+ ?>
40
+ <html>
41
+ <body>
42
+ <main>
43
+ <?php
44
+ if (empty($data['pass'])) { // ほんとうにemptyでいいのか? 0 でも empty なんだけどな
45
+ $err_msg[] = 'miss!&nbsp;Try again.';
46
+ }
47
+ elseif (!preg_match( '/^[0-9a-z-]+$/', $data['pass'])) {
48
+ $err_msg[] = 'Please type using half-width characters.';
49
+ }
50
+ elseif (4 < mb_strlen($data['pass'])) {
51
+ $err_msg[] = 'Please input 4 characters.';
52
+ }
53
+ else {
54
+ $err_msg[] = 'miss!&nbsp;Try again.';
55
+ }
56
+
57
+ if (count(err_msg) >= 1) {
58
+ $msg = implode('<br />', $err_msg);
59
+ echo <<<EOT;
60
+ <p class="align-center">{$msg}</p>
61
+ <ul class="actions special">
62
+ <li><a id="btn_home" href="javascript:history.back();" class="button">Back</a></li>
63
+ </ul>
64
+ EOT;
65
+ }
66
+ ?>
67
+ </main>
68
+ </body>
69
+ </html>
14
70
  ```

1

見直し

2020/02/11 06:32

投稿

退会済みユーザー
answer CHANGED
@@ -3,10 +3,12 @@
3
3
  $data['pass']として利用したいのであれば、自分でコードを書いて詰めますよふつうは。
4
4
 
5
5
  ```php
6
+ $data = []; // 初期化
7
+ // ...
6
- if (isset($_POST['pass'])) {
8
+ if (isset($_POST['pass'])) { // 存在確認
7
9
  $data['pass'] = $_POST['pass'];
8
10
  }
9
11
  else {
10
- $data['pass'] = '';
12
+ $data['pass'] = ''; // データがないときにどうするかは自分で決める
11
13
  }
12
14
  ```