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

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

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

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

Q&A

解決済

1回答

1893閲覧

PHPの複数ページにわたりデータをSESSIONに格納する方法

egg_sugar

総合スコア1

PHP

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

0グッド

1クリップ

投稿2021/06/26 15:41

編集2021/06/27 02:11

現在PHPを使って、複数ページにわたる入力フォームを作っています。
ただ、SESSIONメソッドを使って複数ページにわたるデータを格納したいと思っていますが、1ページ目のデータしかSESSIONメソッドに格納できません。
プログラムは上から順番に実行していきます。
よろしくお願いいたします。

上記の3つのプログラムを実行した後、var_dump($_SESSION)では1つ目の$_SESSION['name']のみが出力されます。
$_SESSION['occupation']は定義されていませんとエラーが出ます。

PHP

1<?php 2session_start(); 3header('Expires:-1'); 4header('Cache-Control:'); 5header('Pragma:'); 6 ?> 7 8<!DOCTYPE> 9<html lang="ja"> 10<head> 11 <meta charset="utf-8"> 12 <link rel="stylesheet" href="./style.css"> 13</head> 14 15<body> 16 <form action="./b.php" method="post"> 17 <label class="company">会社名<span class="badge">必須</span></label> 18 <input type="text" name="name" class="control" placeholder="(例)dash株式会社" > 19 20 <input type="submit" name="btn_company" value="続ける"> 21 </form> 22</body> 23</html>

PHP

1<?php 2session_start(); 3header('Expires:-1'); 4header('Cache-Control:'); 5header('Pragma:'); 6 7 if(isset($_POST['btn_company'])){ 8 if(isset($_POST['name']) && $_POST['name'] != '') 9 $_SESSION['name'] = $_POST['name']; 10 else 11 $_SESSION['name'] = ''; 12 } 13 ?> 14 15<!DOCTYPE> 16<html lang="ja"> 17<head> 18 19 <meta charset="utf-8"> 20 <link rel="stylesheet" href="./style.css"> 21</head> 22 23<body> 24 <form action="./c.php" method="post"> 25 <label class="company">職種<span class="badge">必須</span></label> 26 <input type="text" name="occupation" class="control" placeholder="職種" > 27 28 <input type="button" name="btn_back" value="戻る" onclick="avascript:history.back()"> 29 <input type="submit" name="btn_basic_info" value="次に進む"> 30 </form> 31</body> 32</html>

PHP

1<?php 2 session_start(); 3 header('Expires:-1'); 4 header('Cache-Control:'); 5 header('Pragma:'); 6 7 if(isset($_Post['btn_basic_info'])){ 8 if(isset($_POST['occupation']) && $_POST['occupation'] != '') 9 $_SESSION['occupation'] = $_POST['occupation']; 10 else 11 $_SESSION['occupation'] = ''; 12 } 13?> 14 15<!DOCTYPE> 16<html lang="ja"> 17<head> 18 <meta charset="utf-8"> 19 <link rel="stylesheet" href="./style.css"> 20</head> 21 22<body> 23 <form method="post" action="./preview.php"> 24 <label class="company">電話番号(担当者様と連絡可能な番号)<span class="badge">必須</span></label> 25 <input type="tel" name="tel" class="control" placeholder="(例)03-1234-5678"> 26 27 <input type="button" name="btn_back" value="戻る" onclick="avascript:history.back()"> 28 <input type="submit" name="btn_details" value="確認する"> 29 </form> 30</body> 31</html>

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

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

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

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

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

javahack

2021/06/26 17:06

$_SESSION['occupation'] .= $_POST['occupation']; $_SESSION['occupation'] .= ''; .= を使っている理由を教えてください。
m.ts10806

2021/06/26 22:12

>$_post 本当にこのように書いてるならエラー出てるはずですが あと、array()で毎回初期化されるプログラムがありますね。
egg_sugar

2021/06/27 02:10 編集

'.='については記述ミスです。正しくは'='です。'$_post'は実行できていますが、些細なミスになりかねないので修正します。ご指摘ありがとうございます。 array()で毎回初期化される ->$_SESSION = array();は不要ですね。
javahack

2021/06/27 08:16

$_postは見落としてました。m.ts10806さんの指摘が正しいと思います。 $_Postに修正したようですが、まだ駄目です。 "些細なミス"ではなく、大文字小文字を正しく記述しないと"致命的"になり得ます。
egg_sugar

2021/06/27 09:03

javahackさんの言う通りで、危機感がなさ過ぎました。 お恥ずかしながら、PHPの初心者で色々調べていますが、 解説サイトではPostをsessionに書き換えている例が多く、ページをまたいでsessionにデータを追加するサイトがなくて困っているのですが、どのように修正すればよろしいでしょうか。いざとなれば、1つのファイルにまとめてpostを使うという手段は残っていますが、管理が複雑になると思うのでできればファイルを分けたいのですが。よろしくお願いいたします。
guest

回答1

0

ベストアンサー

PHP

1if(isset($_Post['btn_basic_info'])){ 2↓↓↓ 3if(isset($_POST['btn_basic_info'])){

投稿2021/06/28 00:16

yambejp

総合スコア116724

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

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

egg_sugar

2021/06/30 09:16

お手数をおかけしました。 単に大文字、小文字の記述誤りでした。 回答してくださった方々ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問