Pegasus: Sessionprobleme nach Serverwechsel

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

  1. 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

    1. <?
      $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);
      ?>

      1. *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

        1. 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.

          1. 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