kostenloser Webspace werbefrei: lima-city


Session wird nicht erkannt

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    Hallo, Leute! Ich habe ein Problem mit einem Projekt (zu finden auf space-pirates.lima-city.de)...
    Das Portal, auf welches ihr über diesen Link gelangt; habe ich selbst entwickelt...
    Da mein letzter Hoster mich ohne Nennung eines Grundes gesperrt hat, habe ich das Zeug heute bei Lima hochgeladen.
    Leider funktioniert der Login-Bereich nicht mehr...

    Klick man auf "eingeloggt bleiben" kommt die Fehlermeldung, dass die Anfrage unendlich oft umgeleitet wird (sofern Benutzerdaten stimmen), klickt man dies nicht an, passiert gar nichts; außer dass man umgeleitet wird.

    Nach einigem Herumprobieren habe ich herausgefunden, dass auf die gesetzte Session nicht zugegriffen werden kann, sie aber gesetzt wird. Werden Cookies gesetzt, die Session aber nicht erkannt, versucht das Programm sich immer wieder einzuloggen; daher die Schleife.

    Was ich jedoch nicht herausgefunden habe, ist warum die Sessions nicht erkannt werden;
    bei dem alten Hoster klappte alles und auch von anderen Leuten, die mein Portal nutzen, gab es diesbezüglich nie Probleme...?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Da du uns keinen Code zeigst, können wir nur raten.

    Vielleicht wird die Session nicht mit session_start() gestartet.
  4. Autor dieses Themas

    anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    session_start() wird verwendet...

    'habe gerade mittels print_r($_SESSION) rausgekriegt, dass die Session zwar eigentlich gesetzt wird, jedoch sofort wieder verfällt und nach der Umleitung zur nächsten Datei weg ist...?

    Hier mal ein paar Auszüge aus dem Quelltext:

    login.php (Loginbereich):
    <?php 
      include "inc/initial.php";
      if ( $_SESSION["user_id"]) 
      {
        header("Location: index.php"); 
      }
    $page_name="Login-Bereich";
      require_once ("inc/_header.php");
    ?>
    <form action="index.php" method="post" name="formular" onSubmit="if(this.login.value=='' || this.pass.value==''){ alert('Nicht alle Felder ausgefüllt!'); return false; }">
    <center>
     <img src="<?php echo $skrupel_path; ?>bilder/logo_login.gif" width="329" height="208" alt="Skrupel Logo" title="" /><br>
     <table border="0" cellspacing="0" cellpadding="4" align="center">
    <?php if (isset($login_error) && $login_error=="wrong_data"){ ?>
    <tr><td /><td style="color:red;">Login-Daten falsch.</td></tr>
    <?php } else if (isset($login_error) && $login_error=="bann"){ ?>
    <tr><td /><td style="color:red;">Dieser Account wurde aus dem Portal gebannt.</td></tr>
    <?php } ?>
       <tr>     
         <td align="right">Benutzername&nbsp;</td>
         <td><input type="text" name="login" maxlength="50" style="width:350px;<?php if(isset($_POST["login"])){ ?> border-color:red; color:red<?php } ?>" value="<?php if (isset($_POST["login"])) { echo $_POST["login"]; } else { echo $HTTP_COOKIE_VARS["login_name"]; } ?>" /></td>     
        </tr>
        <tr>
          <td align="right">Passwort&nbsp;</td>
          <td><input type="password" name="pass" maxlength="50" style="width:350px;<?php if(isset($_POST["login"])){ ?> border-color:red; color:red<?php } ?>" value="" /></td>      
        </tr>
    <tr><td /><td align="center"><input type="submit" name="submit" value="Login" style="width:300px;" />
          </td>      
        </tr>
        <tr>
          <td /><td align="left">
            <input type="hidden" name="return" value="active.php" />
    <input type="checkbox" name="cookie" /> Bei Seitenbesuchen automatisch einloggen
            </td></tr>
      </table>
    </center>
    </form>
    <?php  
      require_once ("inc/_footer.php");
    ?>


    index.php (setzt die Sessions):
    <?php
      session_start();
      if ( !is_file("inc/conf.php") )
      {
        header("Location: install.php");
        die("Bitte Konfiguration &uuml;berpr&uuml;fen");
      }
      require_once "inc/conf.php";
      if ( !is_file($skrupel_path."inc.conf.php") ) 
      {
        header("Location: install.php");
        die("Bitte Konfiguration &uuml;berpr&uuml;fen");
      } 
      
      require_once $skrupel_path."inc.conf.php";
      require_once "inc/_db.php";
      
      if ($_POST["login"] && $_POST["pass"])
      {
        require_once "inc/_db.php";
        $sql   = "SELECT user.*, spiele.sid
                  FROM $skrupel_user AS user 
                  LEFT JOIN $skrupel_spiele AS spiele 
                  ON phase = 0 
                     AND (user.id = spieler_1 
                          OR user.id = spieler_2 
                          OR user.id = spieler_3 
                          OR user.id = spieler_4 
                          OR user.id = spieler_5 
                          OR user.id = spieler_6 
                          OR user.id = spieler_7 
                          OR user.id = spieler_8 
                          OR user.id = spieler_9 
                          OR user.id = spieler_10) 
                  WHERE user.nick=\"{$_POST["login"]}\" 
                        AND user.passwort=\"{$_POST["pass"]}\" 
                  GROUP BY user.id"; 
        $query = mysql_query($sql);
        if ( mysql_num_rows($query) == 1 )
        {
          $data = mysql_fetch_assoc($query);
    if ($data["portal_bann"]!=1) {
          $_SESSION["user_id"] = $data["id"];
          $_SESSION["uid"]     = $data["uid"];
          $_SESSION["sid"]     = $data["sid"];
          $_SESSION["name"]    = $data["nick"]; 
          $_SESSION["pass"]    = $_POST["pass"];
          $_SESSION["mail"] = $data["email"];
          $_SESSION["layout"] = $data["portal_layout"];
    
    setcookie("mail", $data["email"], time()+$cookie_dauer);
    setcookie("login_name", $data["nick"], time()+$cookie_dauer);
    setcookie("layout", $data["portal_layout"], time()+$cookie_dauer);
    
    if ($_POST["cookie"]=="on" || $_POST["cookie"]=="true")
    { setcookie("user", $data["nick"], time()+$cookie_dauer);
    setcookie("password", $_POST["pass"], time()+$cookie_dauer); }
    
    $zeiger = mysql_query("INSERT INTO $skrupel_chat (datum,text,von,farbe) VALUES ('".time()."', '".$_POST["login"]." hat sich eingeloggt.', 'System', '000000')");
        }	else { $login_error="bann"; }
      }	else { $login_error="wrong_data"; }
    }
                        // print_r($_SESSION); exit;
    
    if (isset($_SESSION["user_id"]) && $_POST["return"] && file_exists($_POST["return"]))
    { header('Location:'.$_POST["return"]); exit; }
    else if (isset($_SESSION["user_id"]) && $_SERVER["HTTP_REFERER"] && file_exists($_SERVER["HTTP_REFERER"]))
    { header('Location: '.$_SERVER["HTTP_REFERER"]); exit; }
    else if (isset($_SESSION["user_id"]))
       { header('Location: active.php'); exit; }
    
      if (!$_SESSION["user_id"])
      { require "login.php"; }
     ?>


    inc/initial.php (greift auf Sessions zurück):
    <?php
    
      require_once ("inc/conf.php");
      require_once ($skrupel_path."inc.conf.php");
    session_start();
                                             // print_r($_SESSION);
    
    if (! isset($_SESSION["layout"]) && isset($HTTP_COOKIE_VARS["layout"]))
    { $_SESSION["layout"] = $HTTP_COOKIE_VARS["layout"]; }
    else if (! isset($_SESSION["layout"]) && ! isset($HTTP_COOKIE_VARS["layout"]) && isset($template))
    { $_SESSION["layout"] = $template; setcookie("layout", $template, time()+$cookie_dauer); }
    else if (! isset($_SESSION["layout"]) && ! isset($HTTP_COOKIE_VARS["layout"]) && ! isset($template))
    { $_SESSION["layout"] = "classic"; setcookie("layout", "classic", time()+$cookie_dauer); }
    
    if (! file_exists("styles/".$_SESSION["layout"]."/css/style.css") && file_exists("styles/".$template."/css/style.css"))
    { $_SESSION["layout"]=$template; }
    else if (! file_exists("styles/".$_SESSION["layout"]."/css/style.css"))
    { require("styles/design.php"); $_SESSION["layout"]=$design[0]["path"]; }
    
      require "inc/_db.php";
    
      if ( isset( $_SESSION["user_id"] ) )
      { $sql   = "SELECT user.uid, spiele.sid FROM $skrupel_user AS user LEFT JOIN $skrupel_spiele AS spiele ON phase = 0 AND (user.id = spieler_1 OR user.id = spieler_2 OR user.id = spieler_3 OR user.id = spieler_4 OR user.id = spieler_5 OR user.id = spieler_6 OR user.id = spieler_7 OR user.id = spieler_8 OR user.id = spieler_9 OR user.id = spieler_10) WHERE user.id=\"{$_SESSION["user_id"]}\" GROUP BY user.id"; 
        $query = mysql_query($sql);
        if ( mysql_num_rows($query) == 1 )
        {
          $data = mysql_fetch_assoc($query);
          $_SESSION["uid"]     = $data["uid"];
          $_SESSION["sid"]     = $data["sid"];      
    	$update=mysql_query("UPDATE $skrupel_user SET portal_activity='".time()."' WHERE id='".$_SESSION["user_id"]."' ");
        }
      }
    else if ($_COOKIE["user"] && $_COOKIE["password"])
    { $_POST["login"] = $_COOKIE["user"];
    $_POST["pass"] = $_COOKIE["password"];
    $_POST["return"] = $_SERVER["PHP_SELF"];
    include "index.php"; exit; }
    
    ?>


    Beitrag zuletzt geändert: 15.10.2011 22:59:05 von anti-atomkraft
  5. Schalte mal das error_reporting ein. Das müsste doch ein paar Fehler melden.

    WHERE user.nick=\"{$_POST["login"]}\"
    AND user.passwort=\"{$_POST["pass"]}\"


    Verwende niemals Daten von Besuchern direkt in MySQL. Stichworte: SQL-Injection und zum sichern mysql_real_escape_string()


    header("Location: install.php");
    die("Bitte Konfiguration &uuml;berpr&uuml;fen");

    Das die() ist sinnlos, da es niemals angezeigt wird. Den Text brauchst du also nicht.

    $HTTP_COOKIE_VARS ist komplett veraltet. Benutze $_COOKIE.

    $_POST["return"] = $_SERVER["PHP_SELF"];
    1. Solltest du POST, GET, usw. nicht überschreiben.
    2. PHP_SELF ist unsicher. Nimm besser SCRIPT_NAME.

    Wenn du in der inc/initial.php am Ende index.php inkludest, startest du damit die Session 2x.

    Beitrag zuletzt geändert: 15.10.2011 23:20:48 von chatter
  6. Autor dieses Themas

    anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    Also,
    error_reporting() ist an, ergibt aber keine Fehler, was mich auch schon gewundert hat.

    Da ich das Zeug öffentlich bereitstelle, ist die() nicht sinnlos:
    Bei einer falschen Codierung, wie UTF-8 mit BOM, bei der header() nicht funzt, soll das Skript wenigstens abgebrochen werden.

    Auf $_COOKIE steige ich noch um, lief nur beim alten Hoster nicht....
    Da die Cookies (im Gegensatz zu den Sessions) erkannt werden, vermute ich, dass hier beides geht.

    Der Teil
    else if ($_COOKIE["user"] && $_COOKIE["password"])
    { $_POST["login"] = $_COOKIE["user"];
    $_POST["pass"] = $_COOKIE["password"];
    $_POST["return"] = $_SERVER["PHP_SELF"];
    include "index.php"; exit; }

    in der initial hat den Zweck, dass wenn Cookies gesetzt sind, aber keine Session der Nutzer automatisch eingeloggt wird ("Passwort merken"-Funktion). Das hat schon seine Richtigkeit...

    Bzgl. Sicherheit: Darum kümmere ich mich noch, aber erstmal muss alles funktionieren...
    Und solange die wichtigste Funktion (nämlich der Login) nicht geht, ist das Nebensache...

    Beitrag zuletzt geändert: 15.10.2011 23:35:28 von anti-atomkraft
  7. real-friendship

    real-friendship hat kostenlosen Webspace.

    Habe auch seit heute das Problem mit SESSION.

    Bekomme immer die Fehlermeldung
    Error #2 session_start() [function.session-start]: Cannot find save handler 'memcached' - session startup failed Array


    Habe am Code aber nichts geändert, gestern lief noch alles einwandfrei...
  8. Hast Recht. Bei mir gehen Sessions auch nicht :(
  9. Autor dieses Themas

    anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    Naja, ich bekomme ja noch nichtmal eine Fehlermeldung...?
    Möglicherweise stiimt irgendetwas mit der php.ini nicht (dann müsste es spätestens am 19. wieder gehen), aber dies halte ich für unwahrscheinlich...

    Nachtrag: :thumb: Super! Jetzt, wo das "Session-Problem" behoben ist, geht wieder alles...
    Also doch nicht mein Fehler! :lol:
    -> Kann geschlossen werden 8-D

    Beitrag zuletzt geändert: 16.10.2011 23:02:18 von anti-atomkraft
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!