【问题标题】:get content from other page generated by javascript从 javascript 生成的其他页面获取内容
【发布时间】:2016-03-25 04:16:00
【问题描述】:

我遇到了一种情况,我想从另一个页面获取内容,该页面通过其参数动态生成图像。

例如,我确实得到了 test.php?u=user1&type=test。 打开此页面将在 div 中为我提供一个 base64 编码的图像源,其 id 为“test”,带有一个 innerHTML。

以下代码必须完成这项工作。

$doc = new DOMDocument;

$doc->preserveWhiteSpace = false;

$doc->strictErrorChecking = false;
$doc->recover = true;

$doc->loadHTMLFile('test.php?u=user1&type=test');

$xpath = new DOMXPath($doc);

$query = "//div[@id='test']";

$entries = $xpath->query($query);
var_dump($entries->item(0)->textContent);

然后我的 var_dump 什么都不返回,直到我在另一页的 div“测试”中随意放置一些文本。

如何在我的 var_dump 中获取动态文本,以便在其他页面上使用它?

【问题讨论】:

  • 您需要一个完整的无头浏览器,而不仅仅是 DOMDocument。以上内容不会运行文档中的 JavaScript。

标签: javascript php jquery dom file-get-contents


【解决方案1】:

如果动态创建是由 JavaScript 进行的,您必须在客户端电脑上执行此操作。您无法在 php.ini 中使用 JS 运行/渲染任何内容。

解决方案:

  • 显示页面
  • 等待输入
  • 通过 ajax 调用向服务器发送输入数据
  • 其他页面通过 ajax 轮询数据

【讨论】:

  • 问题是图像创建是由 JavaScript、库、Google Chart 完成的。我必须设置一个用户后端,他们可能看不到 iframe 或 Ajax reuquest 中的请求 URL。因此他们可以将其更改为另一个 userId 并查看他们的图表。所以我想从另一个页面获取 base 64 图像,然后将其放入仪表板中的图像源中。然后 je JSON 数组和 javascript 在该页面中不可见,请求 URL 也不可见。我正在加密 URL 中的 userId,所以如果你能告诉我你试图用你的 iframe 实现什么,它可能是一个解决方案。
  • 如果我理解你的话:你担心客户端源代码中的用户ID,对吧?
  • 是的。我需要生成一个包含个人信息的图表。所以我认为在请求中使用加密用户 ID 在另一个文件中生成图像必须是最合适的,然后 PHP 可以解密它并在查询中使用它来生成谷歌图表的 JSON 数据。
  • 将 userId 存储在会话中 -> 任何用户都不会看到该 userid,他也猜不出其他 userid
  • 1.从服务器请求主页 2. 创建随机令牌 3. 将令牌和时间戳保存到数据库中 4. 创建带有令牌的主页和隐藏的可使用 JS 读取的 IFrame 5. 用户输入数据 6. 使用包含令牌的 url 更新隐藏的 iframe 7. 检查时间戳令牌并从数据库中删除令牌,如果一切正常 8. 使用 php 为 iframe 创建所有数据 9. 在 iframe 中渲染数据 10. 通过 jQuery 从 iframe 中获取数据 11. 清除 iframe 内容
猜你喜欢
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
  • 2021-01-07
  • 1970-01-01
相关资源
最近更新 更多