2016-04-30 21 views
0


に表示されます:/ CGIとして実行されている、特定のサーバー(私はこのような何かを参照してください最初の時間)は、PHP 5.2.17でPHPセッション、現在のオブジェクトは、私は次のコードを持っている_SESSION

<?php 


session_start(); 

class Cinstaller { 

    function CInstaller() { 
     $this->templates["x"] = ""; 
    } 

    function DoEvents() { 

     if ($_GET["x"]) { 
      $_SESSION["install"] = $_GET; 
     }  
    } 
} 

$install = new CInstaller(); 
$install->DoEvents(); 

print_r($_SESSION); 

?> 

をFastCGI、それは厄介な動作します。

私は実行するとtest.phpをX = Y Iは、以下のダンプを取得:?

Array 
(
[install] => Array 
    (
     [x] => y 
    ) 
) 

私は戻って、私は次のように取得する任意の他のパラメータなしでtest.phpを実行する場合:

Array 
(
[install] => Cinstaller Object 
    (
     [templates] => Array 
      (
       [x] => 
      ) 

    ) 
) 

セッションからの文字列変数 "install"が現在のファイルからどのようにオブジェクトに変換されましたか?

+0

異なる値をセッション変数に渡して別の結果が得られますか? –

+0

あなたのコードが完璧に動作していることを確認して、正しく出力されているとしても、あなたのApacheサーバーに何か問題があるかもしれません。 –

+0

私が 'var_dump($ install);'を実行したとき、結果は次のようになりました: 'object(Cinstaller)#1(1){ [" templates "] => array {1} { [" x "] => 文字列(0) "" } } –

答えて

0

注: OK ..!あなたは他の問題を抱えているようですが、変数とセッションの名前を変更するとあなたの問題が解決されたので、この問題を解決するには...!ここで私は同じ答えを投稿するつもりです..!

解決策:この問題を解決するためにあなたの変数とセッション名を変更する必要があり 変数&セッションのために同じ名前を使用すると、サーバーでの紛争のいくつかの並べ替えがあるかもしれません...!

0

そうした場合:

$_SESSION["install"] = $_GET; 

をあなたが「インストール」のセッションであなたは$ _GETで得たすべてのコンテンツを置くとセッションの値は(配列になります)。

$_SESSION["install"] = $_GET["x"]; 

のそして唯一の「X」パラメータの値は、セッションになります:あなたはGETメソッドを使用して送信されたパラメータの「x」の値を突出したい場合は

、これを試してみてください。また、あなたが取得した値をURLでフィルタリングしてください:

$_SESSION["install"] = filter_var($_GET["x"], FILTER_SANITIZE_STRING); 
関連する問題