
サーバー移転に伴い、PHPのバージョンが4から5に変更になりました。
大部分は、変更することなく動作しているのですが、セッションを利用している部分がうまく動作してくれません。
ソースは全く変更していませんので、PHP4とPHP5の仕様の違い以外に思いつく理由が見当たりません。
具体的に説明しようにも、何が間違っているのかわからない状態です。
ただ一つ、明確な症状としては、$_SESSIONに値が格納されない、あるいは勝手に破棄されてしまう。ということです。
PHP4からPHP5に移行する際、セッション周りで変更すべき点などがあれば教えていただけないでしょうか。
宜しくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示

No.3
- 回答日時:
PHP4のサーバとPHP5のサーバで、同じソースを元にアレンジしたシステムを何度か入れたことがあります。
セッション周りについては、特にトラぶった記憶はないのですが・・・。どのようにしてセッション関係を利用されているのでしょうか。セッションへの値のやり取りは$_SESSIONかsession_registerを使っていますか?
session_startを実行してからセッション処理を行っていますか?
ヘッダーが送信される前にセッションの処理を済ませていますか?
サーバの設定などによって、これらをきちんとしていなくとも動いていた可能性はありますが、これらをきちんとして作ってあれば特に大きな問題はなかったように思えます。上記の点について確認してみてはいかがでしょう。
この回答への補足
ご回答ありがとうございます。
まずはご指摘の件について…
> セッションへの値のやり取りは$_SESSIONかsession_registerを使っていますか?
はい。$_SESSIONを使用しています。
> session_startを実行してからセッション処理を行っていますか?
> ヘッダーが送信される前にセッションの処理を済ませていますか?
はい。設定ファイルを読み込んだ直後に、下記の要領で処理しています。(index.phpのソース参照)
いろいろ調べたところ、変数への「参照渡し」か「コピー」かの違いも疑ったのですが、
$_SESSION[test] = 1;
print $_SESSION[test];
とすると、確かに代入されていますし、他のページに移動しても「1」を保持しています。
このことから、セッション自体は正常に動作しているものと思われます。
以下、ソースの概要を説明させていただきます。
### index.php ###
<?php
require_once './config.php';($s_nameを定義)
session_name($s_name);
session_start();
//セッションをチェックする為の表示(運用時は削除)
print_r($_SESSION);
//ここで<body>まで表示
switch($_GET['no'])) {
case 1:
require "no1.php";
break;
case 2:
require "no2.php";
break;
default:
require "top.php";
}
//ここで</body>以下を表示
?>
### no1.php ###
<?php
$_SESSION['v1'] = $_POST['v1'];
$_SESSION['v2'] = $_POST['v2'];
$_SESSION['v3'] = $_POST['v3'];
//上記セッションの値を元に、DB(MySQL5)からデータを取得
//取得したデータを表示
print <<<EOF
<form method="./?no=1">
<select name="v1" onChange="this.form.submit()">
<option value="1">データ1-1</option>
<option value="2">データ1-2</option>
<option value="3">データ1-3</option>
</select>
<select name="v2" onChange="this.form.submit()">
<option value="1">データ2-1</option>
<option value="2">データ2-2</option>
<option value="3">データ2-3</option>
</select>
<select name="v3" onChange="this.form.submit()">
<option value="1">データ3-1</option>
<option value="2">データ3-2</option>
<option value="3">データ3-3</option>
</select>
<input type="submit" value="送信" />
</form>
EOF;
?>
「ttp://・・・/」へアクセスした後、
「ttp://・・・/?no=1」へ進んで、さらに
「ttp://・・・/?no=2」へ進む。という手順です。
以上、わかりやすく説明するため、直接的な影響がないだろうと思われる部分は割愛しています。
ご不明な点などがありましたらご指摘ください。
No.2
- 回答日時:
「基礎PHP」という本でPHPを勉強しました。
PHP5で勉強したのでPHP4とのちがいは知りませんが、その本の付録CDのサンプルソースではPHP5用とPHP4用がついていました。PHP5でPHP4用のソースでは動作しませんでした。
PHP5とPHP4の非互換項目一覧などを探す必要があると思います。
PHP4→PHP5移行ガイド いまこそPHP資産をマイグレーション(ソフトバンククリエイティブ ISBN:978-4-7973-4062-4)という本も出版されているので参考にしてはどうでしょうか?
No.1
- 回答日時:
ここは[技術者向]です。
技術者ならまずマニュアルを読みましょう。
OS、マイナーバージョン以下、スクリプト等を隠しているので
外しているかもしれませんが
第 29章グローバル変数の登録機能の使用法
PHP 4.2.0において PHPのディレクティブ register_globalsが
デフォルトでONからOFFに変更されました。
すみません。私は技術者ではありません。
「技術者向けの高いレベルの質問をする場」だと思い、ここに質問させていただきました。
もちろん、マニュアルを見たり、他の情報を探したり、自分なりに試行錯誤したり、その結果解決できなかったため質問させていただきました。
ご提示いただいた内容は、pnp.iniの変更を伴うものだと思いますが、レンタルサーバーのためできないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでログイン人数を制限したい
-
共用サーバでのセッション管理...
-
会員制サイトのセキュリティに...
-
初歩的な質問 セッション管理に...
-
Sessionの上限について
-
PHPのセッションと乱数について
-
URLのパラメータをGETのままで...
-
セッション ID とセッション名...
-
ログインした掲示板ですが、直...
-
セッションについて
-
PHPSESSIDの表示
-
セッション変数にパスワードを...
-
「ログイン機能を持たせる」説...
-
PHP cookieの値が更新されない...
-
PHPのセッション有効期限について
-
ログイン画面をはさんだ後、自...
-
Dosブロンプトでtabを出力したい
-
Yahoo! JAPAN IDを新規取得でき...
-
findstrのerrorlevel
-
小数点以下0の非表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPSESSIDの表示
-
PHPのセッション有効期限について
-
Sessionの上限について
-
ログイン画面をはさんだ後、自...
-
ログインしたら他からログイン...
-
セッションについて
-
セッション変数にパスワードを...
-
sessioncookieをではなくcookie...
-
クッキーを使わないセッション...
-
セッションのスコープ(有効範...
-
二重ログイン管理について
-
完全なセッション破棄をしたい
-
PHP cookieの値が更新されない...
-
ブラウザを閉じた後もセッショ...
-
PHPでログイン人数を制限したい
-
swfファイルでセッション情報を...
-
セッションを用いたデータの変...
-
セッション変数と配列
-
PHPSESSIDについて
おすすめ情報