Hi.
Ich habe 2 Probleme mit nem grafischen Login, an den ich mich mal rangetraut habe:
Und zwar das erste (das größere von beiden):
Ich kann die Loginseite, indem der grafische Login mit verwendet wird nur
im IE aufrufen, in allen anderen Browsern (Opera etc, Netscape nicht getestet) funktioniert das ding garnicht, bzw wird nicht angezeigt.
Problem Nr.2: Wenn der Code oder ein anderes Feld beim login falsch
eingegeben wurde soll die Grafik mit dem Code neu angezeigt werden, aber halt mit dem neuen Code. Das Prob hierbei ist, dass zwar der Code
weiter generiert wird, aber die alte Grafik immernoch stehenbleibt. Somit bekommt man immer nen falschen Code vorgesetzt. Ich weiß, dass man
seiten per JS mit location.reload(); refreshen kann, aber wie stelle ich das
an, wenn ich das nur bei ner Fehleingabe haben will?
Habt ihr ne Idee was da verkehrt läuft?
Hier nun der Code dazu (ungekürzt, da ich ned weiß was ich da hätte
rauskürzen sollen ^^):
Hab das mal soweit auskommentiert, hoffe es reicht.
Zwecks der Codeübergabe hab ich mich schonmal schlau gemacht (steht ja auch hier im Forum was). So wie der atm übergeben wird ist das rel. unsicher, denn der kann im Quelltext nachgelesen werden. Glaube anders ging das mit Zwischenspeichern in ner DB oder so.
Bedanke mich schonmal für die Hilfe
Gruß Dark
Ich habe 2 Probleme mit nem grafischen Login, an den ich mich mal rangetraut habe:
Und zwar das erste (das größere von beiden):
Ich kann die Loginseite, indem der grafische Login mit verwendet wird nur
im IE aufrufen, in allen anderen Browsern (Opera etc, Netscape nicht getestet) funktioniert das ding garnicht, bzw wird nicht angezeigt.
Problem Nr.2: Wenn der Code oder ein anderes Feld beim login falsch
eingegeben wurde soll die Grafik mit dem Code neu angezeigt werden, aber halt mit dem neuen Code. Das Prob hierbei ist, dass zwar der Code
weiter generiert wird, aber die alte Grafik immernoch stehenbleibt. Somit bekommt man immer nen falschen Code vorgesetzt. Ich weiß, dass man
seiten per JS mit location.reload(); refreshen kann, aber wie stelle ich das
an, wenn ich das nur bei ner Fehleingabe haben will?
Habt ihr ne Idee was da verkehrt läuft?
Hier nun der Code dazu (ungekürzt, da ich ned weiß was ich da hätte
rauskürzen sollen ^^):
PHP-Code:
<?php
// generierter Code mit Codeeingabe nach Formularsubmit verglichen
if(isset($_REQUEST["login"])) {
if($_REQUEST["code"] == $_REQUEST["glogin"]) {
$g = 1;
} else {
$g = 0;
}
}
// Code + Codegrafik generiert und gespeichert
if(!isset($_REQUEST["login"])) {
if(file_exists("glogin.png")) { unlink("glogin.png"); }
header ("Content-type: image/png");
$im = @imagecreatefromjpeg("glblank.jpg")
or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$farbe = imagecolorallocate($im,222,222,222);
$z1 = rand(0, 9);
$z2 = rand(0, 9);
$z3 = rand(0, 9);
$z4 = rand(0, 9);
imagechar($im, 5, 8, 5, $z1, $farbe);
imagechar($im, 5, 19, 5, $z2, $farbe);
imagechar($im, 5, 30, 5, $z3, $farbe);
imagechar($im, 5, 41, 5, $z4, $farbe);
imagepng($im, "glogin.png");
imagedestroy($im);
$code = "$z1"."$z2"."$z3"."$z4";
}
?>
.
.
<input type='hidden' name='code' value='<?php if(!isset($_REQUEST["login"])) echo $code; ?>'>
<td><img border='0' src='glogin.png' width='60' height='22'></td>
<input type='submit' name='login' value='Einloggen'>
.
.
<?php
if(isset($_REQUEST["login"])) {
// nach erfolgreichem Login Session gestartet + Sessiovariablen registrieren
header("location: login.php");
if($_REQUEST["user"] != "" && $_REQUEST["pw"] != "") {
include("connect.php");
$sql = "SELECT id,user,pw,level FROM user WHERE user='".$_REQUEST["user"]."'";
$sql .= "AND pw = PASSWORD('".$_REQUEST["pw"]."')";
$result = mysql_query($sql, $db) or die(mysql_error($db));
if(mysql_num_rows($result) != 0) {
$row = mysql_fetch_array($result);
@session_start();
$_SESSION["id"] = $row["id"];
$_SESSION["user"] = $row["user"];
$_SESSION["level"] = $row["level"];
if(getenv("HTTP_CLIENT_IP")) {
$_SESSION["client_ip"] = getenv("HTTP_CLIENT_IP");
} elseif(getenv("HTTP_X_FORWARDED_FOR")) {
$_SESSION["client_ip"] = getenv("HTTP_X_FORWARDED_FOR");
} else {
$_SESSION["client_ip"] = getenv("REMOTE_ADDR");
}
echo "erfolgreich eingelogt<br>";
} else {
echo "Login fehlgeschlagen<br>";
}
} else {
echo "Bitte fülle alle nötigen Felder aus<br>";
}
}
// Codeeingabe auswerten
if(isset($g)) {
if($g == 1) {
echo "Code übereinstimmend";
} elseif($g == 0) {
echo "Code nicht übereinstimmend";
} else {
echo "Fehler bei Codeverarbeitung";
}
}
?>
Hab das mal soweit auskommentiert, hoffe es reicht.
Zwecks der Codeübergabe hab ich mich schonmal schlau gemacht (steht ja auch hier im Forum was). So wie der atm übergeben wird ist das rel. unsicher, denn der kann im Quelltext nachgelesen werden. Glaube anders ging das mit Zwischenspeichern in ner DB oder so.
Bedanke mich schonmal für die Hilfe
Gruß Dark
Kommentar