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

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

新規登録して質問してみよう
ただいま回答率
85.50%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

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

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

HTML

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

Q&A

解決済

2回答

2410閲覧

セッション内容が保持できていない...

earnest_gay

総合スコア615

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

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

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

HTML

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

0グッド

0クリップ

投稿2016/06/15 11:48

・register_ja.php
(とある会員登録の名前や住所を入力してもらうページ)

・register.php
(とある会員登録のいわゆる学歴などを入力してもらうページ)

・register_preview.php
(register_ja.phpとregister.phpで入力したものを確認するぺージ)

3ファイルだと長くなるので、簡単に説明しますと
register_ja.phpで入力してもらった内容をセッションに保存して次ページであるregister.phpに遷移します。

session_start(); if (!is_null(filter_input_array(INPUT_POST))) { $_SESSION['join'] = $_POST; header('Location: register.php'); }

register.phpでも、入力してもらった内容をセッションに保存して次ページであるregister_preview.phpに遷移します。

session_start(); if(!empty($_POST)){ $_SESSION['join'] .= $_POST; header('Location: register_preview.php'); }

register_preview.phpでは
register_ja.phpとregister.phpで保存したセッションから内容を取り出していき、表示させます。

session_start(); ≪省略≫ <tr> <td>E-mail</td> <td><?php echo h($_SESSION['join']['email']); ?></td> </tr> <tr> <td>E-mail (確認用)</td> <td><?php echo h($_SESSION['join']['email_conf']); ?></td> </tr> <tr> <td>Password</td> <td><?php echo h($_SESSION['join']['pw']); ?></td> </tr> <tr> <td>Password (確認用)</td> <td><?php echo h($_SESSION['join']['pw_conf']); ?></td> </tr> ~~~~~~~~~~~~~続く //ここまでがregister_ja.phpの内容。 //ここからはregister.phpの内容。 <tr> <td class="h3" colspan="2">スキル</td> </tr> <tr> <td>プログラム言語</td> <td>経験年数</td> </tr> <tr> <td><?php echo h($_SESSION['join']['programs1']); ?></td> <td><?php echo h($_SESSION['join']['programs_year1']); ?></td> </tr> ~~~~~~~~~~~~~続く

すると、1つ前のページのregister.phpは内容がしっかり表示されているのですが、
2つ前のページのregister_ja.phpはIllegal string offsetとでて表示されないのです。

試しに、register_preview.phpの記述をregister.phpにコピってどんな表示するのか試したところ、表示されているんです。

セッションはページをまたいで保存できないのかなぁと思っているのですが、
どうすれば
register_ja.phpでセッションに保存した内容も
register.phpでセッションに保存した内容も
register_preview.phpで扱えるようになりますか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

register.php の中で上書きしてるからっしょ。
保存する名前を変えるなりマージするなり
しないと最初のやつはなくなっちゃいますよね。

投稿2016/06/15 12:01

takasima20

総合スコア7458

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

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

earnest_gay

2016/06/15 12:08 編集

回答ありがとうございます。 join1とjoin2で試しましたらできました! マージという言葉が知らなかったので調べたところ結合するってことですよね。 同じjoinを使いたい場合どうやってマージするのでしょうか?
takasima20

2016/06/15 12:20

$_SESSION['join'] = array_merge($_SESSION['join'], $_POST); みたいなかんじスね。
guest

0

セッションの連装配列の中に想定どおりのデータが入っていることが前提ですが、
以前同じような現象に遭遇したことがあります
headerの次の行に
exit;
つけるとうまくいくようになりました。

投稿2016/06/15 12:07

anago

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問