Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Новая версия счётчика PowerCounter 2.3

Сообщения:  [1-10]   [11-19] 

 
 автор: cheops   (24.04.2005 в 13:18)   письмо автору
 
   для: Loki   (23.04.2005 в 22:38)
 

Хм... будем следить, может кто просто засобачил юникод строку? Умельцев, которые используют движки поисковиков для своих нужд много... хотя может и на новый движок переходят, чёрт их знает.

   
 
 автор: Loki   (23.04.2005 в 22:38)   письмо автору
 
   для: cheops   (23.04.2005 в 11:48)
 

Сегодня мне яндекс рефферера в юникоде выплюнул... похоже, скоро придется конвертировать запросы от всех поисковиков...

   
 
 автор: cheops   (23.04.2005 в 11:48)   письмо автору
 
   для: Loki   (23.04.2005 в 00:59)
 

2. Поправил.

   
 
 автор: cheops   (23.04.2005 в 11:14)   письмо автору
 
   для: Loki   (23.04.2005 в 00:59)
 

1. Ага было такое дело, уже давно поправил.
2. Буду смотреть.
3. Ну эту перестраховку пользователь невооружённым взглядом увидит, так как все остальные будут 0, боюсь править чтобы хуже не было.
4. Он вместе с Google выводится if(($ip['searches'] == "google") || ($ip['searches'] == "msn"))

   
 
 автор: Loki   (23.04.2005 в 00:59)   письмо автору
 
   для: Loki   (15.04.2005 в 16:03)
 

Наконец-то дошли руки до программирования:)
Из отловленных в вашем варианте счетчика блох:
1. в условии

      if(strpos($useragent, "Macintosh")!== false
      || strpos($useragent, "PowerPC") $os = 'macintosh';

Пропущена закрывающая скобка. Файл count.php

2. Что касается новых поисковиков: во многих местах, переменные прописаны, а вывода их на экран - нет. Уже не припомню все места, но файлы searchhours и searchdays - железно.

3. В файле utils.php в двух местах стоит заглушка

  // Во избежание деления на 0 проверяем значение общего $total
  if($total == 0) $total = 1;

Видимо, была идея отображать проценты, но этот фрагмент так и не задействован, а на корректное отображение данных влияет.

4. Тут я сам не очень понимаю: в переключателе case 'total': нет условия if($ip['searches'] == "msn"). На самом деле работает и без него, но меня смущает то, что остальные поисковики присутствуют.

В общем, это то, что отложилось в голове. Было и еще что-то, но более мелкое и незначительное.

Ушел переделывать форум:)

   
 
 автор: Loki   (15.04.2005 в 16:03)   письмо автору
 
   для: Олег   (15.04.2005 в 10:06)
 

Замените в файле searchquery.php конструкцию switch следующим образом:

