Copyright © 2012 blog.icod.de. All Rights Reserved. Snowblind by Themes by bavotasan.com. Powered by WordPress.
Archive for December 18th, 2006
Eigentlich wollte ich euch ja zeigen wie das mit Wildcard Subdomains und apache und php funktioniert, doch WordPress ist zu restriktiv als daß es andere Tags ausser die vordefinierten zulässt. Ich werde mich wohl nach einer Alternative umsehen müssen. Zum selbst schreiben fehlt mir leider die Zeit.
Ich habe die Beispiel vhosts Datei in den Anhang gepackt, bei Fragen -> Kommentar schreiben.
Die Konfiguration ist für apache1 und 2.
Erklärung:
Man hat ein Verzeichnis für beispiel.de und www.beispiel.de
und ein Verzeichnis für alle anderen Subdomains, z.B. my.beispiel.de zum.beispiel.de usw.
Der Document Root für beispiel.de und www.beispiel.de ist /var/www/beispiel.de/
Für alle anderen Subdomains /var/www/beispiel.de/seiten/
Der Nutzen mit php (gilt für apache 2.x (2.0 + 2.2)):
Php stellt uns in Verbindung mit apache die $_SERVER variable zur Verfügung.
In dieser stehen manche nützlichen Dinge, vor allem $_SERVER
Ruft man beispielsweise zum.beispiel.de auf steht dort auch zum.beispiel.de drin
Nun wissen wir ja wie unsere Domain heist, “beispiel.de”
$domain = ".beispiel.de";
man beachte den Punkt vor beispiel.de
nun nehmen wir $_SERVER und ersetzen den Domainnamen und die TLD mit nichts, wir löschen sie also raus.
$subdomain = str_replace($domain,"",$_SERVER);
$subdomain hat nun den wert “zum”.
Zur sicherheit filtern wir alle Zeichen die nicht a-z oder A-Z oder 0-9 oder – sind raus.
$subdomain = preg_replace("()","",$subdomain);
Dieser Regex eignet sich z.B. auch um SQL-Injections bei 1Wort suchbegriffen oder anderen Eingaben zu verhindern.
Für mehrere Wörter mit Leerzeichen als Trennzeichen einfach diesen Regex nehmen ()
Was können wir nun mit dem Subdomain namen anstellen?
Eine Möglichkeit wäre mit dem Subdomain Namen Datenbankinformationen auszulesen.
Dafür haben wir eine Tabelle “zugang” die so aussieht:
| ID | subdomain | database | username | password |
Die Datentypen sind denke ich selbsterklärend
Nun haben wir z.B. diesen Datensatz
ID = 1
subdomain = zum
database = zumbeispiel
username = zumuser
password = zumpass
also fragen wir die Zugangsdaten ab
$sql = "SELECT * FROM zugang WHERE subdomain = '" . $subdomain . "'";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) > 0)
{
$dbinfo = mysql_fetch_assoc($result);
DEFINE("MYSQL_DB",$dbinfo);
DEFINE("MYSQL_USR",$dbinfo);
DEFINE("MYSQL_PWD",$dbinfo);
}
else
{
// Zeige Fehlerseite o.ä.
}
Was man mit diesen Daten anstellt, bleibt einem selbst überlassen.
Der Sinn ist mit einer Installation mehrere Datenbanken und Konfigurationen anzusprechen.
Und der Vorteil bei dieser Sache ist, daß man nicht jedes mal den apache reloaden muss wenn eine neue subdomain angelegt wird.