Captcha

valeripf

Erfahrenes Mitglied
Kann Mir Jemand Helfen?
mein Capcha Funktionier Jegend wie nicht

Danke und Freue Weinachten;-)

Capha.php
PHP:
<?php 

session_start(); 
unset($_SESSION['captcha_spam']); 

function make_seed() 
{ 
    list($usec, $sec) = explode(' ', microtime()); 
    return (float) $sec + ((float) $usec * 100000); 
} 

function randomString($len) 
{ 
    srand(make_seed()); 

    //Der String $possible enthält alle Zeichen, die verwendet werden sollen 
    $possible = "ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789"; 
    $str = ""; 
    while (strlen($str) < $len) { 
        $str.=substr($possible, (rand() % (strlen($possible))), 1); 
    } 
    return($str); 
} 

$text = randomString(5);  //Die Zahl bestimmt die Anzahl stellen 
$_SESSION['captcha_spam'] = $text; 

header('Content-type: image/png'); 
$img = ImageCreateFromPNG('captcha.PNG'); //Backgroundimage 
$color = ImageColorAllocate($img, 0, 0, 0); //Farbe 
$ttf = __DIR__ . "/XFILES.TTF"; //Schriftart 
$ttfsize = 25; //Schriftgrösse 
$angle = rand(0, 5); 
$t_x = rand(5, 30); 
$t_y = 35; 
imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text); 
imagepng($img); 
imagedestroy($img);

Index PHP
PHP:
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
    mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error()); 

    session_start(); 
	$captchaSolved = false; 
    $isPostRequest = false; 
	
	if (isset($_POST['sicherheitscode'])) { 
    $isPostRequest = true; 
} 

