Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Czy użytkownik spoza polski.
Forum PHP.pl > Forum > PHP
kukix
Witam.

Potrzebuje rozpoznac, czy dany użytkownik jest spoza Polski, czy z Polski.

Przegladałem funkcje ip2country, mają one jednak bazy po kilkaset tysięcy wpisów, nie chce tak obciażać systemu.

Czy jest jakiś łatwy sposób na rozpoznanie, czy dany user jest spoza polski?

Można odczytac język systemu/przegladarki z którego wchodzi user? Czy tylko po IP? (baza adresów IP jest ogromna, chciałbym uniknąć operacji na tej bazie)

Bede wdzięczny za wszelkie wypowiedzi.
wookieb
Cytat(kukix @ 15.02.2010, 12:18:24 ) *
Przegladałem funkcje ip2country, mają one jednak bazy po kilkaset tysięcy wpisów, nie chce tak obciażać systemu.

Jak skorzystasz z bazy danych i założysz odpowiednie indexy to nie będzie problemu

Cytat
Można odczytac język systemu/przegladarki z którego wchodzi user? Czy tylko po IP? (baza adresów IP jest ogromna, chciałbym uniknąć operacji na tej bazie)


google -> php accept language
kukix
Znalazłem coś takiego:

  1. /*Function that does language negotiation based on the Accept-Language
  2. header, a cookie or host name*/
  3.  
  4. <?php
  5.  
  6. $supported_languages = array(
  7. "no" => 1, /* Norwegian */
  8. "en" => 1 /* English */
  9. );
  10.  
  11. $default_language = "en";
  12.  
  13. /* Try to figure out which language to use.
  14. */
  15. function negotiate_language($lang) {
  16. global $supported_languages, $HTTP_ACCEPT_LANGUAGE;
  17.  
  18. if (isset($supported_languages[$lang])) {
  19. return $lang;
  20. }
  21.  
  22. /* If the client has sent an Accept-Language: header,
  23.   * see if it is for a language we support.
  24.   */
  25. if ($HTTP_ACCEPT_LANGUAGE) {
  26. $accepted = explode( ",", $HTTP_ACCEPT_LANGUAGE);
  27. for ($i = 0; $i < count($accepted); $i++) {
  28. if ($supported_languages[$accepted[$i]]) {
  29. return $accepted[$i];
  30. }
  31. }
  32. }
  33.  
  34. /* One last desperate try: check for a valid language code in the
  35.   * top-level domain of the client's source address.
  36.   */
  37. if (eregi( "\\.[^\\.]+$"", $REMOTE_HOST, &$arr)) {
  38. $lang = strtolower($arr[1]);
  39. if ($supported_languages[$lang]) {
  40. return $lang;
  41. }
  42. }
  43.  
  44. global $default_language;
  45. return $default_language;
  46. }
  47.  
  48. ?>


Niebardzo wiem, czy tutaj jest rozpoznawany język systemu, czy lokalizacja przegladarki?
Na ile procent móżna wierzyć tej funkcji?
wookieb
Zwraca listę akceptowanych języków. Powoduje to to, że jak pojedziesz do Francji to nie pokaże Ci wersji francuskiej tylko polską (bo tak masz ustawioną przeglądarkę). Numery oznaczają wagę danego języka.
kukix
Cytat(wookieb @ 15.02.2010, 14:51:00 ) *
Zwraca listę akceptowanych języków. Powoduje to to, że jak pojedziesz do Francji to nie pokaże Ci wersji francuskiej tylko polską (bo tak masz ustawioną przeglądarkę). Numery oznaczają wagę danego języka.


Zastanawiam się tylko po co w funkcji negotiate_language($lang) potrzebny jest parametr $lang, nie rozumie tego dry.gif


Jak dla mnie jest to rozwiązanie idealne, poniewąz nie interesuje mnie kto skąd wchodzi do strony, ale w jakim jezykiem posluguje sie na codzien w komputerze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.