- 締切済み
バージョン差かphp.iniの差で違いがおきています
いつもお世話になってます。 ローカルのPHP5.0.1環境で正常に動作していたものが、 一部分、実サーバーのPHP4.3.2で稼動させた時に不具合がおきてしまいます。 具体的には、セッションとPOST(フォームで)を利用した数ページで ページ内ではフォーム入力を4Pに渡り遷移し、5P目で内容確認6P目でDBへ登録データを入力。という流れになります。 その中で、各ページ毎にフォームに内容を記入されていなかった場合 次のページで該当のPOST値がNULLの場合メッセージ。という流れでやっています。 上記の流れで、ローカル環境では6P目のDB登録まで済んでいたのですが 本番サーバーで行うと、特定のフォームに何も入力せず次のページへ遷移すると、私が作ったメッセージが表示されずヘッダーとフッター部分のみ(単純なHTMLページ)しか表示されません。 色々試して、別のディレクトリにフォルダ名を変えておいてみたところ 今度はページを表示できませんというメッセージになってしまいます。 フォームの記入内容には、NULL値でも構わないものもあり 最初はそのNULL値でも問題ない内容を選択せずに遷移したところ、同減少がおき おかしいなと思い、引き続き調査していた所、 次ページでPOST値をSESSIONに代入している部分を、if文によってNULLでなかった場合代入とした所 ページ遷移できるようになりました。 一安心かなと思い、全ページに同処理を施したのですが それでもやはりNULL値でも同現象がおきてしまう場合が発生ありました。 完全に手詰まりな状態です・・・ 何かアドバイスなど頂戴できればと思い投稿しました。 足りない情報などあると思いますので、指摘してくだされば説明させて 頂きたいと思います。 長文な上に分かり辛い説明で申し訳ありませんが宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
ソースがないため正確な回答はむずかしいですが、 POST値の受け渡し方が間違えているのでは? どのようにしているか書くとフォローがつきやすいかと。 またテスト環境の方が実行サーバーより新しい環境にあるというのは 致命的です。 仮に今回の解決しても、いずれまた同じような状況になりかねませんので テストサーバーをダウングレードする、もしくは実行サーバーを アップグレードする・・・せめてメインバージョンだけでもあわせる 必要があるでしょう。
補足
ありがとうございます。 ソースですが、受け渡し部分はこのようになっております。 以下 <?PHP session_cache_limiter('private, must-revalidate'); session_start(); require('../../db.inc'); require('../../../class/function.php'); ?> <?PHP include("../../../layout/header.php") ?> <div id="content"> <?PHP //POSTデータ変数代入 $session = $_GET['session']; $c_id = $_POST[c_id]; $m_id = $_SESSION[m_id]; $a_id = $_POST[a_id]; $m_count = $_SESSION[m_count]; if($_POST[ex_m_id] != null){ $_SESSION[ex_m_id] = $ex_m_id; } if($_POST[a_id] != null){ $_SESSION[a_id] = $a_id; } if($_POST[late_m_id] != null){ $_SESSION[late_m_id] = $late_m_id; } 上記のような形で、POSTとSESSIONが混在しています。 POSTとSESSIONの使用方法ですが、 POST:フォームからの入力値(つまり前ページの入力値)または配列以外の変数 SESSION:1Pから3P以降に引継ぎが必要な配列や多次元配列 という感じでやっています。 おそらくPOSTとSESSIONを変数に代入する時に、NULLの場合エラーがおきているようなのですが、そういうものなのでしょうか? エラー表示も行われず(表示する設定になってます)、ディレクトリによってはページが表示できないような状況なのですがいかがでしょう・・・