質問編集履歴

3

参考ソース元貼り直し

2016/11/29 04:58

投稿

reptiles_0206
reptiles_0206

スコア8

test CHANGED
File without changes
test CHANGED
@@ -235,3 +235,5 @@
235
235
  ###補足情報(言語/FW/ツール等のバージョンなど)
236
236
 
237
237
  他の方がネットに載せてくれていたソースを参考にしています。
238
+
239
+ http://qiita.com/mpyw/items/117ab6a88fd58d911c34

2

ご指摘があったのでコードを見やすくしました。

2016/11/29 04:58

投稿

reptiles_0206
reptiles_0206

スコア8

test CHANGED
File without changes
test CHANGED
@@ -24,201 +24,205 @@
24
24
 
25
25
  ###該当のソースコード
26
26
 
27
+
28
+
29
+ 最初に開くファイル:
30
+
27
31
  ```PHP
28
32
 
33
+ <html>
34
+
35
+ <head>
36
+
37
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
38
+
29
- ここにご自身が実行したソースコードを書いてください
39
+ <title></title>
40
+
41
+ </head>
42
+
43
+ <body>
44
+
45
+ <form action="action.php" method="post" enctype="multipart/form-data" accept="video/*">
46
+
47
+ <label for="upfile">動画 </label>
48
+
49
+ <input type="file" name="upfile">
50
+
51
+ <input type="submit" value="アップロード">
52
+
53
+ </form>
54
+
55
+ </body>
56
+
57
+ </html>
58
+
59
+
30
60
 
31
61
  ```
32
62
 
