Non appare pi bandierina della nazione

Ho messo php5 e ora quando l'utente mi scrive a video non appare pi la bandierina associata all'IP ma solo la classica bandierina "?" cio: sconosciuta, cio pesca solo questa bandiera.

$ip=$_SERVER['REMOTE_ADDR']; 

include("ip_flags/ip_files/countries.php");

//Funzione per il nome Country e la bandierina
function iptocountry($ip) { 
$numbers = explode(".", $ip); 

include("ip_flags/ip_files/".$numbers[0].".php"); 
$code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]);

//Pesca il nome della Country da "ip_flags/ip_files/countries.php"
foreach($ranges as $key => $value){ 
if($key<=$code){ 
if($ranges[$key][0]>=$code){
$two_letter_country_code=$ranges[$key][1];break;
}
} 
 } 
if ($two_letter_country_code==""){
$two_letter_country_code="unkown";
} 
return $two_letter_country_code; 
} 

//Recupera l'ip del Visitor e lo confronta con quelli in "ip_flags/ip_files/countries.php" 
$ipVisitor=$_SERVER['REMOTE_ADDR']; 
$two_letter_country_code=iptocountry($ipVisitor);

//Pesca la bandierina della Country da "ip_flags/flags"
$file_to_check="ip_flags/flags/$two_letter_country_code.gif";
if (file_exists($file_to_check)){ 
$bandierina ="".$two_letter_country_code."/<img class=\"borderBandieraScrivimi\"src=\"http://photoman.altervista.org/$file_to_check\" width=\"16\" height=\"12\" alt=\"\" title=\"\" />";
}
else
{ 
$bandierina = "<img class=\"borderBandieraScrivimi1\"src=\"http://photoman.altervista.org/ip_flags/flags/noflag.gif\" width=\"16\" height=\"12\" alt=\"\" title=\"\" />";
}
inviato 7 anni fa
php
php
6
X 0 X

[...]

[$key][1];break;

}

[...]

Prova a levare il "break"...

---

exists($file_to_check)){

$bandierina ="".$two_l

Perch metti "".$

Le due virgolette aperte e chiuse subito dopo non significano niente!

risposto 7 anni fa
Oliviero
X 0 X

[...]

[$key][1];break;

}

[...]

Prova a levare il "break"...

---

exists($file_to_check)){

$bandierina ="".$two_l

Perch metti "".$

Le due virgolette aperte e chiuse subito dopo non significano niente!

Ho tolto break; ma uguale, le 2 virgolette "".$two_letter_country_code."/... se le tolgo

da errore servono a isolare i codici.

Il codice trova solo questa bandierina (noflag.gif):

$bandierina = "<img class=\"borderBandieraScrivimi1\"src=\"http://photoman.altervista.org/ip_flags/flags/noflag.gif\" width=\"16\" height=\"12\" alt=\"\" title=\"\" />";

questo codice che non trova:

$file_to_check="ip_flags/flags/$two_letter_country_code.gif";
risposto 7 anni fa
php
php
6
X 0 X

Ho risolto, come sempre una sciocchezza: i nomi delle bandierine erano in minuscolo e il DB li aveva in maiuscolo :lamo:

risposto 7 anni fa
php
php
6
X 0 X

PHP permettimi di darti un consiglio: fai un salto su php.net e dai un'occhiata alla sintassi di base (Abbiamo anche un'ottima guida scritta da Gianni qui su phpnews.it).

Oliviero ti ha fatto notare una cosa importante: le virgolette prima e dopo della variabile sono inutile e non fanno altro che rallentare l'esecuzione dello script (oltre che rallantarti quando scrivi il codice)

$a = "questa  una stringa"; //questa  una stringa
$b = "" . $a . ""; //questa  una stringa
$c = $a; //questa  una stringa

Capisco che PHP sia un linguaggio molto permissivo, tuttavia bisogna capire che per programmar e bisogna innanzitutto imparare a seguire le regole imposte dal linguaggio. Questa una di quelle regole dettate dal buon senso.

Da quando frequento questo forum molte delle discussioni (a partire dalle mie) sono dovute ad una inesistente aderenza alle regole sintattiche e semantiche imposte dal linguaggio e alla scarsissima attenzione del programmatore (o alla svogliatezza).

Ti consiglio quindi, di tornare a dare una lettura alla guida.

Nota: Questo non un attacco personale, ma una specie di rimprovero per far capire che le regole ci sono per essere seguite :P

Ciao

:bye:

risposto 7 anni fa
Andrea Turso
Andrea Turso
86
modificato 7 anni fa
X 0 X

Ottimo trashofmasters concordo in pieno ;)

risposto 7 anni fa
Oliviero
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda