Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

отображение имени бота

я вот смотрел в phpmyadmin, что там есть название ботов которые посещают магазин, как можно вывести их в админке, Кто сейчас в магазине - имя, напр. так: marketgid, google, yandex...


Очень интересный вопрос! Неужели в Шопосе этого нельзя сделать?



Очень интересный вопрос! Неужели в Шопосе этого нельзя сделать?


да можно абсолютно все доделать. любую функцию, которая есть в других движках

по поводу ботов - можно попробовать в файле includes\functions\admin.include.php

заменить код

> 0) {
      os_db_query("update " . TABLE_WHOS_ONLINE . " set customer_id = '" . $wo_customer_id . "', full_name = '" . $wo_full_name . "', ip_address = '" . $wo_ip_address . "', time_last_click = '" . $current_time . "', last_page_url = '" . $wo_last_page_url . "' where session_id = '" . $wo_session_id . "'");
    } else {
      os_db_query("insert into " . TABLE_WHOS_ONLINE . " (customer_id, full_name, session_id, ip_address, time_entry, time_last_click, last_page_url) values ('" . $wo_customer_id . "', '" . $wo_full_name . "', '" . $wo_session_id . "', '" . $wo_ip_address . "', '" . $current_time . "', '" . $current_time . "', '" . $wo_last_page_url . "')");
    }
  }


на

> 0) {
      os_db_query("update " . TABLE_WHOS_ONLINE . " set customer_id = '" . $wo_customer_id . "', full_name = '" . $wo_full_name . "', ip_address = '" . $wo_ip_address . "', time_last_click = '" . $current_time . "', bot='".$bot."', last_page_url = '" . $wo_last_page_url . "' where session_id = '" . $wo_session_id . "'");
    } else {
      os_db_query("insert into " . TABLE_WHOS_ONLINE . " (customer_id, full_name, session_id, ip_address, time_entry, time_last_click, last_page_url, bot) values ('" . $wo_customer_id . "', '" . $wo_full_name . "', '" . $wo_session_id . "', '" . $wo_ip_address . "', '" . $current_time . "', '" . $current_time . "', '" . $wo_last_page_url . "', '".$bot."')");
    }
}
 


ALTER TABLE os_whos_online ADD bot text( 10 ) NOT NULL



и содержимое файла admin\whos_online.php

заменить на

<?php
/*
#####################################
#  ShopOS: Shopping Cart Software.
#  Copyright (c) 2008-2010
#  http://www.shopos.ru
#  http://www.shoposs.com
#  Ver. 1.0.0
#####################################
*/

  $xx_mins_ago = (time() - 900);

  require('includes/top.php');
  require(_CLASS.'price.php');
  os_db_query("delete from " . TABLE_WHOS_ONLINE . " where time_last_click < '" . $xx_mins_ago . "'");
 
  $main->head();