if (isset($_SESSION['captcha_spam']) 
    && isset($_POST['sicherheitscode']) 
    && $_POST["sicherheitscode"] == $_SESSION['captcha_spam'] 
) { 
    unset($_SESSION['captcha_spam']); 

    $captchaSolved = true; 
} 

    if(isset($_POST['submit']) AND $_POST['submit']=='Registrieren'){ 
        // Fehlerarray anlegen 
        $errors = array();
        // Geburtsdatumsstring erstellen
        $datum = "{$_POST['Jahr']}-{$_POST['Monat']}-{$_POST['Tag']}";
        // Daten in die Datenbanktabelle einfügen 
       // hier bastelst du dein SQL-Query, nimmst
         // aber $datum statt $_POST['Geburtsdatum']
		 
        // Prüfen, ob alle Formularfelder vorhanden sind 
        if(!isset($_POST['Nickname'], 
                  $_POST['Passwort'], 
                  $_POST['Passwortwiederholung'], 
                  $_POST['Email'], 
                  $_POST['Geschlecht'], 
                  $_POST['Name'], 
                  $_POST['Vorname'], 
                  $_POST['Postleitzahl'],
                  $_POST['Stadt'],
                  $_POST['Strasse'],
                  $_POST['Haus'],
                  $_POST['ICQ'],
                  $_POST['MSN']))
            // Ein Element im Fehlerarray hinzufügen 
            $errors[] = "Bitte benutzen Sie das Formular aus dem Registrierungsbereich";
        else{ 
            // Prüfung der einzelnen User Felder 
            // Alle Nicknames und Emailadressen zum Vergleich aus der Datenbank holen
            $nicknames = array(); 
            $emails = array(); 
            $sql = "SELECT 
                             Nickname, 
                             Email 
                     FROM 
                             User						 
                    ";
					
            $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 
            while($row = mysql_fetch_assoc($result)){ 
                     $nicknames[] = $row['Nickname']; 
                     $emails[] = $row['Email']; 
            } 
            // Prüft, ob ein Nickname eingegeben wurde 
            if(trim($_POST['Nickname'])=='') 
                $errors[]= "Bitte geben Sie einen Nickname ein."; 
            // Prüft, ob der Nickname mindestens 4 Zeichen enthält 
            elseif(strlen(trim($_POST['Nickname'])) < 4) 
                $errors[]= "Ihr Nickname muss mindestens 4 Zeichen lang sein."; 
            // Prüft, ob der Nickname nur gültige Zeichen enthält 
            elseif(!preg_match('/^\w+$/', trim($_POST['Nickname']))) 
                $errors[]= "Benutzen Sie bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
            // Prüft, ob der Nickname bereits vergeben ist 
            elseif(in_array(trim($_POST['Nickname']), $nicknames)) 
                $errors[]= "Dieser Nickname ist bereits vergeben."; 
            // Prüft, ob eine Email-Adresse eingegeben wurde 
            if(trim($_POST['Email'])=='') 
                $errors[]= "Bitte geben Sie Ihre Email-Adresse ein."; 
            // Prüft, ob die Email-Adresse gültig ist 
            elseif(!preg_match('§^[\w\.-]+@[\w\.-]+\.[\w]{2,4}$§', trim($_POST['Email']))) 
                $errors[]= "Ihre Email Adresse hat eine falsche Syntax."; 
            // Prüft, ob die Email-Adresse bereits vergeben ist 
            elseif(in_array(trim($_POST['Email']), $emails)) 
                $errors[]= "Diese Email-Adresse ist bereits vergeben."; 
            // Prüft, ob ein Passwort eingegeben wurde 
            if(trim($_POST['Passwort'])=='') 
                $errors[]= "Bitte geben Sie Ihr Passwort ein."; 
            // Prüft, ob das Passwort mindestens 5 Zeichen enthält 
            elseif (strlen(trim($_POST['Passwort'])) < 5) 
                $errors[]= "Ihr Passwort muss mindestens 5 Zeichen lang sein.";
            // Prüft, ob eine Passwortwiederholung eingegeben wurde 
            if(trim($_POST['Passwortwiederholung'])=='') 
                $errors[]= "Bitte wiederholen Sie Ihr Passwort."; 
            // Prüft, ob das Passwort und die Passwortwiederholung übereinstimmen
            elseif (trim($_POST['Passwort']) != trim($_POST['Passwortwiederholung']))
                $errors[]= "Ihre Passwortwiederholung war nicht korrekt.";
            // Prüft, ob ein Geschlecht eingegeben wurde 
            if(trim($_POST['Geschlecht'])=='') 
                $errors[]= "Bitte geben Sie Ihr Geschlecht ein.";
            // Prüft, ob ein Name eingegeben wurde 
            if(trim($_POST['Name'])=='') 
                $errors[]= "Bitte geben Sie Ihr Name ein.";
            // Prüft, ob der Name mindestens 2 Zeichen enthält 
            elseif(strlen(trim($_POST['Name'])) < 2) 
                $errors[]= "Ihr Name muss mindestens 2 Zeichen lang sein."; 
            // Prüft, ob der Name nur gültige Zeichen enthält 
            elseif(!preg_match('/^\w+$/', trim($_POST['Name']))) 
                $errors[]= "Benutzen Sie bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
            // Prüft, ob ein Vorname eingegeben wurde 
            if(trim($_POST['Vorname'])=='') 
                $errors[]= "Bitte geben Sie Ihr Vorname ein.";
            // Prüft, ob der Vorname mindestens 3 Zeichen enthält 
            elseif(strlen(trim($_POST['Vorname'])) < 3) 
                $errors[]= "Ihr Vorname muss mindestens 3 Zeichen lang sein."; 
            // Prüft, ob der Vorname nur gültige Zeichen enthält 
            elseif(!preg_match('/^\w+$/', trim($_POST['Vorname']))) 
                $errors[]= "Benutzen Sie bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
           
            if(trim($_POST['Postleitzahl'])=='') 
                $errors[]= "Bitte geben Sie Ihr Postleitzahl ein.";
            // Prüft, ob der Postleitzahl mindestens 1 Zeichen enthält 
            elseif(strlen(trim($_POST['Postleitzahl'])) < 1) 
                $errors[]= "Ihr Postleitzahl muss mindestens 1 Zeichen lang sein.Lander Ohne Postleizahl Geben sie Einfach 0";
             if(trim($_POST['Stadt'])=='') 
                $errors[]= "Bitte geben Sie Ihr Stadt ein.";
            // Prüft, ob der Stadt mindestens 4 Zeichen enthält 
            elseif(strlen(trim($_POST['Stadt'])) < 4) 
                $errors[]= "Bitte Geben Sie ihere Stadt ein."; 
            // Prüft, ob ein Strasse eingegeben wurde 
            if(trim($_POST['Strasse'])=='') 
                $errors[]= "Bitte geben Sie Ihr Strasse ein.";
            // Prüft, ob ein Haus eingegeben wurde 
            if(trim($_POST['Haus'])=='') 
                $errors[]= "Bitte geben Sie Ihr Hausnummer ein.";
            // Prüft, ob der Stadt mindestens 3 Zeichen enthält 
            elseif(strlen(trim($_POST['Haus'])) < 1) 
                $errors[]= "Bitte Geben Sie ihere Haus ein.";
			if(trim($_POST['AGB'])=='') 
                $errors[]= " Sie haben leider vergessen  ABG zubestätigen.";
            if (!$captchaSolved) :

            if ($isPostRequest) :		   
                $errors[]= "Captcha falsch eingegeben!";
      
        } 
        // Prüft, ob Fehler aufgetreten sind 
        if(count($errors)){ 
             echo "Ihr Account konnte nicht erstellt werden.<br>\n". 
                  "<br>\n"; 
             foreach($errors as $error) 
                 echo $error."<br>\n"; 
             echo "<br>\n". 
                  "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Registrierungsformular</a>\n";
        } 
        else{ 
           // Daten in die Datenbanktabelle einfügen 
        $sql = "INSERT INTO `User` 
                            (Nickname, 
                             Email, 
                             Passwort,
                             Registrierungsdatum, 
                             Name, 
                             Geschlecht, 
                             Vorname, 
                             Geburtsdatum, 
                             Postleitzahl, 
                             Stadt, 
                             Strasse,
                             Haus,
                             ICQ,
                             MSN
                            ) 
                    VALUES 
                            ('".mysql_real_escape_string(trim($_POST['Nickname']))."',
                             '".mysql_real_escape_string(trim($_POST['Email']))."',
                             '".md5(trim($_POST['Passwort']))."', 
                             CURDATE(), 
                             '".mysql_real_escape_string(trim($_POST['Name']))."',
                             '".mysql_real_escape_string(trim($_POST['Geschlecht']))."',
                             '".mysql_real_escape_string(trim($_POST['Vorname']))."',
                             '".mysql_real_escape_string($datum)."', 
                             '".mysql_real_escape_string(trim($_POST['Postleitzahl']))."',
                             '".mysql_real_escape_string(trim($_POST['Stadt']))."',
                             '".mysql_real_escape_string(trim($_POST['Strasse']))."',
                             '".mysql_real_escape_string(trim($_POST['Haus']))."',
                             '".mysql_real_escape_string(trim($_POST['ICQ']))."',
                             '".mysql_real_escape_string(trim($_POST['MSN']))."'
                            ) 
                   "; 
            mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 
            echo "Vielen Dank!\n<br>". 
                 "Ihr Accout wurde erfolgreich erstellt.\n<br>". 
                 "Sie können sich nun mit Ihren Daten einloggen.\n<br>". 
                 "<a href=\"login.php\">Zum Login</a>\n"; 
        } 
    } 
