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

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

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

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

Q&A

解決済

2回答

746閲覧

コンタクトフォームで入力した内容がメールの送信先でひきつがれません。

u...

総合スコア3

PHP

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

0グッド

0クリップ

投稿2021/05/19 14:05

PHPのコンタクトフォームで入力した内容を送信した先に$_SESSONで引き継がせたい。

発生している問題・エラーメッセージ

ローカル環境では$_SESSONで引き継がれているのにサーバー
を介すると引き継がれない。

該当のソースコード

PHP

1<meta charset="UTF-8"> 2<?php 3session_start(); 4 5 $mode = "input"; 6 7 $errmessage = array(); 8 9 if( isset($_POST["back"] ) && $_POST["back"] ){ 10 // 何もしない 11 12 13 } else if( isset($_POST["confirm"] ) && $_POST["confirm"] ){ 14 15 16 $_SESSION['your_name']= $_POST['your_name']; 17 $_SESSION['your_email'] = $_POST['your_email']; 18 $_SESSION['your_message'] = $_POST['your_message']; 19 20 $mode = "confirm"; 21 22 } else if( isset($_POST["send"] ) && $_POST["send"] ){ 23 // 送信ボタンを押したとき 24$message = "お問い合わせを受け付けました\r\n" ."名前:" .$_SESSION["your_name"]. "\r\n" ."email:" . $_SESSION['your_email']. "\r\n" ."お問い合わせ内容:\r\n" .preg_replace("/\r\n|\r\n/" , "\r\n" , $_SESSION['your_message']); 25 26 27 mb_send_mail($_SESSION["your_email"], "お問い合わせありがとうございます", $message ); 28 mb_send_mail("info@ichidesign.info", "お問い合わせありがとうございます", $message ); 29 30 31 $_SESSION = array(); 32 33 $mode = "send"; 34 35 36 }else{ 37 $_SESSION = array(); 38 39 40 $_SESSION['your_name'] =""; 41 42 $_SESSION['your_email'] = ""; 43 $_SESSION['your_message'] ="" ; 44 45 } 46?> 47 48 49<!DOCTYPE html> 50 51<html lang="ja"> 52<head> 53 <meta charset="UTF-8"> 54 <!-- <meta http-equiv="X-UA-Compatible" content="IE=edge"> --> 55 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 56 <title>お問合せフォーム</title> 57 58 <link rel="stylesheet" href="css/sanitize.css"> 59 <link rel="stylesheet" href="css/uno.css"> 60</head> 61 62<body> 63 64<?php if( $mode == 'input' ) { ?> 65 66 <!-- // ⇩入力画面 --> 67 <!-- <form action="./contact_form.php" method="post"> --> 68 <div class="wrapper"> 69 70 71 72 <h1>お問合せ</h1> 73 <form action="./contact_form.php" method="post"> 74 75 76 77 <div> 78 <label for="name">お名前</label> 79 80 <input type="text" id="name" name="your_name" style="display: block;" placeholder="例:孫悟空" value="<?php echo $_SESSION['your_name'] ?>"><br> 81 </div> 82 83 84 85 <div> 86 <label for="email" >メールアドレス</label> 87 88 <input type="email" id="email" name="your_email" style="display: block;" placeholder="例:kaiouken@gmail.com" value="<?php echo $_SESSION['your_email' ]?>"><br> 89 </div> 90 91 92 <div> 93 <label for="message">お問い合わせ内容</label> 94 <textarea style="display: block;" name="your_message" id="message" cols="30" rows="10"><?php echo $_SESSION['your_message' ]?></textarea><br> 95 </div> 96 97 <div> 98 <input type="submit" class="btn" name="confirm" value="確認"/> 99 </div> 100 101 102 </div> 103 </form> 104 105 <?php } else if( $mode == 'confirm') { ?> 106 107 <!-- ⇩確認画面 --> 108 <form action="./contact_form.php" method="post"> 109 110 お名前 <?php echo $_SESSION["your_name"] ?><br> 111 112 メールアドレス <?php echo $_SESSION["your_email"] ?><br> 113 114 お問合せ内容<br> 115 <?php echo nl2br($_SESSION["your_message"]) ;?> 116 117 <input type="submit" name="back" value="戻る" /> 118 <input type="submit" name="send" value="送信" /> 119 </form> 120 121 122 123 <?php } else {?> 124 125 <!-- // 完了画面 --> 126 送信しました。お問合せありがとうございました。<br> 127 128 129 <?php } ?> 130 131 132 133 134</body> 135</html> 136

試したこと

$_SESSIONを$_POSTにしたり、$_SESSION = array();
で消されてしまっているのかもと思いこれを消してアップロードしてみましたがダメでした。
PHP学習始めたばかりで2日間調べていますが原因がわかりません。
エラーも出ませんし、ローカル環境ではセッションが効いているのでコードの間違いではなく、サーバー側の問題だと思うのですが、知識不足で手の打ちようがありません。
よろしくお願いします。

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

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

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

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

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

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

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

m.ts10806

2021/05/19 14:28

これ全部1ファイルのコードですか? そもそもHTML時点でかなりおかしいような。 サーバーとはどこのどんなサーバですか?
u...

2021/05/19 14:34

1ファイルのコードです。 youtubeを見ながらその公開されているコードのまま書いていっています。 かなりおかしいですか? 知識不足で何がおかしいかわからないです(^-^; サーバーはロリポップでハイスピードプランです。
m.ts10806

2021/05/19 14:36

質問編集してください。 >かなりおかしいですか? まず。HTMLとしておかしいです。DOCTYPE宣言の前にmetaが入るわけがないですし。 インデントも滅茶苦茶。 せめてコードフォーマット機能、構文チェック機能のあるエディタ(IDEが良)を利用し、デバッグ環境を整えるところからはじめてください。 Youtube含め動画での学習を採用したことがないので感覚が分かりませんが、公式ドキュメントやそれに近しいものは確認したほうが良いです。
m.ts10806

2021/05/19 14:38 編集

コードフォーマットしてインデントがある程度正常化されれば値がどこで設定されていてどこで参照されるか見えてくると思いますよ。 回答もコードフォーマットされてからスタートだと思います(読む気がせずリターンする人はきっと一定いる)
u...

2021/05/19 15:12

色々ご丁寧にアドバイスありがとうございます! まずはコードフォーマット調べてみます。
guest

回答2

0

単純にsession_start()の前後に空白があったのかもしれません。```<?php
ini_set("display_errors",on);
session_start();
$mode = "input";
$errmessage = array();
コード

このように詰めたらエラーも無くなり正常に引き継がれました。 インデントについては精進します。 回答いただいた方々、お忙しい中ありがとうございました。

投稿2021/05/21 13:54

u...

総合スコア3

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

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

0

ベストアンサー

いくつか改善したほうが良い場所があります。
まず最初に上記のコードを見る限り、インデントがバラバラです。
質問者様はコードを書く際にどのようなエディタを使用していますでしょうか。
エディタを利用することによりインデントを自動的に合わせてくれるので非常にきれいなコードを書くことができます。

つづいて、セッションが引き継がれない問題です。
ローカル内ではセッションが引き継がれるということで、サーバーに問題がありそうです。
サーバーはどこのサーバーを使用していますか?

サーバー会社によって違いますが、PHPの設定が書かれたphp.iniにセッションの有効期限を設定できる場所があります。
そちらを一度見直してみるのはいかがでしょうか。

投稿2021/05/20 12:11

odakyutetu

総合スコア85

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

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

u...

2021/05/20 22:39

ご指摘ありがとうございます。 インデント気を付けてみます。 サーバーはロリポップです。 自分のプランだとiniが変更できないので、PHPのコードで直接変更するやり方でエラーを探しているところです。 セッションが開始できておらず、空になっている…。ようなメッセージがエラーで出てきましたが、解決には至っておりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問