Sorry warte ich poste es mal hier:: Sessionprobleme nach Serverwechsel

Beitrag lesen

<?
$REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
$username=$_POST['username'];
$pwd=$_POST['pwd'];

V.0.7.1

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);
?>