else { 
         $Monatsnamen = array(
    1 => 'Januar',
    2 => 'Februar',
    3 => 'März',
    4 => 'April',
    5 => 'Mai',
    6 => 'Juni',
    7 => 'Juli',
    8 => 'August',
    9 => 'September',
    10 => 'Oktober',
    11 => 'November',
    12 => 'Dezember'
);

$tage = '';
for($i = 1; $i <= 31; $i++){
    $tage .= "<option value=\"$i\">$i</option>";
}
 
$monate = '';
foreach($Monatsnamen as $m){
    $monate .= "<option value=\"$m\">$m</option>";
}
 
$jahre = '';
for($i = 2006; $i >= 1900; $i--){
    $jahre .= "<option value=\"$i\">$i</option>";
}


echo(<<< EOT
<form name="Registrierung" action="{$_SERVER['PHP_SELF']}" method="post" accept-charset="ISO-8859-1">
	<table border="0">
		<tr>
			<th><h5>USER Daten</h5></th>
		</tr>
		<tr>
			<td><span style="font-weight:bold;" title="min.4 max.32 Nur Zahlen, Buchstaben und Unterstrich">Nickname:</span></td>
			<td><input type="text" name="Nickname" maxlength="32" /></td>
		</tr>
		<tr>
			<td><span style="font-weight:bold;" title="min.6">Passwort: </span></td> 
			<td><input type="password" name="Passwort" /></td> 
		</tr>
		<tr>
			<td><span style="font-weight:bold;" title="min.6">Passwort wiederholen: </span></td> 
			<td><input type="password" name="Passwortwiederholung" /></td>
		</tr>
		<tr>
			<td><span style="font-weight:bold;" title="Ihre.Adresse@Ihr-Anbieter.de">Email-Adresse: </span></td> 
			<td><input type="text" name="Email" maxlength="70" /></td>
			</span>
		</tr>
		<tr>
			<th><h5>Personliche Daten</h5></th>
		</tr>
		<tr>
			<td><span style="font-weight:bold;">Geschlecht: </span></td> 
			<td><input type="radio" name="Geschlecht" value="0"> Mannlich</td> 
			<td><input type="radio" name="Geschlecht" value="1">  Weiblich</td>
		</tr>
		<tr>
			<td><span style="font-weight:bold;" title="min.2 nmax.32 Nur Zahlen, Buchstaben und Unterstrich">Name:</span></td> 
			<td><input type="text" name="Name" maxlength="32" /></td>
		</tr>
		<tr>
			<td><span style="font-weight:bold;" title="min.3 nmax.32 Nur Zahlen Buchstaben und Unterstrich">Vorname:</span></td>
			<td><input type="text" name="Vorname" maxlength="32" /></td>
		</tr>
		<tr>
			<td><span style="font-weight:bold;">Geburtsdatum</span></td>
            <td>
                <select name="Tag">
                    <option value="0">Tag</option>
                    $tage
                </select>
                <select name="Monat">
                    <option value="0">Monat</option>
                    $monate
                </select>
                <select name="Jahr">
                    <option value="0">Jahr</option>
                    $jahre
                </select>
            </td>
        </tr>
			<td><span style="font-weight:bold;" title="min.1 nmax.32 Nur Zahlen, Buchstaben und Unterstrich">Postleitzahl:</span></td>
			<td><input type="text" name="Postleitzahl" maxlength="70" /></td> 
		</tr>
		<tr>
			<td><span style="font-weight:bold;" title="min.4 max.32 Nur Zahlen, Buchstaben und Unterstrich">Stadt:</span></td> 
			<td><input type="text" name="Stadt" maxlength="70" /></td> 
		</tr>
		<tr>
			<td><span style="font-weight:bold;" title="min.1 max.32 Nur Zahlen, Buchstaben und Unterstrich">Strasse:</span></td>
			<td><input type="text" name="Strasse" maxlength="70" /></td>
		</tr>
		<tr>	
			<td><span style="font-weight:bold;" title="min.1 max.32 Nur Zahlen, Buchstaben und Unterstrich">Haus:</span></td> 
			<td><input type="text" name="Haus" size=2 maxlength="10" />
		</tr>
		<tr>
			<th><h5>Freiwillige angaben</h5></th>
		</tr>
		<tr>
			<td><span style="font-weight:bold;">ICQ:</span></td> 
			<td><input type="text" name="ICQ" maxlength="20" /></td> 
		</tr>
		<tr>
			 <td><span style="font-weight:bold;">MSN:</span></td>
			 <td><input type="text" name="MSN" maxlength="70" /></td> 
			 
		</tr>
		</table>
		<br/>
			<input type="checkbox" name="AGB" value="1" />
			<td><span style="font-weight:bold;">Ich habe die <a href="abg.php">AGB</a>gelesen und akzeptiere sie.:</span></td>
			
			<br/>

			

            <p> 
                <img src="captcha/captcha.php" border="0" title="Sicherheitscode" /> 
            </p> 

            <p> 
                <input type="text" name="sicherheitscode" size="5" /> 
            </p> 

			<input type="submit" name="submit" value="Registrieren">
			<input type="reset" value="Zurücksetzen">
</form>
EOT
);
}
?>
 
