質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

789閲覧

php 登録画面(画像✖3を含む)→確認画面→完了画面の遷移で、完了画面でDBに入力内容を保存したい。

taka211

総合スコア17

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/04/10 07:11

前提・実現したいこと

登録画面(画像アップロードを含む)→確認画面→完了画面の遷移で、完了画面でDBに入力内容を保存したく、自分で作りDB保存までできたのですが、少し無理矢理感があったので、もっと方法があるのではと疑問に思い質問させていただきました。

画像アップロードは画像を3つほど選択可能で、
確認画面では保存する前にその画像を表示して確認できるようにしたいと思っております。

自分でいろいろ調べてやっているなかで、
登録画面(1.php)→確認画面(2.php)で$_POSTの内容と$_FILESの内容を丸々$SESSIONに格納、

その後
完了画面で$SESSIONに入っている内容をDBに登録という流れで作ったのが以下で実際に登録できたのですが、これでいいのかと少し不安に感じております(こんな単純な方法の記事が見つからなかったため)

アドバイスいただければと思います

該当のソースコード

php

12.php 2確認画面 画像nameはA,B,Cで設定しています。 3session_start(); 4$_SESSION['img'] = $_FILES; 5$_SESSION['input'] = $_POST; 6 7foreach ($_FILES as $key => $value) { 8 $img[$key] = file_get($key); 9} 10html 11<?php echo $img['A']; ?> 12//file_get($filekey) 13{ 14 $img_data = 'ファイルが選択されていません'; 15 if (!$_FILES[$filekry]['error']) { 16 $fp = fopen($_FILES[$filekey]['tmp_name'], "rb"); 17 $img = fread($fp, filesize($_FILES[$filekey]['tmp_name'])); 18 fclose($fp); 19 20 $enc_img = base64_encode($img); 21 $imginfo = getimagesize('data:application/octet-stream;base64,' . $enc_img); 22 $img_data = '<img src="data:' . $imginfo['mime'] . ';base64,' . $enc_img . '">'; 23 } 24 return $img_data; 25} 26}

php

13.php 2完了画面 3session_start(); 4 5$img = $_SESSION['img']; 6foreach ($img as $key => $value) { 7 $data['data' . $key] = $value['tmp_name']; 8 $data['name' . $key] = $value['name']; 9} 10 11$userData = $_SESSION['login_user']; 12$postData = $_SESSION['input']; 13$inputData = array_merge($userData, $postData, $data); 14 15if ($db->register($inputData)) { 16 $mes = '登録が完了しました。'; 17} 18//register($inputData)でDBに登

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/04/10 08:53

何を不安視しているのかよく分かりませんが、できたならそれでいいのでは?
taka211

2021/04/10 11:19

動いても脆弱性の考慮がが十分か自信がなかったので 問題なさそうなら、大丈夫です。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問