我有一个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数据的代码片段指南吗?
答案 0 :(得分:5)
按照您概述的方式处理传入的$ _POST数据有点像手动滚动您自己的Web服务。这不一定是坏事,有时它是让事情互相交流的最佳方式。
我强烈强调,如果您在发布的代码段中使用类似的代码,那么您将对自己的安全性,数据清理和SQL注入保护负责。
另外,正如Eli的评论中所指出的那样,您可能会将其放入节点中。这是一种相对危险的方法,因为任何人都可以轻松地弹出该节点并开始将$ _POST数据发送到您的数据库中。创建一个模块,使用hook_menu()来定义导入代码的url路径,并对该特定url设置一些访问控制限制,这将使事情更加安全。
答案 1 :(得分:1)
目前看起来好像只是在带有PHP过滤器的页面中编写此代码。
如果情况确实如此,那不是一个好主意。至少,编写一个自定义模块,可能在hook_view(或只是一个简单的自定义函数)中使用一些POST解析代码,并使用hook_menu来设置页面地址。
对于POST解析,它是一个PHP key =&gt; value数组......我还没有找到一个Drupal-ish方法来使用它,而且一些流行的模块肯定会按原样使用它。