Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Passwort ändern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Passwort ändern

    Hallo ich brauche dringend Hilfe!!! mit PHP!!
    Ich habe ein großes Problem mit PHP und MySQL kann mir jemand helfen?
    Ich möchte über MySQL auf die Datenbank zugreifen, kann den Fehler jedoch nicht in meinem Code finden!
    Das Passwort ist in MySQL in SHA1 gespeichert, er meldet jedoch, dass das Passwort nicht übereinstimmt.
    Wo liegt der Fehler?
    Mein PHP Code hier:

    PHP-Code:
    <?php
    session_start
    ();
    $_SESSION["userId"] = "1";
    $conn mysqli_connect("******""******""******""******") or die("MySQL Connection Error: " mysqli_error($conn));
    if(isset(
    $_POST['password'])) {
    $result =$conn->query("SELECT *from users WHERE id='" $_SESSION["userId"] . "'");
    $row mysqli_fetch_array($result);
    $pass_encrypt=md5(mysqli_real_escape_string($conn$_POST['currentPassword']));
    if(
    $pass_encrypt == $row["password"]) {
    $passnew_encrypt=md5(mysqli_real_escape_string($co nn,$_POST['newPassword']));
    $str=$conn->query("UPDATE users set password='" $passnew_encrypt "' WHERE id='" $_SESSION["userId"] . "'");
    $message "";
    echo 
    '<script language="javascript">';
    echo 
    'alert("Password Changed Sucessfully!")';
    echo 
    '</script>';
    } else
    $message "";
    echo 
    '<script language="javascript">';
    echo 
    'alert("The old Password does not match!")';
    echo 
    '</script>';
    }
    ?>
    Die Tabelle heißt "users"

    In der HTML sind diese Werte gespeichert:

    id="currentPassword"
    id="newPassword"
    id="confirmPassword"

    Ich danke für jede Hilfe, die ich bekommen kann!!!!

  • #2
    Öhh... ja. Moin!

    Man kann hier PHP-Code auch formatiert posten, dann wäre er für alle leserlicher.
    Und der Code ist auch ganz sicher exakt so im Einsatz?

    Anmerkungen:
    - Einer der beiden If-Cases wird nie geschlossen
    - Es gibt keine Variable "$co nn"
    - SQL Syntaxfehler "*from" - da fehlt ein Leerzeichen

    Rückfragen:
    - Das soll nur für einen einzigen User funktionieren? Als ID wird ja 1 fest gesetzt
    - Warum will man das Passwort aktualisieren wenn es exakt dem aktuellen Wert aus der Datenbank entspricht?

    Kommentar


    • #3
      Hallo Deprecated,

      ja der PHP-Code soll so im Einsatz sein, könntest du eine überarbeitete Version von dir posten?
      Ich bin seit heute neu hier, ich dachte ich poste mal schnell hier ins Forum, damit ich schnelle Hilfe bekomme, und ich merke es kommt schnelle Hilfe!
      Nein natürlich soll es für soviele User funktionieren, wie nur möglich, ich weis jedoch nicht wie ich das anstelle, das ich keine ID angebe, oder die ID einfach auf 1000 setze.
      Das letztere hab ich nicht so ganz verstanden Passwort aktualisieren?
      Ich bin blutiger Anfänger in PHP und habe mich schon wirklich gut einarbeiten können, aber soviel verstehe ich nun doch nicht davon, zum einen ich verstehe was du mit den If-Cases meinst,
      und auch das mit der Variable Conn, die soll auf die Datenbank übergehen zu MySQL dachte ich mir.
      Klar ich werde zukünftig den Code Formatieren und dann so leserlicher für alle Posten.

      Danke im vorraus!

      Kommentar


      • #4
        Mal abgesehen von den diversen Syntax Fehlern (fehlende Klammern, Leerzeichen, etc.):
        Verwende für das Hashen von Kennwörter ausschließlich password_hash und zum Prüfen password_verify
        Warum man MD5 nicht verwenden sollte: https://www.php.net/manual/de/faq.pa...words.fasthash

        Außerdem ist das mysqli_real_escape_string beim hashen natürlich Quatsch
        sorry, shift-taste kaputt

        Kommentar


        • #5
          Zitat von lorenzo Beitrag anzeigen
          Hallo ich brauche dringend Hilfe!!! mit PHP!!
          Ich habe ein großes Problem mit PHP und MySQL kann mir jemand helfen?
          Ich möchte über MySQL auf die Datenbank zugreifen, kann den Fehler jedoch nicht in meinem Code finden!
          Welchen Fehler? (dass da nicht nur ein Fehler ist wurde ja schon geschrieben, aber was genau meinst du?) Was macht der Code (nicht)? Fehlermeldung? Wenn du schon unter "PHP-Fortgeschrittene" postest sollte eine genaue Fehlerbeschreibung selbstverständlich sein …

          Das Passwort ist in MySQL in SHA1 gespeichert, er meldet jedoch, dass das Passwort nicht übereinstimmt.
          Wenn das Passwort als sha1-Hash gespeichert ist, warum berechnest du dann den md5-Hash? Das beides falsch ist wurde ja schon geschrieben.

          Neben dem was bereits genannt wurde:
          $pass_encrypt=md5(mysqli_real_escape_string($conn, $_POST['currentPassword']));
          Das ist Unsinn, du hast das Prinzip der Behandlung des Kontextwechsels nicht verstanden.

          $message = "";
          echo '<script language="javascript">';
          Wofür das $message = "";? Und wo hast du das language-Attribut vom script-Element ausgegraben? Lass es einfach weg, es ist nicht mehr nötig bzw. veraltet - und wenn du schon dabei bist: wirf das Javascript ganz raus und gib die Meldung einfach als Text aus.

          In der HTML sind diese Werte gespeichert:

          id="currentPassword"
          id="newPassword"
          id="confirmPassword"
          Was meinst du damit genau? Haben die Formular-Elemente diese IDs? Zum Übertragen der Werte müssen sie name-Attribute mit den jeweiligen Werten haben sonst kommt im Script nichts an.

          Ich danke für jede Hilfe, die ich bekommen kann!!!!
          Deine !-Taste klemmt gelegentlich.

          Zitat von Deprecated Beitrag anzeigen
          - Einer der beiden If-Cases wird nie geschlossen
          […]
          - SQL Syntaxfehler "*from" - da fehlt ein Leerzeichen
          Jein. Es fehlt nur der Klammersatz um den Inhalt des else-Blocks, so wie es da steht gehört nur die 2. $message-Zeile zum else, die nächsten drei Zeilen werden immer ausgeführt. Und nein, nach dem * muss kein Leerzeichen stehen, allerdings möchte das * gerne eine Liste der abzurufenden Spalten sein.

          Zitat von lorenzo Beitrag anzeigen
          ja der PHP-Code soll so im Einsatz sein, könntest du eine überarbeitete Version von dir posten?
          Nein. Das Ändern des Codes ist schon deine Aufgabe, du bekommst nur Hinweise was falsch ist.

          Kommentar


          • #6
            Ich bin hier falsch, ich dachte dass mir Fortgeschrittene weiterhelfen können, ich gehöre in die Anfänger Kategorie!

            Nach meinem Kentnissstand weis ich, wenn im Programmcode der Password Hash eingetragen ist, dass MySQL automatisch dies übernimmt ist das richtig so?
            Meister1900 Danke dir! Jetzt weis ich wenigstens dass ich es Hashen sollte, und kein MD5 / SHA1 verwenden sollte Wie dumm von mir.
            Den mysqli_real_escape_string werde ich nicht weiter verwenden, aber welcher sollte es dann sein für den Password Hash?

            Kommentar


            • #7
              tk1234 die genaue Fehlerbeschreibung kann ich dir gerne sagen, sobald ich mich anmelde, und das Passwort ändern möchte, sehe ich nur einen weißen Bildschirm.

              Das Passwort ist in MySQL in SHA1 gespeichert, er meldet jedoch, dass das Passwort nicht übereinstimmt.


              Wenn das Passwort als sha1-Hash gespeichert ist, warum berechnest du dann den md5-Hash? Das beides falsch ist wurde ja schon geschrieben.

              Neben dem was bereits genannt wurde:

              $pass_encrypt=md5(mysqli_real_escape_string($conn, $_POST['currentPassword']));


              sollte natürlich sha1 heißen, in meinem Fall, aber da ich sowieso das Password hashen werde, hat sich das ganze für mich erledigt.
              Ich weis auch natürlich das ich mehere Fehler im Code habe, jedoch bin ich wie gesagt Anfänger und bin hier in der falschen Kategorie.

              $message = "";
              echo '<script language="javascript">';

              Zu meinen Javascript den will ich noch haben, den finde ich eigentlich ganz schön, den werde ich auf jedenfall auch noch ausbessern, ich werde den neuen Code dann noch posten.
              Klar $Message = ""; hab ich nur ausgelassen für mich, da ich nich genau wusste ob ich jetzt Javascript verwenden sollte, oder doch lieber die PHP Text Ausgabe.

              In der HTML sind diese Werte gespeichert:

              id="currentPassword"
              id="newPassword"
              id="confirmPassword"

              In der HTML verwendet meist PHP den Bezug ist mir aufgefallen, darum habe ich dies gepostet.
              name"currentPassword" id="currentPassword" als Bezug, und weil das auch in der Javascript Datei so stehen muss, damit er den Bezug findet und hat.

              ja der PHP-Code soll so im Einsatz sein, könntest du eine überarbeitete Version von dir posten?



              Nein. Das Ändern des Codes ist schon deine Aufgabe, du bekommst nur Hinweise was falsch ist.

              Sehr schade, dass keiner mir den Code hier überarbeitet mit Password Hash posten kann, denn ich tue mich wirklich sehr schwer, und bin schon etliche Stunden damit beschäftigt, und auch schon ganz leicht überarbeitet,
              auch wenn ich es für mich mache.

              Dennoch Dankeschön, ich werde dann mal weitermachen.

              Schönen Abend, und vielen Dank für die vielen Hilfen!!!

              Kommentar


              • #8
                Zitat von lorenzo Beitrag anzeigen
                Den mysqli_real_escape_string werde ich nicht weiter verwenden, aber welcher sollte es dann sein für den Password Hash?
                Nichts weiter als password_hash
                Den Kontextwechsel brauchst du hier nicht beachten, es bleibt ja PHP

                Zitat von lorenzo Beitrag anzeigen
                tk1234 die genaue Fehlerbeschreibung kann ich dir gerne sagen, sobald ich mich anmelde, und das Passwort ändern möchte, sehe ich nur einen weißen Bildschirm.
                Dann aktiviere mal das Error Reporting:

                PHP-Code:
                ini_set('display_errors'1);
                error_reporting(E_ALL); 
                und prüfe auch https://www.php.net/manual/de/mysqli.error.php
                sorry, shift-taste kaputt

                Kommentar


                • #9
                  Bitte kennzeichne Zitate als solche (entweder über den entsprechenden Button über dem Textfeld oder zumindest mit Zitatzeichen ("> ") davor), dein Posting ist sonst nur schwer lesbar.

                  Zitat von lorenzo Beitrag anzeigen
                  tk1234 die genaue Fehlerbeschreibung kann ich dir gerne sagen, sobald ich mich anmelde, und das Passwort ändern möchte, sehe ich nur einen weißen Bildschirm.

                  Das Passwort ist in MySQL in SHA1 gespeichert, er meldet jedoch, dass das Passwort nicht übereinstimmt.
                  ein weißer Bildschirm ist idR ein Hinweis darauf dass eine Fehlermeldung aufgetreten ist die aufgrund von display_errors=off nicht angezeigt wird - korrigiere die Einstellung, dann solltest du eine Fehlermeldung bekommen.
                  Die Meldung dass das Passwort nicht übereinstimmt bekommst du *immer* da du (wie bereits geschrieben) keine geschweiften Klammern um den else-Block gesetzt hast. Du solltest dir angewöhnen die Klammern immer zu setzen, auch in Fällen in denen sie nicht unbedingt notwendig wären.


                  sollte natürlich sha1 heißen, in meinem Fall, aber da ich sowieso das Password hashen werde, hat sich das ganze für mich erledigt.
                  Auch sha1 und md5 erzeugen (wie auch password_hash()) einen Hash aber ich weiß was du meinst.

                  Zu meinen Javascript den will ich noch haben, den finde ich eigentlich ganz schön,
                  Was du schön findest ist eher Nebensache, wichtig ist was für deine User wollen - und ein Javascript-alert ist ist mit hoher Wahrscheinlichkeit nicht …


                  In der HTML verwendet meist PHP den Bezug ist mir aufgefallen, darum habe ich dies gepostet.
                  name"currentPassword" id="currentPassword" als Bezug, und weil das auch in der Javascript Datei so stehen muss, damit er den Bezug findet und hat.
                  Mit dem HTML- und JS-Code wäre es deutlicher geworden. Und wofür du mit JS auf die Werte zugreifen musst weiß ich nicht, aber IDs sind dafür auf jeden Fall nicht nötig (für label-Elemente aber u.U. schon)

                  Sehr schade, dass keiner mir den Code hier überarbeitet mit Password Hash posten kann, denn ich tue mich wirklich sehr schwer, und bin schon etliche Stunden damit beschäftigt, und auch schon ganz leicht überarbeitet,
                  auch wenn ich es für mich mache.
                  So ist das Board nicht gedacht. Wenn du nur fertigen Code vorgesetzt bekommst lernst du nichts, dafür musst du dir den Code schon selbst erarbeiten (auch wenn es mühsamer ist). Wie passwort_hash() einzusetzen ist steht in den Beispielen aus dem Handbuch (Links stehen in #4), viel mehr ist es nicht.

                  Kommentar


                  • #10
                    Mein Gott vielen Dank, an Meister1900 und tk1234 ich arbeite gerade noch daran so eben wieder, ihr habt mir bisher wirklich viel geholfen!
                    Habt vielen Dank!
                    Sollte mein Code funktionieren, so poste ich ihn natürlich gerne formatiert verständlich!
                    Ich werde in Zukunft die Zitat funktion benutzen! Damit alles übersichtlicher ist!

                    Danke!

                    Kommentar


                    • #11
                      Ich hab jetzt keine Lust mehr... ich bin Stinksauer!
                      Ich hab soviele Möglichkeiten in Betrach gezogen.
                      In meiner MySQL Tabelle steht das Passwort als SHA1.
                      Ich verlasse dieses Forum wieder, da hier sowieso kein Code gepostet wird.
                      Ich habe damit jetzt schon Stunden verbracht, und kapiere es nicht, dass er mein Passwort einfach nicht ändern will.
                      Ich hab sogar anderen Code versucht.
                      Ich mag jetzt nicht mehr, und hab jetzt auch keine Lust mehr.
                      Danke an alle die dennoch geholfen haben!

                      Kommentar


                      • #12
                        Willkommen im Leben eines Programmierers.

                        Kommentar


                        • #13
                          Hallo jonas, kannst du mir denn helfen und meinen Code überarbeiten?
                          Heute bin ich wieder gut, ich versuche es noch einmal, ich setze mich jetzt hin und schreibe noch einmal alles neu!

                          Kommentar


                          • #14
                            Zitat von lorenzo Beitrag anzeigen
                            Hallo jonas, kannst du mir denn helfen und meinen Code überarbeiten?
                            Heute bin ich wieder gut, ich versuche es noch einmal, ich setze mich jetzt hin und schreibe noch einmal alles neu!
                            fertigen Code gibt es nur im Board Scriptbörse (gegen Bezahlung), hier gibt es nur Hilfe zur Selbsthilfe - dafür müsstest du allerdings auch mal den überarbeiteten Code sowie ggf. die Fehlermeldung posten.

                            Kommentar


                            • #15
                              Yep, der Weg ist.

                              1. Du postest Deinen aktuellen Code (innerhalb von PHP-Tags)
                              2. Wir geben Dir Hinweise was nicht richtig ist
                              3. Du setzt diese Hinweise um

                              Kommentar

                              Lädt...
                              X