За последние 24 часа нас посетили 18022 программиста и 1599 роботов. Сейчас ищут 877 программистов ...

PHP, Mysql, Ajax - для баннерной системы

Тема в разделе "Прочие вопросы по PHP", создана пользователем Oleg_php, 17 янв 2012.

  1. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Создаю баннерную систему, проблема в том что незнаю как реализовать учёт просмотр баннеров на других сайтах. То есть при посещении страницы, с неё должен быть отправлен запрос на 'главный сайт', который по id добавлял бы в базу данных +1 просмотр.
     
  2. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ты же баннер запрашиваешь. вот там и считай +1

    ===

    запрос на сркипт. сркипту в переменную баннер. сам баннер в мемкеш. работает быстро...
     
  3. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Пример можно?
     
  4. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    <img src="http://mysystem/banner.php?uid=123">

    banner.php
    //получить ИД баннера по ИД юзера
    // провериит в кеше
    // если нет, зачитат с диска и положит в кеш
    // отдать картинку
    // баннер += 1

    ===

    только напрямую с БД не работайте. пишите промедуточные данные в кеш или редиску, а от туда по хрону раз в минуту, к примему, доставайте, апдейдите БД и чистите.
     
  5. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Спасибо за пример. Вопрос ещё по одному, отдать возврат на запрос картинки каким примерно образом осуществить.
    То есть в фаиле banner.php делаю запрос по uid, после совпадения также выбераю один из баннеров. После чего как мне лучше передать её?
     
  6. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  7. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Большое спасибо. Буду пробовать.
     
  8. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Что-то не получается. Кому не сложно можете скинуть пример скрипта, по обработке запроса.
    Заранее благодарен!
     
  9. Ilyaska

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

    С нами с:
    16 янв 2012
    Сообщения:
    17
    Симпатии:
    0
    Только не понятно Вам нужно в ответ вернуть правильный src картинки?
    <img src="http://mysystem/banner.php?uid=123"> чтобы отображалась картинка или же передать сам файл?
    если src то проблем 0 return 'полный путь 1 из файлов' и все а если возвращать файл то

    <?
    header('Content-Type: application/octet-stream; charset=utf-8');
    header('Content-disposition: attachment; filename="'.$filename.'"');
    if(file_exists($filename)){
    $fp=fopen($filename,"r"));
    $length=filesize($filename);
    $contents=($length?fread($fp,$length):"");
    fclose($fp);
    }else
    $contents= "";
    echo $contents;
    ?>
     
  10. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Я хотел написать скрипт такого вида.

    <a href="http://www.mysite.ru/banner.php?url=yes&uid=1"><img src="http://www.mysite.ru/banner.php?uid=1"></a>

    Фаил banner.php обрабатывал бы на стороне img и выдавал бы баннер по uid. Проблема у меня с выводом рисунка баннера.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в чем беда-то? =)
     
  12. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    "Беда" в том что как отдать картинку.

    banner.php получает uid
    $id = int($_GET['uid']);
    после вставляем в звпрос SELECT .... from ... where id=$id;
    а дальше как прописать?
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    и как тебе уже сказали нужно отдать соотв заголовок и тип файла
     
  15. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Без всякого header, просто echo?
     
  16. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Заголовок какой тип должден иметь, можете написать. Второй день просто читаю статьи.
     
  17. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    И также как значения положить в кеш и проверить есть ли там запрос. чтобы не перегружать БД?
     
  18. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    такой же тип как у того содержимого баннера, которое было до того, как ты его потребил в свою систему =)
     
  19. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Как вот такая реализация?

    Скрипт banner.php
    <?php
    if ( isset( $_GET['id'] ) ) {
    // Здесь $id номер изображения
    $id = (int)$_GET['id'];
    if ( $id > 0 ) {
    $query = "SELECT `mymetype`, `banner` FROM `banners` WHERE `id`=".$id;
    // Выполняем запрос и получаем файл
    $res = mysql_query($query);
    if ( mysql_num_rows( $res ) == 1 ) {
    $image = mysql_fetch_array($res);
    // Отсылаем браузеру заголовок
    header("Content-type: ".$image['mymetype']);
    // Передача баннера
    echo $image['banner'];
    }
    }
    }
    ?>
     
  20. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    угу

    только надо не $id = (int)$_GET['id']; а $id=intval($id);
    $query = "SELECT `mymetype`, `banner` FROM `banners` WHERE `id`= $id LIMIT 1";

    if ( mysql_num_rows( $res ) == 1 ) { на if ($res !== false) { кажется

    остальное все именно так. соотв тут и считай показы
     
  21. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Спасибо!
     
  22. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    а если баннер также флеш будет, как лучше тогда сделать?
     
  23. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    лучше вобще отдавать весь кусок с обрамляющим html мне кажется.
     
  24. Oleg_php

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

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
  25. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да все то же самое. просто один скрипт отдает контент (уже юзеру), а второй - хтмл-оснастку (сайту) =)