Login geht in Firefox nicht in IE
Localhorst
- php
Hallo Forum,
ich stehe gerade vor einem komischen Problem.
(Wahrscheinlich ist es nicht komisch und ich habe nur einen blöden Fehler eingebaut, aber leider finde ich keine Lösung)
Es geht um ein Login Script, dass immer sehr gut funktioniert hat. Mir ist aber gerade aufgefallen, dass die Login-Prozedur nicht mit dem Internetexplorer funktioniert wohl aber im Firefox.
Hier mal der Code
<?php
session_start();
require_once('Connections/brain_archive.php');
$myUsername_rsLogin = "0";
if (isset($_POST['name'])) {
$myUsername_rsLogin = (get_magic_quotes_gpc()) ? $_POST['name'] : addslashes($_POST['name']);
echo $_POST['name'];
echo " ==> ".$myUsername_rsLogin;
}
$myPassword_rsLogin = "0";
if (isset($_POST['pw'])) {
$myPassword_rsLogin = (get_magic_quotes_gpc()) ? $_POST['pw'] : addslashes($_POST['pw']);
$myPassword_rsLogin=md5($myPassword_rsLogin);
echo $_POST['pw'];
echo " ==> ".$myPassword_rsLogin;
}
mysql_select_db($database_brain_archive, $brain_archive);
// Verify Login is correct
$query_rsLogin = sprintf("SELECT id,name,vorname, pw,admin FROM user WHERE name = '%s' AND pw = '%s' AND status!=0", $myUsername_rsLogin,$myPassword_rsLogin);
echo $query_rsLogin;
$rsLogin = mysql_query($query_rsLogin, $brain_archive) or die(mysql_error());
$row_rsLogin = mysql_fetch_assoc($rsLogin);
$totalRows_rsLogin = mysql_num_rows($rsLogin);
// Buzz inet PHPLSSE01 - Login & Set Session - Main
if($_POST['action']=="login"){
if($totalRows_rsLogin==0){
echo "Teil1<br>";
$errorMessage = "Wrong password, please try again.";
mysql_free_result($rsLogin);
} else {
echo "Teil2<br>";
mysql_free_result($rsLogin);
session_register("user");
$_SESSION['user'] = $_POST['name'];
$_SESSION['user_id'] = $row_rsLogin['id'];
$_SESSION['admin'] = $row_rsLogin['admin'];
$_SESSION['vorname'] = $row_rsLogin['vorname'];
echo "<pre>".print_r($_SESSION)."</pre>";
header("Location: index.php");
}
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/index.dwt.php" codeOutsideHTMLIsLocked="false" -->
......
Die vielen echos sind natürlich nur zur Fehlerausgabe. Bzw. um zu sehen, wann das Script wo ist.
Also wie gesagt, im Firefox klappt alles.
Wenn ich bei User und PW nichts eingebe, geht das Script, wie es auch soll in folgende Zeilen
if($totalRows_rsLogin==0){
echo "Teil1<br>";
$errorMessage = "Wrong password, please try again.";
mysql_free_result($rsLogin);
}
und gibt die Fehlermeldung aus.
Wenn ich falsche User oder PW Daten eingebe, geht er auch in dieses Zeilen und gibt die Fehlermeldung aus. Oben drein werden auch noch die ersten Fehlerechos ausgegeben.
Also folgende => (mit den entsprechenden Werten der Variabeln $_POST['name'] und $_POST['pw'])
$myUsername_rsLogin = "0";
if (isset($_POST['name'])) {
$myUsername_rsLogin = (get_magic_quotes_gpc()) ? $_POST['name'] : addslashes($_POST['name']);
echo $_POST['name'];
echo " ==> ".$myUsername_rsLogin;
}
$myPassword_rsLogin = "0";
if (isset($_POST['pw'])) {
$myPassword_rsLogin = (get_magic_quotes_gpc()) ? $_POST['pw'] : addslashes($_POST['pw']);
$myPassword_rsLogin=md5($myPassword_rsLogin);
echo $_POST['pw'];
echo " ==> ".$myPassword_rsLogin;
}
Nur wenn ich richtige User Daten benutze, geht er nicht in die Zeilen hier drüber, sondern gibt den sql string mit O anstatt der eigentlichen Werte wieder.
Daraus schließe ich, dass
$myUsername_rsLogin = "0";
if (isset($_POST['name'])) {
nicht erfüllt ist und deshalb, der Wert 0 bleibt.
Aber warum?
Bei falschen Userdaten klappt die Post Variabeln Übergabe.
Finde es wie gesaqt sehr komisch und würde mich über einen kleinen Wink freuen. (Selbst über einen mit dem Zaunpfahl)
Gruß
Localhost
Ich habe gerade noch mal weiter getestet und dabei festgestellt, das der Login auf meinem localen System auch mit dem Internetexplorer funktioniert.
Kann es was mit den SuperGlobals zutun haben?
Finde es nur komisch, dass die Übergabe mit den laschen PW´s klappt..
echo $begrüßung;
[...] würde mich über einen kleinen Wink freuen. (Selbst über einen mit dem Zaunpfahl)
Nur ein kleiner Tipp, ohne dass ich mir deinen Code genauer angesehen habe: Verwende zur Kontrollausgabe var_dump(). Das gibt nicht nur den Variableninhalt aus, sondern auch deren Typ. Du kannst es obendrein auch mit kompletten Ausdrücken füttern, z.B. mit denen, die du in den if-Anweisungen verwendet hast. Somit kannst du dir ansehen, was das genaue Ergebnis des jeweiligen Ausdrucks ist, und damit erkennen, warum if den einen oder anderen Weg einschlägt.
echo "$verabschiedung $name";