Показать сообщение отдельно
Soniks вне форума      Старый #29  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
27.11.2005, 23:02

Shakal действительно такой казус имеется, но он ни как не связан с надписью, которую вы приводите и именно с модулем новостей. Он связан со знаком ' (одиночная кавычка).
И как не странно виновата вся та же проверка filter(), но уже измененная проектом phpnuke.ru. Ими было внесено изменение в данную функцию, а именно если скрипт опознает администратора, то он не производит проверку функцией filter() с одной стороны - это хорошо, а именно администратор может добавлять не разрешенные системой различные теги. А с другой стороны - при добавлении информации в БД она должна пройти некую обработку, иначе, некоторые символы, например как, кавычка вызовет ошибку в sql запросе, и он не выполнится, что в данном случаи и происходит!
Предлагаю следующую модификацию функции filter(),
найдите в файле mainfile.php:
PHP код:
 function filter($what$strip=""$save=""$type="") {
global 
$admin;
if (!
is_admin($admin)) {
if (
$strip == "nohtml") {
$what check_html($what$strip);
// $what = htmlentities(trim($what), ENT_QUOTES);
// If the variable $what doesn't comes from a preview screen should be converted
if ($type != "preview" AND $save != 1) {
$what html_entity_decode($whatENT_QUOTES"cp1251");
}
}
if (
$save == 1) {
$what check_words($what);
$what check_html($what$strip);
$what addslashes($what);
} else {
$what stripslashes(FixQuotes($what));
$what check_words($what);
$what check_html($what$strip);
}
}
return(
$what);


и замените на:
PHP код:
 function filter($what$strip=""$save=""$type="") {
global 
$admin;
if (!
is_admin($admin)) {
if (
$strip == "nohtml") {
$what check_html($what$strip);
// $what = htmlentities(trim($what), ENT_QUOTES);
// If the variable $what doesn't comes from a preview screen should be converted
if ($type != "preview" AND $save != 1) {
$what html_entity_decode($whatENT_QUOTES"cp1251");
}
}
if (
$save == 1) {
$what check_words($what);
$what check_html($what$strip);
$what addslashes($what);
} else {
$what stripslashes(FixQuotes($what));
$what check_words($what);
$what check_html($what$strip);
}
}
elseif (
is_admin($admin) and $save == 1){
$what addslashes($what);
}
return(
$what);


обратите внимание: это изменение только для руссифицированной версии php-nuke 7.9 от phpnuke.ru
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".