如何使用php5读取会话内容xml格式

时间:2013-05-04 13:46:35

标签: php xml session

我需要用php阅读会话内容。 该会话由名为easybasket的购物车脚本创建,我需要提取存储在会话中的数据,因此我可以保存到MySql表中。似乎数据以XML格式存储。以下是我的会议内容:

array (size=3)
'username' => string 'test@gmail.com' (length=21)
'nombre' => string 'Joe Smith' (length=16)
'basket' => string '<basket version="1.0" timestamp="2013-05-04T12:58:37+00:00">
<items count="2" quantity="4" subtotal="1460" postage="0" total="1460" paypal="yes"     google="no">
<item unit-price="380.00" quantity="2" subtotal="760" postage="0" total="760">
  <title>DANCER CATAMARAN ADULTS</title>
  <price>380.00</price>
</item>
<item unit-price="350.00" quantity="2" subtotal="700" postage="0" total="700">
  <title>DANCER CATAMARAN CHILDREN</title>
  <price>350.00</price>
</item>

2 个答案:

答案 0 :(得分:1)

使用simpleXML浏览$ _SESSION ['basket']

的内容
$xml = simplexml_load_string($_SESSION['basket']);

示例:

$xml = simplexml_load_string($_SESSION['basket']);
foreach( $xml->items->item as $item) {
    echo $item['quantity'] . ' - ' . $item->title . '<br>';
}

输出:

2 - DANCER CATAMARAN ADULTS
2 - DANCER CATAMARAN CHILDREN

答案 1 :(得分:0)

不要相信会话数组...

如果攻击者设法在webhoster为所有用户使用相同的会话目录时将数据注入会话,则现在可以进行xml注入或xml入口注入。

在simpelXml之前使用libxml_disable_entity_loader(请参阅http://www.php.net/manual/en/function.libxml-disable-entity-loader.php)以防止xml条目注入