Hallo,
mir ist gestern ein ziemliches Problem aufgefallen. Von mir entwickelte Seiten funktionieren einwandfrei mit dem Firefox, aber mit keinem anderen Browser (weder IE, noch Chrome, noch Safari)
So funktioniert bereits der Login auf der Startseite nicht.
Hier wird geprüft, ob eine Session existiert und wenn nicht, die Login-Form angezeigt.
Beim Abschicken wird über Ajax die Daten geprüft und das Ergebnis zurückgegeben.
Dieses wird testweise dann in einem Div angezeigt. Aber selbst das funktioniert auch schon nicht.
Weder IE, noch Chrome, noch Safari deuten irgendeinen Fehler an, was die Fehlersuche für mich deutlich erschwert.
Für mich sieht es so aus, als ob der ganze Ajax-Aufruf erst gar nicht ausgeführt wird.
Denn ein Alert(resulttext) direkt nach der resulttext-Zuweisung wird auch nicht ausgeführt.
Kann mir jemand einen Tip geben, was ich ändern muss, damit die anderen Browser den Code auch korrekt ausführen?
Die Login-Form sieht so aus:
<script type="text/javascript" language="javascript">
function doLogin() {
var formdaten = serialize(document.loginform);
var req = createXMLHttpRequest();
req.onreadystatechange = function() {
switch(req.readyState) {
case 0:
case 1:
case 2:
case 3: return;
case 4: break;
}
resulttext = req.responseText;
if (resulttext.search("Success") >= 0) {
// window.location="index.php";
document.getElementById('loginresult').innerHTML = resulttext;
document.getElementById('loginresult').style.display = "block";
document.getElementById('logininfo').style.display = "none";
} else {
document.getElementById('loginresult').innerHTML = resulttext;
document.getElementById('loginresult').style.display = "block";
document.getElementById('logininfo').style.display = "none";
}
}
url = "<?=$pfadhtml;?>/templates/do_login.php";
req.open('post', url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", formdaten.length);
req.setRequestHeader("Connection", "close");
req.send(formdaten);
return false;
}
</script>
<div id="loginresult" class="error center" style="width:250px; display:none;"><span class="sonderzeichen error-symbol"></span>Fehler</div>
<div id="logininfo" class="info shadow width_3">
Einige Inhalte stehen nur authentifizierten Benutzern zur Verfügung. Bitte melden Sie sich hier an.<br/>
Sollten Sie noch über keine Zugangsdaten verfügen, setzen Sie sich mit Ihrer IT-Technik in Verbindung.
</div>
<div id="form-wrapper" class="width_3">
<form name="loginform" method="post" action="#" onsubmit="return doLogin();">
<label for="loginname">Login:</label>
<input type="text" id="loginname" name="loginname" value="" required="required" />
<label for="password">Passwort:</label>
<input type="password" id="password" name="password" value="" required="required" />
<br/>
eingeloggt bleiben?
<span class="custom-checkbox">
<input type="checkbox" name="stayloggedin" id="stayloggedin" />
<span class="box"><span class="tick"></span></span>
</span>
<div class="clear"></div>
<input class="button" type="submit" value="Einloggen" />
</form>
</div>
Das Ajax-Script sieht so aus:
header("Content-Type: text/html; charset=iso-8859-1");
require('/grab_globals.lib.php');
include "/config.php";
include ("$pfadphp/templates/toolbox.php");
session_start();
$verbindung = @mysql_connect($server,$login,$pass);
$test_pw = md5($password);
$abfrage = "select anzeigename,loginname from userlogins where loginname='$loginname' AND password='$test_pw'";
$erg = mysql_db_query($dbname,$abfrage,$verbindung);
$anz = mysql_num_rows($erg);
if ($anz > 0) {
$row = mysql_fetch_array($erg);
extract($row);
$_SESSION['Benutzername'] = $loginname;
if ($stayloggedin == "on") {
$md5name = md5($loginname);
$cookievar = $loginname.",".$md5name;
setcookie("cookievar",$cookievar,time()+(3600*24*100));
$abfrage = "update userlogins set cookievar = '$md5name' where loginname = '$loginname'";
$erg = mysql_db_query($dbname,$abfrage,$verbindung);
echo $abfrage;
}
echo "--Success--";
} else {
@session_destroy();
echo "Anmeldung fehlgeschlagen.";
}
mysql_close($verbindung);