Кусок post.php выводится при создании тем

Автор Jerry, 08 июля 2008, 19:06:24

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Jerry

На странице создания темы на самом верху тектом выводится это:
Цитировать($msgOptions['subject'])) { $context['sub_template'] = 'modifytopicdone'; $context['message'] = array( 'id' => $row['ID_MSG'], 'modified' => array( 'time' => isset($msgOptions['modify_time']) ? timeformat($msgOptions['modify_time']) : '', 'timestamp' => isset($msgOptions['modify_time']) ? forum_time(true, $msgOptions['modify_time']) : 0, 'name' => isset($msgOptions['modify_time']) ? stripslashes($msgOptions['modify_name']) : '', ), 'subject' => stripslashes($msgOptions['subject']), ); censorText($context['message']['subject']); } else { $context['message'] = array( 'id' => $row['ID_MSG'], 'errors' => array(), 'error_in_subject' => in_array('no_subject', $post_errors), 'error_in_body' => in_array('no_message', $post_errors) || in_array('long_message', $post_errors), ); loadLanguage('Errors'); foreach ($post_errors as $post_error) $context['message']['errors'][] = $txt['error_' . $post_error]; } } else obExit(false); } ?>
Это конец Post.php и никаких ошибок до этого куска нет. Не понимаю, как его убрать можно?


Jerry

Нет конечно, я это проверил в первую очередь. :)
Раннего завершения нет. Нет и никаких строчек, которые могли бы расцениваться как завершение php кода.
Кстати, выводящийся кусок уже стал меньше:
$txt['error_' . $post_error]; } } else obExit(false); } ?>
Причем, до него ни единой ошибки:
else
{
$context['message'] = array(
'id' => $row['ID_MSG'],
'errors' => array(),
'error_in_subject' => in_array('no_subject', $post_errors),
'error_in_body' => in_array('no_message', $post_errors) || in_array('long_message', $post_errors),
);

loadLanguage('Errors');
foreach ($post_errors as $post_error)
$context['message']['errors'][] = $txt['error_' . $post_error];
}
}
else
obExit(false);
}

Но раз кусок стал меньше, то уже всё в порядке. Я в середину файла добавлял около 20 КБ своего кода, но он выполняется верно и без ошибок. И в другом файле этот код ничего не выводит, значит дело не в нем. Но почему-то после добавления еще небольшого куска в свой код, выводящийся текстом кусок стал гораздо меньше.

А вообще, это очень странно, когда в
$context['message']['errors'][] = $txt['error_' . $post_error];
начинает выводиться текстом
$txt['error_' . $post_error];
и далее. Причем, он корректно выполняется (код поиска ошибок), но выводится.
Выводится с неожиданного места: выводится с середины присвоения значения элементу массива! После знака присвоения "=".

Jerry

И только сейчас всё выяснилось.
Когда я исправлял нерабочее AJAX-редактирование сообщений, подумал, что в XML-ответ выводится что-то лишнее, обратился напрямую по адресу запроса и оказался прав:
ЦитироватьОшибка анализа XML: синтаксическая ошибка (Строка: 1, Символ: 0)

Повторный анализ документа как HTML
Ошибка: unexpected text (non-whitespace text outside root element)
Спецификация: http://www.w3.org/TR/REC-xml/
  1: $txt['error_' . $post_error];
  2: }
  3: }
  4: else
  5: obExit(false);
  6: }
  7:
  8: ?><?xml version="1.0" encoding="UTF-8"?>
  9: <smf>
10: <subject><![CDATA[]]></subject>
11: <message id="msg_0"><![CDATA[]]></message>
(вывод Opera 9.22)

Глянул в Post.php, а он завершается вот так:

$context['message']['errors'][] = $txt['error_' . $post_error];
}
}
else
obExit(false);
}

?>$txt['error_' . $post_error];
}
}
else
obExit(false);
}

?>
Почему-то повтор.
Странно то, что на момент создания этой темы там этого не было: я цитировал в сообщении выше, там всё ok.

Проверьте этот кусок, если у вас не работает цитирование или быстрое редактирование.
В обоих случаях запрос идет на action=quotefast;msg=###;sesc=***;modify;xml (или quote### вместо msg=###, также вставьте номер сессии).
(на SMF2 не знаю, как; там такой проблемы не возникало еще)