Beni: MD5 und IE?

Hallo!
Ich habe seit einigen Tagen das Problem, dass mein Login mit firefox 1.0.3 funktioniert, mit IE 5.0+ allerdings nicht...
ich habe die formelemente im Verdacht, ich denke, dass vielleicht der IE die formulareingaben anders übergibt als der firefox...
Das Passwort wird bei beiden korrekt gehashed und zum Server übertragen, es liegt also sicher an irgendeinem Unterschied FF/IE.

Die Frage ist nur, was genau funktioniert nicht?

der JS-code:
function encode_and_send(login_formular){
                var key = '{/literal}{php}echo session_id();{/php}{literal}';
                login_formular.login_p.value = MD5(MD5(login_formular.login_p.value)+key);
                login_formular.submit();
}
Erklärung:
Ich arbeite mit der SMARTY-Template engine, diese schreibt vor dem senden an den Browser die aktuelle session-id in die javascriptvariable.

Im HTML steht nun folgendes Formular:
<form action="management.php" method="POST">
[...]
<tr>
        <th>Passwort:</th>
        <td><input type="password" name="login_p"></td>
</tr>
<tr>
        <td></td>
        <td><button name="action" value="login" onclick="encode_and_send(this.form)">einloggen</button></td>
[...]
Beim Klick auf den button wird also nun der wert im passwortfeld überschrieben und das Formular anschliessend abgesendet.

Was sehr interessant ist, ist wenn ich im javascript im button ein "return false;" hinzufüge wie auf der selhtml-seite, weder FF noch IE funktionieren, obwohl korrekt gehashed wird.

Ich hoffe, jemand weiss, woran das liegen könnte, ich bin nach endloser testerei mit meinem Latein am ende...
Vielen Dank schonmal!

  1. echo $begrüßung;

    Das Passwort wird bei beiden korrekt gehashed und zum Server übertragen, es liegt also sicher an irgendeinem Unterschied FF/IE.

    Wie hast du das geprüft und wieso hast du dann nicht auch den (möglichen) Unterschied, zwischen dem was die beiden Browser senden, gefunden?

    Wenn, wie du sagst, das Javascript "funktioniert"[1], dann sieht das nach einem Verarbeitungsfehler auf der Serverseite aus.

    Die Frage ist nur, was genau funktioniert nicht?

    var key = '{/literal}{php}echo session_id();{/php}{literal}';

    [...]

    Ich arbeite mit der SMARTY-Template engine, diese schreibt vor dem senden an den Browser die aktuelle session-id in die javascriptvariable.

    Wie der Javascript-Code erzeugt wird ist nicht relevant. Wenn du darin den Fehler vermutest, interessiert nur das was der Ausführende erhält.

    <td><button name="action" value="login" onclick="encode_and_send(this.form)">einloggen</button></td>

    Laut MSDN ist der Default-Wert für das Attribut type beim IE "button". Laut HTML 4.01-Spezifikation ist das aber "submit". Ergibt es eine Änderung wenn du das Type-Attribut angibst ("button" empfiehlt sich in dem Fall)?

    echo "$verabschiedung $name";

    [1] "funktioniert" und "funktioniert nicht" sind für eine Fehlersuche unzureichend. Eine Aussage, was erwartet wird und was (stattdessen) kommt ist hilfreicher.

  2. Hi!

    <button name="action" value="login" onclick="encode_and_send(this.form)">einloggen</button></td>
    Beim Klick auf den button wird also nun der wert im passwortfeld überschrieben und das Formular anschliessend abgesendet.

    glaubst du ;-)

    Was sehr interessant ist, ist wenn ich im javascript im button ein "return false;" hinzufüge wie auf der selhtml-seite, weder FF noch IE funktionieren, obwohl korrekt gehashed wird.

    Wo wird gehashed? Woran merkst du das? Allerdings hab ich beim IE letztens festgestellt, dass er zuerst submitted und danach den Wert des Eingabefeldes ändert.

    Gruß

    Martin