Проблема такова... Я устанавливал движок на разных хостингах проблем с кодировкой не было... Но тут понадобилось установить на локальный хостинг... Проблема в том что когда поставил двиг все вроде нормально и из базы слова нормально показывает и вообще главная (слова не в базе а в пхп прописаны) отображает корректно кодировку... А на некоторых страницах квадраты... Как исправить? Вот пример страницы. Самый прикол в том что в этой странице фразы некоторые отображаются нормально! А некоторые квадратами... Например "За каждый час сидирования, Вы получаете" Отображается нормально. А вот "Бонус обменян на приглашения!" отображается квадратами... (При смене кодировки в браузере на windows-1251 Все корректно.) Код (Text): <? require "include/bittorrent.php"; dbconn ( false ); validcan (); global $tracker_lang; $from_ajax = ( int ) $_GET ['from_ajax']; $vip = ($_GET ['type'] == "vip" || $_POST ['type'] == "vip" ? "yes" : "no"); ?><script type="text/javascript"> function ajax_location(file) { $("#loading_layer").show(); $.get(file, {}, function(data){ $("#my_bonus_ajax").empty(); $("#my_bonus_ajax").append(data); $("#loading_layer").hide(); }, 'html'); return false; } function my_bonus(id, type, long) { if (id && type) { $("#loading_layer").show(); $.post("mybonus.php", {"id": id, 'long': long, "bonus_type": type, 'ajax': true, "type": '<?=($_GET ['type'] ? $_GET ['type'] : $_POST ['type'])?>'}, function(data){ $("#my_bonus_ajax").hide(); $("#my_bonus_ajax").empty(); $("#my_bonus_ajax").append(data); $("#my_bonus_ajax").slideToggle('medium'); $("#loading_layer").hide(); }, 'html'); } else { $("#loading_layer").show(); $.get("mybonus.php", {"from_ajax": 1, 'ajax': true, "type": '<?=($_GET ['type'] ? $_GET ['type'] : $_POST ['type'])?>'}, function(data){ $("#my_bonus_ajax").hide(); $("#my_bonus_ajax").empty(); $("#my_bonus_ajax").append(data); $("#my_bonus_ajax").slideToggle('medium'); $("#loading_layer").hide(); }, 'html'); } return false; } </script> <div id="loading-layer" style="display: none; font-family: Verdana; font-size: 11px; width: 200px; height: 50px; background: #FFF; padding: 10px; text-align: center; border: 1px solid #000"> <div style="font-weight: bold" id="loading-layer-text">Загрузка. Пожалуйста, подождите...</div> <br /> <img src="pic/loading.gif" border="0" /></div> <div> <? if ($_SERVER ["REQUEST_METHOD"] == "POST") { //location ( "mybonus.php", 3 ); if (! $_POST ['ajax']) stdhead ( 'Мой бонус' ); if ($_POST ['ajax']) @header ( "Content-Type: text/html; charset=" . $tracker_lang ['language_charset'] ); if (empty ( $_POST ["id"] )) { stdmsg ( $tracker_lang ['error'], "Вы не выбрали тип бонуса!" ); if (! $_POST ['ajax']) stdfoot (); die (); } $id = ( int ) $_POST ["id"]; if ($_POST ["bonus_type"] == "bonus" || $vip != "yes") { $fields = "*"; $table = "bonus"; $where = "id = " . $id . " AND vip='" . $vip . "'"; } elseif ($_POST ["bonus_type"] == "group") { $fields = "price AS points"; $table = "groups"; $where = "id = " . $id; $type = "group"; } elseif ($_POST ["bonus_type"] == "torrent") { $fields = "price AS points, `whobuy`"; $table = "torrents"; $where = "id = " . $id; $type = "torrent"; } if (! is_valid_id ( $id )) { stdmsg ( $tracker_lang ['error'], $tracker_lang ['access_denied'] ); die (); } $res = sql_query ( "SELECT {$fields} FROM {$table} WHERE " . $where ) or sqlerr ( __FILE__, __LINE__ ); $arr = mysql_fetch_array ( $res ); $points = $arr ["points"]; if (! $type) $type = $arr ["type"]; if ($vip == "yes") $bonus_field = "donated"; else $bonus_field = "bonus"; if ($CURGROUP ['can_freeinv'] && $type == "invite") $points = 0; if ($CURUSER [$bonus_field] < $points) { stdmsg ( $tracker_lang ['error'], "У вас недостаточно бонусов!" ); if (! $_POST ['ajax']) stdfoot (); die (); } print ( "<center><form action='mybonus.php'><input onclick='return my_bonus();' type='submit' value='" . $tracker_lang ['back'] . "'></form></center><br />" ); switch ($type) { case "traffic" : $traffic = $arr ["quanity"]; if (! sql_query ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, uploaded = uploaded + $traffic WHERE id = " . sqlesc ( $CURUSER ["id"] ) )) { stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" ); if (! $_POST ['ajax']) stdfoot (); die (); } stdmsg ( $tracker_lang ['success'], "Бонус обменян на траффик!" ); if (! $_POST ['ajax']) stdfoot (); break; case "buploader" : if ($CURGROUP ['can_uploadtor'] && $CURGROUP ['can_uploadtr']) { stdmsg ( $tracker_lang ['error'], "Вам этого не нужно... Вы и так можете загружать раздачи!" ); if (! $_POST ['ajax']) stdfoot (); die (); } $buploader = $arr ["quanity"]; if (! sql_query ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, bonusuploader = bonusuploader + $buploader WHERE id = " . sqlesc ( $CURUSER ["id"] ) )) { stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" ); if (! $_POST ['ajax']) stdfoot (); die (); } stdmsg ( $tracker_lang ['success'], "Бонус обменян на возможность загрузки раздачи!" ); if (! $_POST ['ajax']) stdfoot (); break; case "invite" : $invites = $arr ["quanity"]; if (! sql_query ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, invites = invites + $invites WHERE id = " . sqlesc ( $CURUSER ["id"] ) )) { stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" ); if (! $_POST ['ajax']) stdfoot (); die (); } stdmsg ( $tracker_lang ['success'], "Бонус обменян на приглашения!" ); if (! $_POST ['ajax']) stdfoot (); break; case "group" : if (summgroup ( $CURGROUP ) >= summgroup ( $ALLGROUPS [$id] ) && $id != $CURUSER ['group'] && $CURUSER ['override_group'] != 255) { stdmsg ( $tracker_lang ['error'], "Вам этого не нужно... Ваши права выше!" ); if (! $_POST ['ajax']) stdfoot (); die (); } $_POST ['days_add'] = number_format ( $_POST ['long'], 2, '.', '' ); $days_add = ($CURUSER ['vipdowndate'] != '0000-00-00' && $CURUSER ['group'] == $id ? sql_timestamp_to_unix_timestamp ( $CURUSER ['vipdowndate'] ) : time ()) + ($_POST ['days_add'] * 24 * 60 * 60); $points = number_format ( $points * ($_POST ['days_add'] / 30), 2, '.', '' ); if ($CURUSER ['vipdowngroup'] == - 1) $vipdowngroup = ", vipdowngroup='" . $CURUSER ['group'] . "'"; //die ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, `group` = " . $id . ", vipdowndate='" . date ( 'Y-m-d', $days_add ) . "'{$vipdowngroup} WHERE id = " . sqlesc ( $CURUSER ["id"] ) ); if (! sql_query ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, `group` = " . $id . ", vipdowndate='" . date ( 'Y-m-d', $days_add ) . "'{$vipdowngroup} WHERE id = " . sqlesc ( $CURUSER ["id"] ) )) { stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" ); if (! $_POST ['ajax']) stdfoot (); die (); } stdmsg ( $tracker_lang ['success'], "Бонус обменян на новую группу!" ); if (! $_POST ['ajax']) stdfoot (); break; case "torrent" : if ($CURGROUP ['can_dtforsell']) { stdmsg ( $tracker_lang ['error'], "Вам этого не нужно... Вы можете скачивать платные торренты!" ); if (! $_POST ['ajax']) stdfoot (); die (); } if (strpos ( $arr ["whobuy"], "|" . $CURUSER ['id'] . "|" ) !== false) { stdmsg ( $tracker_lang ['error'], "Вам этого не нужно... Вы уже купили этот торрент!" ); if (! $_POST ['ajax']) stdfoot (); die (); } $what = "'" . (! $arr ["whobuy"] ? "|" : "") . $CURUSER ["id"] . "|'"; if (! sql_query ( "UPDATE users SET users.{$bonus_field} = users.{$bonus_field} - $points WHERE users.id = " . sqlesc ( $CURUSER ["id"] ) ) || ! sql_query ( "UPDATE torrents SET torrents.`whobuy` = CONCAT(IF(torrents.`whobuy` IS NULL, '', torrents.`whobuy`), {$what}) WHERE torrents.id=" . $id )) { stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" ); if (! $_POST ['ajax']) stdfoot (); die (); } stdmsg ( $tracker_lang ['success'], "Бонус обменян на платный торрент!" ); if (! $_POST ['ajax']) stdfoot (); break; default : stdmsg ( $tracker_lang ['error'], "Unknown bonus type!" ); if (! $_POST ['ajax']) stdfoot (); } } else { global $ALLGROUPS; if (! $from_ajax) stdhead ( $tracker_lang ['my_bonus'] ); $my_points = ($vip == "no" ? $CURUSER ["bonus"] : $CURUSER ["donated"]); $res = sql_query ( "SELECT * FROM bonus WHERE vip = '" . $vip . "'" ) or sqlerr ( __FILE__, __LINE__ ); while ( $arr = mysql_fetch_assoc ( $res ) ) { $id = $arr ["id"]; $bonus = $arr ["name"]; $points = number_format ( $arr ["points"], 2 ); if ($arr ['type'] == "invite" && $CURGROUP ['can_freeinv']) $points = "<u>0</u>"; $descr = $arr ["description"]; $output_bonus .= "<tr><td><b>$bonus</b><br />$descr</td><td><center><b>$points</b> (у Вас <font color=darkgreen><b>$my_points</b></font>)</center></td><td><center><input type=\"radio\" name='bonus_id' value='$id' onclick=\"javascript: my_bonus($id, 'bonus');\" /></center></td></tr>\n"; } if ($vip == "yes") { $res = sql_query ( "SELECT id, price FROM groups WHERE price != '0'" ) or sqlerr ( __FILE__, __LINE__ ); while ( $arr = mysql_fetch_assoc ( $res ) ) { $id = $arr ["id"]; $bonus = get_user_group_color ( $id, get_user_group_name ( $id ) ); $points = number_format ( $arr ['price'], 2 ); if ($CURUSER ['group'] == $arr ['id'] && $CURUSER ['vipdowndate']) $end = get_elapsed_time ( $CURUSER ['vipdowndate'], 1 ); else $end = "-"; $output_groups .= "<tr><td><b>$bonus</b></td><td><center><b>" . $end . "</b></center></td><td><center><b>$points/месяц</b> (у Вас <font color=darkgreen><b>$my_points</b></font>)</center></td><td><center><input type=\"radio\" name='group_id' value='$id' onclick=\"javascript: var long = prompt('Введите кол-во дней', '30'); my_bonus($id, 'group', long);\" /></center></td></tr>\n"; } $count = get_row_count ( 'torrents', 'WHERE price!=0' ); if ($count) { list ( $pagertop, $pagerbottom, $limit ) = pager ( 50, $count, "mybonus.php?from_ajax=1&type=" . ($vip == "yes" ? "vip" : "") . "&", array (), 1 ); $res = sql_query ( "SELECT id, name, price, IF(`whobuy` LIKE '%|" . $CURUSER ['id'] . "|%', 1, 0) AS buyed FROM torrents WHERE price != '0' " . $limit ) or sqlerr ( __FILE__, __LINE__ ); while ( $arr = mysql_fetch_assoc ( $res ) ) { $id = $arr ["id"]; $bonus = ($CURGROUP ['can_details'] ? "<a href=\"details.php?id=" . $id . "\">" . $arr ['name'] . "</a>" : $arr ['name']) . ($arr ['buyed'] ? "<font color=\"red\">(Куплен!)</font>" : ""); $points = number_format ( $arr ['price'], 2 ); $output_torrents .= "<tr><td><b>$bonus</b></td><td><center><b>$points</b> (у Вас <font color=darkgreen><b>$my_points</b></font>)</center></td><td><center>" . (! $arr ['buyed'] ? "<input type=\"radio\" name='group_id' value='$id' onclick=\"javascript: my_bonus($id, 'torrent');\" />" : "-") . "</center></td></tr>\n"; } } } if (! $from_ajax) begin_frame ( "Пункт обмена бонусов" . loading_layer () ); ?> <div id='my_bonus_ajax'> <form action="mybonus.php" name="mybonus" method="post"> <center><font color="darkgreen" size=4>На вашем счету <font color=red><b><?=$my_points?></b></font> <?=($vip == "no" ? "бонусов" : "Б.П.")?></font><br /> <?=($vip == "no" ? "<b><font color=\"darkgreen\" size=2>За каждый час сидирования, Вы получаете <font color=red><b>" . $points_per_hour . "</b></font> бонус(ов)</font></b><br />" : "")?></center> <?php if ($output_bonus) { ?><table class="embedded" width="95%" align="center" border="0" cellspacing="0" cellpadding="5"> <tr> <td><b>Описание</b></td> <td align="center"><b>Цена</b></td> <td align="center"><b>Обменять</b></td> </tr> <?php print ( $output_bonus ); print ( "</table>" ); } ?><?php if ($output_groups) { ?> <table class="embedded" width="95%" align="center" border="0" cellspacing="0" cellpadding="5"> <tr> <td><b>Группа</b></td> <td align="center"><b>Закончится через...</b></td> <td align="center"><b>Цена</b></td> <td align="center"><b>Обменять</b></td> </tr> <?php print ( $output_groups ); print ( "</table>" ); } ?><?php if ($output_torrents) { ?> <br /> <?=$pagertop?> <table class="embedded" width="95%" align="center" border="0" cellspacing="0" cellpadding="5"> <tr> <td><b>Торрент</b></td> <td align="center"><b>Цена</b></td> <td align="center"><b>Обменять</b></td> </tr> <?php print ( $output_torrents ); print ( "</table>" ); } ?> <?=$pagerbottom?> <noscript> <div align="right"><input type='submit' value='Обменять'></div> </noscript> </form> <? if (! $from_ajax) end_frame (); ?> </div> <? if (! $from_ajax) stdfoot (); } ?>
Зы Вот мой .htaccess Код (Text): allow from all AddDefaultCharset windows-1251 Directoryindex index.php <IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] </IfModule>
честно даже лень смотреть, проматывая страницу вниз и созерцая такой большой кусок кода. Но чисто пальцем в ж... небо - перед запросом на выборку из БД сделайте запрос mysql_query('SET NAMES cp1251');
очень многа бакаф ниасилил, но видимо проблема с кодировками, может быть все что угодно, начинаем приводить все к одной кодировке, http://www.php.ru/forum/viewtopic.php?t=10103, сохраняем все скрипты в одной кодировке, смотрим функции обрезания строк если где то есть, что бы символы в двухбайтных кодировках не резались substr, a mb_substr с указанием кодировки, смотрим какие хедеры отправляются, что в <meta http-equiv="Content-Type" content="text/html; charset="> тут читаем http://phpfaq.ru/charset и т.д и т.п.
KasperZzz ты кодировку в шапке страницы правильно прописал? а то может броузер тупо автоматом определяет неверно и все дела.
Эх... Пример трекера...http://tk.angel-fun.com/ Вся проблема в том что на этом хостинге показывает все на 5 с +... А вот локальный парит мозги...Я докопался до перекодировки документов.... Как я понял что проблема в хостинге... То что там дефоловая кодировка хз какая ... Просто я даже не знаю какой параметр может влиять на это....Как мне оформить им письмо чтобы они сразу поняли о чем идет речь ?...
Локальным... Просто хостинг провайдера ... Я когда ставлю сборку вертриго... Все нормально... На удаленном все нормально.... А тут ужс у провайдера адский хостинг фактически все функции отрублены...Приходится писать каждый раз... За что отвечает параметр На удаленном он Content-Type text/html; charset=windows-1251 В локальном стоит Content-Type text/html это может влиять?