PHP登録フォームの確認画面で画像を表示する方法

このQ&Aのポイント
  • PHPを勉強し始めたばかりの方が、登録フォームから送信した画像を確認画面でプレビュー表示させたいという質問です。
  • 具体的な質問は、sessionを使わずに$_FILESを使用して画像を表示することができるのか、$_FILESから画像を表示するための正しい方法があるのか、また、PHPをimg要素に挿入することができるのかについてです。
  • 質問者は、PHPの本には確認画面を経由せずに画像をアップロードし、プレビューに関する情報が見当たらなかったと述べています。
回答を見る
  • ベストアンサー

PHP 登録フォームの確認画面で画像を表示したい

こんにちは。いつもお世話になっております。 PHPを勉強し始めたばかりのものです。 登録フォームから送った画像を、確認ページでプレビュー表示させたいです。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12141865207 の質問に辿り着きましたが、実装できませんでした。 3点質問があります。 1、sessionを使わず、$_FILESで実装することが可能なのでしょうか? 2、$_FILESから画像を表示させようとして失敗しています。一時保存場所に画像があると思うのですが、 $photo = $_FILES['UseImg']['tmp_name'] <img src ="<?php echo $photo; ?>"> これでは画像表示ができませんでした。$_FILESに関して根本的な考え違いをしているのだと思うのですが、これはどうしてなのでしょうか? 3、img要素にPHPを挿入することは可能なのでしょうか? 可能だとしたら、何故、以下の方法で動かないのでしょうか。 file.php <form enctype="multipart/form-data" action = "file2.php" method = "post" > <input type="file" name="UseImg"> <input type="submit" name="FILE送信" value="FILE送信"> </form> file2.php <?php session_start(); $_SESSION['UseImg']['type'] = exif_imagetype($_FILES['UseImg']['tmp_name']); $_SESSION['UseImg']['data'] = file_get_contents($_FILES['UseImg']['tmp_name']); echo '<img src="UseImg.php" />'; UseImg.php <?php session_start(); if (!isset($_SESSION['UseImg'])) { die('abort'); } switch ($_SESSION['UseImg']['type']) { case IMAGETYPE_JPEG: header('content-type: image/jpeg'); break case IMAGETYPE_PNG: header('content-type: image/png'); break case IMAGETYPE_GIF: header('content-type: image/gif'); break } echo $_SESSION['UseImg']['data'] 持っているPHPの本では確認画面を通さずに画像をアップロードしており、プレビューに関しては見当たりません。 いつも質問ばかりで申し訳ありませんが、この度も、宜しくお願いします。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

$_FILESはそのスクリプト終了するまでしか存在しません。$_FILES['UseImg']['tmp_name']の位置にあるデータ自体も同様です。スクリプトがimg要素を返して、そのimg要素のsrc属性に指定したphpスクリプトに(画像を表示するために)ブラウザがアクセスしたときにはすでに跡形もありません。そもそも$_FILES['UseImg']['tmp_name']はフルパス(サーバパス)なので、httpスキームになっていません(httpでアクセス出来る場所ではありません)。 $_FILESが有効なうちに表示までしてしまおうと思えば、img要素にdataスキームでバイナリデータを埋め込むしかありませんが、どうせセッション変数に画像データを保持するならセッション変数から表示するスクリプトにした方が手っ取り早いとおもいます(無理にdataスキームを使うこともない)。 提示されたUseImg.phpは(セミコロンの漏れが何箇所かあるので)文法エラーになりますよね(ブラウザから直接UseImg.phpにアクセスし直せば自明です)。下記のように書き替えればちゃんと動くと思います。 <?php session_start(); if (!isset($_SESSION['UseImg'])) { die('abort'); } switch ($_SESSION['UseImg']['type']) { case IMAGETYPE_JPEG: header('content-type: image/jpeg'); break; case IMAGETYPE_PNG: header('content-type: image/png'); break; case IMAGETYPE_GIF: header('content-type: image/gif'); break; } echo $_SESSION['UseImg']['data'];

nike_bmura
質問者

お礼

お陰様で期待通りの動きをしてくれました! 簡単なことにも気づかず本当にすいません。ありがとうございます!! もしお時間がございましたら、考え方の確認にお付き合いくださるととても嬉しいのですが…… 「tmp_nameのデータをfile_get_contentsで文字列として読み込み、それをimgの中に入れ表示している」んですよね……? この文字列はバイナリななのでしょうか。そうだとすると、 $_SESSION['UseImg']['data'] = file_get_contents($_FILES['UseImg']['tmp_name']); $_SESSION['UseImg']['size'] = $_FILES['UseImg']['size']; ------ $size = $_SESSION['UseImg']['size']; $tmp = $_SESSION['UseImg']['data']; $data1 = $freed($tmp, $size) $data2 = bin2hex($data1); とすることによって、16進法にすることができると考えたのですが、残念ながらできませんでした。私の理解の仕方、間違っているのでしょうか……

nike_bmura
質問者

補足

すいません、お礼に書いたコードにあやまりがありました。 $data1 = fread($tmp, $size); $data = bin2hex("$data1"); です。 が、Warning: fread() expects parameter 1 to be resource,のエラーが出てしまいました…… そこで、freadの部分を消して、$data = bin2hex("$tmp");のみにしたら無事mysqlの中に挿入できました。freadの理解が間違っていたようです。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5085/13292)
回答No.1

1.$_FILES とセッションは関係無いので、セッションを使わずに実装することは可能です。 但し、サーバサイドでデータの引き回しが出来なくなるので、ページ遷移する際に必要なデータはPOST等で引き回さなければいけません。 2.一時保存場所は通常外部からアクセスできない場所にあるので、外部からアクセスできる所へファイルを移動させるか、画像データをdataスキームで出力してやる必要があります。 https://www.softel.co.jp/blogs/tech/archives/2117 3.PHPで処理することは可能ですが、画像データはバイナリーなので途中に改行が混ざったりするとブラウザは壊れたバイナリーファイルと認識する可能性が有ります。 表示されなかった際のブラウザ側、サーバ側のエラーメッセージはありますか? その内容が判れば原因が特定できるでしょう。

nike_bmura
質問者

お礼

迅速なお答え、本当にありがとうございます。 確認した後、mysqlに保存するつもりですので、sessionで処理しようと思います。 また、2番の件に関して、詳しくありがとうございました。なるほど、外部からは取り出しできないんですね。dataスキームに関しては、これから調べてみようと思います。 3は、エラーは出ておりません。file2.phpのソースを見ると、<img src="UseImg.php" />しかありませんでした。 UseImg.phpファイルを、 <?php session_start();if (!isset($_SESSION['UseImg'])) { die('abort'); }switch ($_SESSION['UseImg']['type']) {case IMAGETYPE_JPEG:header('content-type: image/jpeg');break case IMAGETYPE_PNG: header('content-type: image/png');break case IMAGETYPE_GIF:header('content-type: image/gif'); break} echo $_SESSION['UseImg']['data']のように、改行を全て消しましたが、変わりませんでした。

関連するQ&A

  • php フォームで画像アップ

    phpにてフォームで画像をUPできる機能を持たせたいのですが、うまくできあがりません。 ファイルもUPされませんがその前の、 $_FILES ***; が機能していないようなのです。 (たとえば$img1をprintしても空となる) http://masago.kir.jp/php20030814.php http://masago.kir.jp/phpsc.php?s=php20030814s.php を参考に $img1 = $_FILES ['aaa']; $img1tmp = $_FILES ['aaa']['tmp_name']; $img1name = $_FILES ['aaa']['name']; $img1size = $_FILES ['aaa']['size']; $img1type = $_FILES ['aaa']['type']; とし、 <input type="file" name="aaa" ENCTYPE="multipart/form-data"> としています。 またレンタルサーバをもちいているのですが、 htaccessの中身は、 <IfModule mod_php4.c> php_value register_globals 1 ・ ・(省略) ・ php_value file_uploads 1 php_value upload_tmp_dir /○○/ </IfModule> としています。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • kcaptchaで画像が表示されません。

    kcaptchaという画像認証を導入しようとしていますが 画像が表示されず(パスが通ってない×印がでる) 投稿させていただきます。 http://freecode.com/projects/kcaptcha 画像表示部分のソースはいかになります。 <form action="index.php" method="post"> <p>Enter text shown below:</p> <p><img src="./kcaptcha.php?<?php echo session_name()?>=<?php echo session_id()?>"></p> <p><input type="text" name="keystring"></p> <p><input type="submit" value="Check"></p> </form> このimg src="./kcaptcha.php?<?php echo session_name()?>=<?php echo session_id()?> がうまく言ってないと思うのですがどう修正したらよいかわからず 投稿させていただきました。 img src="./kcaptcha.php?←の部分はindex.phpなどいろいろ試しましたがだめでした。 何か自作のphpファイルなどを用意する必要があるのでしょうか? 以下環境になります。 サクラレンタルサーバ スタンダードプラン session.save_path /home/user/tmp /home/user/tmp session.use_cookies On On session.use_only_cookies On On session.use_trans_sid 1 1 tmpフォルダにはsessionデータらしきファイルが保存されています。 提示不足の情報などありましたらできる限り 対応したいと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • WordPressの質問(q10113307)の続

    「保存するファイル名につかってはいけない」とのことなのですが、user_add_check.phpの<input type="hidden" name="image_name" value="<?= $user_image['name'] ?>">を使う事はアウトなようです。 自分なりに参考サイトを見て考えてみたのですが、$_SESSION['image']['data']が機能しているのか分からない状態です。 自信がないため2パターン考えてみました。 ※参考サイト https://qiita.com/ryouya3948/items/66294cb445663f2a9d95 user_add.php(要らないもの?) <h2>新規登録</h2> <form method="post" action="user_add_check.php" enctype="multipart/form-data"> <input type="text" name="name" class="user_name_input" placeholder="ユーザー名"> <input type="file" name="image" id="my_image" accept="image/*" multiple> <input class="btn btn-outline-info" type="button" onclick="history.back()" value="戻る"> <input class="btn btn-outline-dark" type="submit" value="登録"> </form> user_add_check.php(入力画面) <?php session_start(); //ファイルの内容を全て文字列に読み込む $_SESSION['userfile']['data'] = file_get_contents($_FILES['userfile']['tmp_name']); //アップロードされたファイルの種類を確認--送られてくる MIME タイプは信用できない--メッセージ全体を偽装できる $_SESSION['userfile']['type'] = exif_imagetype($_FILES['userfile']['tmp_name']); $_SESSION['userfile']['type'] = mime_content_type ($_FILES['userfile']['tmp_name'] ); //画像であるかどうかをexif_imagetype()を使って判別--画像のみ分ける必要があるのか不明 //$_SESSION['userfile']['type'] = exif_imagetype($_FILES['image']['tmp_name']); ?> <img src="image.php"> <form method="post" action="user_add_done.php"> <input type="hidden" name="name" value="<?= $user_name ?>"> <input type="hidden" name="image_name" value="<?= $user_image['name'] ?>"> <input type="button" class="btn btn-outline-info modal_close" onclick="history.back()" value="戻る"> <input type="submit" class="btn btn-outline-dark" value="OK"> </form> image.php(確認画面 バイナリーデータ確認) <?php $load_name = $ext session_start(); switch ($file_ext == $_SESSION['userfile']['type']) { case IMAGETYPE_JPEG: header('content-type: image/jpeg'); break; case IMAGETYPE_PNG: header('content-type: image/png'); break; case IMAGETYPE_GIF: header('content-type: image/gif'); break; case MIME_TYPE_PDF: header('content-type: application/pdf'); break; case MIME_TYPE_MP4: header('content-type: video/mp4'); break; } ?> <?php $load_name = $ext session_start(); switch ($file_ext == $_SESSION['userfile']['type']) { //jpegを表示 case IMAGETYPE_JPEG: header('content-type: image/jpeg'); echo $_SESSION['image']['data']; break; //pngを表示 case IMAGETYPE_PNG: header('content-type: image/png'); echo $_SESSION['image']['data']; break; //pdfを表示 case MIME_TYPE_PDF: header('content-type: application/pdf'); echo( substr( $_SESSION['image']['data'], 0, 5 ) ); break; //mp4を表示 case MIME_TYPE_MP4: header('content-type: video/mp4'); echo( substr( $_SESSION['image']['data'], 4, 4 ) ); break; } ?> ___________________________________________________________ image.php(確認画面 バイナリーデータ確認) <?php function get_file_ext($ext) { //MIMEタイプを取得 $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $_SESSION['image']['data']);/*$GET['image']['data']*/ if (FILE_EXT_PNG == $ext && 'image/png' == $mime_type) { } elseif (in_array($ext, [FILE_EXT_JPEG, '.jpg']) && 'image/jpeg' == $mime_type) { $ext = FILE_EXT_JPEG; } else { // バイナリー文字列確認 $contents = file_get_contents($_SESSION['image']['data']); if (FILE_EXT_PDF == $ext && 'application/pdf' == $mime_type && '%PDF-' == substr($contents, 0, 5)) { } elseif (FILE_EXT_MP4 == $ext && 'video/mp4' == $mime_type && 'ftyp' == substr($contents, 4, 4)) { } else { $ext = null; } } return $ext; } ?> user_add_done.php(表示画面 保存拡張子) $_SESSION['image']これを使う //文字列をファイルに書き込む関数 file_put_contents('./image/',$_SESSION['image']);

    • ベストアンサー
    • PHP
  • PHPで画像データーのアップロードを行っています。

    PHPで画像データーのアップロードを行っています。 一つの画像を imagesファイルにアップロードするまでは出来たのですが一度に複数の画像をアップロードする方法が分りません。 本で読んだところ、fileを配列にすれば良いと書いてあったのですが単純にフォームを配列にしてもやはり一つの画像しかアップ出来ませんでした。 -- form.html -- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <form enctype="multipart/form-data" action='upload.php' method='post'> <input type="hidden" name="MAX_FILE_SIZE" value="102400" /> <input type="file" width=40 name="sendfile" /> <input type="submit" value="送信" /> </form> </body> </html> -- upload.php -- <?php if (!isset($_FILES['sendfile']['name'])){ echo 'ファイルが見つかりません。'; exit; } $fname = $_FILES['sendfile']['name']; $temp = $_FILES['sendfile']['tmp_name']; $target = './images/' . $fname; if (move_uploaded_file($temp,$target)){ echo $fname . "をアップロードしました。"; } else { echo "アップロードに失敗しました。"; } ?> 勉強中の私に分り易く教えていただける方、よろしくお願いいたします。 また、PHPでのメール自動送信は出来たのですが自動受信が分りません。 (お問い合わせメールの様な) これはかなり難しいのでしょうか? フォームからウィンドウズメール、アウトルック等で受信できるようにしたいのですが? PHP3.5+XAMPPでエクリプスを使い勉強しています。

    • ベストアンサー
    • PHP
  • PHP 画像アップローダー作成について

    PHPの勉強をしている者です。 ローカル環境(XAMPP1.7.3)にて、画像アップローダーを動かそうと試みています。 が、一時ファイル名が取得できず、失敗に終わります。初歩的なミスかもしれません。 -------------------- 【upload.html】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>画像ファイルアップロード</title> </head> <body> <h1>画像ファイルアップロード</h1> <p>アップロードする画像ファイル(JPEG形式)を選択して「アップロード」ボタンを押してください。</p> <form action="upload_image.php" method="POST" enctype="multipart/form-data"> <table> <tr> <th>画像ファイル選択</th> <td><input type="file" name="filename" size="50"></td> </tr> <tr> <td colspan="2"> <input type="submit" value="アップロード"> </td> </tr> </table> </form> </body> </html> -------------------- 【upload_image.php】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>画像ファイルアップロード</title> </head> <body> <h1>アップロードファイル情報</h1> <p> <?php // ファイル名の取り出し $file_name = $_FILES['filename']['name']; // ファイル(MIME)タイプの取り出し $file_type = $_FILES['filename']['type']; // 一時ファイル名の取り出し $temp_name = $_FILES['filename']['temp_name']; // エラーコードの取り出し $upload_error = $_FILES["filename"]["error"]; // 保存先のディレクトリ $dir = 'uploads/'; // 保存先のファイル名 $upload_name = $dir . $file_name; // JPEG形式のファイルをアップロードする if (($file_type == "image/jpeg") || ($file_type == 'image/pjpeg')) { // アップロード(移動) $result = move_uploaded_file($temp_name,$upload_name); if ($result) { // アップロード成功時 echo '■アップロード成功'; } else { // アップロード失敗時 echo '■アップロード失敗'; } } else { // JPEG形式以外のファイルはアップロードしない echo '■JPEG形式の画像をアップロードしてください。'; } ?> </p> <table> <tr> <td colspan="2"><img src="<?php echo $upload_name; ?>" alt=""></td> </tr> <tr> <th>エラーコード</th> <td><?php echo $upload_error; ?></td> </tr> <tr> <th>画像ファイル名</th> <td><?php echo $file_name; ?></td> </tr> <tr> <th>MIMEタイプ</th> <td><?php echo $file_type; ?></td> </tr> <tr> <th>一時ファイル名</th> <td><?php echo $temp_name; ?></td> </tr> </table> </body> </html> -------------------- 【php.iniの一部】 ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. ; http://php.net/file-uploads file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir upload_tmp_dir = "C:\xampp\tmp" ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 128M -------------------- このように作っております。 結果は エラーコード→0 画像ファイル名→正常取得 MIMEタイプ→正常取得 一時ファイル名→空 どのような原因が考えられるか、教えて頂ければ幸いです。

    • ベストアンサー
    • PHP
  • PHPで画像をアップロード&保存したいのですが..

    初心者です. ブラウザから画像をアップロードし保存できるようにしたく, サンプルを基に以下のようなソースを書いてみたのですが, 画像の保存ができません. もし直さなければいけないところがわかる人がいらっしゃいましたら ぜひ教えてください. よろしくお願いいたします. <?php $img_name = $_FILES["img_path"]["name"]; $img_size = $_FILES["img_path"]["size"]; $img_type = $_FILES["img_path"]["type"]; $img_tmp = $_FILES["img_path"]["tmp_name"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 30000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type <br>一時的に保存されているパスは: $img_tmp <br>"; }else{ $size_error = "サイズが大きすぎます。ファイルサイズは30キロバイト以下です。"; } } $FilePath = "./img/".src.".".GetExt($img_name); move_uploaded_file($img_temp,$FilePath); //GetExt function GetExt($FilePath){ $f = strrev($FilePath); $ext = substr($f, 0, strpos($f,".")); return strrev($ext); } ?>

    • 締切済み
    • PHP
  • mysqlに保存した画像を表示したい

    フォームからmysqlに画像(jpg形式)を保存しました。 カラム名はmain_imgでblob型です。 流れとしては 1:入力フォーム // イメージ取得 $image = file_get_contents($_FILES['image']['tmp_name']); // 取得したイメージをセッションに代入 $_SESSION['regist']['image'] = $image; 2:確認ページ 特になにもせず 3:登録完了ページ $_SESSION['regist']['image']をmysql_real_escape_stringし 変数名を$imageに変更。 カラム名main_imgに$imageをINSERT この段階でphpmyadminを見るとカラム名main_imgには [BLOB - 4.3 KiB]となっております。 次にmysqlに保存した画像を表示させたいと思い ---view.php--- $res =& $mdb2->query('SELECT * FROM products'); while ($row = $res->fetchRow()) { $img_list['main_img'] = $row['main_img']; } $mdb2->disconnect(); header('Content-type: image/jpeg'); echo $img_list['main_img']; ---view.html--- <img src="view.php?id=2" /> としたのですがなぜか画像が表示されません。 header('Content-type: image/jpeg');をコメントアウトすると 意味不明な文字列?が表示されます。 view.phpにアクセスするとhttp://~~/view.phpとurlが 画像として表示されFireFoxでブラウザを更新すると一瞬だけ 『画像ファイル "http://~~/view.php" は壊れているため、表示できませんでした。』 と表示されます。 ie,safariでも試しましたが画像は表示されませんでした。 調べてみたのですが同じような事例がみつからなかったのですが 解決するにはどうすればいいものでしょうか?

    • ベストアンサー
    • PHP
  • PHP、確認画面の画像を自作の画像をクリックする

    PHP、確認画面の画像を自作の画像をクリックすることで、入力情報の確認表示画面を表示させたいのですが、上手くいきません。今までは入力された情報確認画面の表示で 一番したの方にある<p colspan="2"><input type ="submit" name ="submit"value="確認画面へ"></p> "確認画面へ" というボタンを押すことで次ページに行けたのですが、 "確認画面へ"のボタンをオリジナルの画像(付属画像名sss.png)という画像をクリックして同じように確認画面の次ページに行きたいのですが、以下のコードで <a href="sample2.html"><img src=”sss.png" alt="次へ"></a> で一応画像をクリックすれば、次ページに行けますが情報が送られていません。 <p colspan="2"><input type ="submit" name ="submit"value="確認画面へ"></p> のコードに画像を加えたコードはどう書いたらよいでしょうか? 困っています。回答よろしくお願い致します。 <?php session_start(); $errors = array(); if(isset($_POST['submit'])) { $email = $_POST['email']; if($email === "") { $errors['email'] ="メールアドレスが入力されていません。 "; } if(count($errors) === 0) { $_SESSION['email'] = $email; header('Location:http://◎◎◎.php'); exit(); } } if(isset($_GET['action']) && $_GET['action'] === 'edit'){ $email = $_SESSION['email']; } ?> <!DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8"/> <title>お問い合わせ</title> <link rel="stylesheet" href="syoki.css"> <style> <?php echo "<ul>";foreach($errors as $value) { echo "<li>"; echo $value; echo "</li>"; } echo "</ul>"; ?> </head> <body> <form action ="hpform1.php" method ="post" class="auto-style1"> <div class="auto-style1"> <p class="px-num"> メールアドレス:※ </p> <input type="text" class="email" name="email" id="email" value="<?php if(isset($email)){ echo $email; } ?>"/> <p></p> <p colspan="2"><a href="sample2.html"></a><input type ="submit" name ="submit"value="確認画面へ"></p> <a href="sample2.html"><img src="next.png" alt="次へ"></a> </form> </body></html>

    • ベストアンサー
    • PHP
  • PHPとMySQLを使い、画像データベースを構築しています。

    PHPとMySQLを使い、画像データベースを構築しています。 以下までできたのですが、SQL syntaxエラーが発生してしまい、UP出来ませんでした。 画像を指定しない場合は、成功します。 <form method="post" action="addinfo.php" enctype="multipart/form-data"> Place Name(*)<br> <input type="text" size="50" maxlength="100" name="place_name"><br> Address(*)<br> <input type="text" size="50" maxlength="100" name="address"><br> Pictures<br> <input type="file" size="50" name="picture1"><br> <input type="file" size="50" name="picture2"><br> <input type="file" size="50" name="picture3"><br> <input type="reset" value="Reset" name ="reset"> <input type="submit" value="Submit" name="submit"> </form> <?php if ($_POST["submit"] != "") { // Connecting DB require 'lib.php'; //img1 if ($_FILES["picture1"]["tmp_name"] != NULL) { $fp = fopen($_FILES["picture1"]["tmp_name"], "rb"); if (!$fp) { print("Cannot open the uploaded file <BR>\n"); exit; } $img1 = fread($fp, filesize($_FILES["picture1"]["tmp_name"])); fclose($fp); } ----------------------------------------------------------- img2, img3についての処理もimg1と同じなので、文字数の関係で省略します ----------------------------------------------------------- // Insert Query $sql = "INSERT INTO places (place_name, address, `picture1`, `picture2`, `picture3`) VALUES('{$_POST["place_name"]}','{$_POST["address"]}', '{$img1}', '{$img2}', '{$img3}') "; $result = mysql_query($sql); if (!$result) { print("QUERRY ERROR<BR>\n"); print(mysql_errno() . ": " . mysql_error() . "<BR>\n"); exit; } echo "UPLOAD SUCCESSFULL "; ご教授お願いいたします

    • ベストアンサー
    • MySQL
  • php入力画面から確認画面へ情報の受け渡しについて

    php 参考書を見て、入力フォームを作成しているのですが、入力画面から確認表示画面へ情報の受け渡しについて。コードは下に記載してます。 最初の入力画面ではmethod=postで送信した値を$name = $_POST['name'];に格納して次ページに値を渡すそうですが、 しかし最初の入力画面のコードに$name = $_POST['name'];と、もうひとつ、$name = $_SESSION['name'];でセッションに保存して、次ページに送るそうですが、 保存したSESSIONの値は次ページの確認表示画面から戻る際に値を保持する際に使うからだそうですが、値を次ページに送る役割が$_POSTやSESSIONにあるならば、SESSIONの記述のみで 次ページに送れると思うのですが、なぜこのコードの場合、$_POSTに値を格納する必要があるのでしょうか? 以下のような解釈で正しいでしょうか?? 「$_POSTは送られた値をフォームのvalue内にechoで出力するため、SESSIONはページから戻る場合に値を保持するため」 回答よろしくお願いいたします。 コード 入力初期画面 <?php session_start(); $errors = array(); if(isset($_POST['submit'])){ $name = $_POST['name']; if($name === ""){ $errors['name'] = "お名前が入力されていません。"; } if(count($errors) ===0){ $_SESSION['name'] = $name; header('Location:https:次ページへform2.php'); exit(); } } ?> <body> <form action="form1.php" method="post"> お名前 <input type="text" name="name" value="<?php if(isset($name)){echo $name;}?>"> <input type="submit" name="submit" value="確認画面へ"> </body> コード 確認表示画面 <?php session_start(); if(isset($_SESSION['name'])){ $name = $_SESSION['name']; } <body> <form action="form3.php" method="post"> お名前 <?php echo $name;?> <input type="submit" name="submit" value="送信する"> p><a href="form1.php?action=edit">入力画面へ戻る</a></p> </body>

    • ベストアンサー
    • PHP