Geschrieben von dima53 am 16.06.2005, 20:27

Mit nur einer einzigen PHP-Datei könnt ihr (Sub-)Sub-Domains einrichten

(Sub-)Subdomains
Ihr könnt mit einem sehr simplen PHP-Code weitere (Sub-)Subdomains einrichten:

Für die Weiterleitungen brauchen wir ein Array, in das wir die Subdomain und die Weiterleitung eintragen.
Wir erstellen eine Weiterleitung auf http://bla.com und http://huhu.net. Als erstes geben wir die Subdomain
(eigentlich Subdomain ohne Domain) und die Weiterleitung an.

Code:
$array = array("digi0","http://huhu.net","bla","http://bla.com");

Die eingegebene Adresse bekommen wir durch $_SERVER['SERVER_NAME']. $_SERVER ist ein von PHP
automatisch gefülltes Array mit verschiedenen Inhalten.

Code:
$s_n = $_SERVER['SERVER_NAME'];

Nun kommt die for-Schleife. Die Schleife läuft solange, bis wir den passenden Eintrag gefunden haben oder wir alle Einträge verglichen haben.

Code:
$endi = count($array)/2;

for($i=0;$i<$endi;$i++) {

Mit substr kann man einen bestimmten Teil eines Strings anzeigen lassen. Erster Paramater ist der String, zweiter Parameter ist
der Startpunkt und der letzte
gibt die länge an. Wir vergleichen also ob die Subdomain und die Adresse gleich sind. strlen() gibt uns dabei die Länge der Subdomain an.
Das $i*2 ist dazu da, weil wir ja zwei zusammengehörende Einträge in einem Array haben. So wird immer der erste Eintrag eines Pärchens angezeigt.

Code:
$subd = substr($s_n,0,strlen($array[$i*2]));
if($subd==$array[$i*2]) {

$i*2 ist die Subdomain, also ist $i*2+1 die Weiterleitung. header("Location: <adresse>") bringt den Browser zum Weiterleiten auf <adresse>.
Damit die For-Schleife nach dem gefunden Auftrag aufhört, benutzen wir exit(), das das ganze Script beendet. Falls aber nichts gefunden wurde,
wird einfach auf index2.html weitergeleitet. Das ist dann der Fall, wenn nichts gefunden wurde.

Code:
$nmb = $i*2+1;
header("Location: $array[$nmb]");
exit();
}
}
header("Location: index2.html");

Das ganze speichert ihr als index.php in das Hauptverzeichnis ab, dabei solltet ihr achten, dass ihr kein index.html habt, ansonsten
bennent es einfach in index2.html um.

Code:
<?
$array = array("digi0","http://huhu.net","bla","http://bla.com");
$s_n = $_SERVER['SERVER_NAME'];
$endi = count($array)/2;
for($i=0;$i<$endi;$i++) {
$subd = substr($s_n,0,strlen($array[$i*2]));
if($subd==$array[$i*2]) {
$nmb = $i*2+1;
header("Location: $array[$nmb]");
exit();
}
}
header("Location: index2.html");
?>

Falls jemand will, dass nur die Subdomain nach dem weiterleiten angezeigt wird, der soll
einfach

Code:
header("Location: $array[$nmb]");

durch

Code:
echo '<FRAMESET border=0 frameSpacing=0 rows=* frameBorder=no>
<frame name='.$array[$i*2].' src='.$array[$nmb].' noResize>
</FRAMESET>';

ersetzen.

So erzeugen wir ein Frame, dass man NICHT sehen kann.

mfg Dima

Bewertung Anzahl
6
45,0 %
9 Bewertungen
5
20,0 %
4 Bewertungen
4
10,0 %
2 Bewertungen
3
10,0 %
2 Bewertungen
2
5,0 %
1 Bewertungen
1
10,0 %
2 Bewertungen