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

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

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

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

Q&A

解決済

1回答

483閲覧

画像の挿入をし次のページへ遷移

yuyuyuyugi2

総合スコア17

PHP

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

0グッド

1クリップ

投稿2019/01/21 07:33

お問い合わせフォームをつくっているのですが

index.phpで、jpg、png、gifのみの画像挿入をし、次のcomfirm.phpで確認画面にいけるようにしたいのですが

print_r($_FILES);をするとupfile内には値が入っているのですが対象ファイルの処理文がうまくいかず次のページへファイルを持っていけません。
初心者なのですがわかる方がいらっしゃいましたら教えてください。
index.php

session_start(); $errors = array(); $comment = filter_input(INPUT_POST,'comment'); // print_r($_SESSION); if (filter_input(INPUT_POST, 'message')) { $message = filter_input(INPUT_POST, 'message'); if ((mb_strlen($message) >= 10 || mb_strlen($message) <= 5)) { $errors['num'] = "5文字以上10文字以下で記入してください。"; } if (preg_match('/^[a-zA-Z0-9]+$/', $message)) { $errors['abc'] = "ひらがなで入力してください。"; echo "<ul>"; foreach ($errors as $com) { echo "<li>{$com}</li>"; } echo "</ul>"; } if (filter_input(INPUT_POST, 'mail')) { $mail = filter_input(INPUT_POST, 'mail'); if (!preg_match("/^[a-zA-Z0-9_¥.¥-]+@[a-zA-Z0-9¥-]+.[a-zA-Z0-9]{2,4}$/", $mail)) { echo "メールアドレスを入力してください"; } } if(isset($_FILES['upfile'])){ $upfile = $_FILES['upfile']; print_r($_FILES); if($upfile !== IMAGETYPE_JPEG || $upfile !==IMAGETYPE_PNG || $upfile !== IMAGETYPE_GIF){ echo "対象ファイルはPNG,JPG,GIFのみです。"; //$_FILES['upfile']['type'] } }else{ $_SESSION['message'] = $_POST['message']; $_SESSION['mail'] = $_POST['mail']; $_SESSION['comment'] = $_POST['comment']; $upfile = $_FILES['upfile']['name']; header("location: confirm.php"); exit; } } ?> <html> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <br> <input type="text" name ="message" value ="<?php if (isset($message)) { echo $message; } ?>" /><br> <lable>メールアドレス<br></lable> <input type="text" name ="mail" size ="40" value ="<?php if (isset($mail)) { echo $mail; } ?>" /><br> <label>お問い合わせ内容<br></lable> <textarea name = "comment"> <?php if (isset($comment)) { echo nl2br($comment); } ?></textarea> <br> <p><input type="file" name="upfile" required/></p> <input type="submit" value="送信" name="submit_btm"/> </form> </body> </html>

confirm.php

<?php session_start(); $message = $_SESSION['message']; $mail = $_SESSION['mail']; $comment = $_SESSION['comment']; $upfile = $_FILES['upfile']['name']; echo "<br>".htmlspecialchars($message)."<br>"; echo "メールアドレス<br>".htmlspecialchars($mail)."<br>"; echo "お問い合わせ内容<br>".htmlspecialchars($comment)."<br>"; echo "画像<br>".htmlspecialchars($upfile)."<br>"; if (isset($_POST["success"])) { header("location: comp.php"); exit; }elseif(isset($_POST["back"])){ header("location: index.php"); exit; } ?> <html> <head> <meta charset="UTF-8"> <title>confirm</title> </head> <body> <form action ="" method = "post"> <input type="hidden" name="massage" value=""<?php echo $message;?>> <input type="hidden" name="mail" value=""<?php echo $mail;?>> <input type="hidden" name="comment" value=""<?php echo nl2br($comment);?>> <input type ="submit" name = "success" value = "送信"/> <input type ="submit" name = "back" value = "戻る" /> </form> </body> </html>

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

FILESもPOSTと同じくactionのあて先にしか送信できません。
つまり、適当な一時フォルダにアップロードして(move_uploaded_file())そのファイルのパスをセッションで持ちまわってはどうでしょうか。
確認画面で「送信」されたときに正規のフォルダにrename()する形ですね。
一時フォルダにゴミファイルが溜まることにもなるのでうまく削除するようにしてください。

投稿2019/01/21 07:43

m.ts10806

総合スコア80850

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

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

yuyuyuyugi2

2019/01/22 00:46

ありがとうございます やってみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問