Sessionprobleme nach Serverwechsel
Pegasus
- webserver
Hallo, ich bin von Server4you nach Hetzner gewechselt mit meinem Rootserver.
Beide sind openSuse Server.
Einmal mit 9.3 und nun mit 10.3
Das Problem was ich nun habe ist,
das auf dem neuen Server ist mich zwar in meinem Script einloggen kann,
das ich programmiert habe doch wenn ich dann weiterklicke,
dann schmeißt er mich immer wieder direkt raus.
Hat jemand eine Vorstellung was das sein könnte?
Habe mir die PHP.ini schon nagesehen und
bin so langsam ratlos.
LG und Danke
Hi,
Das Problem was ich nun habe ist,
das auf dem neuen Server ist mich zwar in meinem Script einloggen kann,
das ich programmiert habe doch wenn ich dann weiterklicke,
dann schmeißt er mich immer wieder direkt raus.Hat jemand eine Vorstellung was das sein könnte?
Ja: Alles Moegliche.
(Du sagst uns ja nicht mal, *wie* du deinen Login realisiert hast ...)
MfG ChrisB
<?
$REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
$username=$_POST['username'];
$pwd=$_POST['pwd'];
db_connect();
// Cookies checken, $linkzusatz & $skid definieren
$linkzusatz="";
if(isset($_COOKIE['cookietest']) || isset($_COOKIE['skid'])) {
if(isset($_COOKIE['skid'])) {
$skid=$_COOKIE['skid'];
}
$cookies=1;
}
else {
if(isset($_GET['skid'])) {
$skid=$_GET['skid'];
$linkzusatz="?skid=$skid";
}
$cookies=0;
}
// Bank Status
if ($bankoffen=="nein") {
// Fehlermeldung: Ungültige Session und Logon-Cookie löschen
setcookie("logon", "deleted", time()-3600, "/");
setcookie("skid", "deleted", time()-3600, "/");
$sessionerror="Das Spiel wurde geschlossen.<br>$bankoffeng";
$userfound=0;
$linkzusatz="";
}
else {
$now=time();
$bann=mysql_query("SELECT * FROM $table_ipsperre WHERE ip='$REMOTE_ADDR' AND sperrzeit>".($now-$bannzeit)." AND fehler>=$bannfehler");
if(mysql_num_rows($bann)) {
$sessionerror="Ihre IP-Adresse wurde wegen Mißbrauch gesperrt!";
}
// Automatischer Login (Auswertung Cookie "logon")
elseif(!isset($skid) && isset($_COOKIE['logon'])) {
list($username, $md5pwd)=split(":", $_COOKIE['logon'], 2);
$query=mysql_query("SELECT * FROM $table_kunden WHERE username='".mysql_escape_string($username)."' && status='aktiviert' && loginfehler=0", $db);
if(mysql_num_rows($query)==1) {
$userdaten=mysql_fetch_array($query);
if(md5($userdaten['pwd'])==$md5pwd) {
// Neue Session starten
$pwd=$userdaten['pwd'];
session_name("skid");
session_start();
$skid=session_id();
session_register("username");
session_register("pwd");
$userfound=1;
$update=mysql_query("UPDATE $table_kunden SET llogin=now(), lloginip='$REMOTE_ADDR' WHERE username='$username' && pwd='$pwd' && status='aktiviert'", $db);
$vergdate = date("Ymd");
}
else {
// IP loggen
mysql_query("UPDATE $table_kunden SET lloginf=now(), loginfehlerip='$REMOTE_ADDR', loginfehler=loginfehler+1 WHERE username='$username", $db);
ipsperre($REMOTE_ADDR);
// Logon-Cookie löschen und zur Startseite
setcookie("logon", "deleted", time()-3600, "/");
$userfound=0;
header("location: $domainroot/");
}
}
else {
// Logon-Cookie löschen und zur Startseite
setcookie("logon", "deleted", time()-3600, "/");
$userfound=0;
header("location: $domainroot/");
}
}
// Normaler Login
elseif(isset($_GET['step']) && $_GET['step']=="login") {
// Temporäre Sperrung
$query=mysql_query("SELECT loginfehler, UNIX_TIMESTAMP(lloginf) AS loginzeit FROM $table_kunden WHERE username='$_POST[username]' && status='aktiviert'", $db);
if(mysql_num_rows($query)==1) {
$login=mysql_fetch_array($query);
if($login['loginfehler']>=6) { $sperre=60*60; }
elseif($login['loginfehler']>=5) { $sperre=30*60; }
elseif($login['loginfehler']>=4) { $sperre=15*60; }
elseif($login['loginfehler']>=3) { $sperre=5*60; }
else { $sperre=0; }
if($now<=$login['loginzeit']+$sperre) {
$sessionerror="Ihr Account ist wegen mehrfacher Fehleingaben noch ".ceil(($login['loginzeit']+$sperre-$now)/60)." Minuten gesperrt!";
$userfound=0;
}
}
// Login
if(!isset($sessionerror)) {
$query=mysql_query("SELECT * FROM $table_kunden WHERE username='$_POST[username]' && pwd='$_POST[pwd]' && status='aktiviert'", $db);
if(mysql_num_rows($query)==1) {
// Neue Session starten
session_name("skid");
session_start();
$skid=session_id();
session_register("username");
session_register("pwd");
// Autologin Cookie setzen, falls gewünscht (24h)
if(isset($_POST['autologin']) && $_POST['autologin']="on") {
setcookie("logon", "$username:".md5($pwd), time()+60*60*24, "/");
}
$userdaten=mysql_fetch_array($query);
$llogin=$userdaten['llogin'];
$lloginip=$userdaten['lloginip'];
$loginfehler=$userdaten['loginfehler'];
if(!$cookies) {
$linkzusatz="?skid=$skid";
$ip=$REMOTE_ADDR;
session_register("ip");
}
$userfound=1;
$update=mysql_query("UPDATE $table_kunden SET llogin=now(), lloginip='$REMOTE_ADDR', loginfehler=0 WHERE username='$username' && pwd='$pwd' && status='aktiviert'", $db);
$vergdate = date("Ymd");
}
else {
// Fehlermeldung: Login fehlgeschlagen
$userfound=0;
$query=mysql_query("SELECT * FROM $table_kunden WHERE username='$_POST[username]'", $db);
if(mysql_num_rows($query)==1) {
$userdaten=mysql_fetch_array($query);
if($userdaten['status']=='gesperrt') {
$sessionerror="Ihr Account wurde gesperrt! Bitte wenden Sie sich an den Webmaster.";
}
elseif($userdaten['status']=='deaktiviert') {
$sessionerror="Ihr Account wurde deaktiviert! Bitte wenden Sie sich an den Webmaster.";
}
elseif($userdaten['status']=='wartend') {
$sessionerror="Ihr Account ist nicht noch nicht aktiviert!";
}
else {
$sessionerror="Die von Ihnen eingegebene ID - Passwortkombination wurde nicht gefunden!";
// IP loggen
mysql_query("UPDATE $table_kunden SET lloginf=now(), loginfehlerip='$REMOTE_ADDR', loginfehler=loginfehler+1 WHERE username='$_POST[username]'", $db);
ipsperre($REMOTE_ADDR);
}
}
else {
$sessionerror="Die von Ihnen eingegebene ID - Passwortkombination wurde nicht gefunden!";
}
}
}
}
// Session fortsetzen
elseif(isset($skid)) {
session_name("skid");
session_start();
if(!isset($_GET['step']) || $_GET['step']!="logout") {
// Normaler Seitenaufruf
$userfound=0;
if(isset($_SESSION['username']) && isset($_SESSION['pwd'])) {
// Session gültig
$query=mysql_query("SELECT * FROM $table_kunden WHERE username='$username' && pwd='$pwd' && status='aktiviert'", $db);
if(mysql_num_rows($query)==1 && (!isset($_SESSION['ip']) || $_SESSION['ip']==$REMOTE_ADDR)) {
$userdaten=mysql_fetch_array($query);
$userfound=1;
}
else {
$userfound=0;
}
}
if(!$userfound) {
// Automatischen Login versuchen, falls Session abgelaufen
if(!isset($_COOKIE['logon'])) {
// Fehlermeldung: Ungültige Session
setcookie("skid", "deleted", time()-3600, "/");
session_destroy();
$sessionerror="Die Session wurde aus Sicherheitsgründen beendet. Bitte logge Dich erneut ein.<br>";
$userfound=0;
$linkzusatz="";
}
else {
// Automatischer Login (Auswertung Cookie "logon")
list($username, $md5pwd)=split(":", $logon, 2);
$query=mysql_query("SELECT * FROM $table_kunden WHERE username='".mysql_escape_string($username)."' && status='aktiviert' && loginfehler=0", $db);
if(mysql_num_rows($query)==1) {
$userdaten=mysql_fetch_array($query);
if(md5($userdaten['pwd'])==$md5pwd) {
$pwd=$userdaten['pwd'];
$skid=session_id();
session_register("username");
session_register("pwd");
$userfound=1;
$update=mysql_query("UPDATE $table_kunden SET llogin=now(), lloginip='$REMOTE_ADDR' WHERE username='$username' && pwd='$pwd' && status='aktiviert'", $db);
$vergdate = date("Ymd");
}
else {
// Fehlermeldung: Ungültige Session und Logon-Cookie löschen
setcookie("logon", "deleted", time()-3600, "/");
setcookie("skid", "deleted", time()-3600, "/");
$sessionerror="Die Session wurde aus Sicherheitsgründen beendet. Bitte logge Dich erneut ein.<br>";
$userfound=0;
$linkzusatz="";
}
}
else {
setcookie("logon", "deleted", time()-3600, "/");
$userfound=0;
header("location: $domainroot/");
}
}
}
}
else {
// Logout: Session beenden und Logon-Cookie löschen
session_unset();
session_destroy();
setcookie("logon", "deleted", time()-3600, "/");
setcookie("skid", "deleted", time()-3600, "/");
$userfound=0;
$linkzusatz="";
// Redirect
header("location: $domainroot/");
}
}
// Aufruf ohne Parameter
else {
$userfound=0;
header("location: $domainroot/");
}
}
// Linkzusatz2 für weitere Parameter
if($linkzusatz) {
$linkzusatz2=$linkzusatz."&";
}
else {
$linkzusatz2="?";
}
mysql_close($db);
?>
*Seufz*,
das sollte keine Aufforderung darstellen, jetzt deinen ganzen ellenlangen Code unkommentiert hier abzuladen!
Was hast du denn selber bisher unternommen, um das Problem einzugrenzen?
Bspw. mal sinnvolle Debugausgaben gemacht?
MfG ChrisB
Sorry, dann habe ich Dich falsch verstanden gehabt.
Also ich habe an verschiedenen Stellen Ausgaben gemacht,
um zu gucken was bis wohin noch kommt.
Habe die Browser ausgelesen manuell um zu gucken
ob er die Cookies schreibt. Das tut er auch.
Die Probleme sind bereits bei:
// Login
if(!isset($sessionerror)) {
und
// Session fortsetzen
elseif(isset($skid)) {
hier ist er bereits nicht mehr im Code drin.
Und genau da fängt schon mein Problem an.
Dann habe ich versucht die alte und die neue php.ini zu vergleichen bei allem wo session oder cookie drin vorkommt.
Doch auch das brachte keinen Erfolg.
Hi,
Die Probleme sind bereits bei:
// Login
if(!isset($sessionerror)) {und
// Session fortsetzen
elseif(isset($skid)) {
Und was heisst das, das Problem sei bereits dort?
hier ist er bereits nicht mehr im Code drin.
Wie meinen?
Drueck dich doch bitte mal etwas verstaendlicher aus ...
Welche Werte/Queries/Ergebnisse hast du kontrolliert, enthielten diese das, was du erwartest hast, etc. pp.
MfG ChrisB