33
- 最初に開くファイル:
63
+ action.php:
64
+
65
+ ```PHP
66
+
67
+ <?php
68
+
69
+ /* HTML特殊文字をエスケープする関数 */
70
+
71
+ function h($str) {
72
+
73
+ return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
74
+
75
+ }
76
+
77
+ try {
78
+
79
+
80
+
81
+ // データベースに接続
82
+
83
+ $pdo = new PDO(
84
+
85
+ 'mysql:host=;dbname=;charset=utf8',
86
+
87
+ 'user',
88
+
89
+ 'password',
90
+
91
+ [
92
+
93
+ PDO::ATTR_EMULATE_PREPARES => false,
94
+
95
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
96
+
97
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
98
+
99
+ ]
100
+
101
+ );
102
+
103
+
104
+
105
+ /* アップロードがあったとき */
106
+
107
+ if (isset($_FILES['upfile']['error']) && is_int($_FILES['upfile']['error'])) {
108
+
109
+
110
+
111
+ // バッファリングを開始
112
+
113
+ ob_start();
114
+
115
+
116
+
117
+ try {
118
+
119
+ switch ($_FILES['upfile']['error']) {
120
+
121
+ case UPLOAD_ERR_OK: // OK
122
+
123
+ break;
124
+
125
+ case UPLOAD_ERR_NO_FILE: // 未選択
126
+
127
+ throw new RuntimeException('ファイルが選択されていません', 400);
128
+
129
+ case UPLOAD_ERR_INI_SIZE: // php.ini定義の最大サイズ超過
130
+
131
+ throw new RuntimeException('ファイルサイズが大きすぎます', 400);
132
+
133
+ default:
134
+
135
+ throw new RuntimeException('その他のエラーが発生しました', 500);
136
+
137
+ }
138
+
139
+ if (!$info = @__**getimagesize**__($_FILES['upfile']['tmp_name'])) {
140
+
141
+ throw new RuntimeException('有効なファイルを指定してください', 400);
142
+
143
+ }
144
+
145
+
146
+
147
+
148
+
149
+ // INSERT処理
150
+
151
+ $stmt = $pdo->prepare('INSERT INTO ????(id,name,raw_data) VALUES(?,?,?)');
152
+
153
+ $stmt->execute([
154
+
155
+ $_FILES['upfile']['name'],
156
+
157
+ $info[2],
158
+
159
+ file_get_contents($_FILES['upfile']['tmp_name']),
160
+
161
+ ob_get_clean(), // バッファからデータを取得してクリア
162
+
163
+ (new DateTime('now', new DateTimeZone('Asia/Tokyo')))->format('Y-m-d H:i:s'),
164
+
165
+ ]);
166
+
167
+
168
+
169
+ $msgs[] = ['green', 'ファイルは正常にアップロードされました'];
170
+
171
+
172
+
173
+ } catch (RuntimeException $e) {
174
+
175
+
176
+
177
+ while (ob_get_level()) {
178
+
179
+ ob_end_clean(); // バッファをクリア
180
+
181
+ }
182
+
183
+ http_response_code($e instanceof PDOException ? 500 : $e->getCode());
184
+
185
+ $msgs[] = ['red', $e->getMessage()];
186
+
187
+
188
+
189
+ }
190
+
191
+
192
+
193
+
194
+
195
+ }
196
+
197
+
198
+
199
+ $rows = $pdo->query('SELECT id,name FROM douga')->fetchAll();
200
+
201
+
202
+
203
+ } catch (PDOException $e) {
204
+
205
+
206
+
207
+ http_response_code(500);
208
+
209
+ $msgs[] = ['red', $e->getMessage()];
210
+
211
+
212
+
213
+ }
214
+
215
+
216
+
217
+ ?>
34
218
 
35
219
  <html>
36
220
 
37
- <head>
221
+ ~~~~~~~
38
-
39
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
40
-
41
- <title></title>
42
-
43
- </head>
44
-
45
- <body>
46
-
47
- <form action="action.php" method="post" enctype="multipart/form-data" accept="video/*">
48
-
49
- <label for="upfile">動画 </label>
50
-
51
- <input type="file" name="upfile">
52
-
53
- <input type="submit" value="アップロード">
54
-
55
- </form>
56
-
57
- </body>
58
222
 
59
223
  </html>
60
224
 
61
-
62
-
63
- action.php:
64
-
65
- <?php
66
-
67
- /* HTML特殊文字をエスケープする関数 */
68
-
69
- function h($str) {
70
-
71
- return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
72
-
73
- }
74
-
75
- try {
76
-
77
-
78
-
79
- // データベースに接続
80
-
81
- $pdo = new PDO(
82
-
83
- 'mysql:host=;dbname=;charset=utf8',
84
-
85
- 'user',
86
-
87
- 'password',
88
-
89
- [
90
-
91
- PDO::ATTR_EMULATE_PREPARES => false,
92
-
93
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
94
-
95
- PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
96
-
97
- ]
98
-
99
- );
100
-
101
-
102
-
103
- /* アップロードがあったとき */
104
-
105
- if (isset($_FILES['upfile']['error']) && is_int($_FILES['upfile']['error'])) {
106
-
107
-
108
-
109
- // バッファリングを開始
110
-
111
- ob_start();
112
-
113
-
114
-
115
- try {
116
-
117
- switch ($_FILES['upfile']['error']) {
118
-
119
- case UPLOAD_ERR_OK: // OK
120
-
121
- break;
122
-
123
- case UPLOAD_ERR_NO_FILE: // 未選択
124
-
125
- throw new RuntimeException('ファイルが選択されていません', 400);
126
-
127
- case UPLOAD_ERR_INI_SIZE: // php.ini定義の最大サイズ超過
128
-
129
- throw new RuntimeException('ファイルサイズが大きすぎます', 400);
130
-
131
- default:
132
-
133
- throw new RuntimeException('その他のエラーが発生しました', 500);
134
-
135
- }
136
-
137
- if (!$info = @__**getimagesize**__($_FILES['upfile']['tmp_name'])) {
138
-
139
- throw new RuntimeException('有効なファイルを指定してください', 400);
140
-
141
- }
142
-
143
-
144
-
145
-
146
-
147
- // INSERT処理
148
-
149
- $stmt = $pdo->prepare('INSERT INTO ????(id,name,raw_data) VALUES(?,?,?)');
150
-
151
- $stmt->execute([
152
-
153
- $_FILES['upfile']['name'],
154
-
155
- $info[2],
156
-
157
- file_get_contents($_FILES['upfile']['tmp_name']),
158
-
159
- ob_get_clean(), // バッファからデータを取得してクリア
160
-
161
- (new DateTime('now', new DateTimeZone('Asia/Tokyo')))->format('Y-m-d H:i:s'),
162
-
163
- ]);
225
+ ```
164
-
165
-
166
-
167
- $msgs[] = ['green', 'ファイルは正常にアップロードされました'];
168
-
169
-
170
-
171
- } catch (RuntimeException $e) {
172
-
173
-
174
-
175
- while (ob_get_level()) {
176
-
177
- ob_end_clean(); // バッファをクリア
178
-
179
- }
180
-
181
- http_response_code($e instanceof PDOException ? 500 : $e->getCode());
182
-
183
- $msgs[] = ['red', $e->getMessage()];
184
-
185
-
186
-
187
- }
188
-
189
-
190
-
191
-
192
-
193
- }
194
-
195
-
196
-
197
- $rows = $pdo->query('SELECT id,name FROM douga')->fetchAll();
198
-
199
-
200
-
201
- } catch (PDOException $e) {
202
-
203
-
204
-
205
- http_response_code(500);
206
-
207
- $msgs[] = ['red', $e->getMessage()];
208
-
209
-
210
-
211
- }
212
-
213
-
214
-
215
- ?>
216
-
217
- <html>
218
-
219
- ~~~~~~~
220
-
221
- </html>
222
226
 
223
227
 
224
228
 

1

分かりにくかったので書き直しました。

2016/11/29 00:42

投稿

reptiles_0206
reptiles_0206

スコア8

test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,91 @@
28
28
 
29
29
  ここにご自身が実行したソースコードを書いてください
30
30
 
