質問編集履歴

1

コードを記載しました。

2021/01/30 01:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,291 @@
11
11
 
12
12
 
13
13
  ![イメージ説明](62f590c3eaad25a821893aee809ff7f3.png)![イメージ説明](ada386197845655ef9cbaa8ec41c3505.png)
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+ ```pro_add.php
22
+
23
+ <!doctype html>
24
+
25
+ <html>
26
+
27
+ <head>
28
+
29
+ <meta charset='UTF-8'>
30
+
31
+ <title>ろくまる農園</title>
32
+
33
+ </head>
34
+
35
+ <body>
36
+
37
+ 商品追加<br/>
38
+
39
+ <br/>
40
+
41
+ <form method = "post" action="pro_add_check.php">
42
+
43
+ 商品名を入力して下さい。<br/>
44
+
45
+ <input type="text" name="name" style="width:200px"><br/>
46
+
47
+ 価格を入力して下さい。<br/>
48
+
49
+ <input type="text" name="price" style="width:100px"><br/>
50
+
51
+ <br/>
52
+
53
+ <input type="button" onclick="history.back()" value="戻る">
54
+
55
+ <input type="submit" value="OK">
56
+
57
+ </form>
58
+
59
+ </body>
60
+
61
+ </html>
62
+
63
+
64
+
65
+ ```
66
+
67
+
68
+
69
+ ```pro_add_check.php
70
+
71
+ <!doctype html>
72
+
73
+ <html>
74
+
75
+ <head>
76
+
77
+ <meta charset='UTF-8'>
78
+
79
+ <title>ろくまる農園</title>
80
+
81
+ </head>
82
+
83
+ <body>
84
+
85
+ <?php
86
+
87
+
88
+
89
+ $pro_name=$_POST['name'];
90
+
91
+ $pro_price=$_POST['price'];
92
+
93
+
94
+
95
+ //htmlspecialcharsで特殊文字をHTMLエンティティに変換する。
96
+
97
+ //第二引数の『変換パターン』には『ENT_QUOTES』という定数を与えています。
98
+
99
+ //ENT_QUOTESはPHPが定数としてもっているint型の値であり、ENT_QUOTESを指定すると、特殊文字のうちシングルクォーテーションとダブルクォーテーションも変換対象に含めるようになります
100
+
101
+ $pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8');
102
+
103
+ $pro_price=htmlspecialchars($pro_price,ENT_QUOTES,'UTF-8');
104
+
105
+
106
+
107
+
108
+
109
+ if($pro_name=='')
110
+
111
+ {
112
+
113
+ print '商品名が入力されていません。<br/>';
114
+
115
+ }
116
+
117
+ else{
118
+
119
+ print'商品名:';
120
+
121
+ print $pro_name;
122
+
123
+ print'<br/>';
124
+
125
+ }
126
+
127
+
128
+
129
+ if(preg_match('/¥A[0-9]+¥z/',$pro_price)==0)
130
+
131
+ {
132
+
133
+ print '価格をきちんと入力してください。<br/>';
134
+
135
+ }
136
+
137
+ else
138
+
139
+ {
140
+
141
+ print'価格:';
142
+
143
+ print $pro_price;
144
+
145
+ print'円<br/>';
146
+
147
+ }
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+ if($pro_name=='' || preg_match('/¥A[0-9]+¥z/',$pro_price)==0)
156
+
157
+ {
158
+
159
+ print '<form>';
160
+
161
+ //history.back() …… 一つ前のページへ戻る
162
+
163
+ print '<input type="button" onclick="history.back()" value="戻る">';
164
+
165
+ print '</form>';
166
+
167
+ }
168
+
169
+ else
170
+
171
+ {
172
+
173
+ print '上記の商品を追加します。';
174
+
175
+ print '<form method="post" action="pro_add_done.php">';
176
+
177
+ print '<input type="hidden" name="name" value="'.$pro_name.'">';
178
+
179
+ print '<input type="hidden" name="price" value="'.$pro_price.'">';
180
+
181
+ print '<br/>';
182
+
183
+ print '<input type="button" onclick="history.back()" value="戻る">';
184
+
185
+ print '<input type="submit" value="OK">';
186
+
187
+ print '</form>';
188
+
189
+ }
190
+
191
+
192
+
193
+ ?>
194
+
195
+ </body>
196
+
197
+ </html>
198
+
199
+ ```
200
+
201
+
202
+
203
+
204
+
205
+ ```pro_add_done.php
206
+
207
+ <!doctype html>
208
+
209
+ <html>
210
+
211
+ <head>
212
+
213
+ <meta charset='UTF-8'>
214
+
215
+ <title>ろくまる農園</title>
216
+
217
+ </head>
218
+
219
+ <body>
220
+
221
+ <?php
222
+
223
+
224
+
225
+ //以下でデータベースの障害対策を行う。
226
+
227
+ try
228
+
229
+ {
230
+
231
+
232
+
233
+ $pro_name=$_POST['name'];
234
+
235
+ $pro_price=$_POST['price'];
236
+
237
+
238
+
239
+ $pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8');
240
+
241
+ $pro_price=htmlspecialchars($pro_price,ENT_QUOTES,'UTF-8');
242
+
243
+
244
+
245
+ $dsn='mysql:dbname=shop;host=localhost;charset=utf8';
246
+
247
+ $user='root';
248
+
249
+ $password='root';
250
+
251
+ $dbh=new PDO($dsn,$user,$password);
252
+
253
+ //setAttributeでデータベースハンドルの属性を設定。以下でエラーモードと例外モードを設定。
254
+
255
+ $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
256
+
257
+ //VALUES (?,?)でSQLインジェクションと呼ばれるWebサイトの攻撃対策。?のところに、あとで数値を入れます。
258
+
259
+ $sql='INSERT INTO mst_product(name,price) VALUES (?,?)';
260
+
261
+ $stmt=$dbh->prepare($sql);
262
+
263
+ $data[]=$pro_name;
264
+
265
+ $data[]=$pro_price;
266
+
267
+ $stmt->execute($data);
268
+
269
+ //データベースから切断。
270
+
271
+ $dbh=null;
272
+
273
+
274
+
275
+ print $pro_name;
276
+
277
+ print 'さんを追加しました。<br/>';
278
+
279
+ }
280
+
281
+ catch(Exception $e)
282
+
283
+ {
284
+
285
+ print'ただいま障害により大変ご迷惑をおかけしております。';
286
+
287
+ exit();
288
+
289
+ }
290
+
291
+ ?>
292
+
293
+
294
+
295
+ <a href ="pro_list.php">戻る</a>
296
+
297
+ </body>
298
+
299
+ </html>
300
+
301
+ ```