<?
switch($srch)
    {
      case 
'yandex':
      {
        while(
$ip mysql_fetch_array($qwr))
        {
          
eregi("text=([^&]*)"$ip['name']."&"$query); 
          if(
strpos($ip['name'],"yandpage")!=null)
            echo 
"<tr>
                    <td><a href='"
.$ip['name']."' target=_blank>".convert_cyr_string(urldecode($query[1]),"k","w")."</a></td>
                    <td>Yandex</td>
                    <td>"
.$ip['putdate']."</td>";
          else
            echo 
"<tr>
                    <td><a href='"
.$ip['name']."' target=_blank>".$query[1]."</a></td>
                    <td>Yandex</td>
                    <td>"
.$ip['putdate']."</td>";
          
print_ip($ip['ip'],$begin,$end);
          echo 
"<td><a href=http://".$_SERVER["SERVER_NAME"].$ip['url'].">
               "
.$ip['name']."</a></td></tr>";
        }
        break;
      }
      case 
'rambler':
      {
        while(
$ip mysql_fetch_array($qwr))
        {
          
eregi("words=([^&]*)"$ip['name']."&"$query); 
          echo 
"<tr>
                  <td><a href='"
.$ip['name']."' target=_blank>".$query[1]."</a></td>
                  <td>Rambler</td>
                  <td>"
.$ip['putdate']."</td>";
          
print_ip($ip['ip'],$begin,$end);
          echo 
"<td><a href=http://".$_SERVER["SERVER_NAME"].$ip['url'].">
               "
.$ip['name']."</a></td></tr>";
        }
        break;
      }
      case 
'google':
      {
        while(
$ip mysql_fetch_array($qwr))
        {
          
eregi("q=([^&]*)"$ip['name']."&"$query); 
          if(
strpos($ip['name'],"UTF-8")!=null$tmpstr utf8_win($query[1]);
          else 
$tmpstr $query[1];
          echo 
"<tr><td><a href='".$ip['name']."' target=_blank>".$tmpstr."</a></td><td>Google</td><td>".$ip['putdate']."</td>";
          
print_ip($ip['ip'],$begin,$end);
          echo 
"<td><a href=http://".$_SERVER["SERVER_NAME"].$ip['url'].">
               "
.$ip['name']."</a></td></tr>";
        }
        break;
      }
      case 
'aport':
      {
        while(
$ip mysql_fetch_array($qwr))
        {
          
eregi("r=([^&]*)"$ip['name']."&"$query); 
          echo 
"<tr><td><a href='".$ip['name']."' target=_blank>".$query[1]."</a></td><td>Aport</td><td>".$ip['putdate']."</td>";
          
print_ip($ip['ip'],$begin,$end);
          echo 
"<td><a href=".$_SERVER["SERVER_NAME"].$ip['url'].">
               "
.$ip['name']."</a></td></tr>";
        }
        break;
      }
      case 
'total':
      {
        while(
$ip mysql_fetch_array($qwr))
        {
          if(
$ip['searches'] == "yandex")
          {
            
eregi("text=([^&]*)"$ip['name']."&"$query); 
            if(
strpos($ip['name'],"yandpage")!=null)
              
$query[1] = convert_cyr_string(urldecode($query[1]),"k","w");
          }
          if(
$ip['searches'] == "rambler"eregi("words=([^&]*)"$ip['name']."&"$query); 
          if(
$ip['searches'] == "aport")  eregi("r=([^&]*)"$ip['name']."&"$query); 
          if(
$ip['searches'] == "google")
          {
            
eregi("q=([^&]*)"$ip['name']."&"$query); 
            if(
strpos($ip['name'],"UTF-8")!=null$query[1] = utf8_win($query[1]);
          }
          echo 
"<tr><td><a href='".$ip['name']."' target=_blank>".$query[1]."</a></td><td>".$ip['searches']."</td><td>".$ip['putdate']."</td>";
          
print_ip($ip['ip'],$begin,$end);
          echo 
"<td><a href=http://".$_SERVER["SERVER_NAME"].$ip['url'].">
          "
.$ip['name']."</a></td></tr>";
        }
        break;
      }
    } 
// Конец оператора switch
?>

И вашему счетчику не будет цены;)

   
 
 автор: Олег   (15.04.2005 в 10:06)   письмо автору
 
   для: human   (15.04.2005 в 08:28)
 

Люди счетчик отличный но имеет очень существенный недостаток !!!
Сделайте раздел ссылающиеся страницы, чтоб можно было глянуть кто и с какой страницы пришол ссылку на ту страницу. Допустим если с яндекса то ссылка ведет на определенный запрос с которого к вам пришли, вобщем такая очень полезная функция есть в HotLog если вы это добавите то цены вашему счетчику не будет !!! :)

   
 
 автор: human   (15.04.2005 в 08:28)   письмо автору
 
   для: cheops   (14.04.2005 в 23:02)
 

Ну да, именно поэтому в новой (очень толстой) книжке уважаемых авторов ( про PHP5 !!! ) приведен текст этой функции из 72-х строчек str_replace()... :-)

Проверить, установлена ли на сервере библиотека iconv очень просто: выполнить phpinfo и поискать табличку с заголовком iconv, содержащую строчку "iconv support enabled"

Но даже если этой библиотеки нет почему-то на сервере - ничто не мешает использовать ее на локальном.
Для Windows эта библиотека называется iconv.lib и она есть в PHP4.
Хотя с ее подключением есть некоторые хитрости (впрочем, возможно, что про это где-то уже написано, но мне пришлось поразбираться, о чем и расскажу).

В php.ini нужно раскомментировать строчку "extension=php_iconv.dll"
Но оказывается, что этого недостаточно. PHP будет ругаться, что не может найти
файл php_iconv.dll, хотя такой файл на самом деле есть в каталоге php\extension .

Для полноты счастья нужно еще скопировать из каталога php\dlls файл iconv.dll
в системный каталог Windows (обычно это SYSTEM32).

Ну вот, теперь можно читать тексты даже на японском языке...:-)
Не говоря уж о всем знакомых строчках, наполовину состоящих из буквы "Р" .

   
 
 автор: cheops   (14.04.2005 в 23:02)   письмо автору
 
   для: human   (14.04.2005 в 13:45)
 

Библиотека iconv, к сожалению не на всех серверах стоит :((( Если бы сейчас везде был PHP 5, где она входит в ядро, тогда бы забот не было.

   
 
 автор: human   (14.04.2005 в 13:45)   письмо автору
 
   для: cheops   (12.04.2005 в 22:55)
 

Эта функция utf8_win - достаточно громоздка и делает много лишней работы ( 72 раза запускается сканирование строки ).

Конвертировать из UTF-8 в кириллицу можно еще и более простым способом (всего две строчки) :

$str = iconv("UTF-8","ISO-8859-5",$str);
$str = convert_cyr_string ($str, "i", "w");

   

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования