Was ist neu?
Digital Marketing & Webmaster Forum

Digital Marketing, Internet-Technologien, Metaverse und mehr interessieren Dich? Registriere Dich gleich kostenlos, um Mitglied zu werden! Sobald Du angemeldet bist, kannst Du loslegen, Themen und Beiträge veröffentlichen und mit anderen Mitgliedern in Kontakt treten! Wir wünschen Dir einen anregenden Austausch!

Userweiterleitung

volvic

Neues Mitglied
Hi,

ich würde gerne über einen externen Webspace deutsche User auf einen deutschen Link weiterleiten bzw. englisch auf englische

habe mir jetzt einen webspace mit FTP geholt und dieses PHP script draufgespielt, jedoch funktioniert das nicht :/

<?php
$target_location = ereg_replace("/[^/]*$","",$REDIRECT_SCRIPT_URI);
$host = gethostbyaddr($GLOBALS["REMOTE_ADDR"]);

if (eregi("^de",$HTTP_ACCEPT_LANGUAGE) || eregi(".de$",$host)) {
$target_location .= "http://www.ebay.de";
} else {
$target_location .= "http://www.google.de";
}

header("Location: ".$target_location);
?>

ebay wär für deutsch bzw. google für englische

Hab das script nur kopiert, weiss nicht ob das richtig ist

Kann mir jemand sagen, worauf ich noch achten müsste ?

mfg
 

Globi

- Premium Member -
so wie ich das sehe kannst du damit nicht auf ne externe seite linken wenn du das so machst
PHP:
$target_location .= "http://www.ebay.de";
} else {
$target_location .= "http://www.google.de";
}

sondern nur auf ein unterordner oder eine file eben auf deinem webspace:
PHP:
$target_location .= "/deutsch.html";
} else {
$target_location .= "/english/english.html";
}

teste mal ob es dann geht.
 

blackmexx

- Premium Member -
$GLOBALS (ist eine Superglobale) solltest du nicht verwenden, wenn es nicht zwingend nötig ist, lieber die extra dafür vorgesehen Variablen erhöht die Sicherheit.
Auch solltest du ereg bzw. eregi nicht mehr verwenden dies verursacht ab PHP 5.3 Fehler und führt zu Problemen in der Ausführung.

Zum Script das sollte weiterhelfen:
Es wird immer die erste Sprache gewählt für den Fall, dass der User mehre, eingestellt hat.
PHP:
<?php

	print $_SERVER['HTTP_ACCEPT_LANGUAGE'];

	$target_DE	= 'http://google.de/';
	$target_EN	= 'http://google.com/';

	$AccLang	= $_SERVER['HTTP_ACCEPT_LANGUAGE'];
	$ExLang	= explode( ',', $AccLang );

	if ( preg_match( '#(de+)#Ui', $ExLang[0] )) {
		header( 'Location: ' . $target_DE );
		exit;
	} else {
		header( 'Location: ' . $target_EN );
		exit;
	}
?>
 

volvic

Neues Mitglied
hi

zum 1. Post:
also das mit dem .html bekomm ich auch nicht hin. Wenn ich die .html selbst anwähle, dann werde ich auch richtig weitergeileitet

zum 2. Post:
Ich bekomme nun immer die Meldung:

de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Warning: Cannot modify header information - headers already sent by (output started at ------------------/htdocs/r1.php:1) in ------------------/htdocs/r1.php on line 12

Hab erst gedacht es liegt am kostenlosen Webspace, jedoch auf meinem eigenen Webspace kommt das auch ???
Sind das fehlende Rechte ?

mfg
 

blackmexx

- Premium Member -
zum 2. Post:
Ich bekomme nun immer die Meldung:

de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Warning: Cannot modify header information - headers already sent by (output started at ------------------/htdocs/r1.php:1) in ------------------/htdocs/r1.php on line 12

Hab erst gedacht es liegt am kostenlosen Webspace, jedoch auf meinem eigenen Webspace kommt das auch ???
Sind das fehlende Rechte ?

mfg

Sorry Fehler von Mir einfach
PHP:
print $_SERVER['HTTP_ACCEPT_LANGUAGE'];
Aus Kommentieren oder löschen da vor header() nichts stehen darf, Hatte es nicht getestet.
 

volvic

Neues Mitglied
Hi,

sorry hab ganz vergessen meine richtige Variante zu posten um auch anderen zu helfen :)

<?php
ob_start();
print $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$target_DE = 'WEBSITE DEUTSCH';
$target_EN = 'WEBSITE ENGLISCH';
$AccLang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$ExLang = explode( ',', $AccLang );

if ( preg_match( '#(de+)#Ui', $ExLang[0] )) {
header( 'Location: ' . $target_DE );
exit;
} else {
header( 'Location: ' . $target_EN );
exit;
}
ob_end_flush();
?>

Danke für eure Hilfe
 
Oben