kostenloser Webspace werbefrei: lima-city


PhP Login klappt nur manchmal (selten)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mylonky

    mylonky hat kostenlosen Webspace.

    Hallo liebe Community,

    ich habe mithilfe eines Tutorials ein PhP Loginscript erstellt,
    nur leider klappt der Login nur selten so das ich oft Garnicht eingelogt werde obwohl ich die Meldung bekomme das ich nun eingeloggt bin.

    Hier meine Codeschnipsel:

    login.php

    http://pastebin.com/HHh32amz

    passwort.php

    http://pastebin.com/RQFtbX8V


    Registrieren undsoweiter Funktioniert alles

    Hoffe ihr könnt mir weiterhelfen :/

    MfG: Wuppi/MyLonky
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    Wie wär's denn, wenn du mal
    session_start();

    ganz am Anfag ausführst?
  4. Autor dieses Themas

    mylonky

    mylonky hat kostenlosen Webspace.

    mein-wunschname schrieb:
    Wie wär's denn, wenn du mal
    session_start();

    ganz am Anfag ausführst?


    Scheint bis jetzt zu Funktionieren, aber das heißt nichts, ich werde es ne weile testen


    EDIT: Problem besteht weiterhin

    Beitrag zuletzt geändert: 25.5.2016 9:10:46 von mylonky
  5. mein-wunschname schrieb:
    Wie wär's denn, wenn du mal
    session_start();

    ganz am Anfag ausführst?


    Du hast das session_start zwar eingefügt, aber nicht am Anfang.
    Es muss wirklich als erstes ausgeführt werden. Du includest vorher aber noch Deine
    passwort.php.
  6. Aktiviere Php Fehlermeldungen und poste die Fehlermeldung im Forum, wenn das Problem wieder auftritt.
  7. Autor dieses Themas

    mylonky

    mylonky hat kostenlosen Webspace.

    rocococo schrieb:
    Aktiviere Php Fehlermeldungen und poste die Fehlermeldung im Forum, wenn das Problem wieder auftritt.


    Habe ich gemacht, ich bekomme nicht eine Fehlermeldung :(

    Hier mal die Komplette Loginseite

    http://pastebin.com/G0VWerXF


    Teten mit Erroranzeige könnt ihr hier

    http://moneyclickererror.webspace.rocks/login.php
    Logindaten sind:
    User: Testi
    PW: Test123
  8. Vor dem session_start darf keinerlei Ausgabe stattfinden, bei Deiner Login.php steht da aber noch ein HTML Kommentar davor. Also Kommentar entfernen oder erst nach dem Aufruf von session_start ausgeben.
  9. Hallo,

    erst einmal ist am Anfang der Kommentar in PHP so nicht richtig.

    Dann die nächste Frage, nutzt du session_start(); in jeder PHP-Datei am Anfang? Also "index.php", "downloads.php", usw.? Wenn nicht, kann das nicht funktionieren. Ich habe deine Seite mit den Testdaten ausprobiert und auch den Haken gesetzt --- ich muss mich immer wieder erneut einloggen. Es wird auf der Startseite auch nicht angezeigt, dass ich (noch) eingeloggt bin.

  10. Autor dieses Themas

    mylonky

    mylonky hat kostenlosen Webspace.

    staymyfriend schrieb:
    Hallo,

    erst einmal ist am Anfang der Kommentar in PHP so nicht richtig.

    Dann die nächste Frage, nutzt du session_start(); in jeder PHP-Datei am Anfang? Also "index.php", "downloads.php", usw.? Wenn nicht, kann das nicht funktionieren. Ich habe deine Seite mit den Testdaten ausprobiert und auch den Haken gesetzt --- ich muss mich immer wieder erneut einloggen. Es wird auf der Startseite auch nicht angezeigt, dass ich (noch) eingeloggt bin.



    Ja ich verwende es auf Jeder seite, Das liegt daran das du nicht Eingelogt bist,
    solltest du es geschaft haben dich einzuloggen sieht die Startseite so aus:
    http://moneyclicker.lima-city.de/Online.png
    nur halt mit Testi als Namen
  11. staymyfriend schrieb:
    erst einmal ist am Anfang der Kommentar in PHP so nicht richtig.
    Ja, der Kommentar ist in PHP nicht gültig, aber es hätte Dir durchaus auffallen können, dass das hier völlig irrelevant ist, da der Kommentar außerhalb des <?php ?> Blocks steht, somit einfach direkt an den Klienten gesendet wird und dort auch ganz normal als HTML Kommentar interpretiert wird. Hättest Du dann noch meinen Beitrag gelesen, wüsstest Du, das genau das das Problem ist: der wird vor session_start gesendet, somit sind die Header auch schon gesendet und session_start kann kein Cookie mehr setzen.
  12. session_start reicht einmal am Anfang jeder Datei aus, die über die URL zu erreichen sein soll. Die ganzen, die mitten drin sind, sind überflüssig.

    Den Kommentar am Anfang, also der Lizenzhinweis, besser in den PHP Teil verschieben als Kommentar. Dieser kommt so als HTML vor deinem Doctype zur Ausgabe im Quelltext in den Browser. Es darf nicht mal ein Leerzeichen davor kommen. Also am besten ganz an den Anfang

    <?php
    session_start();


    Jetzt kann alles andere kommen.

    $_SESSION['userid']
    ist für einen Login eine sehr schlechte Idee, dir das allerdings zu erklären, warum, wäre hier etwas zu lang. Speichere stattdessen die session_id() in der Datenbank und hole diese wieder raus.

    foreach ($pdo->query($sql) as $row) {

    Habe ich selbst noch nicht ausprobiert. Bin mir allerdings ziemlich sicher, dass es nicht funktioniert. Du solltest dein Tutorial noch mal durchgehen oder http://kushellig.de/prepared-statements-php-data-objects-pdo/ nochmals lesen. Du darfst stattdessen auch den von mir modifizierten dbhandler aus PHP-Fusion nutzen https://bitbucket.org/Webmeteor24/webmeteor-cms/src/86835f64d757124753f810a8b75eda2e744a0eda/inc/dbhandler.php?at=master&fileviewer=file-view-default Der spart etwas Tipparbeit.

    Und noch ein Tipp: speichere deine Dateien immer in UTF-8 ohne BOM ab. So bekommst du dann weniger Umlautprobleme.



  13. Autor dieses Themas

    mylonky

    mylonky hat kostenlosen Webspace.

    [quote]controlhu [url=www.lima-city.de/board/action:jump/1164891]schrieb[/url]:
    session_start reicht einmal am Anfang jeder Datei aus, die über die URL zu erreichen sein soll. Die ganzen, die mitten drin sind, sind überflüssig.[/quote]

    Habe sie Entfernt, und nurnoch Ganz am anfang. Resultat ist Jetzt geht Garnichts mehr xD
    [url]http://pastebin.com/BK9udqYz[/url]


    EDIT: Habe Vergessen die Datenbank zu Korigieren, Geht alles und der Login macht bis jetzt auch keine Probleme, Danke euch ^^


    controlhu schrieb:
    [...]

    $_SESSION['userid']
    ist für einen Login eine sehr schlechte Idee, dir das allerdings zu erklären, warum, wäre hier etwas zu lang. Speichere stattdessen die session_id() in der Datenbank und hole diese wieder raus.

    und das mach ich wie? (Arbeite zum ersten mal mit PHP und MySQL davor nur mit HTML)

    controlhu schrieb:
    foreach ($pdo->query($sql) as $row) {

    Habe ich selbst noch nicht ausprobiert. Bin mir allerdings ziemlich sicher, dass es nicht funktioniert.

    Funktioniert aber oO



    Beitrag zuletzt geändert: 26.5.2016 21:39:30 von mylonky
  14. Einiges hängt natürlich auch von deiner password.php ab.

    Ich habe bei jedem User in der Datenbank ein Feld, wo die session_id gespeichert wird.

    In der Hauptdatei, die immer geladen wird, Frage ich erstmal, ob diese session_id schon in der DB vorhanden ist, ist sie vorhanden, dann ist der User noch eingeloggt.

    Loggt der User sich ein, dann wird erstmal eine neue session_id generiert, und diese wird dann in die DB geschrieben und der user wird eingeloggt. Der Vorteil ist, die session_id gibt es nur einmal und wird generiert wenn der Besucher das erste mal die Webseite besucht. Diese lässt sich also nur schwer manipulieren. Bei dir, wenn du die userid speicherst, dann brauche im Browser nur das Session Cookie für die userid manipulieren und wäre dann eingeloggt. Ich würde dann wahrscheinlich die 1 nehmen und hätte dann deinen Administrator Account und könnte dann mit deiner Webseite machen was ich wollte.

    Wie ich gesehen habe, werden bei dir noch zwei andere Cookies erzeugt und gesetzt, hier wäre dann natürlich die Frage, wie diese weiter behandelt werden in deiner password.php. Denn diese beiden Cookies sind ja theoretisch auch einmalig (wäre ein größerer Zufall, wenn zwei User die gleichen Cookies bekämen). Wenn diese für die Überprüfung zuständig sind, ob eingeloggt oder nicht, dann wäre dein Login wieder sicher. Nur eben über die userid alleine wäre es zu unsicher.
  15. Autor dieses Themas

    mylonky

    mylonky hat kostenlosen Webspace.

    controlhu schrieb:
    [...]
    Wie ich gesehen habe, werden bei dir noch zwei andere Cookies erzeugt und gesetzt, hier wäre dann natürlich die Frage, wie diese weiter behandelt werden in deiner password.php. Denn diese beiden Cookies sind ja theoretisch auch einmalig (wäre ein größerer Zufall, wenn zwei User die gleichen Cookies bekämen). Wenn diese für die Überprüfung zuständig sind, ob eingeloggt oder nicht, dann wäre dein Login wieder sicher. Nur eben über die userid alleine wäre es zu unsicher.


    Genau dazu sind die Ja da, nur mit der id 1 kommt man nicht weit (Bis jetzt habe ich sowieso noch keine Admin Funktionen die nur der Admin kann ^^")
  16. controlhu schrieb:

    Loggt der User sich ein, dann wird erstmal eine neue session_id generiert, und diese wird dann in die DB geschrieben und der user wird eingeloggt. Der Vorteil ist, die session_id gibt es nur einmal und wird generiert wenn der Besucher das erste mal die Webseite besucht. Diese lässt sich also nur schwer manipulieren. Bei dir, wenn du die userid speicherst, dann brauche im Browser nur das Session Cookie für die userid manipulieren und wäre dann eingeloggt. Ich würde dann wahrscheinlich die 1 nehmen und hätte dann deinen Administrator Account und könnte dann mit deiner Webseite machen was ich wollte.
    Blödsinn, les dir nochmal durch wie PHP Sessions funktionieren, auf Client Seite wird da nur eine zufällige PHP Session ID gespeichert. Alles was in $_SESSION gespeichert wird, liegt aber auf dem Server. Klar, wenn der User die PHP Session ID eines anderen bekommt, könnte er sich als der ausgeben, das nennt sich dann Session Hijacking, ist aber lange nicht so einfach, wie du es hier darstellst.
  17. 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!