|
|
|
|
|
для: Loki
(23.04.2005 в 22:38)
| | Хм... будем следить, может кто просто засобачил юникод строку? Умельцев, которые используют движки поисковиков для своих нужд много... хотя может и на новый движок переходят, чёрт их знает. | |
|
|
|
|
|
|
|
для: cheops
(23.04.2005 в 11:48)
| | Сегодня мне яндекс рефферера в юникоде выплюнул... похоже, скоро придется конвертировать запросы от всех поисковиков... | |
|
|
|
|
|
|
|
для: Loki
(23.04.2005 в 00:59)
| | 2. Поправил. | |
|
|
|
|
|
|
|
для: Loki
(23.04.2005 в 00:59)
| | 1. Ага было такое дело, уже давно поправил.
2. Буду смотреть.
3. Ну эту перестраховку пользователь невооружённым взглядом увидит, так как все остальные будут 0, боюсь править чтобы хуже не было.
4. Он вместе с Google выводится if(($ip['searches'] == "google") || ($ip['searches'] == "msn")) | |
|
|
|
|
|
|
|
для: 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"). На самом деле работает и без него, но меня смущает то, что остальные поисковики присутствуют.
В общем, это то, что отложилось в голове. Было и еще что-то, но более мелкое и незначительное.
Ушел переделывать форум:) | |
|
|
|
|
|
|
|
для: Олег
(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
?>
|
И вашему счетчику не будет цены;) | |
|
|
|
|
|
|
|
для: human
(15.04.2005 в 08:28)
| | Люди счетчик отличный но имеет очень существенный недостаток !!!
Сделайте раздел ссылающиеся страницы, чтоб можно было глянуть кто и с какой страницы пришол ссылку на ту страницу. Допустим если с яндекса то ссылка ведет на определенный запрос с которого к вам пришли, вобщем такая очень полезная функция есть в HotLog если вы это добавите то цены вашему счетчику не будет !!! :) | |
|
|
|
|
|
|
|
для: 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).
Ну вот, теперь можно читать тексты даже на японском языке...:-)
Не говоря уж о всем знакомых строчках, наполовину состоящих из буквы "Р" . | |
|
|
|
|
|
|
|
для: human
(14.04.2005 в 13:45)
| | Библиотека iconv, к сожалению не на всех серверах стоит :((( Если бы сейчас везде был PHP 5, где она входит в ядро, тогда бы забот не было. | |
|
|
|
|
|
|
|
для: 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"); | |
|
|
|
|