【问题标题】:Can't send DOM var trough $_session无法通过 $_session 发送 DOM var
【发布时间】:2015-11-29 20:04:19
【问题描述】:

我正在使用 DOM+php 从 html 网页中提取一些部分,并尝试将结果作为 $_SESSION 变量发送到其他页面,并最终更新 mysql 数据库。
HTML网页代码示例:

  <html>
  <body>
  <div id="title">some title </div>
  <div id="city">some city</div> 
  <div id="country">some country</div> 
  <div id="company">some company</div>
  <div id="text">some text</div>
  <body>
  <html>

这是我用来获取数据并且正在运行的代码...我可以回显 $var:

<?php session_start(); ?> 
---- some HTML---
<?
    include('simple_html_dom.php');
    $file = 'webpage.html';
    $html = new simple_html_dom();
    $html->load_file($file);

    $title = $html->getElementById('title');
    $city = $html->getElementById('city');
    $country = $html->getElementById('country');
    $company = $html->getElementById('company');
    $text= $html->getElementById('text');

    echo '<b>'.$title.'</b>';
    $_SESSION['title'] =   $title;    
    echo '<b>'.$city.'</b>';
    $_SESSION['city'] =   $city;
    echo '<b>'.$country.'</b>';
    ..............
?>

我的问题是我无法使用 $_SESSION 将此 $var ($title,$city, ...) 发送到任何其他 php 页面...并且我收到此错误:

Catchable fatal error: Object of class __PHP_Incomplete_Class could not be converted to string

【问题讨论】:

  • PHP 会话只能包含 serializable 数据。

标签: php session dom


【解决方案1】:

根据 PHP 文档,会话只能包含可序列化的数据。

当 PHP 关闭时,它会自动获取 $_SESSION 超全局的内容,将其序列化,并使用会话保存处理程序将其发送到存储。

来源:http://php.net/manual/en/session.examples.basic.php

不幸的是,DOM 元素似乎无法序列化,因此无法正确存储在会话中。

更新:看起来您可以通过将 DOM 元素转换为字符串来解决此问题:

$_SESSION['title'] = (string)$title;
$_SESSION['city'] = (string)$city;

【讨论】:

  • OK ...所以有什么方法可以使用我通过 DOM 提取的这些数据?
  • 您可以尝试在会话中将其保存为字符串。 $_SESSION['title'] = (string)$title;
猜你喜欢
  • 2019-01-08
  • 2014-08-05
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
相关资源
最近更新 更多