login script

  • tag liebe leute. hab mich mal an nem login script versucht. sicherheit usw sind noch nicht perfekt aber im groben solls so schon mal reichen. nun zum fehler. wenn ich login aufrufe gibts ne fette fehlermeldung und ich kann den fehler nicht finden.

    fehler: Parse error: syntax error, unexpected T_ELSE in /home/www/web468/html/login/account/login.php on line 33

    Einmal editiert, zuletzt von jojo87 (15. Januar 2011 um 16:35) aus folgendem Grund: php-tag gwschlossen

  • Bei den beiden if-else-Konstrukten fehlen einmal eine öffnende geschweifte Klammer { und einmal eine schließende geschweifte Klammer }
    if($sqlErgebnis['nickname'] == $nickname) <-- die Überprüfung macht nicht viel Sinn, ist ja doppelt. Das prüfst du ja schon in der SQL-Abfrage.
    Wenn diese if-Bedingung nicht erfüllt wird, wurde gar kein Datensatz gefunden, $sqlErgebnis['nickname'] ist daher nicht belegt, und PHP schmeißt eine Notice, wenn du error_reporting nicht ausgedreht hast, was ich nicht hoffe.
    Überprüfe da stattdessen ob überhaupt ein Ergebnis gefunden wurde: if( $sqlErgebnis = mysql_fetch_assoc($sqlCheck) ) {

    Ansonsten nicht vergessen: http://php.net/manual/de/func…cape-string.php

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • danke schön ... immer diese doofe klammer :-/.

    und auch danke für den hinweis der doppelten abfrage. muss ich halt schauen wie ich das noch umsetze. eine kleine frage hab ich aber noch. da der login nun erfolgreich war zeige ich ja dem anwender mehr als dem der nicht eingeloggt ist.
    muss ich jetzt jeder seite was voransetzen das vorher auch die abfrage nach dem login kommt? bzw was muss ich da voransetzen.

    in diesem sinne ...

    zum thema sicherheit: in wie fern muss ich die sicherheit des ganzen noch verbessern. vllt. ein paar stichpunkte wo ich hin muss.

  • Du musst jetzt auf jeder Seite überprüfen, ob die Session den Nicknamen enthält. Den setzt du ja bei erfolgreichen Login.
    Ansonsten ist dein Script anfällig für sql-injections, da du den Nicknamen ungefiltert in das sql-statement schreibst.
    Siehe den Kommentar von Sinnlos zu mysql_real_escape_string

    Wenn das umgesetzt ist, solltest du dich für maximale Sicherheit noch mit Sessionfixating, Sessionhijacking und salting beschäftigen


  • Jetzt mal ehrlich, in jedem PHP-Forum dieser Welt wurden Login-Scripte ohne Ende besprochen, im Netz findet man massenhaft Tutorials dazu. Warum um alles in der Welt taucht dieses Thema immer wieder auf? Ist das wirklich so schwer, google und Suchfunktionen in Foren zu benutzen?

  • Du musst jetzt auf jeder Seite überprüfen, ob die Session den Nicknamen enthält. Den setzt du ja bei erfolgreichen Login.
    Ansonsten ist dein Script anfällig für sql-injections, da du den Nicknamen ungefiltert in das sql-statement schreibst.
    Siehe den Kommentar von Sinnlos zu mysql_real_escape_string

    Wenn das umgesetzt ist, solltest du dich für maximale Sicherheit noch mit Sessionfixating, Sessionhijacking und salting beschäftigen



    na so ganz schlau werd ich jetzt nicht drauss. musst entschuldigen ... ich bin noch nicht so lange dabei. bin froh das das was ich habe hinbekommen habe. also das ich eine bestimmte zeile über jede seite setzen muss die nur über login erreichbar sein soll ist mir klar. nur nicht wie der befehl bzw zeilen aussehen soll ...

  • habe den Thread mal bereinigt

    na so ganz schlau werd ich jetzt nicht drauss. musst entschuldigen


    Du hast gefrag t ;)

    Zitat

    also das ich eine bestimmte zeile über jede seite setzen muss die nur über login erreichbar sein soll ist mir klar. nur nicht wie der befehl bzw zeilen aussehen soll ...

    Du setzt doch bei erfolgreihem login in der Session den Nickname, deshalb gehe ich davon aus, dass du von Sessions schon mal was gehört hast.
    bei der Überprüfung brauchst du
    http://php.net/session_start
    und
    http://php.net/isset