Hi, andreas!
Ich habe keine Ahnung, aber ich denke mal, daß irgendwas schief geht, worauf man beim Betrachten des Codes nicht kommt. Schau einfach, daß Du überall ein paar Echo's reinpflanzt, so mach ich's dann immer, also etwa so die Art:
echo "variable=$variable<br>";
und mach das mit allen notwendigen Variablen an allen Stellen, die Dir notwendig erscheinen. Oft finde ich nur so den Fehler, denn plötzlich ist da ein Array scheinbar leer, obwohl man es doch mit Inhalten gefüllt hat oder so. Wenn Du weißt, an Stelle X fliegt er raus, dann setz am besten davor so ein echo und bei If-Anweisungen im IF-Zweig und im ELSE-Zweig bzw. dahinter auch. Wenn er also nach dem Hash rausfliegt, dann mach einfach:
echo "hash=$hash<br>benutzer[pass]=$benutzer[pass]";
Wahrscheinlich sind aus irgendeinem Grund die Werte nicht gleich, denn daß die If-Abfrage spinnt ist eher unwahrscheinlich. Dann mußt Du eben weiterschauen: Warum ist es nicht gleich? steht überhaupt in beiden was drin --> wieder ein echo einschieben und immer wieder im Browser gucken, was in den Variablen drinsteht. Das kann manchmal richtig lange dauern, aber es ist der einzige Weg, um den Fehler zu finden.
Wenn Du dabei versuchst, systematisch vorzugehen, findest Du den Fehler auch. Also von der Stelle an, bei der ein Feher auftritt quasi immer weiter rückwärts gehen.
Weiter kann ich Dir erstmal nicht helfen.
Grüsse
Andreas