За последние 24 часа нас посетили 60264 программиста и 1810 роботов. Сейчас ищут 1674 программиста ...

Что с кодировкой?

Тема в разделе "Вопросы от блондинок", создана пользователем KasperZzz, 4 окт 2010.

  1. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    Проблема такова...
    Я устанавливал движок на разных хостингах проблем с кодировкой не было...
    Но тут понадобилось установить на локальный хостинг...
    Проблема в том что когда поставил двиг все вроде нормально и из базы слова нормально показывает и вообще главная (слова не в базе а в пхп прописаны) отображает корректно кодировку... А на некоторых страницах квадраты...
    Как исправить?
    Вот пример страницы.
    Самый прикол в том что в этой странице фразы некоторые отображаются нормально! А некоторые квадратами...
    Например "За каждый час сидирования, Вы получаете" Отображается нормально.
    А вот "Бонус обменян на приглашения!" отображается квадратами... (При смене кодировки в браузере на windows-1251 Все корректно.)

    Код (Text):
    1.  
    2. <?
    3. require "include/bittorrent.php";
    4. dbconn ( false );
    5. validcan ();
    6. global $tracker_lang;
    7. $from_ajax = ( int ) $_GET ['from_ajax'];
    8. $vip = ($_GET ['type'] == "vip" || $_POST ['type'] == "vip" ? "yes" : "no");
    9. ?><script type="text/javascript">
    10. function ajax_location(file)
    11. {
    12.     $("#loading_layer").show();
    13.     $.get(file, {}, function(data){
    14.     $("#my_bonus_ajax").empty();
    15.     $("#my_bonus_ajax").append(data);
    16.     $("#loading_layer").hide();
    17.     }, 'html');
    18.     return false;
    19. }
    20. function my_bonus(id, type, long) {
    21. if (id && type) {
    22.     $("#loading_layer").show();
    23.     $.post("mybonus.php", {"id": id, 'long': long, "bonus_type": type, 'ajax': true, "type": '<?=($_GET ['type'] ? $_GET ['type'] : $_POST ['type'])?>'}, function(data){
    24.     $("#my_bonus_ajax").hide();
    25.    $("#my_bonus_ajax").empty();
    26.    $("#my_bonus_ajax").append(data);
    27.    $("#my_bonus_ajax").slideToggle('medium');
    28.     $("#loading_layer").hide();
    29. }, 'html');
    30. }
    31. else {
    32.     $("#loading_layer").show();
    33. $.get("mybonus.php", {"from_ajax": 1, 'ajax': true, "type": '<?=($_GET ['type'] ? $_GET ['type'] : $_POST ['type'])?>'}, function(data){
    34.    $("#my_bonus_ajax").hide();
    35.    $("#my_bonus_ajax").empty();
    36.    $("#my_bonus_ajax").append(data);
    37.    $("#my_bonus_ajax").slideToggle('medium');
    38.     $("#loading_layer").hide();
    39. }, 'html');
    40. }
    41.     return false;
    42. }
    43. </script>
    44. <div id="loading-layer"
    45.     style="display: none; font-family: Verdana; font-size: 11px; width: 200px; height: 50px; background: #FFF; padding: 10px; text-align: center; border: 1px solid #000">
    46. <div style="font-weight: bold" id="loading-layer-text">Загрузка.
    47. Пожалуйста, подождите...</div>
    48. <br />
    49. <img src="pic/loading.gif" border="0" /></div>
    50. <div>
    51. <?
    52. if ($_SERVER ["REQUEST_METHOD"] == "POST") {
    53.     //location ( "mybonus.php", 3 );
    54.     if (! $_POST ['ajax'])
    55.         stdhead ( 'Мой бонус' );
    56.     if ($_POST ['ajax'])
    57.         @header ( "Content-Type: text/html; charset=" . $tracker_lang ['language_charset'] );
    58.     if (empty ( $_POST ["id"] )) {
    59.         stdmsg ( $tracker_lang ['error'], "Вы не выбрали тип бонуса!" );
    60.         if (! $_POST ['ajax'])
    61.             stdfoot ();
    62.         die ();
    63.     }
    64.     $id = ( int ) $_POST ["id"];
    65.     if ($_POST ["bonus_type"] == "bonus" || $vip != "yes") {
    66.         $fields = "*";
    67.         $table = "bonus";
    68.         $where = "id = " . $id . " AND vip='" . $vip . "'";
    69.     } elseif ($_POST ["bonus_type"] == "group") {
    70.         $fields = "price AS points";
    71.         $table = "groups";
    72.         $where = "id = " . $id;
    73.         $type = "group";
    74.     } elseif ($_POST ["bonus_type"] == "torrent") {
    75.         $fields = "price AS points, `whobuy`";
    76.         $table = "torrents";
    77.         $where = "id = " . $id;
    78.         $type = "torrent";
    79.     }
    80.     if (! is_valid_id ( $id )) {
    81.         stdmsg ( $tracker_lang ['error'], $tracker_lang ['access_denied'] );
    82.         die ();
    83.     }
    84.     $res = sql_query ( "SELECT {$fields} FROM {$table} WHERE " . $where ) or sqlerr ( __FILE__, __LINE__ );
    85.     $arr = mysql_fetch_array ( $res );
    86.     $points = $arr ["points"];
    87.     if (! $type)
    88.         $type = $arr ["type"];
    89.     if ($vip == "yes")
    90.         $bonus_field = "donated";
    91.     else
    92.         $bonus_field = "bonus";
    93.     if ($CURGROUP ['can_freeinv'] && $type == "invite")
    94.         $points = 0;
    95.     if ($CURUSER [$bonus_field] < $points) {
    96.         stdmsg ( $tracker_lang ['error'], "У вас недостаточно бонусов!" );
    97.         if (! $_POST ['ajax'])
    98.             stdfoot ();
    99.         die ();
    100.     }
    101.     print ( "<center><form action='mybonus.php'><input onclick='return my_bonus();' type='submit' value='" . $tracker_lang ['back'] . "'></form></center><br />" );
    102.     switch ($type) {
    103.         case "traffic" :
    104.             $traffic = $arr ["quanity"];
    105.             if (! sql_query ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, uploaded = uploaded + $traffic WHERE id = " . sqlesc ( $CURUSER ["id"] ) )) {
    106.                 stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" );
    107.                 if (! $_POST ['ajax'])
    108.                     stdfoot ();
    109.                 die ();
    110.             }
    111.             stdmsg ( $tracker_lang ['success'], "Бонус обменян на траффик!" );
    112.             if (! $_POST ['ajax'])
    113.                 stdfoot ();
    114.             break;
    115.         case "buploader" :
    116.             if ($CURGROUP ['can_uploadtor'] && $CURGROUP ['can_uploadtr']) {
    117.                 stdmsg ( $tracker_lang ['error'], "Вам этого не нужно... Вы и так можете загружать раздачи!" );
    118.                 if (! $_POST ['ajax'])
    119.                     stdfoot ();
    120.                 die ();
    121.             }
    122.             $buploader = $arr ["quanity"];
    123.             if (! sql_query ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, bonusuploader = bonusuploader + $buploader WHERE id = " . sqlesc ( $CURUSER ["id"] ) )) {
    124.                 stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" );
    125.                 if (! $_POST ['ajax'])
    126.                     stdfoot ();
    127.                 die ();
    128.             }
    129.             stdmsg ( $tracker_lang ['success'], "Бонус обменян на возможность загрузки раздачи!" );
    130.             if (! $_POST ['ajax'])
    131.                 stdfoot ();
    132.             break;
    133.         case "invite" :
    134.             $invites = $arr ["quanity"];
    135.             if (! sql_query ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, invites = invites + $invites WHERE id = " . sqlesc ( $CURUSER ["id"] ) )) {
    136.                 stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" );
    137.                 if (! $_POST ['ajax'])
    138.                     stdfoot ();
    139.                 die ();
    140.             }
    141.             stdmsg ( $tracker_lang ['success'], "Бонус обменян на приглашения!" );
    142.             if (! $_POST ['ajax'])
    143.                 stdfoot ();
    144.             break;
    145.         case "group" :
    146.             if (summgroup ( $CURGROUP ) >= summgroup ( $ALLGROUPS [$id] ) && $id != $CURUSER ['group'] && $CURUSER ['override_group'] != 255) {
    147.                 stdmsg ( $tracker_lang ['error'], "Вам этого не нужно... Ваши права выше!" );
    148.                 if (! $_POST ['ajax'])
    149.                     stdfoot ();
    150.                 die ();
    151.             }
    152.             $_POST ['days_add'] = number_format ( $_POST ['long'], 2, '.', '' );
    153.             $days_add = ($CURUSER ['vipdowndate'] != '0000-00-00' && $CURUSER ['group'] == $id ? sql_timestamp_to_unix_timestamp ( $CURUSER ['vipdowndate'] ) : time ()) + ($_POST ['days_add'] * 24 * 60 * 60);
    154.             $points = number_format ( $points * ($_POST ['days_add'] / 30), 2, '.', '' );
    155.             if ($CURUSER ['vipdowngroup'] == - 1)
    156.                 $vipdowngroup = ", vipdowngroup='" . $CURUSER ['group'] . "'";
    157.                 //die ( "UPDATE users SET {$bonus_field} = {$bonus_field} - $points, `group` = " . $id . ", vipdowndate='" . date ( 'Y-m-d', $days_add ) . "'{$vipdowngroup} WHERE id = " . sqlesc ( $CURUSER ["id"] ) );
    158.             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"] ) )) {
    159.                 stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" );
    160.                 if (! $_POST ['ajax'])
    161.                     stdfoot ();
    162.                 die ();
    163.             }
    164.             stdmsg ( $tracker_lang ['success'], "Бонус обменян на новую группу!" );
    165.             if (! $_POST ['ajax'])
    166.                 stdfoot ();
    167.             break;
    168.         case "torrent" :
    169.             if ($CURGROUP ['can_dtforsell']) {
    170.                 stdmsg ( $tracker_lang ['error'], "Вам этого не нужно... Вы можете скачивать платные торренты!" );
    171.                 if (! $_POST ['ajax'])
    172.                     stdfoot ();
    173.                 die ();
    174.             }
    175.             if (strpos ( $arr ["whobuy"], "|" . $CURUSER ['id'] . "|" ) !== false) {
    176.                 stdmsg ( $tracker_lang ['error'], "Вам этого не нужно... Вы уже купили этот торрент!" );
    177.                 if (! $_POST ['ajax'])
    178.                     stdfoot ();
    179.                 die ();
    180.             }
    181.             $what = "'" . (! $arr ["whobuy"] ? "|" : "") . $CURUSER ["id"] . "|'";
    182.             if (! sql_query ( "UPDATE users SET users.{$bonus_field} = users.{$bonus_field} - $points WHERE
    183.             users.id = " . sqlesc ( $CURUSER ["id"] ) ) || ! sql_query ( "UPDATE torrents SET torrents.`whobuy` =
    184.             CONCAT(IF(torrents.`whobuy` IS NULL, '', torrents.`whobuy`), {$what}) WHERE torrents.id=" . $id )) {
    185.                 stdmsg ( $tracker_lang ['error'], "Не могу обновить бонус!" );
    186.                 if (! $_POST ['ajax'])
    187.                     stdfoot ();
    188.                 die ();
    189.             }
    190.             stdmsg ( $tracker_lang ['success'], "Бонус обменян на платный торрент!" );
    191.             if (! $_POST ['ajax'])
    192.                 stdfoot ();
    193.             break;
    194.         default :
    195.             stdmsg ( $tracker_lang ['error'], "Unknown bonus type!" );
    196.             if (! $_POST ['ajax'])
    197.                 stdfoot ();
    198.     }
    199. } else {
    200.     global $ALLGROUPS;
    201.     if (! $from_ajax)
    202.         stdhead ( $tracker_lang ['my_bonus'] );
    203.     $my_points = ($vip == "no" ? $CURUSER ["bonus"] : $CURUSER ["donated"]);
    204.     $res = sql_query ( "SELECT * FROM bonus WHERE vip = '" . $vip . "'" ) or sqlerr ( __FILE__, __LINE__ );
    205.     while ( $arr = mysql_fetch_assoc ( $res ) ) {
    206.         $id = $arr ["id"];
    207.         $bonus = $arr ["name"];
    208.         $points = number_format ( $arr ["points"], 2 );
    209.         if ($arr ['type'] == "invite" && $CURGROUP ['can_freeinv'])
    210.             $points = "<u>0</u>";
    211.         $descr = $arr ["description"];
    212.         $output_bonus .= "<tr><td><b>$bonus</b><br />$descr</td><td><center><b>$points</b>&nbsp;(у Вас&nbsp;<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";
    213.     }
    214.     if ($vip == "yes") {
    215.         $res = sql_query ( "SELECT id, price FROM groups WHERE price != '0'" ) or sqlerr ( __FILE__, __LINE__ );
    216.         while ( $arr = mysql_fetch_assoc ( $res ) ) {
    217.             $id = $arr ["id"];
    218.             $bonus = get_user_group_color ( $id, get_user_group_name ( $id ) );
    219.             $points = number_format ( $arr ['price'], 2 );
    220.             if ($CURUSER ['group'] == $arr ['id'] && $CURUSER ['vipdowndate'])
    221.                 $end = get_elapsed_time ( $CURUSER ['vipdowndate'], 1 );
    222.             else
    223.                 $end = "-";
    224.             $output_groups .= "<tr><td><b>$bonus</b></td><td><center><b>" . $end . "</b></center></td><td><center><b>$points/месяц</b>&nbsp;(у Вас&nbsp;<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";
    225.         }
    226.         $count = get_row_count ( 'torrents', 'WHERE price!=0' );
    227.         if ($count) {
    228.             list ( $pagertop, $pagerbottom, $limit ) = pager ( 50, $count, "mybonus.php?from_ajax=1&type=" . ($vip == "yes" ? "vip" : "") . "&", array (), 1 );
    229.             $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__ );
    230.             while ( $arr = mysql_fetch_assoc ( $res ) ) {
    231.                 $id = $arr ["id"];
    232.                 $bonus = ($CURGROUP ['can_details'] ? "<a href=\"details.php?id=" . $id . "\">" . $arr ['name'] . "</a>" : $arr ['name']) . ($arr ['buyed'] ? "<font color=\"red\">(Куплен!)</font>" : "");
    233.                 $points = number_format ( $arr ['price'], 2 );
    234.                 $output_torrents .= "<tr><td><b>$bonus</b></td><td><center><b>$points</b>&nbsp;(у Вас&nbsp;<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";
    235.             }
    236.         }
    237.     }
    238.     if (! $from_ajax)
    239.         begin_frame ( "Пункт обмена бонусов" . loading_layer () );
    240.     ?>
    241. <div id='my_bonus_ajax'>
    242. <form action="mybonus.php" name="mybonus" method="post">
    243. <center><font color="darkgreen" size=4>На вашем счету <font color=red><b><?=$my_points?></b></font>&nbsp;<?=($vip == "no" ? "бонусов" : "Б.П.")?></font><br />
    244.     <?=($vip == "no" ? "<b><font color=\"darkgreen\" size=2>За каждый час сидирования, Вы
    245.     получаете <font color=red><b>" . $points_per_hour . "</b></font>&nbsp;бонус(ов)</font></b><br />" : "")?></center>
    246.  
    247. <?php
    248.     if ($output_bonus) {
    249.         ?><table class="embedded" width="95%" align="center" border="0"
    250.     cellspacing="0" cellpadding="5">
    251.     <tr>
    252.         <td><b>Описание</b></td>
    253.         <td align="center"><b>Цена</b></td>
    254.         <td align="center"><b>Обменять</b></td>
    255.     </tr>
    256.     <?php
    257.         print ( $output_bonus );
    258.         print ( "</table>" );
    259.     }
    260.     ?><?php
    261.  
    262.     if ($output_groups) {
    263.         ?> 
    264. <table class="embedded" width="95%" align="center" border="0"
    265.         cellspacing="0" cellpadding="5">
    266.         <tr>
    267.             <td><b>Группа</b></td>
    268.             <td align="center"><b>Закончится через...</b></td>
    269.             <td align="center"><b>Цена</b></td>
    270.             <td align="center"><b>Обменять</b></td>
    271.         </tr>
    272.     <?php
    273.         print ( $output_groups );
    274.         print ( "</table>" );
    275.     }
    276.     ?><?php
    277.  
    278.     if ($output_torrents) {
    279.         ?>
    280. <br />
    281.     <?=$pagertop?>
    282. <table class="embedded" width="95%" align="center" border="0"
    283.             cellspacing="0" cellpadding="5">
    284.             <tr>
    285.                 <td><b>Торрент</b></td>
    286.                 <td align="center"><b>Цена</b></td>
    287.                 <td align="center"><b>Обменять</b></td>
    288.             </tr>
    289.     <?php
    290.         print ( $output_torrents );
    291.         print ( "</table>" );
    292.     }
    293.     ?>
    294.     <?=$pagerbottom?>
    295. <noscript>
    296.             <div align="right"><input type='submit' value='Обменять'></div>
    297.             </noscript>
    298.  
    299.             </form>
    300. <?
    301.     if (! $from_ajax)
    302.         end_frame ();
    303.     ?>
    304.  
    305.  
    306. </div>
    307. <?
    308.     if (! $from_ajax)
    309.         stdfoot ();
    310. }
    311. ?>
     
  2. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    Зы
    Вот мой .htaccess

    Код (Text):
    1. allow from all
    2. AddDefaultCharset windows-1251
    3. Directoryindex index.php
    4. <IfModule mod_rewrite.c>
    5. RewriteEngine on
    6. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
    7. </IfModule>
     
  3. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    Никто не подскажет блондинке куда копать? =((
     
  4. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    честно даже лень смотреть, проматывая страницу вниз и созерцая такой большой кусок кода.
    Но чисто пальцем в ж... небо - перед запросом на выборку из БД сделайте запрос mysql_query('SET NAMES cp1251');
     
  5. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    очень многа бакаф ниасилил, но видимо проблема с кодировками, может быть все что угодно, начинаем приводить все к одной кодировке, 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 и т.д и т.п.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    KasperZzz
    ты кодировку в шапке страницы правильно прописал? а то может броузер тупо автоматом определяет неверно и все дела.
     
  7. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    Эх... Пример трекера...http://tk.angel-fun.com/
    Вся проблема в том что на этом хостинге показывает все на 5 с +...
    А вот локальный парит мозги...Я докопался до перекодировки документов....
    Как я понял что проблема в хостинге... То что там дефоловая кодировка хз какая ... Просто я даже не знаю какой параметр может влиять на это....Как мне оформить им письмо чтобы они сразу поняли о чем идет речь ?...
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Так тебе надо с каким решить проблему? локальным или удаленным?
     
  9. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    Локальным... Просто хостинг провайдера ... Я когда ставлю сборку вертриго...
    Все нормально... На удаленном все нормально.... А тут ужс у провайдера адский хостинг фактически все функции отрублены...Приходится писать каждый раз...
    За что отвечает параметр
    На удаленном он
    Content-Type text/html; charset=windows-1251
    В локальном стоит
    Content-Type text/html
    это может влиять?