Passwort Ändern

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Spitzer

Mitglied
23 März 2020
73
0
6
21
Hay

habe mich gerade nochmals informiert.
entspricht das mehr deiner Vorstellung?


habs mal so versucht anzupassen.

PHP:
$old_password        = mysqli_real_escape_string ($db, $_POST['old_password']);
    $new_password        = mysqli_real_escape_string ($db, $_POST['new_password']);
    $confirm_password    = mysqli_real_escape_string ($db, $_POST['confirm_password']);
Du hast das Prinzip des Kontextwechsels noch nicht verstanden: das htmlspecialchars() in dem Code ist falsch und der Kontextwechsel zu SQL wird überhaupt nicht behandelt. Zudem ist md5() nicht geeignet Passwörter zu hashen (nicht verschlüsseln!), verwende password_hash().
Weitere im Thread bereits genannte Fehler sind ebenfalls noch drin - setzen, 6.
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.417
176
63
Ich denke es ist vielleicht nicht perfekt
Richtig, davon bist du noch weit entfernt.
PHP:
$old_password        = mysqli_real_escape_string ($db, $_POST['old_password']);
$new_password        = mysqli_real_escape_string ($db, $_POST['new_password']);
$confirm_password    = mysqli_real_escape_string ($db, $_POST['confirm_password']);
Du mischt wieder mal den objektorientierten und den prozeduraler Stil, das kann nicht funktionieren.
 

tk1234

Mitglied
2 September 2020
64
17
8
entspricht das mehr deiner Vorstellung?
Jein. mysqli_real_escape_string() ist zwar die richtige Funktion um den Kontextwechsel zu SQL zu behandeln (mit der von m.scatello bereits genannten Einschränkung), aber du willst den Kontextwechsel an der falschen Stelle behandeln, die Behandlung darf erst beim Einbau in das Query erfolgen, nicht irgendwo vorher - mal abgesehen davon dass das alte Passwort nicht in den Query eingebaut wird und hier damit überhaupt kein zu behandelnder Kontextwechsel stattfindet. Das Problem hast du immer noch nicht verstanden, Nachsitzen.
 

Spitzer

Mitglied
23 März 2020
73
0
6
21
Hay habe mich etwas durch diverse foren geforscht und folgendes gefunden und mal angepasst wie ich das verstanden habe:

wäre der Kontext Wechsel so korrekt?

PHP:
$update_query =    "update user set password "?" WHERE user='$name' VALUES (
                '"mysql_real_escape_string($new_password)"'
                )";
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.417
176
63
Es wird schlimmer statt besser. :frown:

Entscheide dich endlich mal, was du machen willst! Objektorientierter und prozeduraler Stil? Mischen geht nicht! Und aus welchem museumsreifen Hinweis hast du mysql_real_escape_string?
Es wäre wirklich mal an der Zeit, dass du es mit logischem Denken anstatt mit Raten versuchst,
 

Spitzer

Mitglied
23 März 2020
73
0
6
21
Es wird schlimmer statt besser. :frown:

Entscheide dich endlich mal, was du machen willst! Objektorientierter und prozeduraler Stil? Mischen geht nicht! Und aus welchem museumsreifen Hinweis hast du mysql_real_escape_string?
Es wäre wirklich mal an der Zeit, dass du es mit logischem Denken anstatt mit Raten versuchst,


Hay. dass kann ja nicht sein dass ich mich durch Foren wälze und alles was ich finde und versuche zu interpretieren bereits in den anderen Foren falsch ist aber als richtig angesehen wird.


Ich habe gelesen das der objektive weg besser sei aber etwas schwieriger für den Anfang daher versuche ich möglichst Diessen weg zu Lernen.
mysqli_real_escape_string()
Bitte verstehe mich nicht falsch will nicht frech sein. aber wieso sagt dann hier tk1234 dass es die richtige Funktion aber falsch verwendet sei?

Ich habe dann halt gesucht wie ich das anwenden könnte und das war ein Beispiel.

Ich versuche logisch zudenken aber es fällt mir gerade nicht einfach es ist etwas schwieriger für mich als unerfahrener.
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.417
176
63
Du hast mysql_real_escape_string geschrieben, diese Funktion ist veraltet und wird von PHP 7 nicht mehr unterstützt. mysqli_real_escape_string ist eine andere Funktion als mysql_real_escape_string, kleiner aber feiner Unterschied ist das i

Mal ganz davon abgesehen, dass bei deinem mysql_real_escape_string ein Punkt davor und danach fehlt.
 

Spitzer

Mitglied
23 März 2020
73
0
6
21
Du hast mysql_real_escape_string geschrieben, diese Funktion ist veraltet und wird von PHP 7 nicht mehr unterstützt. mysqli_real_escape_string ist eine andere Funktion als mysql_real_escape_string, kleiner aber feiner Unterschied ist das i

Mal ganz davon abgesehen, dass bei deinem mysql_real_escape_string ein Punkt davor und danach fehlt.
Oof dann halte ich mein maul. Also schon mal ein schritt weiter!

nächste frage dieser Lösungs Ansatz ist der völlige schei**e oder nicht? ich weiss objektive und prozentual ist vermischt aber soll ich mich daran setzten und das klären oder ist der ansatzt schon schlecht?
$update_query = "update user set password "?" WHERE user='$name' VALUES ( '"mysql_real_escape_string($new_password)"' )";
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.417
176
63
Nochmal:
Entscheide dich endlich mal, was du machen willst! Objektorientierter und prozeduraler Stil?
Und wenn du dich entschieden hast, dann schreibst du das Script von oben bist unten in einem der beiden Stile um. Vorher brauchen wir über dein Script gar nicht weiter reden, weil
  1. Stile gemischt werden
  2. Du immer noch nicht alle Hinweise umgesetzt hast.
 

tk1234

Mitglied
2 September 2020
64
17
8
Neben dem bereits geschriebenen:
$update_query = "update user set password "?" WHERE user='$name' VALUES ( '"mysql_real_escape_string($new_password)"' )";
Der SQL-Query muss natürlich auch gültiges SQL sein, die Zeile ist es nicht (vom PHP-Syntaxfehler mal ganz zu schweigen). Schreib erstmal den SQL-Query ohne Werte, und erst dann baust du die Werte unter Beachtung des Kontextwechsels ein (auch $name muss behandelt werden!).
Dein »?« vor WHERE deutet darauf hin dass du auch was zu prepared Statements gelesen hast? Die kannst du natürlich zum Behandeln des Kontextwechsels auch nehmen, aber wie m.scatello schon bezüglich objektorientiert/prozedural schrieb: entscheide dich für eine Variante und zieh die dann durch, mischen funktioniert nicht, das gilt hier auch.
 
Werbung: