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

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

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

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

3435閲覧

【PHP】アップロードした画像を次の画面で表示したいのですが、表示されません

MihoK

総合スコア2

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2020/04/24 07:26

セッションに保存した画像を次の画面に表示したいのですが、表示することができません。

画面遷移すると、下の画像のように小さなアイコンで表示されます。
イメージ説明

ニックネームやメールアドレスは次の画面まで保存されているので、セッションに問題はないと思います。
また、画像は指定したファイルに保存されているので、画像の行き来も問題ないと思います。

画像をアップロードする画面(index.php)↓

PHP

1<?php 2session_start(); 3 4if(!empty($_POST)) { 5 if ($_POST['name'] === '') { 6 $error['name'] = 'blank'; 7 } 8 if ($_POST['email'] === '') { 9 $error['email'] = 'blank'; 10 } 11 if (strlen($_POST['password']) < 4 ) { 12 $error['password'] = 'length'; 13 } 14 if ($_POST['password'] === '') { 15 $error['password'] = 'blank'; 16 } 17 $fileName = $_FILES['image']['name']; 18 if(!empty($fileName)) { 19 $ext = substr($fileName, -3); 20 if ($ext != 'jpg' && $ext != 'gif' && $ext != 'png') { 21 $error['image'] = 'type'; 22 } 23 } 24 25 if (empty($error)) { 26 $image = date('YmdHis') . $_FILES['image']['name']; 27 move_uploaded_file($_FILES['image']['tmp_name'],'../member_picture/' . $image); 28 $_SESSION['join'] = $_POST; 29 header('Location: check.php'); 30 exit(); 31 } 32} 33 34if($_REQUEST['action'] == 'rewrite' && isset($_SESSION['join'])) { 35 $_POST = $_SESSION['join']; 36} 37?> 38<!DOCTYPE html> 39<html lang="ja"> 40<head> 41 <meta charset="UTF-8"> 42 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 43 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 44 <title>会員登録</title> 45 46 <link rel="stylesheet" href="../style.css" /> 47</head> 48<body> 49<div id="wrap"> 50<div id="head"> 51<h1>会員登録</h1> 52</div> 53 54<div id="content"> 55<p>次のフォームに必要事項をご記入ください。</p> 56<form action="" method="post" enctype="multipart/form-data"> 57 <dl> 58 <dt>ニックネーム<span class="required">必須</span></dt> 59 <dd> 60 <input type="text" name="name" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['name'], ENT_QUOTES)); ?>" /> 61 <?php if ($error['name'] === 'blank'): ?> 62 <p class="error">* ニックネームを入力してください</p> 63 <?php endif; ?> 64 </dd> 65 <dt>メールアドレス<span class="required">必須</span></dt> 66 <dd> 67 <input type="text" name="email" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['email'], ENT_QUOTES)); ?>" /> 68 <?php if ($error['email'] === 'blank'): ?> 69 <p class="error">* メールアドレスを入力してください</p> 70 <?php endif; ?> 71 <dt>パスワード<span class="required">必須</span></dt> 72 <dd> 73 <input type="password" name="password" size="10" maxlength="20" value="<?php print(htmlspecialchars($_POST['password'], ENT_QUOTES)); ?>" /> 74 <?php if ($error['password'] === 'length'): ?> 75 <p class="error">* パスワードは4文字以上で入力してください</p> 76 <?php endif; ?> 77 <?php if ($error['password'] === 'blank'): ?> 78 <p class="error">* パスワードを入力してください</p> 79 <?php endif; ?> 80 </dd> 81 82 <!--////// ↓画像のアップロード↓ //////--> 83 <dt>写真など</dt> 84 <dd> 85 <input type="file" name="image" size="35" value="test" /> 86 <?php if ($error['image'] === 'type'): ?> 87 <p class="error">* 写真などは「.gif」または「.jpg」「.png」の画像を指定してください</p> 88 <?php endif; ?> 89 <?php if (!empty($error)): ?> 90 <p class="error">* 恐れ入りますが、画像を改めて指定してください</p> 91 <?php endif; ?> 92 </dd> 93 <!--////// ↑画像のアップロード↑ //////--> 94 </dl> 95 <div><input type="submit" value="入力内容を確認する" /></div> 96</form> 97</div> 98</body> 99</html> 100

画像を表示したい画面(check.php)↓

PHP

