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

質問編集履歴

1

コードを記載しました。

2021/01/30 01:45

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -4,4 +4,148 @@
4
4
  データベースの設定方法で間違っていないか確認したのですが、以下のDB接続設定で間違いありますでしょうか?
5
5
 
6
6
 
7
- ![イメージ説明](62f590c3eaad25a821893aee809ff7f3.png)![イメージ説明](ada386197845655ef9cbaa8ec41c3505.png)
7
+ ![イメージ説明](62f590c3eaad25a821893aee809ff7f3.png)![イメージ説明](ada386197845655ef9cbaa8ec41c3505.png)
8
+
9
+
10
+
11
+ ```pro_add.php
12
+ <!doctype html>
13
+ <html>
14
+ <head>
15
+ <meta charset='UTF-8'>
16
+ <title>ろくまる農園</title>
17
+ </head>
18
+ <body>
19
+ 商品追加<br/>
20
+ <br/>
21
+ <form method = "post" action="pro_add_check.php">
22
+ 商品名を入力して下さい。<br/>
23
+ <input type="text" name="name" style="width:200px"><br/>
24
+ 価格を入力して下さい。<br/>
25
+ <input type="text" name="price" style="width:100px"><br/>
26
+ <br/>
27
+ <input type="button" onclick="history.back()" value="戻る">
28
+ <input type="submit" value="OK">
29
+ </form>
30
+ </body>
31
+ </html>
32
+
33
+ ```
34
+
35
+ ```pro_add_check.php
36
+ <!doctype html>
37
+ <html>
38
+ <head>
39
+ <meta charset='UTF-8'>
40
+ <title>ろくまる農園</title>
41
+ </head>
42
+ <body>
43
+ <?php
44
+
45
+ $pro_name=$_POST['name'];
46
+ $pro_price=$_POST['price'];
47
+
48
+ //htmlspecialcharsで特殊文字をHTMLエンティティに変換する。
49
+ //第二引数の『変換パターン』には『ENT_QUOTES』という定数を与えています。
50
+ //ENT_QUOTESはPHPが定数としてもっているint型の値であり、ENT_QUOTESを指定すると、特殊文字のうちシングルクォーテーションとダブルクォーテーションも変換対象に含めるようになります
51
+ $pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8');
52
+ $pro_price=htmlspecialchars($pro_price,ENT_QUOTES,'UTF-8');
53
+
54
+
55
+ if($pro_name=='')
56
+ {
57
+ print '商品名が入力されていません。<br/>';
58
+ }
59
+ else{
60
+ print'商品名:';
61
+ print $pro_name;
62
+ print'<br/>';
63
+ }
64
+
65
+ if(preg_match('/¥A[0-9]+¥z/',$pro_price)==0)
66
+ {
67
+ print '価格をきちんと入力してください。<br/>';
68
+ }
69
+ else
70
+ {
71
+ print'価格:';
72
+ print $pro_price;
73
+ print'円<br/>';
74
+ }
75
+
76
+
77
+
78
+ if($pro_name=='' || preg_match('/¥A[0-9]+¥z/',$pro_price)==0)
79
+ {
80
+ print '<form>';
81
+ //history.back() …… 一つ前のページへ戻る
82
+ print '<input type="button" onclick="history.back()" value="戻る">';
83
+ print '</form>';
84
+ }
85
+ else
86
+ {
87
+ print '上記の商品を追加します。';
88
+ print '<form method="post" action="pro_add_done.php">';
89
+ print '<input type="hidden" name="name" value="'.$pro_name.'">';
90
+ print '<input type="hidden" name="price" value="'.$pro_price.'">';
91
+ print '<br/>';
92
+ print '<input type="button" onclick="history.back()" value="戻る">';
93
+ print '<input type="submit" value="OK">';
94
+ print '</form>';
95
+ }
96
+
97
+ ?>
98
+ </body>
99
+ </html>
100
+ ```
101
+
102
+
103
+ ```pro_add_done.php
104
+ <!doctype html>
105
+ <html>
106
+ <head>
107
+ <meta charset='UTF-8'>
108
+ <title>ろくまる農園</title>
109
+ </head>
110
+ <body>
111
+ <?php
112
+
113
+ //以下でデータベースの障害対策を行う。
114
+ try
115
+ {
116
+
117
+ $pro_name=$_POST['name'];
118
+ $pro_price=$_POST['price'];
119
+
120
+ $pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8');
121
+ $pro_price=htmlspecialchars($pro_price,ENT_QUOTES,'UTF-8');
122
+
123
+ $dsn='mysql:dbname=shop;host=localhost;charset=utf8';
124
+ $user='root';
125
+ $password='root';
126
+ $dbh=new PDO($dsn,$user,$password);
127
+ //setAttributeでデータベースハンドルの属性を設定。以下でエラーモードと例外モードを設定。
128
+ $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
129
+ //VALUES (?,?)でSQLインジェクションと呼ばれるWebサイトの攻撃対策。?のところに、あとで数値を入れます。
130
+ $sql='INSERT INTO mst_product(name,price) VALUES (?,?)';
131
+ $stmt=$dbh->prepare($sql);
132
+ $data[]=$pro_name;
133
+ $data[]=$pro_price;
134
+ $stmt->execute($data);
135
+ //データベースから切断。
136
+ $dbh=null;
137
+
138
+ print $pro_name;
139
+ print 'さんを追加しました。<br/>';
140
+ }
141
+ catch(Exception $e)
142
+ {
143
+ print'ただいま障害により大変ご迷惑をおかけしております。';
144
+ exit();
145
+ }
146
+ ?>
147
+
148
+ <a href ="pro_list.php">戻る</a>
149
+ </body>
150
+ </html>
151
+ ```