【问题标题】:Drupal 6 parse incoming POST dataDrupal 6 解析传入的 POST 数据
【发布时间】:2009-09-17 18:07:45
【问题描述】:

我有一个 Excel 文件,需要将数据发送到我的 Drupal MySql 数据库。为此,我在 Excel 工作表的 VBA 中使用 HTTP POST,如下所示:

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
        URL = "http://localhost:8082/acquia-drupal/node/2"
        objHTTP.Open "POST", URL, False
        objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
        objHTTP.send ("string=testdata")

我想使用 Drupal 页面来解析 POST 数据并将其写入 Drupal MySql 数据库中的表。

这是我开始的,

<?php
if (isset($_POST['string']))
{
  $trans = $_POST['string'];
  db_query("INSERT INTO {excel} (ExcelData) VALUES (%d')",
  $trans);
}

这是正确的方向吗?另外,有人可以提供一些关于正确解析 POST 数据的代码 sn-p 指导吗?

【问题讨论】:

  • 使用“Drupal 页面”是什么意思?您的意思是要将数据发布到一个节点,该节点会将内容复制到您的数据库架构中?

标签: drupal drupal-6


【解决方案1】:

以您概述的方式处理传入的 $_POST 数据有点像手动滚动您自己的 Web 服务。这不一定是件坏事,有时这是让事物相互交流的最佳方式。

我强烈强调,如果您在发布的 sn-p 中使用类似代码,那么您应对自己的安全、数据清理和 SQL 注入保护负责。

此外,正如 Eli 的评论中所指出的,您可能会将其放入节点中。这是一种相对危险的方法,因为任何人都可以轻松地打开该节点并开始将 $_POST 数据注入数据库。创建一个模块,使用 hook_menu() 为您的导入代码定义一个 url 路径,并对该特定 url 设置一些访问控制限制将使事情变得更安全。

【讨论】:

  • 我有点累了——但是“SQL 注入保护”是什么意思?我认为 db_query 可以很好地转义内容,只要您使用参数(就像 Mike 所做的那样)
  • 是的——在从传入的 $_POST 数据中进行原始插入时,小心谨慎是非常重要的,这是在启动快速实用程序时经常会遇到的事情之一。我并不是要暗示上面发布的特定查询是不安全的,我只是习惯于鼓励偏执狂......
  • 感谢 cmets。虽然,我以不同的方式解决了这个问题,但这个信息非常有帮助。当时我是 Drupal 和 Drupal 自定义模块开发的新手。
【解决方案2】:

目前,您似乎只是在打开 PHP 过滤器的页面中编写此代码。

如果情况确实如此,那不是一个好主意。至少,编写一个自定义模块,可能在 hook_view 中包含一些 POST 解析代码(或者只是一个简单的自定义函数),并使用 hook_menu 来设置页面地址。

至于 POST 解析,它是一个 PHP key=>value 数组...我还没有找到 Drupal-ish 的使用方式,一些流行的模块肯定按原样使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多