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.