php script auf gleicher seite ausführen

  • Hey Liebe community,


    ich habe hier eine kleine page geschrieben zu einem Login das PHP soll erstmal vorgegebene daten abgleichen (da kommt später eine Datenbank hinter).

    Leider greift das PHP script nicht weiss jemand grad vielleicht warum?


    Danke im vorraus


  • Leider greift das PHP script nicht weiss jemand grad vielleicht warum

    Wie franky77 schon richtig bemerkt hat: das Problem ist deine Bedingung: es gibt kein Formularelement mit name="submitted", weswegen die Bedingung niemals wahr und der Code damit niemals ausgeführt wird. Verpasse dem Button ein name-Attribut oder frage ab ob Name oder Passwort in $_POST enthalten sind.


    Du wirst dann allerdings gleich auf das nächste Problem stoßen: die Abfrage auf korrekte Zugangsdaten wird immer true ergeben - du weist den Variablen nämlich nur einen Wert zu, zum Vergleichen musst du == verwenden. btw: das Umkopieren der Werte aus $_POST (oder auch $_GET) war schon immer sinnlos, du kannst auch direkt mit den Werten in $_POST vergleichen, $name und $PW sind überflüssig.

    Und wie willst du eigentlich verhindern dass der Besucher die Zielseite (sites/logged_in.html) einfach direkt aufruft? Beschäftige dich mit dem Thema Sessions (wobei die Zielseiten dann keine reinen HTML-Seiten sein können).


    Ach, noch was: deine header-Aufrufe werden nicht funktionieren: vorher darf nämlich *nichts* ausgegeben worden sein. Du gibst vorher das Formular aus womit die header von PHP bereits verschickt wurden und jeder Aufruf von header() nur eine Fehlermeldung ergibt. Beschäftige dich mit dem EVA-Prinzip.


    Dein HTML-Code enthält leider auch noch Fehler:

    - deine Eingabefelder haben keine Beschriftung (ein label-Element fehlt); und nein, das placeholder-Attribut ersetzt diese nicht

    - </input> gibt es nicht

    - das button-Element hat kein placeholder-Attribut

    (- HTML-Grundgerüst fehlt (vor, nach und in <html> fehlt noch was, aber evtl./hoffentlich ist <html> hier nur als Platzhalter zu sehen))

  • Und direkt was zum Lernen, wie man solche Fehler selber finden kann:


    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.