Zugangsabfrage über PHP/SQL

  • Abend zusammen,


    ich muss euch leider direkt noch mal um Hilfe bitten.
    Komme einfach zum Verrecken nicht auf den Fehler der da irgendwo versteckt liegt :(.


    Ich schalte gerade eine Zugangsabfrage vor meine Hauptseite. So weit so schön. Ist ne simple Abfrage von Nutzernamen und Passwort, die dann mit Nutzer und Passwort in der SQL Datenbank abgeglichen wird, jedoch wird bei meinem Formular nicht mal etwas abgeschickt beim Absenden -> es wird schon die erste if-Bedingung nicht erfüllt (if post(nutzer) <> "").


    Hier der Code:


  • Schreib mal ganz an den Anfang des Scripts:

    PHP
    ini_set('error_reporting', -1);
    ini_set('display_errors', -1);


    bei mir funktioniert es:


    Wenn ich Benutzernamen und Kennwort eingebe und das Formular abschicke, bekomme ich: hab nutzer und kennwort


    Hinweise:
    mysql_ Funktionen sind veraltet und unsicher.
    Du schreibst auch Benutzereingaben direkt in die Sql-Query ! Das ist sehr unsicher!
    Nutze besser mysqli_ oder PDO (suche im Forum oder Suchmaschiene).


    Du schreibst clear-text-passwords in die db! Das ist falsch.
    Passworte gehören gehasht in abgespeichert (auch siehe Forum ...).


    Nutze beim input-Feld für das Passwort den typ "password".
    Dadurch wird die Eingabe gepunktet (für nebenstehende nicht mitlesbar).

    HTML
    <input type="password"  ... />


    Empfehlung:
    nutze besser != oder !== bzw == und ===
    anstatt <>
    (oder empty() bzw !empty())

  • Danke dir für die schnelle Antwort.


    Bei mir ist dasselbe. Also lokal klappt es auch - zumindest das "Habe Daten" zeigt er an, während er aber nicht die else-Ausgabe gibt.


    Jedoch ist das Problem, dass es online nicht funktioniert aus irgendeinem Grund. Du kannst es dir selbst angucken, der Code hier:



    Habe ich gerade hier hochgeladen: https://www.nachhilfe-team.net
    Es kommt jedes Mal "Keine Daten." Egal, ob oder was ich eingebe.


    --> die error reportings habe ich gerade abgestellt, damit die nicht jedem der darauf zugreifen möchte vor die Nase laufen. Es erscheinen allerdings auch nur die errors für die undefined indexes.


    Und danke für die Tipps, werde ich mir die nächsten Tage mal genauer durchlesen :).



    Grüße!

  • Das ... raff ich auch grad nicht :D
    mach mal n var_dump() als Testausgabe:


    was wird ausgegeben?

  • array(0) { } NULL NULL Keine Eingabe.


    (hab beides drin)


    PHP
    var_dump($_POST);
    
    
    
    
    var_dump($_POST['nutzer']);
    var_dump($_POST['kennwort']);


    Ist noch der identische Code wie vorher auch. Trotzdem keine Reaktion auf der Seite, immer nur keine Eingabe bzw. array (0) bzw. NULL NULL :(.

  • probier mal das hier:

  • Ich habe gerade noch mal die Zugangsabfrage mithilfe des DVD Seminars 1 zu 1 nachgebaut, komplett in PHP, und das für eine andere Seite eingesetzt - es funktioniert! (??) Warum, und warum das andere nicht, keine Ahnung..


    Hier der komplette Code:



    Du kannst dir hier das Ergebnis ansehen, habe es für Nachhilfe eingesetzt -> er erkennt, dass es abgesendet wurde und er zeigt "Falsche Daten" an, wenn beide Eingaben falsch waren.. da muss irgendwo vorher ein kleiner zeichenfehler gewesen sein.. wahrscheinlich weil beim html teil :/

  • Evtl die Leerzeichen bei action:

    PHP
    <form action=" <?php echo $_SERVER['PHP_SELF']; ?> " method="post" enctype="text/html">


    ändern zu

    PHP
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="text/html">
  • Hab die Leerzeichen entfernt, daran lags scheinbar nicht, er erkennt immer noch keine Daten, die abgesendet wurde..


    Langsam bekomme ich das Gefühl, dass der sich das aussucht :D

  • Ohne auf Absenden zu drücken:


    PHP_VERSION: 5.4.38
    REQUEST_METHOD: GET
    CONTENT_TYPE:
    HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    array(0) { }


    Nach Absenden:


    PHP_VERSION: 5.4.38
    REQUEST_METHOD: POST
    CONTENT_TYPE: application/x-www-form-urlencoded
    HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    array(4) { ["a"]=> string(4) "test" ["b"]=> string(4) "test" ["c"]=> array(1) { [0]=> string(4) "test" } ["submit"]=> string(6) "submit" }

  • Dann jetzt mal mit doctype ect:


    Das einzige (das ich kenne und) das POST "leert" ist in der php.ini der Schlüssel: enable_post_data_reading
    aber dann hätte das andere Script auch nicht funktioniert.


    Wenn das jetzt nicht läuft, dann weiß ich auch nicht weiter :D

  • Oh man, es liegt an der Startseite! Keine Ahnung woran genau, aber wenn ich die Zugangsabfragen auf den Unterseiten einbaue, funktioniert es, die Daten werden abgesendet und ich kann mich einloggen.


    Auf der Hauptseite reagieren die Formulare nicht beim Absenden - egal welcher Code, auf den Unterseiten funktionieren die geposteten Varianten.



    edit: mit dem code bleibt es auch beim selben Ergebnis.. es scheint irgendwie daran zu liegen, dass es einfach bei der Hauptseite mit dem Absenden des Formulars nicht klappt. ??

  • Aaah ok. Hatte mir auch schon gedacht, dass es dann vllt etwas damit zu tun hat.


    Habe aber leider nicht genug Ahnung davon, um das richtig anzupassen.
    Die Zeile, die dort in dem Beispiel angepasst wurde, habe ich auch mal so bei mir bearbeitet, aber das hat leider nicht geholfen, denke da müssen noch andere Zeilen ebenfalls angepasst werden, aber wie gesagt, ich bin da nicht erfahren drin und will da nix zerschießen.


    Im Moment sieht mein .htaccess so aus:




    PS: Englisch ist im Programm :)


    Und vielen Dank für deine Mühe !

  • Immer gern.
    Mit den rewrite rules kann ich Dir allerdings grad nicht weiterhelfen - da müsste ich selbst suchen :D
    Aber hier im Forum gibts einige, die das drauf haben (die machen bestimmt gerade Mittagsschlaf ... eigtl keine schlechte Idee :D )

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!