Beiträge von SinnlosS

    Um genau zu sein verschlüsselt md5() nicht. md5() ist ein Hashverfahren, und die sind nicht rückrechenbar.
    D.h. ein String ergibt wenn er mit md5() gehasht wird immer den gleichen 32-Zeichen-String (Hash) der nicht zurückgerechnet werden kann. Da aber eben immer der gleiche Hash generiert wird können die Passwörter aber trotzdem abgeglichen werden. Beim Login hasht man einfach das vom User eingegebene Passwort und vergleicht diesen Hash-Wert dann mit dem der in der Datenbank hinterlegt ist.
    Das erste md5() bei der Generierung des Passwortes $pass in deinem Script hat aber noch nichts mit der Form zu tun, in der es dann in der Datenbank abgelegt wird (ob jetzt gehasht oder verschlüsselt). Es geht ja da erstmal um das Passwort im Klartext, md5() ist an der Stelle nur ein Hilfsmittel zur Erstellung eines zufälligen Passwortes.
    microtime() gibt den aktuellen Unix-Timestamp mit Mikrosekunden zurück. Dieser Timestamp wird dann mittels md5() gehasht um einen 32-Zeichen-String aus Zahlen und Buchstaben zu erhalten. Da 32 willkürliche Zeichen aber arg lang sind für ein Klartextpasswort wird dieser String noch mittels substr() auf 8 Zeichen gekürzt.
    Was dann in $pass gespeichert wird ist also ein 8-Zeichen-String aus Zahlen und Buchstaben. Das ist das neue Passwort des Users im Klartext, wie es auch an ihn verschickt wird.

    Wie dieses Passwort dann für die Datenbank verschlüsselt oder gehasht wird braucht nur bei der Übergabe des Passworts an die Datenbank festgelegt werden.
    Wenn du deine Passwörter verschlüsseln willst (um die Möglichkeit zum entschlüsseln zu haben) solltest du dir mal AES oder RSA anschauen. Dann brauchst du allerdings auch keine Funktion die dir ein neues Passwort generiert, weil du dann ja die Möglichkeit hast den Usern in der "Passwort vergessen"-Funktion ihr aktuelles Passwort entschlüsselt mitzuteilen.

    Wenn du die Passwörter hashen möchtest kannst du dir sha1 oder md5 anschauen. Da solltest du allerdings zusätzlich einen Salt verwenden (ein String der vor dem hashen an die Passwörter gehängt wird), da es besonders für md5 mittlerweile sehr umfangreiche Rainbow-Tables gibt (Tabellen die Strings und ihre zugehörigen md5-Hashs abbilden).

    Setz mal als ganz an den Anfang deines Scriptes diese beiden Zeilen:

    PHP
    ini_set("display_errors",1);
    error_reporting(E_ALL);


    Dann schau mal ob dir ein Fehler ausgegeben wird beim include_once().

    Und dann poste mal bitte noch deine include/navi.inc.php

    Peinlich, aber mir ist erst jetzt aufgefallen, dass ich es viel zu oft per Hand mach:



    Doppelpunkte schützen vor Mißverständnissen :D

    Wozu genau ist denn der Code gut?


    Die hier verwende ich häufiger Mal:

    An der Stelle wo du das Passwort updaten möchtest schreibst du

    PHP
    $sql = "UPDATE
                            ft_user
                        SET
                            pass = '".chr(trim($pass))."'
                        WHERE
                            email = '".mysql_real_escape_string(trim($_POST['email']))."'
                       ";


    Da sollst du einfach mal ein

    PHP
    echo $sql;


    hintersetzen. Dann kannst du sehen wie der Query aussieht und was für die Variablen eingesetzt wird. Ich möchte wetten, dass in dem Query dann steht "... SET pass='' WHERE ..."
    Wo hast du denn eigentlich die Passwortgenerierung her? chr() sagte mir jetzt spontan nichts, noch nie verwendet, aber ich vermute mal, dass das Problem damit zusammenhängt. Ansonsten sieht das nämlich alles soweit erstmal richtig aus.

    Wird wohl daran liegen, dass chr(trim($pass)) in deinem UPDATE-Befehl einen leeren String zurückgibt. Andernfalls würde das Passwort ja nicht "gelöscht" werden. (gelöscht wird es ja nicht, sondern auf einen leeren Wert gesetzt)
    Gib dir mal beim UPDATE dein $sql aus.

    Einzige Alternative die ich wüßte wäre eben ein mehrdimensionales Array. Das wäre garantiert auch die sauberste Lösung.
    Selbst wenn es bei JavaScript noch andere Möglichkeiten neben eval() zur Handhabung variabler Variablen gibt, wird das dadurch trotzdem nicht schöner.
    Ich würde da lieber das Script umschreiben. Soviel Arbeit sollte das mit Strg+F vermutlich nicht sein.

    Ok, grade nochmal getestet.
    Bei meinem ersten Test hatte ich das onclick-Event beim submit-Button noch drin. Aus irgendeinem Grund scheint die Funktion Login() nicht aus dem onsubmit-Event ausgelöst zu werden.

    Ändere im form-tag mal das onsubmit-Event nur auf "return false;" und setze beim Submit-Button das onclick-Event "Login(this.form);"

    Dann klappt es.

    So macht es genau was du möchtest.

    onsubmit="return false;" <-- Damit hinderst du den Browser nur daran, das Formular abzuschicken (sofern Javascript aktiviert ist).

    Ich bin kein JavaScript-Experte und mit Wordpress habe ich mich auch noch nie beschäftigt, keine Ahnung ob da irgendwo automatisch window.open blockiert wird, kann ich mir aber eigentlich nicht vorstellen.
    window.open ist auf jedenfall erstmal richtig.

    Setze dein form-tag mal folgendermaßen:

    HTML
    <form action="" name="login" onsubmit="Login(this);return false;">


    Das onclick-Event beim submit-Button kannst du dann entfernen. Hat den Vorteil, dass die Funktion auch beim drücken von <Enter> in einem Eingabefeld ausgelöst wird.
    Wenn das nicht funktioniert schau mal was die Fehlerkonsole ausspuckt (Google Chrome hat zum Beispiel hervorragende Debug-Infos die über Strg+Shift+J anzeigbar sind).

    Hier auch mal ein Popup-Generator, der Javascript-Code sollte auf jedenfall funktionieren, wenn nicht seitens Wordpress da irgendwas geblockt wird:
    http://www.javatop.de/scripte2/popupgenerator.htm


    Edit: In deinem Beispielcode aus dem Eröffnungspost setzt du übrigens window.location, und das bezieht sich auf das aktuelle Fenster. Das dir der Code kein Popup öffnet ist klar.

    Erstmal: Java und JavaScript sind zwei völlig verschiedene Sprachen und haben außer einem ähnlichen Namen nichts miteinander am Hut.

    http://www.google.de/#hl=de&xhr=t&q…824fd8fc8d3bdb3

    Deinem Formular gibst du dann noch das attribut: onsubmit="return false;"
    Außerdem sollte zum einen das form-tag geschlossen werden. Zum Anderen gehören Werte für Attribute von HTML-Tags in Hochkommata.
    Z.B.

    HTML
    <form name="login">
    <input type="text" name="username" size="20">
    etc.

    Na, wenigstens einer der eine klare Meinung geben kann.

    Im Endeffekt bleib ich dabei, dass das php informationstechnisch ins Mittelalter gehören sollte.

    Bei den paar Milliarden die einige Unternehmen verdienen, könnten die ruhig eine dynamische, benutzerfreundliche und vielleicht eine auf die menschliche Sprache angepasste Software entwickeln. Dann würden wir uns mal auch so langsam aus dem informationstechnischen Mittelalter weiterentwickeln.. kann ja echt nicht sein, dass man mal an einem String oder Kommata oder so einem Mist, Stunden verbringt....

    Kein Wunder warum vieles einfach nur hackbar ist...



    Du kannst doch nur ein Troll sein. So dumm/lernresistent kann niemand sein.
    Also wenn du einfach nur über PHP abkotzen willst, und überhaupt kein Interesse daran hast dein Problem zu lösen, dann machst du das prima. In diesem Forum bist du dann allerdings falsch.