Http_referer, подскажите как лучше сделать.

Discussion in 'Болталка' started by lmns, 28 Jul 2008.

  1. lmns

    lmns Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    195
    Likes Received:
    111
    Reputations:
    8
    В общем дела такие, есть у меня сайт, вполне прилично раскручен и т.д.
    90% посетителей люди с поисковиков, вначале попадают на главную страницу. Сайт продаёт некий товар. На одной из последних страниц есть форма обратной связи и мне на почту приходит не только то что написал заказчик, но и IP, и ещё кое-что.
    Меня уже давно интересует с каких страниц люди попадают на мой сайт. Самый простой выход использовать HTTP_REFERER. Но если я его вписываю на страницу обратной связи, то получаю свою собственную страницу, а не ту с которой пришёл покупатель.

    Можно конечно на главной странице разместить
    что-нибудь из этой серии

    $H=getenv("HTTP_REFERER");
    $f=fopen("log.txt",'a');
    flock ($f,2);
    fwrite($f,"$H\n");
    fclose($f);

    но тогда я буду иметь охренительный txt файл со всеми посетителями, и вручную по совпадению IP потом всё искать, а оно мне не надо.
    меня интересуют только заказчики, а не "туристы".

    К тому же это лишняя нагрузка на сервак, а он у меня в "банановой республике" на 10 мегабитном канале, ему и так нелегко.

    По нормальному это можно воплотить в жизнь?
     
  2. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Если есть форма обратной свзяи, значит это скирпт. А в скрипт мона прикрутить и рефералку. Например:
    $H=getenv("HTTP_REFERER");
    ....
    Тут код формы
    ...
    $body="ТУТ НАПРИМЕР ТЕКСТ СООБЩЕНИЯ ОТ ПОЛЬЗОВАТЕЛЬЯ \r\n REF=".$H;
    В итоге к тебе на мыло должно придти
    ОТ: ....
    Сообщение:
    Текст
    REF=http://site/page

    Но это тока мысли =)
    Конечно мона каждый раз рефер писать в куки, чтоб не было лагов типа в реферале этажа страница... ну короче хз хз хз хз хз хз
     
  3. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    А можно еще и так сделать:
    1. на главной запускаеш сессию, создаеш переменную сессии, в нее записываеш ссыль с которой пришел пользователь, затем если пользователь дошел до формы заказа то соответсвенно и содержимое переменной сессии отправляется тебе, а если нет, то на нет и суда нет.. Все просто.

    2.перенесите тему в раздел с Php программингом.. :)
     
  4. lmns

    lmns Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    195
    Likes Received:
    111
    Reputations:
    8
    если это $H=getenv("HTTP_REFERER") написать на странице формы обратной связи, то получая свою страницу.

    0x22b, а как делать сесии с главной, не делая записей в промежуточный файл?
     
    #4 lmns, 29 Jul 2008
    Last edited: 29 Jul 2008
  5. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    На главной пишеш в самом начале PHP кода:
    <?php
    session_start();
    $_SESSION['reflink'] = $_SERVER['HTTP_REFERER'];
    ...
    тут все твое..
    ?>

    что мы сделали? мы запустили сессию и присвоили переменной сессии значение ссылки с которой перешел пользователь. Суть сессий в том что, значения их переменных может передаваться от скрипта к скрипту..
    теперь на странице с формами обратной связи пишеш следующее:
    <?php
    session_start();
    и дальше после этой строки кода, можеш получать доступ к уже созданной давно переменной сессии: $_SESSION['reflink'], и значение в ней будет то самой что записалось в нее с главной. а далее уже можеш писать инфу в БД.
    для удобного использования присваиваеш какой нибудь переменной и все:
    $referer = $_SESSION['reflink'];
    и уже можеш писать в базу или куда заблагорассудиться.. надеюсь объяснил все доходчиво..
     
  6. lmns

    lmns Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    195
    Likes Received:
    111
    Reputations:
    8
    Ок, спасибо просто не знал этой фени, сегодня попробую ближе к ночи, сейчас трафф большой.
    Последний глупый вопрос, значения сессий не перемешаются, если на сайт пришёл второй чел, а первый не дошёл ещё до формы обратной связи?
    Т.е. одновременно штук 50-100 может существовать?
     
  7. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    естественно =)
     
  8. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    Конечно можно и 50 и 100, для каждого юзера, свое значение..
     
  9. lmns

    lmns Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    195
    Likes Received:
    111
    Reputations:
    8
    При добавлении на главную страницу
    <?php
    session_start();
    $_SESSION['reflink'] = $_SERVER['HTTP_REFERER'];
    ?>
    выдаёт
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

    Что не так?