31
+ ```
32
+
33
+ 最初に開くファイル:
34
+
35
+ <html>
36
+
37
+ <head>
38
+
39
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
40
+
41
+ <title></title>
42
+
43
+ </head>
44
+
45
+ <body>
46
+
47
+ <form action="action.php" method="post" enctype="multipart/form-data" accept="video/*">
48
+
49
+ <label for="upfile">動画 </label>
50
+
51
+ <input type="file" name="upfile">
52
+
53
+ <input type="submit" value="アップロード">
54
+
55
+ </form>
56
+
57
+ </body>
58
+
59
+ </html>
60
+
61
+
62
+
63
+ action.php:
64
+
65
+ <?php
66
+
67
+ /* HTML特殊文字をエスケープする関数 */
68
+
69
+ function h($str) {
70
+
71
+ return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
72
+
73
+ }
74
+
31
- ```try {
75
+ try {
76
+
77
+
78
+
79
+ // データベースに接続
80
+
81
+ $pdo = new PDO(
82
+
83
+ 'mysql:host=;dbname=;charset=utf8',
84
+
85
+ 'user',
86
+
87
+ 'password',
88
+
89
+ [
90
+
91
+ PDO::ATTR_EMULATE_PREPARES => false,
92
+
93
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
94
+
95
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
96
+
97
+ ]
98
+
99
+ );
100
+
101
+
102
+
103
+ /* アップロードがあったとき */
104
+
105
+ if (isset($_FILES['upfile']['error']) && is_int($_FILES['upfile']['error'])) {
106
+
107
+
108
+
109
+ // バッファリングを開始
110
+
111
+ ob_start();
112
+
113
+
114
+
115
+ try {
32
116
 
33
117
  switch ($_FILES['upfile']['error']) {
34
118
 
@@ -36,21 +120,21 @@
36
120
 
37
121
  break;
38
122
 
39
- case UPLOAD_ERR_NO_FILE: //未選択
123
+ case UPLOAD_ERR_NO_FILE: // 未選択
40
124
 
41
125
  throw new RuntimeException('ファイルが選択されていません', 400);
42
126
 
43
127
  case UPLOAD_ERR_INI_SIZE: // php.ini定義の最大サイズ超過
44
128
 
45
- throw new RuntimeException('ファイルサイズが大きいです', 400);
129
+ throw new RuntimeException('ファイルサイズが大きすぎます', 400);
46
130
 
47
131
  default:
48
132
 
49
- throw new RuntimeException('その他エラー', 500);
133
+ throw new RuntimeException('その他エラーが発生しました', 500);
50
134
 
51
135
  }
52
136
 
53
- if (!$info = @**__getimagesize__**($_FILES['upfile']['tmp_name'])) {
137
+ if (!$info = @__**getimagesize**__($_FILES['upfile']['tmp_name'])) {
54
138
 
55
139
  throw new RuntimeException('有効なファイルを指定してください', 400);
56
140
 
@@ -58,6 +142,86 @@
58
142
 
59
143
 
60
144
 
145
+
146
+
147
+ // INSERT処理
148
+
149
+ $stmt = $pdo->prepare('INSERT INTO ????(id,name,raw_data) VALUES(?,?,?)');
150
+
151
+ $stmt->execute([
152
+
153
+ $_FILES['upfile']['name'],
154
+
155
+ $info[2],
156
+
157
+ file_get_contents($_FILES['upfile']['tmp_name']),
158
+
159
+ ob_get_clean(), // バッファからデータを取得してクリア
160
+
161
+ (new DateTime('now', new DateTimeZone('Asia/Tokyo')))->format('Y-m-d H:i:s'),
162
+
163
+ ]);
164
+
165
+
166
+
167
+ $msgs[] = ['green', 'ファイルは正常にアップロードされました'];
168
+
169
+
170
+
171
+ } catch (RuntimeException $e) {
172
+
173
+
174
+
175
+ while (ob_get_level()) {
176
+
177
+ ob_end_clean(); // バッファをクリア
178
+
179
+ }
180
+
181
+ http_response_code($e instanceof PDOException ? 500 : $e->getCode());
182
+
183
+ $msgs[] = ['red', $e->getMessage()];
184
+
185
+
186
+
187
+ }
188
+
189
+
190
+
191
+
192
+
193
+ }
194
+
195
+
196
+
197
+ $rows = $pdo->query('SELECT id,name FROM douga')->fetchAll();
198
+
199
+
200
+
201
+ } catch (PDOException $e) {
202
+
203
+
204
+
205
+ http_response_code(500);
206
+
207
+ $msgs[] = ['red', $e->getMessage()];
208
+
209
+
210
+
211
+ }
212
+
213
+
214
+
215
+ ?>
216
+
217
+ <html>
218
+
219
+ ~~~~~~~
220
+
221
+ </html>
222
+
223
+
224
+
61
225
  ###試したこと
62
226
 
63
227