[PHP]Rozpoznawanie języka i Googlebot'a


(Czesni K) #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ć?


(rozwalkompa) #2

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'};

(Czesni K) #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


(Zbyszekborkowski) #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 :wink: .


(Czesni K) #5

dzięki