1<?php 2session_start(); 3 4if(!isset($_SESSION['join'])) { 5 header('Location: index.php'); 6 exit(); 7} 8?> 9<!DOCTYPE html> 10<html lang="ja"> 11<head> 12 <meta charset="UTF-8"> 13 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 14 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 15 <title>会員登録</title> 16 17 <link rel="stylesheet" href="../style.css" /> 18</head> 19<body> 20<div id="wrap"> 21<div id="head"> 22<h1>会員登録</h1> 23</div> 24 25<div id="content"> 26<p>記入した内容を確認して、「登録する」ボタンをクリックしてください</p> 27<form action="" method="post"> 28 <input type="hidden" name="action" value="submit" /> 29 <dl> 30 <dt>ニックネーム</dt> 31 <dd> 32 <?php print(htmlspecialchars($_SESSION['join']['name'], ENT_QUOTES)); ?> 33 </dd> 34 <dt>メールアドレス</dt> 35 <dd> 36 <?php print(htmlspecialchars($_SESSION['join']['email'], ENT_QUOTES)); ?> 37 </dd> 38 <dt>パスワード</dt> 39 <dd> 40 【表示されません】 41 </dd> 42 <dt>写真など</dt> 43 <dd> 44 45 <!--//////// ↓画像を表示する↓ //////--> 46 <?php if ($_SESSION['join']['image'] !== ''): ?> 47 <img src="../member_picture/<?php print(htmlspecialchars($_SESSION['join']['image'], ENT_QUOTES)); ?>"> 48 <?php endif; ?> 49 <!--//////// ↑画像を表示する↑ //////--> 50 51 </dd> 52 </dl> 53 <div><a href="index.php?action=rewrite">&laquo;&nbsp;書き直す</a> | <input type="submit" value="登録する" /></div> 54</form> 55</div> 56 57</div> 58</body> 59</html> 60 61``` 62 63画像を表示しているコード↓ 64```PHP 65<?php if ($_SESSION['join']['image'] !== ''): ?> 66 <img src="../member_picture/<?php print(htmlspecialchars($_SESSION['join']['image'], ENT_QUOTES)); ?>"> 67 <?php endif; ?> 68``` 69 70 71よろしくお願いします。

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

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

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

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

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

m.ts10806

2020/04/24 07:35

>$_SESSION['join'] = $_POST; 「気づけばプロ並み」やその類いの書籍なら今後は切り替えたほうが良いです。
MihoK

2020/04/24 08:41

回答ありがとうございます。 使用している教材は、udemyのPHPとmySQLの講座です。 『$_SESSION['join'] = $_POST;』が違うということでしょうか?
guest

回答1

0

ベストアンサー

ブラウザの「ソースを表示」してみてください。
imgタグのところどうなってますか?

そもそも$_SESSION['join']['image']に何を保持させているか意識はされていますか?デバッグしてみましょう。
var_dump()の引数に内容を確認したい変数を渡すだけです。

そもそも$_SESSION['join']imageが存在するか?
そして何が格納されているか?
確認してみましょう。

問題の切り分けです。
「どこまでできていてどこができていないか」を知る手段です。

そうすれば自ずと見えてくるはずです。

投稿2020/04/24 07:42

m.ts10806

総合スコア80875

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

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

MihoK

2020/04/24 08:35

回答ありがとうございます。 確かにソースを確認すると、パスが最後まで表示されていなかったので、次のページに渡ってないようです。 ソースを確認したら画像が下記のようになっていました。 <img src="../member_picture/"> デバックはどのようにしたらいいのでしょうか?
m.ts10806

2020/04/24 08:38

書いてます。 >var_dump()の引数に内容を確認したい変数を渡すだけです。 細かいですが debug なので「デバッグ」が正しいです。
MihoK

2020/04/24 08:43

すいません(^^; 次からデバッグと記載するようにします。 『var_dump()』のところを確認してみます!
MihoK

2020/04/24 08:53

var_dump($_SESSION['join']['image']); のようにしたら、NULLと表示されたので、何も入っていないようです。
m.ts10806

2020/04/24 09:02 編集

はい。何も入れてませんのでNULLと出てます。 ただ、全体的に何を入ってるか確認するなら $_SESSION['join'] の方ですね。 答えだけ言うのは簡単ですが、プログラムの追い方は今のうちに覚えておいた方が質問せずとも自分で解決できるようになります。
MihoK

2020/04/24 09:21

はい! 私も自力で解決できる方法を身につけたいと思っています! $_SESSION['join']を確認してみます。
MihoK

2020/04/25 02:42

index.phpに $_SESSION['join']['image'] = $image; の記述がないだけでした。 セッションにデータを入れる勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問