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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

Q&A

解決済

2回答

1377閲覧

セッション変数が別のページに受け渡せない症状

twicchaga

総合スコア0

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

0グッド

3クリップ

投稿2020/08/09 03:53

前提・実現したいこと

セッション変数を別のページに受け渡したい。
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

TLS1.2にするために、
apache1.3 -> apache2.2
openssl-0.9.8 -> openssl-1.0.2
にしました。
過去のphpのプログラムで動作していた
セッション変数の受け渡しの部分で
変数が別のページに移ったときに中身が消えて
しまう症状が起きています。
phpinfoでコンフィグ内容も確認してみましたが、
phpのバージョンはそのままでapache2に対応させただけ
なので、php.iniの内容もそのままです。

セッション変数への設定はできますが、それを送信ボタンを
押して別のページを開いたような場合にセッション変数が
保持されていないようです。
どうすれば、セッション変数を保持させられますでしょうか?

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

エラーメッセージ

該当のソースコード

<?php session_start(); echo <<< EOT <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>建設ネット</title> </head> <body> <p>ss_uid : {$_SESSION["ss_uid"]} <p>てすと123 <p>None : {$title1} <p>POST : {$_POST["title1"]} <p>REQUEST : {$_REQUEST["title1"]} </body> </html> EOT; ?>

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

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

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

m.ts10806

2020/08/09 04:01

それぞれのグローバル変数に情報をセットしているコードもご提示ください。あと、PHPのバージョンはいくつでしょうか
twicchaga

2020/08/09 05:33 編集

返信、ありがとうございます。 まず、PHPのバージョンですが、php-4.4.2になります。 それと、ちなみにOSはCentOS5.3になります。 セットしているコードですが、test1.phpで <?php session_start(); $_SESSION["ss_uid"] = "mente"; echo <<< EOT <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>●●●●●●</title> </head> <body> <p>ss_uid : {$_SESSION["ss_uid"]} <form method="POST" action="test2.php"> <input type="text" name="title1" size="30"> <input type="submit" value="送信" name="b_send"> </form> </body> </html> EOT; ?> になります。 送信ボタンを押してtest2.phpで開くと、設定したセッション変数ss_uidが、何も入っていない感じです。一応、確認用のtest2.phpは以下になります。 <?php session_start(); echo <<< EOT <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>●●●●●●</title> </head> <body> <p>ss_uid : {$_SESSION["ss_uid"]} <p>てすと123 <p>None : {$title1} <p>POST : {$_POST["title1"]} <p>REQUEST : {$_REQUEST["title1"]} </body> </html> EOT; ?>
m.ts10806

2020/08/09 04:49

質問は編集できますので。
twicchaga

2020/08/09 04:52

アドバイスありがとうございます。まだ登録したてでご迷惑をおかけするかと思いますが、何卒よろしくお願いします。
m.ts10806

2020/08/09 06:11

質問は編集できますので適宜追記願います。
guest

回答2

0

自己解決

頑張ってなんとか自己解決できました。どうやって解決したかを説明します。
php.iniの設定内容をphpinfo関数でひととおり見て何か不足している設定はないか探しておりました。
気になる項目が2つありました。以下の2つです。

session.cookie_secure
session.save_path

session.save_pathについては/tmpが設定してあり、セッションIDのファイルが普通に保存されているので、ここは間違っていないだろうと判断しました。

残るsession.cookie_secureですが、Offになっておりまして、php-4.4.2がインストールされていますが、php.ini内にはその項目がコメント付きの状態でも含まれていませんでした。ネット上の情報を見てもhttps環境下で利用するならこの値をOnにすることを推奨されていた人もいましたので、試しにやってみようと思いまして、やってみたらセッション変数が普通に機能できて、ログインできなかったページが普通に何事もなくできるようなったということです。

大変、お騒がせしました。

同様なことでお困りの方がいらっしゃいましたら、php.ini内のセッション項目の値にも確認する必要があるのではと思います。

これで、CentOS5.3でphp-4.4.2のままでTLS1.2を可能にできました。といっても、半年か1年後には別のホスティング会社に移行させるのですが、それまでのつなぎで現在のサーバーを使う感じになります。

近々TLS1.2にしておかないと、セキュリティが原因でほとんどどのブラウザでも閲覧できなくなるとのことで、ここ1週間近く焦っておりました。無事に自己解決できてよかったです。いろいろアドバイスされた方にも感謝いたします。

投稿2020/08/10 03:14

twicchaga

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/08/10 03:29

session.cookie_secure で直るって、なんか不思議ですね^^; デフォルト off なんで、影響ないはずなのですが。。。 4.4 はさすがにヤバァイので、計画は前倒しした方がよいですよ。
twicchaga

2020/08/10 03:35

そうですね。現在のサーバーでやり過ごせればよかったのですが、1ケ月程度かそこらでTLS1.2対応していないと会員様向けのウェブシステムでどのブラウザからも閲覧できない症状が起きるということで、ここ1週間は生きた心地がしませんでした。既に、移行先のホスティングに向けて、php7以上で動作するようにシステム改修をしております。
guest

0

クッキーが引き継がれているか確認してください

投稿2020/08/09 05:04

yambejp

総合スコア115025

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

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

twicchaga

2020/08/09 05:30 編集

返信ありがとうございます。受け渡す側でクッキーを設定しまして、それを受け渡した側で取得して表示させるプログラムを作って確認しましたが、クッキーの引継ぎは問題ありませんでした。セッション変数だけが保持されていないようです。$_POST、$_REQUESTのグローバル変数については問題なく引き渡しできているので、何が原因なのでしょうかね。
yambejp

2020/08/09 07:04

セッションIDの引き継ぎがクッキー経由になっていないのでは?
twicchaga

2020/08/09 08:22

すみませんが、そのクッキー経由になっていないというのは具体的にどのように確認すればよろしいのでしょうか?お手数ですが、具体例を挙げて説明していただけますと助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問