2016-05-06 3 views
0

に格納しようとしましたが、XMLファイルから値を保存しようとしましたが、エラーは解除されました。XML値をセッション変数

どうすればこの問題を解決できますか?コードのthats

enter image description here

<?php 

session_start(); 
$success = 0; 
session_unset(); 
$clients= simplexml_load_file('client.xml'); 
    if(isset($_POST['submit'])){ 
     foreach($clients -> client_info as $client){ 
      if($_POST['username'] == $client->username && $_POST['pwd'] == $client->pwd){ 
       $success = $success + 1; 
        $_SESSION["id"] = $client['id']; 

       break;  
      } 
     }  
} 



if (isset($_SESSION["id"])) { 
    echo $_SESSION["id"]; 
} 
else { 
    echo "no session"; 
} 

問題は、それが未定義のIDを言う私は、たとえば外出

<?php 
     session_start(); 
echo $_SESSION["id"]; 
?> 

ということですが。

この問題の解決方法を教えてください。

+0

を申し訳ありませんああ、それは –

+0

あなたがセッション変数にsimplexml_load_file($クライアント)の結果を格納しようとしています病気の編集を待つのか?セッションファイルに保存するのはシリアル化できません。 –

+0

はい。シリアライズ可能なものは何ですか?またはどうすれば解決できますか? –

答えて

0

simplexml_load_file()の結果の完全な要素を保存する必要がある場合は、asXML()メソッドを使用します(要素をXML文字列としてフォーマットする)。あなたは、XMLタグのテキストコンテンツを保存したい場合は

$_SESSION["id"] = $client['id']->__toString(); //for attributes 

例:すべてのコンテンツ要素の文字列値を格納するには__toString()メソッドを使用し

$_SESSION["clientContent"] = $client->__toString(); //text content of client tag 

XMLセクション全体をXML文字列として保存するには

$_SESSION["client"] = $client->asXML(); //for elements 

と$クライアント変数復元するには:

$client=simplexml_load_string($_SESSION["client"]); //$client as object again 
+0

あなたは ' - > asXML()'〜 'toXML()'を使いませんhttp://php.net/manual/en/class.simplexmlelement.php –

+0

' - > asXML()'で更新します。タグのテキストコンテンツ。 –

+0

なぜ私はそれを復元する必要がありますか?私はちょうど実際に値を取得したい –