Внутренняя ошибка сервера MODx eForm

У меня возникли проблемы с фрагментом электронной формы. Каждый раз, когда отправляется форма, я получаю внутреннюю ошибку сервера 500. Забавно то, что электронное письмо с отчетом отправлено нормально, просто невозможно перейти на страницу с благодарностью после отправки формы. Вот журнал ошибок:

[Tue Jan 11 10:23:07 2011] [error] [client 80.175.159.225] malformed header from script. Bad header=/home/sites/annuitiesadvice.co: index.php, referer: http://www.annuitiesadvice.co.uk/

Вот мой блок формы:

<form method="post" action="[~[*id*]~]" name="contactform" onSubmit="javascript:populateHiddenFields(this);" id="rc_form">

(Я также пробовал просто установить действие формы на статическую страницу, в которую включен блок формы, например about-us.html).

Вот вызов фрагмента:

[!eForm?
&formid=`rc_form`
&to=`[email protected], [email protected], [email protected]`
&subject=`Quick Annuity Quote Submitted`
&tpl=`rc_form`
&report=`rc_form_report`
&gotoid=`55`
&eFormOnBeforeFormMerge=`ref`
&eFormOnBeforeMailSent=`form_user_ok`
!]

MODx 1.02 Apache2

Есть идеи, что могло вызвать это?


person Ian Leckey    schedule 11.01.2011    source источник


Ответы (1)


Ваш вызов eForm запускает события eFormOnBeforeFormMerge и eFormOnBeforeMailSent, а для этих событий вызывает функции ref и form_user_ok соответственно (как своего рода обработчики событий eForm). Я предполагаю, что вам нужно вызвать этот функционер для некоторой специальной обработки (вы не указали). Если нет, просто опустите параметры eFormOnBeforeFormMerge и eFormOnBeforeMailSent и устраните ошибку сервера напрямую.

Если для этих событий требуется специальная обработка: внимательно отследите эти вызовы, потому что они, вероятно, являются корнем вашей проблемы. Действительно ли эти функции существуют и включены ли они перед вашим вызовом электронной формы? Правильно ли сформирован php?

Обратите внимание, что обычно там, где обычно возникает ошибка php с некоторым описательным текстом, обработчик событий eForm всегда вызывает ошибку сервера 500. Поэтому обязательно проверьте наличие синтаксических ошибок и, возможно, не удалось включает и любые другие причины ошибок PHP.

Предоставить две функции заранее, чтобы их можно было вызывать в качестве обработчика событий eForm. Вы можете определить фрагмент, содержащий их обоих следующим образом:

// snippet name: myEformFunctions

function ref()
{
    // do your thing here
    return; // important, never return false can trigger server error
}

function form_user_ok()
{
    // do your thing here
    return; // important, never return false can trigger server error
}

затем перед вызовом eForm добавьте:

[!myEformFunctions!]
person Johan    schedule 08.12.2011