Du machst es einem nicht gerade einfach, dir zu helfen ;-)

Ist der Code von index.php alles, was du gepostet hast, oder ist da noch was oben drüber?
 
Ok, also nichts tragisches...

Also in Zeile 140 und 142 gehen if's auf, die kein Ende haben. Da ich nicht weiß, ob der Code dadurch kaputt geht, kann ich nur raten, ob du das hier

PHP:
		if (!$captchaSolved) :

		if ($isPostRequest) :
		$errors[]= "Captcha falsch eingegeben!";

durch das hier ersetzen musst:

PHP:
		if (!$captchaSolved) :
		  if ($isPostRequest) :
		    $errors[]= "Captcha falsch eingegeben!";
		  endif;
		endif

Außerdem fehlt am Ende des Scripts noch die schließende geschweifte Klammer für den else aus Zeile 197, welches dieser Code ist:

PHP:
else {
	$Monatsnamen = array(
 
Funktioniert immer noch nicht

Serverfehler
Beim Abrufen *********************ist auf der Website ein Fehler aufgetreten. Möglicherweise wird sie gerade gewartet oder ist falsch konfiguriert.
Vorschläge:
Laden Sie diese Webseite später erneut.
HTTP-Fehler 500 (Internal Server Error): Beim Versuch des Servers, die Anforderung zu verarbeiten, ist eine unerwartete Bedingung aufgetreten.
 
es hat vorher Funktioniert dervor ich capcha eingebaut

PHP:
error_reporting(E_ALL); 
    $MYSQL_HOST = '************'; 
    $MYSQL_USER = '*********; 
    $MYSQL_PASS = '***********'; 
    $MYSQL_DATA = '************'; 

   $connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
    mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());

****** = Zenzirt
 
Zurück