PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LoginFeldUnterschiede bei IE und Firefox



Masterphil
02.06.2009, 00:26
Hallo, ich habe heute mal wieder an einen meiner geplanten Projekte gefeilt und dabei eine seltsame Entdeckung gemacht.

Es geht um den Login, oder wohl eher um den LoginButton.

Diesen habe ich einmal als Grafik und einmal als StandartKlickfläche, hier mal der Code von beiden Logins.




<form action="" method="post">
<table width="100%" align="center" cellpadding="0" cellspacing="0" border="0">
<tr>
<td align="center">
<b>Nickname:</b><br>
<input type="Text" name="nickname" value="<?=$_POST['nickname'];?>" style="width=110px;"><br>
<b>Passwort:</b><br>
<input type="Password" name="passwort" value="" style="width=110px;"><br>
<select name="autologin" size="1" style="width=110px;">
<option value="true" SELECTED>Mit Autologin&nbsp;</option>
<option value="false">Ohne Autologin&nbsp;</option>
</select><br>
<br>
<input type="image" name="checkid" value="Login" src="../images/log.png"><br><br>
</td>
</tr>
<tr>
<td height="15" align="left">
<img src="images/pfeil.gif" border="0" alt="">&nbsp;<a href="?content=/intern/daten">Daten vergessen?</a>
</td>
</tr>
<tr>
<td height="15" align="left">
<img src="images/pfeil.gif" border="0" alt="">&nbsp;<a href="?content=/intern/anmelden">Registrieren</a>
</td>
</tr>
</table>
</form>




<form action="" method="post">
<table width="100%" align="center" cellpadding="0" cellspacing="0" border="0">
<tr>
<td align="center">
<b>Nickname:</b><br>
<input type="Text" name="nickname" value="<?=$_POST['nickname'];?>" style="width=110px;"><br>
<b>Passwort:</b><br>
<input type="Password" name="passwort" value="" style="width=110px;"><br>
<select name="autologin" size="1" style="width=110px;">
<option value="true" SELECTED>Mit Autologin&nbsp;</option>
<option value="false">Ohne Autologin&nbsp;</option>
</select><br>
<br>
<input type="Submit" name="checkid" value="Login" style="width=110px;"><br><br>
</td>
</tr>
<tr>
<td height="15" align="left">
<img src="images/pfeil.gif" border="0" alt="">&nbsp;<a href="?content=/intern/daten">Daten vergessen?</a>
</td>
</tr>
<tr>
<td height="15" align="left">
<img src="images/pfeil.gif" border="0" alt="">&nbsp;<a href="?content=/intern/anmelden">Registrieren</a>
</td>
</tr>
</table>
</form>


Nun zum Problem.

Der Login klappt mit Firefox bei Beiden Versionen, im IE7 hingegen nur bei dem ohne Grafik.

Kann mir vielleicht jemand sagen woran das liegen könnte?

MfG

eRaaaa
02.06.2009, 00:45
ist nen altes IE problem. lass dir mal die post-variable ausgeben, da sollte dann POST['checkid'] fehlen (was dann bei der login abfrage in der session.lib natürlich fehlt), bzw ie macht dann einmal checkid_x und checkid_y....

d.h. du könntest in der if-abfrage in der session.lib einfach noch die beiden variablen POST['checkid_x'] und POST['checkid_y'] abfragen..(beispielsweise mit isset)...

p.s.: mit IE8 gehts, oder?

Masterphil
02.06.2009, 01:30
IE 8 habe ich bisher noch nicht installiert, da ich mich doch mit dem 7er mit Pro-Addon anfreunden konnte, daher weiß ich nicht wie es bei dem 8er genau aussieht.

Aber danke schonmal für diese erste Idee woran es liegt.

Und wie kann ich das Prbolem lösen? Sodass der GrafikLoginButton auch im alten IE funktioniert ?

MfG

Xenon
02.06.2009, 09:15
Ich habe den IE 8.0.6001.18762 , ich könnte es testen hast du die Seite inkl. Demo Zugang damit ich es testen kann , Daten bitte per PN ?

eRaaaa
02.06.2009, 09:27
Und wie kann ich das Prbolem lösen? Sodass der GrafikLoginButton auch im alten IE funktioniert ?

MfG

hab ich doch oben geschrieben....der alte ie sendet beim klick auf die grafik 2 post variablen checkid_x und checkid_y, mit den koordinaten des klicks auf dem bild...also musst du einfach in der session.lib, diese beiden variablen mit isset z.b. abfragen (eine reicht vllt auch schon). oder du machst einfach ein unsichtbares (hidden) feld z.b. oder if($_POST[checkid_x] > 0) sollte vllt auch schon genügen...

ps.: also ich habs jetzt auch mit dem IE8 getestet, wird immernoch nur die koordinaten übergeben. im opera ist es übrigens das selbe ;)
safari, firefox und chrome hingegen laufen (mehr browser hab ich nicht ;D)

Masterphil
10.06.2009, 00:28
So, ich habe mich mal daran probiert die Lösung mit den 2 Variablen in der session.lib umzusetzen.

Ich sag schonmal das es so nicht klappt, der Fehler besteht weiterhin.



// Variabeln definieren
if (!isset($_SESSION['login'])) $_SESSION['login'] = "";
if (!isset($_SESSION['werber'])) $_SESSION['werber'] = "0";
if (!isset($_SESSION['uid'])) $_SESSION['uid'] = "0";
if (!isset($_POST['userid'])) $_POST['userid'] = "";
if (!isset($_POST['passwort'])) $_POST['passwort'] = "";
if (!isset($_POST['checkid'])) $_POST['checkid'] = "";
if (!isset($_POST['autologin'])) $_POST['autologin'] = "";

//Edit By Masterphil (09.06.2009)
if (!isset($_POST['checkid_x'])) $_POST['checkid_x'] = "";
if (!isset($_POST['checkid_y'])) $_POST['checkid_y'] = "";
//Edit Ende

if (!isset($_GET['logout'])) $_GET['logout'] = "";
if (!isset($_GET['ref'])) $_GET['ref'] = "0";


Da merkt man mal wieder wieviel Ahnung ich von Php, Variablen und Co habe.

Hoffentlich kann hier einer sagen was an meinem eingefügten Code nicht stimmt.

MfG

und eine gute Nacht euch allen.

eRaaaa
10.06.2009, 08:36
hehe, ok ich hab dich wahrscheinlich verwirrt mit dem isset ;)

ich meinte aber natürlich die andere if-abfrage:


if ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['passwort']) {
.......
}


und vllt würde ja sowas hier helfen(funktioniert mit sicherheit, obs die beste variante ist, kann ich dir auch nicht sagen):



if (($_POST['checkid'] == 'Login' OR $_POST['checkid_x']>0) && $_POST['nickname'] && $_POST['passwort']) {
.......
}

Masterphil
11.06.2009, 00:08
Ein großes Dankeschön an eRaaaa.

Nun klappt der Login wie er soll.

Ich mache hier dann mal zu.

MfG