サーバー移転に伴い、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_set_save_handler と ...
-
セッション管理を携帯用とPC用
-
URLのパラメータをGETのままで...
-
負荷分散におけるセッションID...
-
PHP4からPHP5へ移行した際、セ...
-
Dosブロンプトでtabを出力したい
-
「取得先」という表現について
-
Yahoo! JAPAN IDを新規取得でき...
-
PHP一覧表示した項目にリンクを...
-
switch()文で値の大小比較
-
DMMの動画を全件取得したのです...
-
自分の掲示板にアクセス解析を...
-
DTOとEntityの差は何ですか。
-
ps3で久しぶりにCDの音楽情報取...
-
php 入力画面から確認表示画面...
-
小数点以下0の非表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPのセッション有効期限について
-
PHPのセッションについて
-
ブラウザを閉じた後もセッショ...
-
Sessionの上限について
-
$_SESSIONと、POSTやGETの違い
-
ログインしたら他からログイン...
-
複数のサーバで運営する場合の...
-
301リダイレクトはセッション引...
-
「戻る」ボタンで値の保持
-
セッションのスコープ(有効範...
-
セッション ID とセッション名...
-
ログイン画面をはさんだ後、自...
-
session_start()で生成されるセ...
-
管理者としてログイン
-
セッション変数にパスワードを...
-
セッションを維持したまま、サ...
-
PHP cookieの値が更新されない...
-
セッションが正しく更新されな...
-
POSTで情報を他のサーバーに渡...
おすすめ情報