За последние 24 часа нас посетили 17730 программистов и 1621 робот. Сейчас ищут 1840 программистов ...

Нужен простой скрипт на ПХП (редирект).

Тема в разделе "PHP Free-Lance", создана пользователем needsome, 21 май 2010.

  1. needsome

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

    С нами с:
    21 май 2010
    Сообщения:
    3
    Симпатии:
    0
    Всем привет. Есть работа на 20 минут.
    Нужен скрипт редиректа на ПХП.
    Вкратце что должен делать скрипт:

    скрипт index.php лежит в корне домена.
    Из разных источников на домен приходят пользователи. Нужно этих пользователей расформировать по сайту (разным страницам) в зависимости откуда они пришли. (по реферу)
    Т.е. у меня есть допустим 50 страниц:
    rabota.php
    ucheba.php
    flash.php и так далее.
    так вот если пользователь идет с какого-нибудь сайта где есть в рефере rabota то его перенаправлять на страницу mysite.com/rabota.php
    Для наглядности пользователь номер раз идет со странице site1.com/topic/rabota, мы ему должны отдать mysite.com/rabota.php
    пользователь номер два идет с сайта site2.com/category.php?q=flash мы ему показываем mysite.com/flash.php

    Если же пользователь идет со странице где для которой у нас нету совпадений то показываем ему mysite.com/forall.php
    Вот впринципе и все. Да и еще нужно ставить куку мою пользователю перед редиректом.

    Кто может сделать побыстрому пишите свои координаты (желательно скайп) можно так же в личку.

    Всем спасибо.
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    PHP:
    1. <?php
    2. $pages = array('rabota','flash');
    3. $my_addr = $_SERVER['HTTP_HOST'];
    4. $page = '';
    5. $default_page = 'forall.php';
    6. $cookie_name = 'my_cookie';
    7. $cookie_value = 'my_cookie_value';
    8. $cookie_lifetime = 3600*30;
    9. $protocol = ($_SERVER['SERVER_PORT'] == 80)?'http':'https';
    10.  
    11. $referer= (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']))?
    12.                     trim($_SERVER['HTTP_REFERER']):
    13.                     '';
    14.  
    15. if (!empty($referer) && strpos($referer, $my_addr) === FALSE) {
    16.     foreach ($pages as $v) {
    17.         if (strpos($referer, $v) !== FALSE) {
    18.             $page = $v;
    19.             break;
    20.         }
    21.     }
    22. }
    23.  
    24. $url = empty($page)?$default_page:$page.'.php';
    25. $url = $protocol.'://'.$my_addr.'/'.$url;
    26.  
    27. setcookie($cookie_name, $cookie_value, time()+$cookie_lifetime);
    28. header('Location: '.$url);
    29. echo 'Вы сейчас будете перенаправлены на страницу <a href="'.$url.'">'.$url.'</a>.<br />
    30.      Если этого не произошло, то перейдите по указанной ссылке.';
    31. ?>
     
  3. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    точно скучно)
     
  4. needsome

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

    С нами с:
    21 май 2010
    Сообщения:
    3
    Симпатии:
    0
    немного не то , по поводу куков я не то имел ввиду.
    нужно заинклюдить мой скрипт на странице index.php (что то типо <?php virtual('in.php';)?> )
    или же просто передать рефера дальше (что бы на конечной странице было видно откуда пришел пользователь)

    вот нашел какой то вариант , но что то блин в нем не работает:

    PHP:
    1. <?php
    2. function redirect($referrer)
    3. {
    4.  
    5.     $url='http://mysite.com/forall.php';
    6.     if(stripos($referrer,'rabota')!==FALSE) $url='http://mysite.com/rabota/';
    7.     else if(stripos($referrer,'flash')!==FALSE) $url='http://mysite.com/flash/';
    8.  
    9.  
    10.     header ('Location: '.$url);
    11.     exit;
    12.  
    13. }
    14. ?>
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Luge
    ты лишил меня последнего гроша. негатив тебе =)
    PHP:
    1. <?php
    2. $cnf=array(
    3. "site_uri"=>"http://mysite.com",
    4. "default_uri"=>"forall.php",
    5. "priority"=>"begin", // end,begin,random
    6. "cookie_request"=>array("Name","Value",time()+3600*24*28*12*101,'/'),
    7. );
    8.  
    9. $files=array(
    10. "rabota"=>"rabota.php",
    11. "flash"=>"flash.php",
    12. );
    13.  
    14. call_user_func_array("setcookie",$cnf['cookie_request']);
    15. if(!empty($_SERVER['HTTP_REFERER'])){
    16.     preg_match_all("#\w+#i",$_SERVER['HTTP_REFERER'],$match);
    17.     if(!empty($match[0])){
    18.        $index=array_uintersect(array_keys($files),array_unique($match[0]),"strcasecmp");
    19.        if(!empty($index)){
    20.            if(count($index)>1){
    21.                switch($cnf['priority']){
    22.                    case "random":
    23.                        $index=$index[array_rand($index)];
    24.                        break;
    25.                    case "begin":
    26.                        $index=array_shift($index);
    27.                        break;
    28.                    case "end":
    29.                        $index=array_pop($index);
    30.                        break;
    31.                }
    32.            }else $index=current($index);
    33.            header("location: ".$cnf['site_uri']."/".$files[$index]);
    34.            exit;
    35.        }
    36.     }
    37. }
    38.  
    39. header("location: ".$cnf['site_uri']."/".$cnf['default_uri']);
    40. ?>
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    +100 :D
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Luge
    динамическое число параметров. съел да? =))
     
  8. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    сегодня вечер свич кейса?^^
    Код (Text):
    1. time()+3600*24*28*12*101
    а почему столько?)))))
     
  9. needsome

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

    С нами с:
    21 май 2010
    Сообщения:
    3
    Симпатии:
    0
    я так понимаю этот код нужно вставить в index.php ?
    странно но ничего не работает , показывает пустую страницу. в чем проблема может быть?
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    скорее всего криво ставлен.
    в начале прописать error_reporting(E_ALL);
     
  11. ShamahN

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

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    странный народ =) того кто просит помочь разводят на деньги.. А тому кто готов платить так все дают ;)
    ээх, русская душа =)
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ShamahN
    ты ж не путай «as is» и «под ключ». Вот мне плевать почему рабочий код не подходит.
    А там где помочь просят ещё и думать придётся
     
  13. ShamahN

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

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Luge, да не про то я =) ящик клинского профукали =)
     
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ShamahN
    вот вот.