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

回答編集履歴

4

追記

2017/05/18 12:22

投稿

s8_chu
s8_chu

スコア14731

answer CHANGED
@@ -68,4 +68,85 @@
68
68
  }
69
69
  }
70
70
  ?>
71
+ ```
72
+
73
+ #追記2
74
+ `aciton属性`ではなくて、`action属性`です。
75
+ ```HTML
76
+ <!DOCTYPE html>
77
+ <html>
78
+ <head>
79
+ <meta charset="UTF-8">
80
+ <title>ろくまる農園</title>
81
+ </head>
82
+ <body>
83
+
84
+ スタッフ追加<br/>
85
+ <br/>
86
+ <form method="post" action="staff_add_check.php"><!-- action="staff_add_check.php"に修正 -->
87
+ スタッフ名を入力してください<br/>
88
+ <input type="text" name="name" style="width:200px"><br/>
89
+ パスワードを入力して下さい<br/>
90
+ <input type="password" name="pass" style="width:100px"><br/>
91
+ パスワードをもう一度入力してください<br/>
92
+ <input type="password" name="pass2" style="width:100px"><br/>
93
+ <br/>
94
+ <input type="button" onclick="history.back()" value="戻る">
95
+ <input type="submit" value="OK">
96
+ </body>
97
+ </html>
98
+ ```
99
+ ```PHP
100
+ <?php
101
+ if (isset($_POST["name"]) &&
102
+ isset($_POST["pass"]) &&
103
+ isset($_POST["pass2"])
104
+ ) {
105
+ $staff_name = $_POST['name'];
106
+ $staff_pass = $_POST['pass'];
107
+ $staff_pass2 = $_POST['pass2'];
108
+ $staff_name = htmlspecialchars($staff_name, ENT_QUOTES, 'UTF-8');
109
+ $staff_pass = htmlspecialchars($staff_pass, ENT_QUOTES, 'UTF-8');
110
+ $staff_pass2 = htmlspecialchars($staff_pass2, ENT_QUOTES, 'UTF-8');
111
+
112
+ if ($staff_name == ' ') {
113
+
114
+ print 'スタッフ名が入力されていません<br />';
115
+
116
+ } else {
117
+
118
+ print 'スタッフ名:';
119
+ print $staff_name;
120
+ print '<br />';
121
+ }
122
+
123
+ if ($staff_pass == ' ') {
124
+
125
+ print 'パスワードが入力されていません<br />';
126
+
127
+ }
128
+
129
+ if ($staff_pass != $staff_pass2) {
130
+
131
+ print 'パスワードが一致しません<br />';
132
+
133
+ }
134
+
135
+ if ($staff_name == '' || $staff_pass == '' || $staff_pass != $staff_pass2) {
136
+ print '<form>';
137
+ print '<input type="button" onclick="history.back()" value="戻る">';
138
+ print '</form>';
139
+
140
+ } else {
141
+ $staff_pass = md5($staff_pass);
142
+ print '<form method="post" action="staff_add_done.php">';
143
+ print '<input type="hidden" name="name" value="' . $staff_name . '">';
144
+ print '<input type="hidden" name="pass" value="' . $staff_pass . '">';
145
+ print '<br />';
146
+ print '<input type="button" onclick="history.back()" value="戻る">';
147
+ print '<input type="submit" value="OK">';
148
+ print '</form>';
149
+ }
150
+ }
151
+ ?>
71
152
  ```

3

修正、追記

2017/05/18 12:22

投稿

s8_chu
s8_chu

スコア14731

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  }
12
12
  ```
13
13
  #追記
14
- `$_POST["name"]`、`$_POST["pass"]`、`$_POST["pass2"]`が定義されていないときには`$staff_name`、`$staff_pass`、`$staff_pass2`という変数が定義されないことになりますから、それが原因で`Undefined variable`というエラーが発生します。`$_POST["name"]`、`$_POST["pass"]`、`$_POST["pass2"]`が定義されていないときにはしなくて良い処理をif文の中に入れることで解決できると思います。
14
+ 上のコードをそのまま使うと`$_POST["name"]`、`$_POST["pass"]`、`$_POST["pass2"]`が定義されていないときには`$staff_name`、`$staff_pass`、`$staff_pass2`という変数が定義されないことになりますから、それが原因で`Undefined variable`というエラーが発生します。`$_POST["name"]`、`$_POST["pass"]`、`$_POST["pass2"]`が定義されていないときにはしなくて良い処理をif文の中に入れることで解決できると思います。
15
15
  質問の趣旨とは関係ありませんが、`oneclick="history.back()"`ではなく、`onclick="history.back()"`ではないかと思いますがいかがでしょう。
