Sascha_K1994
|
Forenuser
|
|
registriert
|
16.01.2010
|
wohnt in
|
|
Beiträge
|
21
|
|
Guten Abend allerseits,
ich habe ein Problem, ich habe mir jetzt nach langem quälen ein CAPTCHA-System gebaut, nun möchte ich das in das loginsystem reinpacken, also das man "Nickname" "Passwort" und "CAPTCHA" eingeben muss. Nur ich bekomme es irgendwie nicht hin, hier mal meine Scripts::
Meine captcha.php
PHP:
<?php
session_start();
$CaptchaFehler = FALSE;
$Fehlerfrei = TRUE;
if (md5( $_POST['sicherheitscode'] ) != $_SESSION['captcha_code'])
{
$Fehlerfrei = FALSE;
$CaptchaFehler = TRUE;
}
if ($Fehlerfrei)
{
echo "CAPTCHA richtig!">";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>CAPTCHA-System</title>
</head>
<body>
<form id="CAPTCHA" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset>
<legend>CAPTCHA-Abfrage</legend>
<img src="captcha_image.php" alt="Sicherheitscode" title="Sicherheitscode" width="80" height="25" />
<label for="sicherheitscode"><?php echo $CaptchaFehler ? '<span style="color: #000000;">Bitte Sicherheitscode eingeben:</span>' : 'Bitte Sicherheitscode eingeben:'; ?></label>
<input name="sicherheitscode" id="sicherheitscode" type="text" />
<input name="senden" id="senden" type="submit" value="Absenden" class="button" />
</fieldset>
</form>
</body>
</html>
Meine captcha_image.php
PHP:
<?php
session_start();
unset( $_SESSION['captcha_code'] );
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-store, no-cache, must-revalidate" );
header( "Cache-Control: post-check=0, pre-check=0", false );
header( "Pragma: no-cache" );
header( 'Content-type: image/jpeg' );
$AlphaNumerischerString = "ABCDEFGH2345689";
$ZufallString1 = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 );
$ZufallString2 = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 );
$ZufallString3 = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 );
$ZufallStringKomplett = $ZufallString1.$ZufallString2.$ZufallString3;
$_SESSION['captcha_code'] = md5( $ZufallStringKomplett );
$Schriftarten = array( "zachary.ttf", "mtcorsva.ttf", "gilligan.ttf");
$Bilddatei = imagecreatefrompng( "hintergrund.png" );
$TextFarbe1 = imagecolorallocate( $Bilddatei, 0, 125, 0 );
$TextFarbe2 = imagecolorallocate( $Bilddatei, 130, 70, 90 );
$TextFarbe3 = imagecolorallocate( $Bilddatei, 180, 90, 190 );
imagettftext( $Bilddatei, 12, 15, 3, 24, $TextFarbe1, $Schriftarten[0], $ZufallString1 );
imagettftext( $Bilddatei, 16, 0, 26, 15, $TextFarbe2, $Schriftarten[1], $ZufallString2 );
imagettftext( $Bilddatei, 14, -20, 53, 18, $TextFarbe3, $Schriftarten[2], $ZufallString3 );
imagejpeg( $Bilddatei );
imagedestroy( $Bilddatei );
?>
Ich glaube den Hintergrund.png sowie die drei Schriftarten muss ich hier nicht posten
Meine login.php (Ist diese aus dem Forum, nur ein bisschen überarbeitet...)
PHP:
<?php
error_reporting(E_ALL);
include("config.php");
// liefert die Rechte eines Users ..
function getRights()
{
$rights = array();
// .. indem die Rechte eines User aus der Datenbank ausgewählt werden..
if(isset($_SESSION['UserID'])){
$sql = "SELECT
Recht
FROM
User_Rechte
WHERE
UserID = '".$_SESSION['UserID']."'
";
$result = mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
$rights = array();
// .. und als array zurückgegeben werden
while($row = mysql_fetch_assoc($result))
$rights[] = $row['Recht'];
}
return $rights;
}
// Loggt einen User ein, ..
function doLogin($ID, $Autologin=false)
{
// .. indem die aktuelle Session ID in der Datenbank gespeichert wird
$sql = "UPDATE
User
SET
SessionID = '".mysql_real_escape_string(session_id())."',
Autologin = NULL,
IP = '".$_SERVER['REMOTE_ADDR']."',
Letzte_Aktion = '".mysql_real_escape_string(time())."',
Letzter_Login = '".mysql_real_escape_string(time())."'
WHERE
ID = '".$ID."'
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// Wenn 'eingeloggt bleiben' aktiviert wurde
if($Autologin){
// Zufallscode erzeugen
$part_one = substr(time()-rand(100, 100000),5,10);
$part_two = substr(time()-rand(100, 100000),-5);
$Login_ID = md5($part_one.$part_two);
// Code im Cookie speichern, 10 Jahre dürfte genügen
setcookie("Autologin", $Login_ID, time()+60*60*24*365*10);
$sql = "UPDATE
User
SET
Autologin = '".$Login_ID."'
WHERE
ID = '".$ID."'
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
}
// Daten des Users in der Session speichern
$sql = "SELECT
Nickname,
Vorname,
Nachname
FROM
User
WHERE
ID = '".$ID."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_assoc($result);
$_SESSION['UserID'] = $ID;
$_SESSION['Nickname'] = $row['Nickname'];
$_SESSION['Vorname'] = $row['Vorname'];
$_SESSION['Nachname'] = $row['Nachname'];
$_SESSION['Rechte'] = getRights();
}
// Session starten
session_start();
if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
// Falls der Nickname und das Passwort übereinstimmen..
$sql = "SELECT
ID
FROM
User
WHERE
Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
Passwort = '".md5(trim($_POST['Passwort']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// wird die ID des Users geholt und der User damit eingeloggt
$row = mysql_fetch_assoc($result);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if (mysql_num_rows($result)==1){
doLogin($row['ID'], isset($_POST['Autologin']));
include("go_login.php");
}
else{
echo "Sie konnten nicht eingeloggt werden.<br>\n".
"Nickname oder Passwort fehlerhaft.<br>\n";
}
}
else{
include("nav_guest.php");
echo "<table>";
echo " <tr>\n";
echo " <td>\n";
echo "<form ".
" name=\"Login\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\"\n";
echo " <td>\n";
echo "Nickname :\n";
echo " </td>\n";
echo " <td>\n";
echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\"\n";
echo " </td>\n";
echo " <td>\n";
echo "Passwort :\n";
echo " </td>\n";
echo " <td>\n";
echo "<input type=\"password\" name=\"Passwort\"\n";
echo " <td>\n";
echo " <td>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Einloggen\"\n";
echo " <td>\n";
echo "</form>\n";
echo " \n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>";
}
?><body background="_wskins_/background.png">
Ich hoffe ihr könnt mir helfen!?!
Mit freundlichen Grüßen
SASCHA_K1994
|