Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

detekcija zemlje, ergi funkcija

[es] :: PHP :: detekcija zemlje, ergi funkcija

[ Pregleda: 1824 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

webmaster1
Luka Pilipovic
BG

Član broj: 24183
Poruke: 302
*.ptt.yu

ICQ: 160820372
Sajt: www.montenegro-sea.com


Profil

icon detekcija zemlje, ergi funkcija04.10.2004. u 15:15 - pre 218 meseci
Prvi put koristim ovu funkciju, i ovaj kod je pisan po uzoru na onaj za detekciju browsera...
Code:

<?php

$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

$cList= Array (
    
    /* Europe */
    "yu|Serbia and Montengro",
             "hr|Croatia",
    "de|Deutchland",
    "uk|England",
    "fr|France",
    "ru|Russia",
);

//u sledecem redu isprobavam eregi funkciju i ovaj red radi!
if (eregi("yu", $hostname)) echo "Yugoslavia";


foreach ($cList as $cNow) {
    $cNow = explode ("|", $cNow);
    if (eregi ($cNow[0], $hostname))  $country = $cNow[1]; 
    else $country = "Unknown";
}
echo $country;
?>


problem je sto svaki put izbaci unknown...zasto?





[Ovu poruku je menjao -zombie- dana 04.10.2004. u 20:23 GMT+1]
Privatni smeštaj u Crnoj Gori
www.montenegro-sea.com.
 
Odgovor na temu

afwt
AF Web Team
Novi Sad/Chicago

Član broj: 8220
Poruke: 337
*.ftn.ns.ac.yu

Sajt: milos.srdjevic.net/blog


+1 Profil

icon Re: detekcija zemlje, ergi funkcija04.10.2004. u 15:45 - pre 218 meseci
zasto tako? ako hoces tako jednostavnu proveru, zar ti nije lakse da ne teras eregi, nego da uradis to preko substr()? Tvoj kod ne radi jel trcis kroz ceo niz zemalja, pa ti uvek zadnja zemlja u nizu postavi na Unknown jer nije ta...

Zasto ne resis to ovako (umesto tvog foreach):
Code:

// prvo ne znamo koja je
$country = 'Unknown';
// trcimo kroz spisak
foreach ($cList as $cThis) {
  // ako su prva 3 karaktera tekuceg elementa sastavljena od:
  // zadnja 2 slova $hostname-a i uspravne crte |
  if ( substr($cThis, 0, 3) == strtolower(substr($hostname), -2) . '|' )
    // country promeni da pise ono sto u tekucem elementu pocinje
    // od treceg karaktera, tj. posle |
    $country = substr($cThis, 3);
}


i to je to...

mada, moze to i malo bolje:
Code:

$spisak = array(
  'yu' => 'Yugoslavia',
);
// i onda samo umesto celog tog foreach
// trazimo top-level domain, iliti npr. YU
$tld = strtolower(substr($hostname), -2);
// ako postoji element $tld u array-u $spisak, vrati njegovu vrednost
// u usprotnom unknown
$country = ( isset($spisak[$tld]) ? $spisak[$tld] : 'Unknown' );


P.S. inace, eregi ti ne valja... Proci ce ti domen mojyudomen.de kao nash...
ZelenaLutrija.com - Saznajte sve o lutriji za zelenu kartu (doživotni boravak u Sjedinjenim Američkim Državama)
 
Odgovor na temu

[es] :: PHP :: detekcija zemlje, ergi funkcija

[ Pregleda: 1824 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.