За последние 24 часа нас посетил 18831 программист и 1644 робота. Сейчас ищут 872 программиста ...

Переадресация каждого второго пользователя на другой сайт

Тема в разделе "PHP для новичков", создана пользователем Cognio, 10 сен 2014.

  1. Cognio

    Cognio Новичок

    С нами с:
    8 апр 2014
    Сообщения:
    21
    Симпатии:
    0
    Собственно хотелось бы сделать переадресацию каждого второго пользователя на другой поддомен.
    Подскажите логику как это бы сделать.
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    В начале файла:
    Код (PHP):
    1. if (file_exists(__DIR__ . "/tpm/f")) {
    2.    unlink(__DIR__ . "/tpm/f");
    3.    header("Location: http://other.domain.ru");
    4.    die;
    5. }
    6. file_put_contents(__DIR__ ."/tpm/f", "1");
    7.  
    на папку tmp должны стоять права 777. МОжно в базе похожий флаг сделать. __DIR__ появилась в php 5.3. В более ранних поменяйте на dirname(__FILE__)
     
  3. Cognio

    Cognio Новичок

    С нами с:
    8 апр 2014
    Сообщения:
    21
    Симпатии:
    0
    Re: Переадресация каждого второго пользователя на другой сай

    Большое спасибо за код, но можете объяснить за счет чего это работает?
    Для меня важно именно понять.
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Re: Переадресация каждого второго пользователя на другой сай

    При первом заходе условие не сработает, т.к. файла "f" не существует, поэтому остаёмся этом же домене и создаем файл "f". При следующем заходе, условие верно, т.к. файл уже присутствует и удаляя его же, переадресовываем юзера на поддомен. Следующий задшедший - опять не обнаруживает файл... и т.д.
     
  5. Cognio

    Cognio Новичок

    С нами с:
    8 апр 2014
    Сообщения:
    21
    Симпатии:
    0
    Re: Переадресация каждого второго пользователя на другой сай

    Deonis, спасибо.

    Странная вещь - выдает ошибку, что функция file_put_conents не известная.
    При том что версия php - 5.4.29
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Re: Переадресация каждого второго пользователя на другой сай

    Очепятка. file_put_contents (букву t пропустили)
    P.S. Бездумно копипастить - это вообще плохая практика. Как минимум, вы должны узнать, что вам за функции предлагают, если вы с ними не знакомы.
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Переадресация каждого второго пользователя на другой сай

    Ага, опечатался. И ещё die после header("location") пропустил. Поправил пост.
     
  8. Cognio

    Cognio Новичок

    С нами с:
    8 апр 2014
    Сообщения:
    21
    Симпатии:
    0
    Re: Переадресация каждого второго пользователя на другой сай

    У меня все равно не работало.
    Поменял немного ф-ции и сделал так
    Код (Text):
    1.  
    2. if (file_exists("1.txt")) {
    3.    unlink("1.txt");
    4.    header("Location: http://ya.ru");
    5.    die;
    6. }
    7. fopen("1.txt", "w+");
     
  9. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Re: Переадресация каждого второго пользователя на другой сай

    предложу вместо file_put_contents или fopen использовать touch )))
    unix way!
     
  10. Cognio

    Cognio Новичок

    С нами с:
    8 апр 2014
    Сообщения:
    21
    Симпатии:
    0
    Re: Переадресация каждого второго пользователя на другой сай

    Ещё переделал, дабы переадресовывало только человека который либо не заходил ещё на сайт, либо давно
    Код (Text):
    1. $ltest = "http://site.com/";
    2. $ip = $_SERVER['REMOTE_ADDR'];
    3. setcookie("ip", $_SERVER['REMOTE_ADDR'], time()+3600);
    4. if($_COOKIE["ip"] != $_SERVER['REMOTE_ADDR']) {
    5.     if (file_exists("1.txt")) {
    6.         unlink("1.txt");
    7.         header("Location: $ltest");
    8.         die;
    9.     }
    10. }
    11. setcookie("link",__DIR__);
    12. fopen("1.txt", "w+");
    Будет ли такое корректно работать в реальных условиях?