Fehler im Login Script (Wer klaut mir meine Session-Daten?)

  • Hiho mitnand,

    ich habe folgendes Login script geschrieben und nun taucht ein sehr seltsamer Fehler auf.
    Hier erst mal der Code, dann die Erläuterung:

    Das Formular:

    Code
    <form action="login.php" method="get">
    		<input name="name" type="text" />
    		<input name="pw" type="password" />
    
    
    		<input value="login" style="background-color: #057391; border: 0px; color: #CCCCCC;" name="" type="submit" />
    </form>

    login.php:

    und die Index.php der neuen site in /game-environment/ :

    Nach ein paar Versuchen konnte ich den Fehler darauf eingrnzen, dass die $_SESSION[uid] zwar mit dem korrekten Index auf TRUE gesetzt wird, sobald ich aber auf die neue Index.php weiterleite ist dieser Wert "weg" und man wird wieder auf die alte Index.php weitergeleitet.

    Ich habe auch schon versucht die 'uid' per $_REQUEST[] statt $_GET[] aufzurufen aber der Fehler bleibt der selbe.

    Win·dows
    Noun.
    A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.

  • 1. Ein Formular mit Passworteingabe per Get zu versenden, ist eine Katastrophe
    2. Wieso hängst du überhaupt etwas an die URL?

    Du machst da Sicherheitslöcher ohne Ende auf.

  • Zitat von phpfan

    1. Ein Formular mit Passworteingabe per Get zu versenden, ist eine Katastrophe

    Oh :shock:

    Wie macht man es denn richtig (sicherer) ? Per POST ?

    Win·dows
    Noun.
    A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.

  • Die Daten werden nun per Post übertragen.

    Aber sobald ich auf der neuen Index nach der Session überprüfe:

    Code
    if( $_SESSION[ $_GET['uid'] ] != TRUE ) {
          header("Location: " . HOST );
       }

    scheint diese nicht mehr den zugewiesenen Wert zu haben und ich werde wieder auf die Ursprungssite geleitet.

    Win·dows
    Noun.
    A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.

  • Code
    $_SESSION[ $_GET['uid'] ]


    Jetzt übereg mal genau wenn du keine GET mehr verwendest, warum das nicht mehr geht...

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • An der Stelle verwende ich nach wie vor get ( was ja auch kein Problem ist, denn alleine mit der userid kann man nichts anfangen ).

    Ich Poste aber dennoch mal den aktuellen code:

    Das Formular:

    Code
    <form action="login.php" method="post">
    		<input name="name" type="text" />
    		<input name="pw" type="password" />
    
    
    		<input value="login" style="background-color: #057391; border: 0px; color: #CCCCCC;" type="submit" />
    </form>


    login.php:

    und die Index.php der neuen site in /game-environment/ :

    Ich habe auch schon überprüft ob die Session überhaupt gesetzt werden kann, aber da trat kein Fehler auf, erst wenn ich auf der neuen Index.php den Wert erneut abfrage.

    Win·dows
    Noun.
    A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.

  • Du machst dir das Leben unnötig schwer! Einfach

    Code
    $_SESSION['logged'] = true;


    und dann

    Code
    if (isset($_SESSION['logged']))
    {
       // Ist korrekt eingeloggt
    }


    Wofür willst du unbedingt die User-Id dafür nehmen???

  • :roll: :lol:
    Grober Denkfehler^^

    Danke für tatkräftige Hilfe, ich probiers gleich mal aus!

    EDIT: Jop es geht

    Win·dows
    Noun.
    A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.

  • ich mein, sonst speicher halt die user-id in ner session :ugly:

    bitte siehe Avatar von phpfan & adde ein 'nachdenken'

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Oft ist es so, dass man Fehler nicht entdeckt, weil viel zu sehr in dem Code vertieft ist. Da ist ein kritischer Blick eines Außenstehenden Gold wert.

    Win·dows
    Noun.
    A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.