Показать сообщение отдельно

  #8  
Старый 17.07.2006, 10:43
madnet
Умиротворенн
Регистрация: 09.12.2004
Сообщений: 996
Провел на форуме:
2386719

Репутация: 1384


Отправить сообщение для madnet с помощью ICQ
По умолчанию

В админпанели часто можно встретить такую ситуацию: введённый русский текст отображается после добавления в базу
"крякозяблами", а именно - в кодировке UTF. Происходит это от того что функция htmlentities даёт на выходе
по умолчанию кодировку UTF. Если у вас стоит на хостинге php выше версии 4.3.3 можно исправить положение
указав дополнительно кодировку:
htmlentities($var, ENT_QUOTES, cp1251);
Если же нет - можно использовать менее безопасный (не заменяются /) , но универсальный вариант, описанный ниже:

Открываем:
--/admin/cheats.php:
В двух местах
$CheatTitle = htmlentities($_REQUEST['CheatTitle']);
заменяем на:
$CheatTitle = htmlspecialchars($_REQUEST['CheatTitle'], ENT_QUOTES);

--/admin/cheats.php:
CheatTitle = '".htmlentities($_POST['CheatTitle'][$CheatId])."',
заменяем на:
CheatTitle = '".htmlspecialchars($_POST['CheatTitle'][$CheatId], ENT_QUOTES)."',

Открываем:
--/admin/inlineshot.php:
$hiddenvalue[$i]['titel'] = htmlentities($val['titel']);
заменяем на:
$hiddenvalue[$i]['titel'] = htmlspecialchars($val['titel'], ENT_QUOTES);

--/admin/inlineshot.php:
$hiddenvalue[$i]['text'] = stripslashes(htmlentities($val['text']));
заменяем на:
$hiddenvalue[$i]['text'] = stripslashes(htmlspecialchars($val['text'], ENT_QUOTES));

Открываем:
--/admin/newsletter.php:
$forms .= '<textarea style="width:1;height:1;visibility:hidden;" name="textversion">'.htmlentities($textv).'</textarea>';
заменяем на:
$forms .= '<textarea style="width:1;height:1;visibility:hidden;" name="textversion">'.htmlspecialchars($textv, ENT_QUOTES).'</textarea>';

--/admin/newsletter.php:
$forms .= '<textarea style="width:1;height:1;visibility:hidden;" name="htmlversion">'.htmlentities($htmlv).'</textarea>';
заменяем на:
$forms .= '<textarea style="width:1;height:1;visibility:hidden;" name="htmlversion">'.htmlspecialchars($htmlv, ENT_QUOTES).'</textarea>';

Открываем:
--/admin/requiredfields.php:
$query = "UPDATE " . PREFIX . "_requiredfields SET show_field = '".htmlentities($_POST['show'][$id])."', required_field = '".$_POST['required'][$id]."' WHERE id = '$id'";
заменяем на:
$query = "UPDATE " . PREFIX . "_requiredfields SET show_field = '".htmlspecialchars($_POST['show'][$id], ENT_QUOTES)."', required_field = '".$_POST['required'][$id]."' WHERE id = '$id'";

Открываем:
--/admin/settings.php:
$banneduser[$i]['banned'] = htmlentities($val);
заменяем на:
$banneduser[$i]['banned'] = htmlspecialchars($val, ENT_QUOTES);

--/admin/settings.php:
$badwords[$i]['baw'] = htmlentities($val);
заменяем на:
$badwords[$i]['baw'] = htmlspecialchars($val, ENT_QUOTES);

Открываем:
--/admin/shopsettings.php:
$query = $db->Query("INSERT INTO " . PREFIX . "_units (EinheitId,Einheit,EinheitMz) VALUES ('','".htmlentities($_REQUEST['Einheit'])."','".htmlentities($_REQUEST['EinheitMz'])."')");
заменяем на:
$query = $db->Query("INSERT INTO " . PREFIX . "_units (EinheitId,Einheit,EinheitMz) VALUES ('','".htmlspecialchars($_REQUEST['Einheit'], ENT_QUOTES)."','".htmlspecialchars($_REQUEST['EinheitMz'], ENT_QUOTES)."')");

--/admin/shopsettings.php:
$query = $db->Query("UPDATE " . PREFIX . "_units SET Einheit = '".htmlentities($_POST['Einheit'][$id])."', EinheitMz = '".htmlentities($_POST['EinheitMz'][$id])."' WHERE EinheitId = '$id'");
заменяем на:
$query = $db->Query("UPDATE " . PREFIX . "_units SET Einheit = '".htmlspecialchars($_POST['Einheit'][$id], ENT_QUOTES)."', EinheitMz = '".htmlspecialchars($_POST['EinheitMz'][$id], ENT_QUOTES)."' WHERE EinheitId = '$id'");


Открываем:
--/admin/forms/inlineshot.php:
<td class="c1"><?php echo(htmlentities($val['titel'])); ?></td>
заменяем на:
<td class="c1"><?php echo(htmlspecialchars($val['titel'], ENT_QUOTES)); ?></td>

--/admin/forms/inlineshot.php:
<td class="c1"><?php echo(htmlentities($val['text'])); ?></td>
заменяем на:
<td class="c1"><?php echo(htmlspecialchars($val['text'], ENT_QUOTES)); ?></td>

Открываем:
--/inc/functions.php:
$fixed = htmlentities($string, ENT_QUOTES);
заменяем на:
$fixed = htmlspecialchars($string, ENT_QUOTES);

Багфикс от Nulled, а по поводу дублей я не встречался с таким надо на месте смотреть.
__________________

http://madnet.name - madnet - blog | homepage (Мысли, релизы, скрипты, софт)

http://antichat.ru - Лучший сайт по безопасности
irc.antichat.ru:7771 #antichat - общение online
ГАРАНТ ФОРУМА
 
Ответить с цитированием