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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2329閲覧

$_POST,$_SESSIONの受け渡しがうまくいかない

yuyuyuyugi2

総合スコア17

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/01/18 04:49

前提・実現したいこと

PHPを始めたばっかりなのでわかりやすくおしえていただきたいです。

PHPでお問い合わせフォームとつくっているのですが
一つ目は
index.phpでtxtareaで入力したのが$_POSTにはいらなくエラーを出したときにtextareaの所に入力したのが残っていない。

二つ目は
index.php→confirm.phpに遷移し戻るを押した際値の移動が出来ずindex.phpに戻った際入力したものが消えてしまっている。
の二点です

該当のソースコード

index.php

<?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文字以下で記入してください。"; //echo $errors['num']; } 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(filter_input(INPUT_POST,'comment')){ $comment = filter_input(INPUT_POST,'comment'); print_r($_POST); }else{ $_SESSION['message'] = $_POST['message']; $_SESSION['mail'] = $_POST['mail']; $_SESSION['comment'] = $_POST['comment']; $upfile = $_FILES['upfile']; //header("location: confirm.php"); // print_r($_SESSION); 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 = "commnt"> <?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

<!DOCTYPE html> <?php session_start(); $message = $_SESSION['message']; $mail = $_SESSION['mail']; $comment = $_SESSION['comment']; //$comment = nl2br($comment); echo "<br>".htmlspecialchars($message)."<br>"; echo "メールアドレス<br>".htmlspecialchars($mail)."<br>"; echo "お問い合わせ内容<br>".htmlspecialchars($comment)."<br>"; echo "<br>"; print_r($_SESSION); if(isset($upfile['tmp_name'])){ $type = exif_imagetype($upfile['tmp_name']); if($upfile !== IMAGETYPE_JPEG && $upfile !==IMAGETYPE_PNG && $upfile !== IMAGETYPE_GIF){ $err['pic']='対象ファイルはPNG,JPG,GIFのみです。'; echo $err['pic']; }else { $extension = pathinfo($upfile['name'], PATHINFO_EXTENSION); $new_upfile = mb5(uniqid(mt_rand(),true)).'.'.$extension; move_uploaded_file($upfile['tmp_name'], './img'.$new_upfile); } } echo "<br> 画像をアップロードしました</p>"; 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 ="submit" name = "success" value = "送信"/> <input type ="submit" name = "back" value = "戻る" /> </form> </body> </html>

よろしくお願いします。

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

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

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

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

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

m.ts10806

2019/01/18 04:59

(質問は編集できます) コードはマークダウンのcode機能を利用してご提示ください
guest

回答1

0

ベストアンサー

  • 一つ目

タイプミス:textarea name = "commnt"

  • 二つ目

戻るときには、何もPOSTされてないので、セッションに保存できない(するものがない)。indexから来たときに、hiddenのinputとかに値をもっといて、戻るのpostで再送信させる必要がある

投稿2019/01/18 04:54

編集2019/01/18 05:00
papinianus

総合スコア12705

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

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

yuyuyuyugi2

2019/01/18 05:21

ありがとうございます。 二つ目なのですが <input type="hidden" name="message" value="<?php echo $_POST['message']; ?>"> という形でよいのでしょうか? 初期で的なことを聞いてしまってすいません
papinianus

2019/01/18 05:23

そうですね。そういう感じです。
yuyuyuyugi2

2019/01/18 05:32

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

2019/01/18 06:27

たびたびすいません indesx.phpでcommentに格納された値が $_POSTでは値は入っているのですが $_SESSION['comment'] = $_POST['comment']; の所が$_SESSIONに変換されず次のページに行かないのですが 調べたのですがわからないのですがどのような形にすればよいのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問