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

回答編集履歴

5

加筆修正

2019/10/22 11:55

投稿

退会済みユーザー
answer CHANGED
@@ -33,4 +33,16 @@
33
33
  [PHP: 自動的に定義される定数 - Manual](https://www.php.net/manual/ja/language.constants.predefined.php)
34
34
  ![__DIR__の解説](d8a7ca4889162bef51f43cbba3a76636.png)
35
35
  `__DIR__`には、ディレクトリを示す最後の区切り記号がつかないそうなので、
36
- そこを直せばうまくいくと思います。
36
+ そこを直せばうまくいくと思います。
37
+
38
+ --
39
+
40
+ 質問文、末尾の、
41
+ createset.phpの先頭でこのコードを打つと、
42
+ ~~
43
+ と出力されました、は、
44
+ ファイルアップロードを伴わない状態で$_FILESにアクセスしていないでしょうか。
45
+ POST送信(form要素でmethod="POST")しつつ、
46
+ input要素でname="image" type="file"にしていて送信できていれば、
47
+ $_FILES['image']がカラになることはないと思うのですが。
48
+ `if (isset($_FILES['image']))`などの判定は必要かと思います。

4

見直し

2019/10/22 11:54

投稿

退会済みユーザー
answer CHANGED
@@ -13,7 +13,7 @@
13
13
  具体的なやり方も、そのページの
14
14
  「例2 ファイルのアップロードを検証する」のサンプルコードが参考になるはずです。
15
15
  ```php
16
- move_uploaded_file($_FILES['image']['tmp_name'], __DIR__ . 'card_image/' . date('YmdHis') . $_FILES['image']['name']);
16
+ move_uploaded_file($_FILES['image']['tmp_name'], __DIR__ . '/card_image/' . date('YmdHis') . $_FILES['image']['name']);
17
17
  ```
18
18
  などとするなど。
19
19
  それと、アップロード元のファイル名(`$_FILES['image']['name']`)をそのまま信用しないで、
@@ -25,4 +25,12 @@
25
25
  ・コピー後のパス情報を、データベースに記録しておく。
26
26
 
27
27
  表示の処理:
28
- ・データベースに保存してあるファイルのパスを、img要素に組み込んで出力。
28
+ ・データベースに保存してあるファイルのパスを、img要素に組み込んで出力。
29
+
30
+ --
31
+
32
+ すみません、サンプルコードを間違ってました。
33
+ [PHP: 自動的に定義される定数 - Manual](https://www.php.net/manual/ja/language.constants.predefined.php)
34
+ ![__DIR__の解説](d8a7ca4889162bef51f43cbba3a76636.png)
35
+ `__DIR__`には、ディレクトリを示す最後の区切り記号がつかないそうなので、
36
+ そこを直せばうまくいくと思います。

3

見直し

2019/10/21 04:27

投稿

退会済みユーザー
answer CHANGED
@@ -12,6 +12,13 @@
12
12
  に例示されているので読むべきです。
13
13
  具体的なやり方も、そのページの
14
14
  「例2 ファイルのアップロードを検証する」のサンプルコードが参考になるはずです。
15
+ ```php
16
+ move_uploaded_file($_FILES['image']['tmp_name'], __DIR__ . 'card_image/' . date('YmdHis') . $_FILES['image']['name']);
17
+ ```
18
+ などとするなど。
19
+ それと、アップロード元のファイル名(`$_FILES['image']['name']`)をそのまま信用しないで、
20
+ 別途ファイル名をphp側で自動生成することをお勧めします。
21
+ (アップロードデータを細工して、サーバーで使えない文字コードを詰めることも可能なため。)
15
22
 
16
23
  アップロード時の処理:
17
24
  ・一時的ファイルを、webブラウザからアクセス可能な場所にコピーする(move_uploaded_file)

2

加筆修正

2019/10/15 01:24

投稿

退会済みユーザー
answer CHANGED
@@ -11,4 +11,11 @@
11
11
  [PHP: POST メソッドによるアップロード - Manual](https://www.php.net/manual/ja/features.file-upload.post-method.php)
12
12
  に例示されているので読むべきです。
13
13
  具体的なやり方も、そのページの
14
- 「例2 ファイルのアップロードを検証する」のサンプルコードが参考になるはずです。
14
+ 「例2 ファイルのアップロードを検証する」のサンプルコードが参考になるはずです。
15
+
16
+ アップロード時の処理:
17
+ ・一時的ファイルを、webブラウザからアクセス可能な場所にコピーする(move_uploaded_file)
18
+ ・コピー後のパス情報を、データベースに記録しておく。
19
+
20
+ 表示の処理:
21
+ ・データベースに保存してあるファイルのパスを、img要素に組み込んで出力。

1

見直し

2019/10/14 10:10

投稿

退会済みユーザー
answer CHANGED
@@ -1,11 +1,14 @@
1
1
  [PHP: $_FILES - Manual](https://www.php.net/manual/ja/reserved.variables.files.php)
2
2
  `$_FILES`に格納されているアップロードファイルデータは、
3
3
  一時的なところにファイルが生成されている仮のもので、
4
- 受信したphpの処理が終わると消えてしまいます。
4
+ 受信したphpの処理が終わると**消えてしまいます**
5
+
5
6
  消えないよう、
6
7
  [PHP: move_uploaded_file - Manual](https://www.php.net/manual/ja/function.move-uploaded-file.php)
7
8
  を使って分かる場所にファイルを移動して管理する必要があります。
8
9
 
9
10
  `$_FILES`にどういうデータが記録されているかは
10
11
  [PHP: POST メソッドによるアップロード - Manual](https://www.php.net/manual/ja/features.file-upload.post-method.php)
11
- に例示されているので読むべきです。
12
+ に例示されているので読むべきです。
13
+ 具体的なやり方も、そのページの
14
+ 「例2 ファイルのアップロードを検証する」のサンプルコードが参考になるはずです。