Бесконечный редирект

Тема в разделе "PHP", создана пользователем vave, 11 сен 2011.

Модераторы: latteo
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    368
    Симпатии:
    14
    Установил скрипт GeoIP на сайт для редиректа по странам.
    В скрипте выставил, для евро стран переходить на
    eu.domain.com/
    для всех остальных просто на domain.com/
    теперь из европы все перенаправляются на eu.domain.com/
    а вот domain.com/ где в index.php вставлен код
    PHP:
    <?php require 'GeoIP_скрипт.php'?>
    бесконечно редиректится сам на себя, от этого страница не загружаеися.
    пробовал менять require на require_one но тоже не помогает.

    вот что находится внтури GeoIP_скрипт.php


    PHP:
    <?php  
    require_once("inc/function_geoip.php"); 

    $url "http://www.luxov.com/l.php"// Редирект для всех остальных стран, которых нет в params.txt 

    $arr_par file("params.txt"); 

    $ips $_SERVER['REMOTE_ADDR']; 

    $gis geoip_open("inc/GeoIP.dat"GEOIP_STANDARD); 

    $country_code geoip_country_code_by_addr($gis$ips); 

    geoip_close($gis); 

    if(!empty(
    $country_code)){ 

    for(
    $i=0$i<count($arr_par); $i++){ 

    $str trim($arr_par[$i]); 

    $country explode("|"$str); 

    if(
    $country_code == $country[0]){ 
    header("Location: ".$country[1]); die; 



    header("Location: ".$url); die; 

    }else{ 
    header("Location: ".$url); die; 



    ?>
    Помогите пожалуйста!
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Естественно будет бесконечный редирект, ведь юзер не из европы будет проверятся и перенаправляться на этот же скрипт с условием. Нужно как то пометить юзера который не из европы. Например записать в кук либо в сессию-

    PHP:
    session_start();
     
    if(@
    $_SESSION['user_city'] != 'no_eu'){

    require_once(
    "inc/function_geoip.php");  

    $url "http://www.luxov.com/l.php"// Редирект для всех остальных стран, которых нет в params.txt  

    $arr_par file("params.txt");  

    $ips $_SERVER['REMOTE_ADDR'];  

    $gis geoip_open("inc/GeoIP.dat"GEOIP_STANDARD);  

    $country_code geoip_country_code_by_addr($gis$ips);  

    geoip_close($gis);  

    if(!empty(
    $country_code)){  

    for(
    $i=0$i<count($arr_par); $i++){  

    $str trim($arr_par[$i]);  

    $country explode("|"$str);  

    if(
    $country_code == $country[0]){  
    header("Location: ".$country[1]); die;  
    }  

    }  

    $_SESSION['user_city'] = 'no_eu';
    header("Location: ".$url); die;  

    }else{  

    $_SESSION['user_city'] = 'no_eu';
    header("Location: ".$url); die;  
    }  

    }
    ?>

     
    vave нравится это.
  3. baddan

    baddan

    Регистр.:
    14 мар 2008
    Сообщения:
    354
    Симпатии:
    42
    куку выставляй и перед проверкой на страну проверяй, если есть кука то не надо проверять страну если нет то проверить и средиректить по куке.

    и скрипт быстрее станет работать, базу GEO чекнуть тоже ресурс надо , а так 1 раз за сессию.