Problem mit $ _SESSION[" "]

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit $ _SESSION[" "]

    Hallo Leute, ich hoffe ihr könnt mir weiter helfen, bin langsam echt am verzweifeln.

    ich habe ein login-skript, dass username und passwort zum einloggen benutzt, und dann zum Usernamen Rechte als Session-Variablen definiert:

    Hier das Login-Skript:

    PHP-Code:
    <? 
    session_start();
    $sessionid= session_id();
    include("connect.php");

    $username=$_POST['username'];
    $passwort=$_POST['passwort'];


    $time = date("YmdHis");

    $duplicate = mysql_query("SELECT COUNT(*) FROM svo_user where username='$username'");
    $duplicate = mysql_result($duplicate,0);
    if ($duplicate == 0)
    {
    echo"<FONT FACE=verdana Size=1><B>Falscher Username!</B></FONT>";
    echo"<HEAD><meta http-equiv=\"refresh\" content=\"1; URL=menu.php\"></HEAD>";
    }

    $result = mysql_query("SELECT * FROM svo_user Where username='$username'");
        while ($row=mysql_fetch_array($result)) 
        {
        $passwort_correct = $row['passwort'];

        if (MD5($passwort) == $passwort_correct)
            {
            $time = date("YmdHis");

            $result = mysql_query("SELECT * FROM svo_user Where username='$username'");
            while ($row=mysql_fetch_array($result)) 
            {
            $per_news = $row['per_news'];
            $per_erste = $row['per_erste'];
            $per_zweite = $row['per_zweite'];
            $per_oldies = $row['per_oldies'];
            $per_jugend = $row['per_jugend'];
            $per_tab_zweite = $row['per_tab_zweite'];
            $per_tab_erste = $row['per_tab_erste'];
            $per_spieler_erste = $row['per_spieler_erste'];
            $per_spieler_zweite = $row['per_spieler_zweite'];
            $per_spielplan_erste = $row['per_spielplan_erste'];
            $per_spielplan_zweite = $row['per_spielplan_zweite'];
            $last_login = $row['last_login'];
            if ($last_login == '') $last_login = $time;
            }

            $_SESSION["loggedin"] = "1";
            $_SESSION["username"] = "$username";
            $_SESSION["per_news"] = "$per_news";
            $_SESSION["per_erste"] = "$per_erste";
            $_SESSION["per_zweite"] = "$per_zweite";
            $_SESSION["per_oldies"] = "$per_oldies";
            $_SESSION["per_jugend"] = "$per_jugend";
            $_SESSION["per_tab_erste"] = "$per_tab_erste";
            $_SESSION["per_tab_zweite"] = "$per_tab_zweite";
            $_SESSION["per_spieler_erste"] = "$per_spieler_erste";
            $_SESSION["per_spieler_zweite"] = "$per_spieler_zweite";
            $_SESSION["per_spielplan_erste"] = "$per_spielplan_erste";
            $_SESSION["per_spielplan_zweite"] = "$per_spielplan_zweite";
            $_SESSION["last_login"] = "$last_login";

            mysql_query("UPDATE svo_user SET last_login='$time' WHERE username='$username'"); 

            echo"<HEAD><meta http-equiv=\"refresh\" content=\"0; URL=menu.php\"></HEAD>";
            }
        else
            {
            echo"<FONT FACE=verdana Size=1><B>Falsches Passwort!</B></FONT>";
            echo"<HEAD><meta http-equiv=\"refresh\" content=\"1; URL=menu.php\"></HEAD>";
            }
        }

    mysql_close();

    ?>

    Dann soll der Benutzer auf der Seite eingeloggt sein, und Kommentare zu News und Fotos abgeben können. Bsp: addnews.php:

    PHP-Code:
    <?
    session_start();
    include("connect.php");
    $username = $_SESSION["username"];

    $newsid = $_GET['newsid'];
    $comment = $_POST['comment'];
    $time = date("YmdHis");

    if ($comment =='')
        {
        echo"<BODY BGCOLOR=\"#22AC22\">";
        echo"<FONT FACE=\"VERDANA\" COLOR=\"FFFFFF\" SIZE=\"2\"><BR><BR><UL><B>Fehler! Leerer Kommentar!</B></FONT>";
        echo"<HEAD><meta http-equiv=\"refresh\" content=\"1; URL=news_comments.php?newsid=$newsid.php\"></HEAD>";
        }
    else
        {
        echo"<BODY BGCOLOR=\"#22AC22\">";
        echo"<FONT FACE=\"VERDANA\" COLOR=\"FFFFFF\" SIZE=\"2\"><BR><BR><UL><B>Kommentar erfolgreich hinzugefügt!</B></FONT>";
        mysql_query("INSERT INTO svo_news_comments (news_id,comment,time,username) VALUES ('$newsid','$comment','$time','$username')"); 
        echo"<HEAD><meta http-equiv=\"refresh\" content=\"1; URL=news_comments.php?newsid=$newsid\"></HEAD>";
        }


    ?>


    Das große Problem an der Sache ist, das über
    $username = $_SESSION["username"];
    der falsche Username ermittelt wird, sprich, jemand anderes, der registriert ist. Hab da kein Muster entdecken können.

    Komisch ist auch, das auf meinem heim-appache alles läuft, aber auf meiner online seite nicht...

    wer kann mir helfen, oder sagen wo mein fehler liegt??? vielen dank im Vorraus,

    Larsi
    Zuletzt geändert von Wotan; 16.09.2004, 14:06.

  • #2
    PHP-Code:
    $result mysql_query("SELECT * FROM svo_user Where username='$username'");
        while (
    $row=mysql_fetch_array($result)) 
        {
        
    $passwort_correct $row['passwort'];

        if (
    MD5($passwort) == $passwort_correct)
            { 
    gibt es mehrere Einträge mit verschiedenen passwörtern oder warum eine While?


    PHP-Code:
            $result mysql_query("SELECT * FROM svo_user Where username='$username'");
            while (
    $row=mysql_fetch_array($result)) 
            {
            
    $per_news $row['per_news'];
            
    $per_erste $row['per_erste'];
            
    $per_zweite $row['per_zweite'];
            
    $per_oldies $row['per_oldies'];
            
    $per_jugend $row['per_jugend'];
            
    $per_tab_zweite $row['per_tab_zweite'];
            
    $per_tab_erste $row['per_tab_erste'];
            
    $per_spieler_erste $row['per_spieler_erste'];
            
    $per_spieler_zweite $row['per_spieler_zweite'];
            
    $per_spielplan_erste $row['per_spielplan_erste'];
            
    $per_spielplan_zweite $row['per_spielplan_zweite'];
            
    $last_login $row['last_login'];
            if (
    $last_login == ''$last_login $time;
            } 
    wozu hier nochmal die DB abfragen, hste doch erst gerade? und wozu hier noch ein while?


    EDIT:


    achja zu deiner Frage:
    mach mal ein paar echo ausgaben von der namenvariable und schau ob die irgendwo überschrieben wird.


    Zuletzt geändert von marc75; 16.09.2004, 13:46.
    mfg
    marc75

    <Platz für anderes>

    Kommentar


    • #3
      Also, es gibt mehrere namen, mit zugehörigen passwörtern.
      jeder user hat dann noch mehrere permissions... die ich einzeln abfrage,
      ob umständlich oder nich ist ja erstmal egal.

      komisch ist, das trotz das der falsche username gezogen wird,
      noch die richtigen permissions freigegeben werden.

      also ich logge mich als "Lars" ein
      ich schreibe einen Comment, der Name wird zu "Test"
      aber ich habe trotzdem noch die Rechte für "Lars"

      was kann da nicht hinhauen????

      Kommentar


      • #4
        haste denn echo $username; schon mal verteilt in dein Script, und geschaut wo die var den falschen wert erhält. bevor du die in der session speicherst.
        mfg
        marc75

        <Platz für anderes>

        Kommentar


        • #5
          kannst ja mal testweise auf die seite gehen:

          www.sv-o.de

          anmelden klappt,
          dann einloggen - klappt,
          und dann einfach mal nen reload machen,
          und schwupp steht ein anderer username da.

          ich verstehs nicht,
          ich wüsste auch nicht wo ich das echo verteilen sollte,
          da ja direkt nach dem login-skript der username in der session gespeichert wird,

          das heisst, es gibt keine zwischenstationen...
          ich verstehs nich

          Kommentar

          Lädt...
          X