16
16
  ```PHP
17
17
  <?php

2

追記

2017/05/18 12:03

投稿

s8_chu
s8_chu

スコア14731

answer CHANGED
@@ -9,4 +9,63 @@
9
9
  $staff_pass = $_POST['pass'];
10
10
  $staff_pass2 = $_POST['pass2'];
11
11
  }
12
+ ```
13
+ #追記
14
+ `$_POST["name"]`、`$_POST["pass"]`、`$_POST["pass2"]`が定義されていないときには`$staff_name`、`$staff_pass`、`$staff_pass2`という変数が定義されないことになりますから、それが原因で`Undefined variable`というエラーが発生します。`$_POST["name"]`、`$_POST["pass"]`、`$_POST["pass2"]`が定義されていないときにはしなくて良い処理をif文の中に入れることで解決できると思います。
15
+ 質問の趣旨とは関係ありませんが、`oneclick="history.back()"`ではなく、`onclick="history.back()"`ではないかと思いますがいかがでしょう。
16
+ ```PHP
17
+ <?php
18
+ if (isset($_POST["name"]) &&
19
+ isset($_POST["pass"]) &&
20
+ isset($_POST["pass2"])
21
+ ) {
22
+ $staff_name = $_POST['name'];
23
+ $staff_pass = $_POST['pass'];
24
+ $staff_pass2 = $_POST['pass2'];
25
+ $staff_name = htmlspecialchars($staff_name, ENT_QUOTES, 'UTF-8');
26
+ $staff_pass = htmlspecialchars($staff_pass, ENT_QUOTES, 'UTF-8');
27
+ $staff_pass2 = htmlspecialchars($staff_pass2, ENT_QUOTES, 'UTF-8');
28
+
29
+ if ($staff_name == ' ') {
30
+
31
+ print 'スタッフ名が入力されていません<br />';
32
+
33
+ } else {
34
+
35
+ print 'スタッフ名:';
36
+ print $staff_name;
37
+ print '<br />';
38
+ }
39
+
40
+ if ($staff_pass == ' ') {
41
+
42
+ print 'パスワードが入力されていません<br />';
43
+
44
+ }
45
+
46
+ if ($staff_pass != $staff_pass2) {
47
+
48
+ print 'パスワードが一致しません<br />';
49
+
50
+ }
51
+
52
+ if ($staff_name == '' || $staff_pass == '' || $staff_pass != $staff_pass2) {
53
+
54
+ print '<form>';
55
+ print '<input type="button" oneclick="history.back()" value="戻る">';
56
+ print '</form>';
57
+
58
+ } else {
59
+ $staff_pass = md5($staff_pass);
60
+ print '<form method="post" action="staff_add_done.php">';
61
+ print '<input type="hidden" name="name" value="' . $staff_name . '">';
62
+ print '<input type="hidden" name="pass" value="' . $staff_pass . '">';
63
+ print '<br />';
64
+ print '<input type="button" oneclick="history.back()" value="戻る">';
65
+ print '<input type="submit" value="OK">';
66
+ print '</form>';
67
+
68
+ }
69
+ }
70
+ ?>
12
71
  ```

1

追記

2017/05/18 11:46

投稿

s8_chu
s8_chu

スコア14731

answer CHANGED
@@ -1,4 +1,4 @@
1
- `Undefined index`は定義していない配列を使用したときに発生するエラーです。[isset](http://php.net/manual/ja/function.isset.php)を使用することで解決できると思います。
1
+ `Undefined index`は定義していない配列を使用したときに発生するエラーです。[isset](http://php.net/manual/ja/function.isset.php)を使用して使おうとしている配列が定義されているか確認することで解決できると思います。
2
2
  ```PHP
3
3
  <?php
4
4
  if (isset($_POST["name"]) &&