Czesnik
(Czesni K)
2 Lipiec 2009 08:29
#1
Witam! Chciałem napisać skrypt, który rozpozna jerzyk użytkownika lecz mam problem… Skrypt nie działa.
<?
/*--------------------TEST PO IP------------------------*/
function IP_prawdziwe(){
if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
$ip_prawdziwe = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
}
return $ip_prawdziwe;
}
$ip=IP_prawdziwe();
$adres='http://legacytools.dnsstuff.com/tools/ipall.ch?ip='.$ip;
$info=file_get_contents($adres);
$cut_start='PL';
$cut_end=$cut_start+9;
$testuj=substr($info, $cut_start, $cut_end);
if($testuj=='PL [Poland]'){
$test1='pl';
}else{$test1='en';}
/*--------------------TEST PO PRZEGLADARCE*--------------*/
$info=$_SERVER['HTTP_USER_AGENT'];
$search='en';
$testuj=substr($info, $start, 1);
if(!$testuj){
$test2='pl';
}else{$test2='en';}
/*-------------------GOOGLEBOT TEST*----------------------*/
$googlebot=substr($host, -13, -4);
if($googlebot=='googlebot'){
echo 'GOOGLE!
';
}
echo $test1.'
'.$test2;
?>
Daje to efekt:
en
en
Czyli działa (chyba) jedynie skrypt na bota. Wie ktoś jak to powinno być?
Nie masz średników po if’ach
if($googlebot=='googlebot') {echo 'GOOGLE!
';};
if(!$testuj) {$test2='pl';} else {$test2='en';};
if($testuj=='PL [Poland]') {$test1='pl'} else {$test1='en';};
Ale wtedy też nie działa :S Jeśli już sprawdzasz po IP i interesuje Cię czy to polskie czy nie, to możesz zrobić tak:
if($ip[0]=='8' && $ip[1]=='3') {$test1='pl'} else {$test1='en'};
Czesnik
(Czesni K)
2 Lipiec 2009 09:13
#3
EDIT:
<?
/*--------------------TEST PO IP------------------------*/
function IP_prawdziwe(){
if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
$ip_prawdziwe = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
};
return $ip_prawdziwe;
}
$ip=IP_prawdziwe();
$adres='http://legacytools.dnsstuff.com/tools/ipall.ch?ip='.$ip;
$info=file_get_contents($adres);
$cut_start='PL';
$cut_end=$cut_start+11;
$testuj=substr($info, $cut_start, $cut_end);
if($testuj=='PL [Poland]'){
$test1='pl';
}else{$test1='en';};
/*--------------------TEST PO PRZEGLADARCE*--------------*/
$info2=$_SERVER['HTTP_USER_AGENT'];
$search='en';
$testuj2=substr($info2, $start, 1);
if(!$testuj2){
$test2='pl';
}else{$test2='en';};
/*-------------------GOOGLEBOT TEST*----------------------*/
$googlebot=substr($host, -13, -4);
if($googlebot=='googlebot'){
echo 'GOOGLE!
';
};
echo $test1.'
'.$test2.'
';
?>
lecz nadal ten sam efekt
absens
(Zbyszekborkowski)
2 Lipiec 2009 09:16
#4
Po if-ach, pętlach itp. nie stawia się średników.
Co do rozpoznawania języka, ja korzystałem z tego skryptu . Rozpoznania dokonuje na podstawie ustawień języka przeglądarki. Wydaje mi się, że jest to bardziej poprawne, ponieważ uwzględnia na przykład podróżujących, czy korzystających z serwerów proxy .