Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: определит страна, где находится ползовател
Форумы портала PHP.SU » » Вопросы новичков » определит страна, где находится ползовател

Страниц (1): [1]
 

1. dadli - 20 Октября, 2011 - 16:53:27 - перейти к сообщению
приветствую
хачу сделат такое: определит страна ползователя, тоест если человек зашол на саите из росии, то написат
"ви сеичас в россию",
если человек зашол на саите из мексики, то соответсвено написат: "ви сеичас в мексике"... и так далее.
погуглил но не нашол ничего нужного, если знаите какоита полезную саит, где об етом написано, даите ссилка пожалуиста.
2. Avrelio - 20 Октября, 2011 - 17:05:39 - перейти к сообщению
можна с помощью гуглмапс либо по ип определять страну

1. Узнаём IP-адрес посетителя:
IP хранится в суперглобальном массиве $_SERVER;
пример:
CODE (php):
скопировать код в буфер обмена
  1.  
  2. $ip =  $_SERVER['REMOTE_ADDR'];
  3.  
  4. //2. Пишем функцию whois:
  5.  
  6. function whois($ip) {
  7.   if ($ip!="") {
  8.     $sock = fsockopen ("whois.ripe.net",43,$errno,$errstr);
  9.     if ($sock) {
  10.        fputs ($sock, $ip."\r\n");
  11.       while (!feof($sock)) {
  12.         $str.=trim(fgets ($sock,128)." <br>");
  13.       }
  14.     }
  15.     else {
  16.           $str.="$errno($errstr)";
  17.       return;
  18.     }
  19.     fclose ($sock);
  20.   }
  21.   return $str;
  22.   }
  23.  

получаем whois-данные для нашего IP
пример:
CODE (php):
скопировать код в буфер обмена
  1.  
  2. $whois =  whois($_SERVER['REMOTE_ADDR']);
  3.  

3. Выдираем с помощью регулярных выражений данные о стране

Тут уже может быть куча способов, для примера вот этот:
CODE (php):
скопировать код в буфер обмена
  1.  
  2.  $need = "country:";
  3.  $pos = strpos($whois,$need);
  4.  $search = substr($whois,$pos,18);
  5.  $excount = explode(":", $search);
  6.  
  7.  $country = trim($excount[1]); //готово
  8.  
  9. "$country" // содержит значение страны IP-адреса.
  10.  

Значение в формате: RU, UA, US, TJ...

4. Что делать? Примеры

Запрет посетителей с USA:
CODE (php):
скопировать код в буфер обмена
  1.  
  2. if($country == "US") {
  3. echo "Your IP banned! He-he...";
  4. exit();
  5. }
  6.  


Вывод названий в другом формате (Россия, Украина, Узбекистан и т. д.):
3. dadli - 20 Октября, 2011 - 22:43:19 - перейти к сообщению
Avrelio
спасибо

 

Powered by ExBB FM 1.0 RC1