C
counteam
Guest
Hallöchen
Ich bin gerade ein Login-System am basteln. Jetzt stellt sich die Frage (Weil hierbei mehrere Domains bezogen werden sollen), wie ich das ganze Cross-Domain-Fähig bekomme (Ja, es geht sich nicht um Subdomains sondern um verschiedene TLD's).
Meine Idee wäre eigendlich recht simple:
Jede Domain wird nach dem Login Requested, dort die Session-ID übergeben und schwupp, man ist auf Domain1 und Domain2 sowie Domain3 angemeldet.
Leider funktioniert es leider in moment noch nicht.
Würde dies funktionieren, was ich da vorhabe?
Achja: Die Cookies werden korrekt gesetzt. Habe es bereits getestet.
Ich bin gerade ein Login-System am basteln. Jetzt stellt sich die Frage (Weil hierbei mehrere Domains bezogen werden sollen), wie ich das ganze Cross-Domain-Fähig bekomme (Ja, es geht sich nicht um Subdomains sondern um verschiedene TLD's).
Meine Idee wäre eigendlich recht simple:
Jede Domain wird nach dem Login Requested, dort die Session-ID übergeben und schwupp, man ist auf Domain1 und Domain2 sowie Domain3 angemeldet.
Leider funktioniert es leider in moment noch nicht.
PHP:
<?php
/*
Wenn ein Login bereits erfolgt ist und man sich über die anderen Domains Authentifizieren möchte
*/
$data_stream = $_GET['session_data'];
if(isset($data_stream) && $data_stream != "") {
// Enthält "referrer" sowie "session" (Session-ID)
$data = json_decode(base64_decode($data_stream));
if(isset($data) && $data->session != "") {
/*
System::getLanguage() definiert die Domain-Endung.
Bei domain.de wäre dies "de", bei domain.com "com", etc..
*/
switch(System::getLanguage()) {
// Schritt 1: setze session-ID & cookie bei DE-Domain
case "de":
print "Login DE";
session_id($data->session);
setcookie("PHPSESSID", $data->session, time() + 3600, "/", ".domain." . System::getLanguage());
// Leite zu DOM-Domain weiter um sich dort auch zu Authentifizieren
header("Location: http://www.domain.com/login.do?session_data=" . base64_encode(json_encode($data)));
break;
// Schritt 2: setze session-ID & cookie bei COM-Domain
case "com":
print "Login COM";
session_id($data->session);
setcookie("PHPSESSID", $data->session, time() + 3600, "/", ".domain." . System::getLanguage());
// Leite zu CH-Domain weiter um sich dort auch zu Authentifizieren
header("Location: http://www.domain.ch/login.php?session_data=" . base64_encode(json_encode($data)));
break;
// Schritt 3: setze session-ID & cookie bei CH-Domain
case "ch":
print "Login CH";
session_id($data->session);
setcookie("PHPSESSID", $data->session, time() + 3600, "/", ".domain." . System::getLanguage());
// Leite zu AT-Domain weiter um sich dort auch zu Authentifizieren
header("Location: http://www.domain.at/login.do?session_data=" . base64_encode(json_encode($data)));
break;
// Schritt 4: setze session-ID & cookie bei AT-Domain
case "at":
print "Login AT";
session_id($data->session);
setcookie("PHPSESSID", $data->session, time() + 3600, "/", ".domain." . System::getLanguage());
/*
So, in allen Systemen authentifiziert..
Nun gehe endweder zur Hauptseite, oder wenn der Referrer beim Login-Vorgang gesetzt wurde, so gehe dort hin...
*/
if(preg_match("/http:\/\/([a-z]+)\.domain\.([a-z]+)(.*)/Uis", $data->referrer)) {
header("Location: " . $data->referrer);
} else {
header("Location: http://www.domain.de/");
}
break;
}
}
}
if(isset($_POST['login']) && $_POST['login'] != "") {
$authentificate = Login::checkData($_POST['nickname'], $_POST['password']);
if($authentificate >= 1) {
Login::login($authentificate);
// Register the Session Systemwide
$data = array(
"referrer" => $_SERVER['HTTP_REFERER'],
"session" => System::session() // die Aktuelle Session-ID
);
header("Location: http://www.domain.de/login.php?session_data=" . base64_encode(json_encode($data)));
} else {
// ERROR :: Username/Password ?!
}
}
Würde dies funktionieren, was ich da vorhabe?
Achja: Die Cookies werden korrekt gesetzt. Habe es bereits getestet.
Last edited by a moderator: