2016-05-06 155 views
0

一直試圖存儲來自XML文件的值,但它釋放了錯誤。將XML值存儲到會話變量

我該如何解決這個問題?

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"; 
} 

那的代碼。

但問題是,當我外出例如

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

它說未定義的ID。

對此問題的任何解決方案?

+0

噢,對不起等待生病編輯 –

+0

您是否嘗試使用simplexml_load_file的($客戶端)的結果存儲在一個會話變量?它不可序列化以將其保存在會話文件中。 –

+0

是的。可串行化的含義是什麼,或者我該如何解決這個問題? –

回答

0

如果您需要保存simplexml_load_file()結果的完整元素,請使用asXML()方法(將元素格式化爲XML字符串)。存儲任何內容元素的字符串值使用__toString()方法:

例子:

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

如果你想保存XML標記的文本內容:

$_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()'not' - > toXML()'http://php.net/manual/en/class.simplexmlelement.php –

+0

使用' - > asXML()'更新,增加了存儲示例標籤的文字內容。 –

+0

我爲什麼要恢復它?我只想實際得到一個值 –