DotNetNuke, PHP, имитация удаленной обратной передачи с помощью curl - PullRequest
0 голосов
/ 09 октября 2010

У меня есть страница в DNN, как: http://nolimitswebdesign.com.dnnmax.com/test/tabid/57/ctl/Edit/mid/374/Default.aspx

Мне нужно отправить запрос на публикацию на эту страницу с помощью PHP + Curl, который изменяет содержимое текстовой области и сохраняет его (как будто кто-то изменил его вручную и нажал кнопку обновления на этой странице). Я сомневаюсь, что с DNN это может быть невозможно. Пожалуйста, сообщите.

1 Ответ

1 голос
/ 11 октября 2010

Вот как я бы подошел к этой проблеме: та же общая техника будет работать на любом сайте. В этом контексте 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();
  }
}

Это стандартный метод doPostBack (), используемый во многих формах ASP.Net. Отсюда видно, что вы хотите заполнить скрытые поля __EVENTTARGET и __EVENTARGUEMENT соответствующими значениями из вызова метода и отправить форму.

Конечно, вам также необходимо заполнить данные, которые вы действительно хотите сохранить, в поле ввода для текстового поля. Вероятно, будет проще сделать это, если вы используете режим основного текстового поля модуля HTML, тогда вам просто нужно установить значение текстовой области, а не выяснить, куда вставить значение в fckEditor, и метод будет все еще работает, если сайт настроен на использование поставщика Telerik вместо поставщика fck.

Одна вещь, на которую следует обратить внимание, это то, что имя элемента управления может время от времени меняться, поэтому вы должны быть уверены, что читаете правильные идентификаторы для цели события, а текстовые области не просто жестко кодируют что-то.

...