DotNetNuke,PHP,使用curl模拟远程回发

时间:2010-10-09 16:22:55

标签: php post curl postback dotnetnuke

我在DNN中有一个页面,如: http://nolimitswebdesign.com.dnnmax.com/test/tabid/57/ctl/Edit/mid/374/Default.aspx

我需要使用PHP + Curl向该页面发送一个帖子请求,它会修改文本区域的内容并保存它(就像有人手动修改它并单击该页面上的更新按钮一样)。我怀疑DNN可能无法做到这一点。请指教。

1 个答案:

答案 0 :(得分:1)

以下是我将如何解决相同的一般技术将在任何网站上工作的问题。在这种情况下,DNN只是一个普通的ASP.Net网站。首先看一下点击更新时运行的javascript:

__doPostBack('dnn$ctr374$EditHTML$cmdUpdate','')

找到__doPostBack方法:

function __doPostBack(eventTarget, eventArgument) {
  if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
    theForm.__EVENTTARGET.value = eventTarget;
    theForm.__EVENTARGUMENT.value = eventArgument;
    theForm.submit();
  }
}

这是许多ASP.Net表单中使用的标准doPostBack()方法。从中您可以看到要使用方法调用中的相应值填充__EVENTTARGET和__EVENTARGUEMENT隐藏字段并提交表单。

当然,您还需要将实际要保存的数据填入文本框的输入控件中。如果你使用HTML模块的基本文本框模式,这可能会更容易,然后你只需要设置textarea的值而不是找出在fckEditor中插入值的位置,技术将是如果站点配置为使用Telerik提供程序而不是fck提供程序,则仍然有效。

需要注意的一点是,控件名称可能会不时更改,因此您需要确保正在读取事件目标的正确ID,而textarea不仅仅是硬编码。