質問編集履歴

2

修正

2019/05/13 22:35

投稿

Masa-Y
Masa-Y

スコア30

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- 入力内容にphpバリデーションをかけたうえで、
11
+ 画像ファイルにphpバリデーションをかけたうえで、
12
12
 
13
13
  データベースにPDO接続→mysqlサーバーに記録
14
14
 
@@ -32,12 +32,238 @@
32
32
 
33
33
  ![イメージ説明](7ada93b1736891af6ce1f3e186c46c19.png)
34
34
 
35
- ![イメージ説明](927a154bea1ea8e3dedc17c9ae38fb1a.png)
35
+
36
+
37
+
36
38
 
37
39
  ```php
38
40
 
39
41
  【confirm.php】
40
42
 
43
+
44
+
45
+ $page_flag = 0;
46
+
47
+
48
+
49
+ if( !empty($_POST['confirm']) ) {
50
+
51
+ $page_flag = 1;
52
+
53
+
54
+
55
+
56
+
57
+ function validation(){
58
+
59
+
60
+
61
+ try {
62
+
63
+
64
+
65
+ if (!isset($_FILES['upfile']['error']) || !is_int($_FILES['upfile']['error'])) {
66
+
67
+ throw new RuntimeException('パラメータが不正です');
68
+
69
+ }
70
+
71
+
72
+
73
+ switch ($_FILES['upfile']['error']) {
74
+
75
+ case UPLOAD_ERR_OK: // OK
76
+
77
+ break;
78
+
79
+ case UPLOAD_ERR_NO_FILE: // ファイル未選択
80
+
81
+ throw new RuntimeException('ファイルが選択されていません');
82
+
83
+ case UPLOAD_ERR_INI_SIZE: // php.ini定義の最大サイズ超過
84
+
85
+ case UPLOAD_ERR_FORM_SIZE: // フォーム定義の最大サイズ超過 (設定した場合のみ)
86
+
87
+ throw new RuntimeException('ファイルサイズが大きすぎます');
88
+
89
+ default:
90
+
91
+ throw new RuntimeException('その他のエラーが発生しました');
92
+
93
+ }
94
+
95
+
96
+
97
+
98
+
99
+ if ($_FILES['upfile']['size'] > 1000000) {
100
+
101
+ throw new RuntimeException('ファイルサイズが大きすぎます');
102
+
103
+ }
104
+
105
+
106
+
107
+
108
+
109
+ if (!$ext = array_search(
110
+
111
+ mime_content_type($_FILES['upfile']['tmp_name']),
112
+
113
+ array(
114
+
115
+ 'jpg' => 'image/jpeg',
116
+
117
+ ),
118
+
119
+ true
120
+
121
+ )) {
122
+
123
+ throw new RuntimeException('ファイル形式が不正です');
124
+
125
+ }
126
+
127
+
128
+
129
+ if (!move_uploaded_file(
130
+
131
+ $_FILES['upfile']['tmp_name'],
132
+
133
+ $path = sprintf('./files/%s.%s',
134
+
135
+ sha1_file($_FILES['upfile']['tmp_name']),
136
+
137
+ $ext
138
+
139
+ )
140
+
141
+ )) {
142
+
143
+ throw new RuntimeException('ファイル保存時にエラーが発生しました');
144
+
145
+ }
146
+
147
+
148
+
149
+ chmod($path, 0644);
150
+
151
+
152
+
153
+ return null;
154
+
155
+
156
+
157
+ } catch (RuntimeException $e) {
158
+
159
+
160
+
161
+ return $e->getMessage();
162
+
163
+
164
+
165
+ }
166
+
167
+
168
+
169
+ }
170
+
171
+
172
+
173
+
174
+
175
+ if (isset($_POST['job']) || is_array($_POST['job'])) {
176
+
177
+ $your_job = implode("、", $_POST["job"]);
178
+
179
+ }
180
+
181
+ } elseif( !empty($_POST['submit']) ) {
182
+
183
+ $page_flag = 2;
184
+
185
+
186
+
187
+ //データベース接続
188
+
189
+ define('DB_DATABASE', 'xxxxxxx_db');
190
+
191
+ define('DB_USERNAME', 'xxxxxx_user');
192
+
193
+ define('DB_PASSWORD', 'xxxxxx');
194
+
195
+ define('DB_DSN', 'mysql:host=mysqlxxx.xxxxxx.ne.jp;dbname=' . DB_DATABASE. ';charset=utf8');
196
+
197
+
198
+
199
+ try {
200
+
201
+ $pdo = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
202
+
203
+ $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
204
+
205
+ $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
206
+
207
+
208
+
209
+ } catch (PDOException $e) {
210
+
211
+ echo $e->getMessage();
212
+
213
+ exit;
214
+
215
+ }
216
+
217
+
218
+
219
+ try {
220
+
221
+ $pdo->beginTransaction();
222
+
223
+ $sql = "INSERT INTO engineer(no, name, job, mail, img_file, message) VALUES(?,?,?,?,?,?)";
224
+
225
+ $stmh = $pdo->prepare($sql);
226
+
227
+ $id = null;
228
+
229
+ $stmh->bindValue(1, $id, PDO::PARAM_INT);
230
+
231
+ $stmh->bindValue(2, h($_POST["name"]), PDO::PARAM_STR);
232
+
233
+ $stmh->bindValue(3, $your_job, PDO::PARAM_STR);
234
+
235
+ $stmh->bindValue(4, h($_POST["mail"]), PDO::PARAM_STR);
236
+
237
+ $stmh->bindValue(5, h($_FILES["upfile"]["name"]), PDO::PARAM_STR);
238
+
239
+ $stmh->bindValue(6, h($_POST["message"]), PDO::PARAM_STR);
240
+
241
+ $stmh->execute();
242
+
243
+ } catch (PDOException $e){
244
+
245
+ $pdo->rollBack();
246
+
247
+ echo "エラー:" . $e->getMessage();
248
+
249
+ }
250
+
251
+
252
+
253
+ //自動返信メール送信
254
+
255
+ require_once('mail.php');
256
+
257
+ }
258
+
259
+ ?>
260
+
261
+ ```
262
+
263
+ ```php
264
+
265
+ 【confirm.php】
266
+
41
267
  <div class="contact_form_wrapper px-3">
42
268
 
43
269
  <form class="confirm_form" action="" method="post">

1

修正

2019/05/13 22:35

投稿

Masa-Y
Masa-Y

スコア30

test CHANGED
File without changes
test CHANGED
@@ -23,6 +23,8 @@
23
23
  値を変数にした項目と、$_FILEの項目のようなんですが、
24
24
 
25
25
  考えられる原因や、修正が必要な箇所を教えていただきたいです。
26
+
27
+ (img_file(jpegファイル)は、保管場所までのパスとファイル名を入れたいです)
26
28
 
27
29
 
28
30