Как выводить разную информацию.

Тема в разделе "PHP", создана пользователем yakutze, 3 фев 2013.

  1. yakutze

    yakutze

    Регистрация:
    29 янв 2013
    Сообщения:
    10
    Симпатии:
    2
    Задача такая.
    Зашел человек с определенного сайта, выводим один блок.
    С другого, другой блок.
     
  2. gromdron

    gromdron

    Регистрация:
    3 фев 2013
    Сообщения:
    0
    Симпатии:
    0
    Попробуйте при помощи $_SERVER['SERVER_NAME'], он возвращает имя сервера, которое как правило совпадает с именем сайта.
    Если не ошибаюсь:
    PHP:
    <?php
    If ($_SERVER['SERVER_NAME'] == 'www.ya.ru') {
    // Блок для тех кто с сайта www.ya.ru
    } echo {
    // Блок для остальных
    }
    ?>
     
  3. bengun

    bengun

    Регистрация:
    4 фев 2013
    Сообщения:
    1
    Симпатии:
    0
    Вероятно имелся в виду сторонний сай на котором была ссылка. Тогда в предидущем примере нудно заменить 'SERVER_NAME' на 'HTTP_REFERER'.
    --- добавлено: Feb 4, 2013 9:02 AM ---
    Ну и ещё возможно придётся использовать функцию parse_url() т.к. 'HTTP_REFERER' возвращает полный адрес.
     
  4. vitroot

    vitroot

    Регистрация:
    4 фев 2013
    Сообщения:
    1
    Симпатии:
    0
    HTTP_REFERER возвратит имя домена/адрес, с которого был сделан вход на страницу. Для получения ip'шника - $_SERVER["REMOTE_ADDR"]
     
  5. gromdron

    gromdron

    Регистрация:
    3 фев 2013
    Сообщения:
    0
    Симпатии:
    0
    Да, вы правы. Стоит использовать $_SERVER['HTTP_REFERER'] и еще парсить url
     
  6. yakutze

    yakutze

    Регистрация:
    29 янв 2013
    Сообщения:
    10
    Симпатии:
    2
    Всем спасибо за ответы.
    Но...
    Так как практически полный ноль в PHP попробую сформулировать вопрос конкретней.
    Ситуация.
    В шаблоне есть переменная которая выводит код.
    Понятно, что переход может быть с сайт.ру, сайт.ру/страница1, сайт.ру/каталог/страница2, сайт2.ру и т.д.
    Так вот надо, что бы переменная отсекала все не нужное(брала только сайт.ру), и на основании этого выводила(присваивала переменной) нужное значение.
    Если можно, рабочий код пожалуйста.
    Заранее спасибо.
     
  7. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    попробуйте так

    switch(get_domain("$_SERVER['HTTP_REFERER']")){
    case 'site1.ru':
    $template = 'one.tpl';
    break;

    case 'site2.ru':
    $template = 'two.tpl';
    break;
    }

    function get_domain($url)
    {
    $pieces = parse_url($url);
    $domain = isset($pieces['host']) ? $pieces['host'] : '';
    if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
    return $regs['domain'];
    }
    return false;
    }
     
  8. yakutze

    yakutze

    Регистрация:
    29 янв 2013
    Сообщения:
    10
    Симпатии:
    2
    Пробовал так
    PHP:
    switch(get_domain($_SERVER['HTTP_REFERER'])){
    case 
    'test_1.tt':
    $template 'test1';
    break;
     
    case 
    'site2.ru':
    $template 'two.tpl';
    break;
     
    default: 
    $template 'defolt';
     
    echo 
    "$template";
    }
    function 
    get_domain($url)
    {
    $pieces parse_url($url);
    $domain = isset($pieces['host']) ? $pieces['host'] : '';
    if (
    preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i'$domain$regs)) {
    return 
    $regs['domain'];
    }
    return 
    false;
    }[/
    code]
    Выводит дефолтное значение.
    Пробовал так
    [PHP]$template =(get_domain($_SERVER['HTTP_REFERER']));
     
     
    echo 
    "$template";
     
    function 
    get_domain($url)
    {
    $pieces parse_url($url);
    $domain = isset($pieces['host']) ? $pieces['host'] : '';
    if (
    preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i'$domain$regs)) {
    return 
    $regs['domain'];
    }
    return 
    false;
    }[/
    code]
    Переменная пустая.
    Где собака порылась?
    Заранее спасибо.
     
  9. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    yakutze, попробуйте добавить в case 'www.test_1.tt':

    вы с какого сайта переходите, добавьте для проверки вверх echo '<a href="/">test</a>';
     
  10. yakutze

    yakutze

    Регистрация:
    29 янв 2013
    Сообщения:
    10
    Симпатии:
    2
    С test_1.tt идет переход.
    Попробовал, выводит test- гиперссылкой на test_2.tt(это домен на котором тестирую)
    Да, и еще я так понял, что есть разница с ВВВ и без.
    Так вот желательно ВВВ тоже отсекать.
    Хотя в условие дополнительно конечно можно добавить.
    Спасибо что уделяете время.