function bot_name($bot)
{
$bot_names = '';   
$bot_names['Google'] = 'Googlebot';
$bot_names['Yandex'] = 'Yandex';
$bot_names['Rambler'] = 'StackRambler';
$bot_names['MSN'] = 'msnbot/';
$bot_names['Yahoo!'] = 'Yahoo! Slurp';
$bot_names['WordPress'] = 'WordPress/';
$bot_names['Twiceler'] = 'Twiceler';
$bot_names['iGde'] = 'igdeSpyder';
$bot_names['Baidu'] = 'Baiduspider+';
$bot_names['Majestic-12 '] = 'MJ12bot/';
$bot_names['W3C '] = 'Validator';
$bot_names['Alexa'] = 'ia_archiver';
$bot_names['W3 '] = 'W3 SiteSearch Crawler';
$bot_names['MSNbot Media'] = 'msnbot-media/';
$bot_names['Google '] = 'AdsBot-Google';
$bot_names['Aport'] = 'Aport';
$bot_names['Google '] = 'Mediapartners-Google';
$bot_names['Yandex.Direct'] = 'Direct/2.01.000';
$bot_names['Yanga'] = 'Yanga WorldSearch';
$bot_names['Tele-House'] = 'Dolphin/';
$bot_names['NetCraft'] = 'NetcraftSurveyAgent/';
$bot_names['BlogPulse'] = 'BlogPulse';
$bot_names['Boomerang'] = 'Boomerang/';
$bot_names['Tagoo'] = 'Tagoobot';
$bot_names['Ovale'] = 'ovalebot';
$bot_names['FollowSite'] = 'FollowSite Bot';
$bot_names['OMG Crawler'] = 'OMGCrawler';
$bot_names['Huasai'] = 'Huasai/';
$bot_names['DobroBot'] = 'DobroBot';
$bot_names['PostRank'] = 'PostRank/';
$bot_names['FriendFeed'] = 'FriendFeedBot/';
$bot_names['Amazon'] = 'bitlybot';
$bot_names['Worio'] = 'woriobot';
$bot_names['Twingly'] = 'Twingly Recon';
$bot_names['OozBot'] = 'OOZBOT/';
$bot_names['Snap Shots'] = 'Snapbot/';
$bot_names['GoldenSpider'] = 'GoldenSpider/';
$bot_names['Libra '] = 'librabot/';
$bot_names['Youdao'] = 'YoudaoBot/';
$bot_names['BlogScope'] = 'BlogScope/';

$bot = strtolower($bot);

foreach ($bot_names as $_name => $_value)
{
  $value = strtolower($_value);
  $_bot = strpos($bot, $value);
  if (!empty($_bot))
  {
    return $bot_names;
  }
}

return '-';

?>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">
<?php $main->top_menu(); ?>
<table border="0" width="100%" cellspacing="2" cellpadding="2">
  <tr>
    <td class="boxCenter" width="100%" valign="top">
   
    <?php os_header('portfolio_package.gif',HEADING_TITLE);

if (SET_WHOS_ONLINE == "true") {
?>
   
    <table border="0" width="100%" cellspacing="0" cellpadding="2">
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
              <tr class="dataTableHeadingRow">
                <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_ONLINE; ?></td>
                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_CUSTOMER_ID; ?></td>
                <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_FULL_NAME; ?></td>
                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_IP_ADDRESS; ?></td>
                <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_ENTRY_TIME; ?></td>
                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_LAST_CLICK; ?></td>
                <td class="dataTableHeadingContent" align="center">bot</td>
                <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_LAST_PAGE_URL; ?>&nbsp;</td>
              </tr>
<?php
  $whos_online_query = os_db_query("select customer_id, full_name, ip_address, time_entry, time_last_click, last_page_url, session_id, bot from " . TABLE_WHOS_ONLINE ." order by time_last_click desc");
  while ($whos_online = os_db_fetch_array($whos_online_query)) {
    $time_online = (time() - $whos_online['time_entry']);
    if ( ((!$_GET['info']) || (@$_GET['info'] == $whos_online['session_id'])) && (!$info) ) {
      $info = $whos_online['session_id'];
    }
    if ($whos_online['session_id'] == $info) {
      echo '              <tr class="dataTableRowSelected">' . "\n";
    } else {
      echo '              <tr class="dataTableRow" onmouseover="this.className=\'dataTableRowOver\';this.style.cursor=\'hand\'" onmouseout="this.className=\'dataTableRow\'" onclick="document.location.href=\'' . os_href_link(FILENAME_WHOS_ONLINE, os_get_all_get_params(array('info', 'action')) . 'info=' . $whos_online['session_id'], 'NONSSL') . '\'">' . "\n";
    }
?>
                <td class="dataTableContent"><?php echo gmdate('H:i:s', $time_online); ?></td>
                <td class="dataTableContent" align="center"><?php echo $whos_online['customer_id']; ?></td>
                <td class="dataTableContent"><?php echo $whos_online['full_name']; ?></td>
                <td class="dataTableContent" align="center"><?php echo $whos_online['ip_address']; ?></td>
                <td class="dataTableContent"><?php echo date('H:i:s', $whos_online['time_entry']); ?></td>
                <td class="dataTableContent" align="center"><?php echo date('H:i:s', $whos_online['time_last_click']); ?></td>
              <td class="dataTableContent" align="center"><?php echo bot_name($whos_online['bot']); ?></td>
                <td class="dataTableContent"><?php if (preg_match('/^(.*)' . os_session_name() . '=+*(.*)/i', $whos_online['last_page_url'], $array)) { echo $array . $array; } else { echo $whos_online['last_page_url']; } ?>&nbsp;</td>
              </tr>
<?php
  }
?>
              <tr>
                <td class="smallText" colspan="7"><?php echo sprintf(TEXT_NUMBER_OF_CUSTOMERS, os_db_num_rows($whos_online_query)); ?></td>
              </tr>
            </table></td>
<?php

  $heading = array();
  $contents = array();
  if ($info) {
    $heading[] = array('text' => '<b>' . TABLE_HEADING_SHOPPING_CART . '</b>');

    if (STORE_SESSIONS == 'mysql') {
      $session_data = os_db_query("select value from " . TABLE_SESSIONS . " WHERE sesskey = '" . $info . "'");
      $session_data = os_db_fetch_array($session_data);
      $session_data = trim($session_data['value']);
    } else {
      if ( (file_exists(os_session_save_path() . '/sess_' . $info)) && (filesize(os_session_save_path() . '/sess_' . $info) > 0) ) {
        $session_data = file(os_session_save_path() . '/sess_' . $info);
        $session_data = trim(implode('', $session_data));
      }
    }

      $user_session = unserialize_session_data($session_data);

      if ($user_session) {
        $products = os_get_products($user_session);
        for ($i = 0, $n = sizeof($products); $i < $n; $i++) {
          $contents[] = array('text' => $products['quantity'] . ' x ' . $products['name']);
        }

        if (sizeof($products) > 0) {
          $contents[] = array('text' => os_draw_separator('pixel_black.gif', '100%', '1'));
          $contents[] = array('align' => 'right', 'text'  => TEXT_SHOPPING_CART_SUBTOTAL . ' ' . $user_session['cart']->total . ' ' . $user_session['currency']);
        } else {
          $contents[] = array('text' => '&nbsp;');
        }
      }
    }

  if ( (os_not_null($heading)) && (os_not_null($contents)) ) {
    echo '            <td width="25%" valign="top">' . "\n";

    $box = new box;
    echo $box->infoBox($heading, $contents);

    echo '            </td>' . "\n";
  }
?>
          </tr>
        </table></td>
      </tr>
    </table>

<?php
}
else
{
    echo ("Модуль: ".HEADING_TITLE." - отключен;<br>");
    echo ("<a href='configuration.php?gID=17'>Настройка -> Разное -> Быстрое оформление</a>");
}
?>
</td>
  </tr>
</table>
<?php $main->bottom(); ?>


только не знаю

у себя на сайте пока что ни одного бота не словил

за 30 минут :)

если за сутки ниодного не словлю - подправлю код)


были ботнеты ?
bot -

у меня  один на крючке Googlebot  ;D запретил же заразе лезть в currency

тут через пол часа и Yahoo! Slurp на рисовался. Спасибо все работает прекрасно!


были ботнеты ?


не знаю. не смотрел

вещь очень бесполезная :)

но если работает - хорошо))


вот если бы ещё лог файл вести в который бы писалось кто и когда был, было бы замечательно (смотреть историю посещений).



вот если бы ещё лог файл вести в который бы писалось кто и когда был, было бы замечательно (смотреть историю посещений).


так в чем проблема

еще +1 запрос

можно реализовать все

просто для этого больше годятся готовые счетчики, сервисы для ведения статистики, которые нет смысла писать с 0я


кто то пытается это расширение использовать для взлома.

замените

;


на

;
$bot = mysql_real_escape_string ($bot);


в качестве HTTP_USER_AGENT посылают какой то php код. только толку. он же нигде не выполняется.

навсякий случай поменяйте или отключите вообще расширение кто онлайн. если не нужно


Источник



Copyright ShopOS