Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Captcha PHP Problem

Mitglied: 46356

46356 (Level 2)

29.08.2007, aktualisiert 17.09.2007, 4989 Aufrufe, 12 Kommentare

Hallo

Ich habe ein kleines Problem mit meinem Bot Schutz...
Alle Codes stimmen bis auf keinen und 1...

Ich glaube meine elseif abfrage ist falsch aber ich komme nicht weiter... Ich saß den ganzen Vormittag an diesem Problem, konnte es aber nicht lösen...

Hier der Code:

01.

02.
<input type="text" name="captcha" size="7.5"> <img src="captcha.php" width="74" height="25" alt="" style="vertical-align: middle;" <?php if($_POST['code'] != "") { echo ' value="'.$_POST['code'].'"'; } ?> >
03.

04.
...
05.

06.
// Captcha überprüfen
07.
}elseif(!isset($_POST['code']) == $_SESSION['code'])
08.
{
09.
echo "<font face='Verdana' size='2px'>Du hast die Sicherheitsprüfung nicht bestanden!! <a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a>";
10.

11.
// Session löschen
12.
unset($_SESSION['captcha_code']);
13.
}
Falls ihr noch mehr Code braucht, sagt bescheid...

Danke Alex

P.S.: Mein Captcha ist eine Zeichenkette!
Mitglied: SlainteMhath
29.08.2007 um 14:33 Uhr
Was willst Du denn damit

01.
}elseif(!isset($_POST['code']) == $_SESSION['code'])
prüfen?

(!isset($_POST['code']) ergibt true oder false, je nachdem ob $_POST['code'] gesetzt wurde oder nicht.

Diese Ergebniss verlgeichst Du dann mit dem Inhalt von $_SESSION['code'] ...

Ich kenn den Rest vom Code nicht, aber sollte da nicht ein

01.
... elseif($_POST['code'] != $_SESSION['code']) ...
ausreichen?
Bitte warten ..
Mitglied: 46356
29.08.2007 um 14:38 Uhr
Hallo!

Funkioniert leider nicht!
Den ganzen Code:

01.
<?php
02.
// Session starten
03.
session_start();
04.
?>
05.
<?php
06.
require("connect.inc.php");
07.
?>
08.
<html>
09.
<head>
10.
<link rel="stylesheet" media="screen" type="text/css" href="http://alexbreuss.al.funpic.de/new/src/stylesheet.css" />
11.
<?PHP 
12.
    // Cookie (Datum) lesen
13.
    if (isset($_COOKIE["datum"]))
14.
        $dt= $_COOKIE["datum"];
15.

16.
    //Cookie (Datum) zurueck schreiben
17.
    setcookie("datum",date('d.m.y'),time()+3600);
18.
    
19.
?>
20.

21.
<style>
22.
.solid {
23.
 border-style: solid;
24.
 border-left-width: 1px; border-left-color: black;
25.
 border-top-width: 1px; border-top-color: black;
26.
 border-right-width: 1px; border-right-color: black;
27.
 border-bottom-width: 1px; border-bottom-color: black;
28.
}
29.
.button { border-color: #AA0000;
30.
border-style: outset;
31.
font-family: arial, serif;
32.
font-size: 10pt;
33.
width: 255px;
34.
height: 30px;
35.
}
36.
</style>
37.
</head>
38.
<body leftmargin="100px" topmargin= "50px" marginwidth="100px" link="white" alink="white" vlink="white">
39.

40.
<div class="tabelle"><div id="header">
41.
   <img src="/neu_fertig/img/logo-gespiegelt.gif" width="130px" height="75px">&#160;&#160;&#160;<a href="http://alexbreuss.al.funpic.de/neu_login/"><img src="/neu_fertig/img/browserfish-text.gif" width="400" height="30" border="0"></a>&#160;&#160;&#160;<img src="/neu_fertig/img/logo.gif" width="130px" height="75px">
42.

43.
<br><br>
44.
	
45.
	<div align="left">
46.
	<iframe src="/neu_fertig/src/links.htm" width="700px" fixed="yes" height="37px" frameborder="0" scrolling="no" cellspacing="no" cellpadding="no"></iframe>
47.
	</div>
48.
	
49.
	<div align="right"><font face="Verdana" size="2px">Eine Website von Alexander Breuss</font></a><br>
50.

51.
	</div></div></div><br>
52.

53.

54.
<div class="tabelle">
55.
	<div id="header"><font face="Verdana" size="4px">Registrier dich hier!</font>
56.
	<div align="left">
57.
<br>
58.

59.
<?php if(!isset($_POST['submit'])) { ?>
60.
<form action="<?php $PHP_SELF ?>" method="post">
61.
<table width="100" border="0" align="center" class="solid">
62.
	<tr>
63.
		<td align="center" colspan="2" class="solid">
64.
		<b><font color="black" size="2px">Kostenlos hier zu einer Community anmelden:</b>
65.
		</td>
66.
	</tr>
67.
	<tr>
68.
		<td width="200" class="solid"><font color="black" size="2px">Vorname:</td>
69.
		<td width="200" class="solid"><input type="text" name="name" class="input"<?php if($_POST['name'] != "") { echo ' value="'.$_POST['name'].'"'; } ?> size="20"></td>
70.
	</tr>
71.
	<tr>
72.
		<td width="200" class="solid"><font color="black" size="2px">Nachname:</td>
73.
		<td width="200" class="solid"><input type="text" name="name2" class="input"<?php if($_POST['name2'] != "") { echo ' value="'.$_POST['name2'].'"'; } ?> size="20"></td>
74.
	</tr>
75.
	<tr>
76.
		<td width="200" class="solid"><font color="black" size="2px">Geburtstag:</td>
77.
		<td width="200" class="solid"><input type="text" name="birthday" size="20" class="input" <?php if($_POST['birthday'] != "") { echo ' value="'.$_POST['birthday'].'"'; } ?> ></td>
78.
	</tr>
79.
	<tr>
80.
		<td width="200" class="solid"><font color="black" size="2px">Adresse:</td>
81.
	        <td width="200" class="solid"><input type="text" name="adresse" class="input"<?php if($_POST['adresse'] != "") { echo ' value="'.$_POST['adresse'].'"'; } ?> size="20"></td>
82.
	</tr>
83.
	<tr>
84.
		<td width="200" class="solid"><font color="black" size="2px">Ort:</td>
85.
		<td width="200" class="solid"><input type="text" name="ort" class="input"<?php if($_POST['ort'] != "") { echo ' value="'.$_POST['ort'].'"'; } ?> size="20"></td>
86.
	</tr>
87.
	<tr>
88.
		<td width="200" class="solid"><font color="black" size="2px">Land:</td>
89.
		<td width="200" class="solid"><input type="text" name="land" class="input"<?php if($_POST['land'] != "") { echo ' value="'.$_POST['land'].'"'; } ?> size="20"></td>
90.
	</tr>
91.
	<tr>
92.
		<td width="200" class="solid"><font color="black" size="2px">Bundesland:</td>
93.
		<td width="200" class="solid"><input type="text" name="bundesland" class="input"<?php if($_POST['bundesland'] != "") { echo ' value="'.$_POST['bundesland'].'"'; } ?> size="20"></td>
94.
	</tr>
95.
	<tr>
96.
		<td width="200" class="solid"><font color="black" size="2px">Telefonnummer:</td>
97.
		<td width="200" class="solid"><input type="text" name="telefonnummer" class="input"<?php if($_POST['telefonnummer'] != "") { echo ' value="'.$_POST['telefonnummer'].'"'; } ?> size="20"></td>
98.
	</tr>
99.
	<tr>
100.
		<td width="200" class="solid"><font color="black" size="2px">E-Mail:</td>
101.
		<td width="200" class="solid"><input type="text" name="mail" size="20" class="input" <?php if($_POST['mail'] != "") { echo ' value="'.$_POST['mail'].'"'; } ?> ></td>
102.
	</tr>
103.
	<tr>
104.
		<td width="200" class="solid"><font color="black" size="2px">Nickname:</td>
105.
		<td width="200" class="solid"><input type="text" name="nickname" size="20" class="input" <?php if($_POST['nickname'] != "") { echo ' value="'.$_POST['nickname'].'"'; } ?> ></td>
106.
	</tr>
107.
	<tr>
108.
		<td width="200" class="solid"><font color="black" size="2px">Passwort:</td>
109.
		<td width="200" class="solid"><input type="password" name="password" size="20" class="input" <?php if($_POST['password'] != "") { echo ' value="'.$_POST['password'].'"'; } ?> ></td>
110.
	</tr>
111.
	<tr>
112.
		<td width="200" class="solid"><font color="black" size="2px">Passwort wiederholen:</td>
113.
		<td width="200" class="solid"><input type="password" name="password2" size="20" class="input" <?php if($_POST['password2'] != "") { echo ' value="'.$_POST['password2'].'"'; } ?> ></td>
114.
	</tr>
115.
	<tr>
116.
		<td width="200" class="solid"><font color="black" size="2px">Code übertragen:</td>
117.
		<td width="200" class="solid"><input type="text" name="captcha" size="7.5"> <img src="captcha.php" width="74" height="25" alt="" style="vertical-align: middle;" <?php if($_POST['code'] != "") { echo ' value="'.$_POST['code'].'"'; } ?> ><br></td>
118.
	</tr>
119.
	<tr>
120.

121.
		<td width="200" class="solid" colspan="2">
122.
		<div align="right"><center><input type="submit" class="button" name="submit" value="Benutzer anlegen" class="button" width="200px"></center></div>
123.
		<td width="200" class="solid">
124.
	</tr>
125.
        <tr>
126.
                <td width="200" class="solid" colspan="2"><font color="black" size="2px">Die Daten werden vertraulich behandelt und nicht an dritte weitergegeben!</td>
127.
        </tr>
128.

129.
</table>
130.
</form>
131.
<?php
132.

133.
}elseif(!isset($_POST['name']) || $_POST['name'] == ""){
134.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast deinen Vornamen vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
135.

136.
}elseif(!isset($_POST['name2']) || $_POST['name2'] == ""){
137.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast deinen Nachnamen vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
138.

139.
}elseif(!isset($_POST['birthday']) || $_POST['birthday'] == ""){
140.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast deine Geburtsdatum vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
141.

142.
}elseif(!isset($_POST['adresse']) || $_POST['adresse'] == ""){
143.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast deine Adresse vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
144.

145.
}elseif(!isset($_POST['ort']) || $_POST['ort'] == ""){
146.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast keinen Ort angegeben.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
147.

148.
}elseif(!isset($_POST['land']) || $_POST['land'] == ""){
149.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast dein Land vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
150.

151.
}elseif(!isset($_POST['bundesland']) || $_POST['bundesland'] == ""){
152.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast dein Bundesland vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
153.

154.
}elseif(!isset($_POST['telefonnummer']) || $_POST['telefonnummer'] == ""){
155.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast keine Telefonnummer angegeben.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
156.

157.
}elseif(!isset($_POST['mail']) || $_POST['mail'] == ""){
158.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast deine E-Mail Adresse vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
159.

160.
}elseif(!isset($_POST['nickname']) || $_POST['nickname'] == ""){
161.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast deinen Nicknamen vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
162.

163.
}elseif(!isset($_POST['password']) || $_POST['password'] == ""){
164.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast kein Passwort gewählt.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
165.

166.
}elseif(!isset($_POST['password2']) || $_POST['password2'] == ""){
167.
	echo '<p align="center"><font face="Verdana" size="2px">Du hast das Passwort nicht noch einmal eingegeben!<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a></p>';
168.

169.
}elseif($_POST['password'] != $_POST['password2']) {
170.
echo '<form action="registration.php" method="post">';
171.
echo '<p align="center">Die Passw&ouml;rter stimmen nicht &uuml;berein!<br><br>';
172.
echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
173.
echo '<input type="submit" name="zurueck" value="Zur&uuml;ck"></p>';
174.
echo '</form>';
175.

176.
}elseif(!isset($_POST['nickname'])){
177.

178.
// Captcha überprüfen
179.
}elseif(!isset($_POST['code']) == $_SESSION['code'])
180.
{
181.
echo "<font face='Verdana' size='2px'>Du hast die Sicherheitsprüfung nicht bestanden!! <a href=javascript:history.back(-1) onFocus=this.blur()>Zur&uuml;ck</a>";
182.

183.
// Session löschen
184.
unset($_SESSION['captcha_code']);
185.
}
186.

187.
$name = $_POST['name'];
188.
$name2 = $_POST['name2'];
189.
$birthday = $_POST['birthday'];
190.
$adresse = $_POST['adresse'];
191.
$ort = $_POST['ort'];
192.
$land = $_POST['land'];
193.
$bundesland = $_POST['bundesland'];
194.
$telefonnummer = $_POST['telefonnummer'];
195.
$mail = $_POST['mail'];
196.
$nickname = $_POST['nickname'];
197.
$pass = md5($_POST['password']);
198.

199.
$result = mysql_query("SELECT Nickname FROM users  WHERE Nickname LIKE '$nickname'");
200.
$menge = mysql_num_rows($result); 
201.

202.
if($menge == 0)
203.
  {
204.
    $eintrag = "INSERT INTO users (Vorname, Nachname, Geburtstag, Adresse, Ort, Land, Bundesland, Telefon, Mail, Nickname, Passwort) VALUES 
205.
    ('$name', '$name2', '$birthday', '$adresse', '$ort', '$land', '$bundesland', '$telefonnummer', '$mail', '$nickname', '$pass')";
206.
    $eintragen = mysql_query($eintrag); 
207.
     
208.
if($eintragen == true)
209.
          {
210.
             echo "Benutzername <b>$nickname</b> wurde erstellt. <a href=\"login.html\">Login</a>";
211.
          }
212.
            else
213.
            {
214.
                echo "Fehler beim Speichern des Benutzernames. <a href=\"eintragen.html\">Zurück</a>";
215.
            } 
216.
 }
217.
else
218.
    {
219.
    echo "Benutzername schon vorhanden. <a href=\"eintragen.html\">Zurück</a>";
220.
    }
221.
?> 
Lg. Alex
Bitte warten ..
Mitglied: SlainteMhath
29.08.2007 um 14:51 Uhr
Sieht fast so aus, als wärst Du Dir nicht über den Namen der POST Variable einig:

....<input type="text" name="captcha" size="7.5"> ...
.... $_POST['code']... $SESSION['code']...
... unset($_SESSION['captcha_code']);...


Und nochwas: Les Dir mal ein bischen was über sicheres Programmieren von PHP Scripts an.

Überleg Dir mal, was passiert wenn Dir hier:
01.
$nickname = $_POST['nickname'];
02.
$pass = md5($_POST['password']);
03.

04.
$result = mysql_query("SELECT Nickname FROM users  WHERE Nickname LIKE '$nickname'");
jemand '; DELETE FROM users WHERE Nickname<>' in das Nickname Feld im Webformular rein schreibt
Bitte warten ..
Mitglied: Spao
29.08.2007 um 14:53 Uhr
so hab mich mal durch dein code gewühlt ^^

also
1.) sehe nirgendes das die $_SESSION['code'] gefüllt wird. mit was willst du die dann vergleichen ? ( vielleicht in captcha.php ? )

2.) ändere
}elseif(!isset($_POST['code']) == $_SESSION['code'])

in

}elseif(!isset($_POST['code']) || $_POST['code'] != $_SESSION['code'])

3.)
wenn eine der Bedingungen wahr wird löschst du eine andere session
unset($_SESSION['captcha_code']);
müsst da nich $_SESSION['code'] in $_SESSION['captcha_code'] geändert werden ?



kannst nochmal die captcha.php posten ? wenn es noch nicht geht ?
Bitte warten ..
Mitglied: EvilMoe
29.08.2007 um 14:56 Uhr
Ohh das solltest du aber so schnell wie möglich beheben! Stichwort SQL-Injection!
Verwende bevor du die Variablen an die DB schicks "mysql_real_escape_string". Ich habe dafür diese Funktion:
01.

02.
  // esapen von input
03.
	function quotesqlvar($value)
04.
	{
05.
	  // Stripslashes if quoted
06.
	  if (get_magic_quotes_gpc()) {
07.
		  $value = stripslashes($value);
08.
	  }
09.
	  // Quote if not integer
10.
	  if (!is_numeric($value)) {
11.
		  $value = mysql_real_escape_string($value);
12.
	  }
13.
	  return $value;
14.
	}
15.
	
Bitte warten ..
Mitglied: 46356
29.08.2007 um 15:52 Uhr
Hallo!

Danke für eure Antworten!

Hier die captcha.php:
01.
<?php
02.

03.
// Session starten
04.
session_start();
05.

06.
// Größe des Bildes
07.
$size_x = 70;
08.
$size_y = 25;
09.

10.
// Zufalls-Zeichenkette
11.
$code = mt_rand("100000","999999");
12.

13.
// Code in der Session-Variablen übergeben
14.
$_SESSION["captcha_code"] = $code;
15.

16.
// Erstelle das Bild mit der angegebenen Größe!
17.
$bild = imageCreate($size_x,$size_y);
18.

19.
// Erstelle einen weißen Hintergrund
20.
imageColorAllocate($bild,255,255,255);
21.

22.
// Zufallsfarbe (RGB) erstellen
23.
$text_nummer1 = mt_rand("0","175");
24.
$text_nummer2 = mt_rand("0","175");
25.
$text_nummer3 = mt_rand("0","175");
26.

27.
// Verteile die Farben
28.
$schwarz = imageColorAllocate($bild,0,0,0);
29.
$text  = imageColorAllocate($bild,$text_nummer1,$text_nummer2,$text_nummer3);
30.

31.
// Hole die Zahlen der Punkte zum Zeichnen
32.
$alle_punkte = ($size_x * $size_y)/15;
33.

34.
// Zeichne viele Punkte mit der selben Farbe des Textes
35.
for ($zaehler = 0; $zaehler < $alle_punkte; $zaehler++) {
36.

37.
 // Hole die Positionen für die Punkte
38.
 $pos_x = mt_rand("0",$size_x);
39.
 $pos_y = mt_rand("0",$size_y);
40.

41.
 // Zeichne die Punkte
42.
 imageSetPixel($bild,$pos_x,$pos_y,$text);
43.
};
44.

45.
// Zeichne den Rahmen
46.
imageRectangle($bild,0,0,$size_x-1,$size_y-1,$schwarz);
47.

48.
// Koordinaten der Position von der Zeichenkette
49.
$pos_x = 8; // links
50.
$pos_y = 5; // oben
51.

52.
// Zeichne die Zeichenkette
53.
imageString($bild,5,$pos_x,$pos_y,$code,$text);
54.

55.
// Sende "browser header"
56.
header("Content-Type: image/png");
57.

58.
// Sende das Bild zum Browser
59.
echo imagePNG($bild);
60.

61.
// Lösche das Bild
62.
imageDestroy($bild);
63.
?>
Mfg. Alex
Bitte warten ..
Mitglied: SlainteMhath
29.08.2007 um 15:58 Uhr
Hier die captcha.php:
01.
// Code in der Session-Variablen übergeben
02.
$_SESSION["captcha_code"] => $code;
Ok, nach meinem Dafürhalten sollte dann das elseif so aussehen:
01.
...} elseif($_POST['captcha'] != $_SESSION['captcha_code'])  {...
Und bereinige mit EvilMoe's Code alle Eingaben aus dem Formular!

/edit: Tippfehler beseitigt.
Bitte warten ..
Mitglied: 46356
29.08.2007 um 16:16 Uhr
Hallo!

Funktioniert trotzdem noch nicht: Du hast die Sicherheitsprüfung nicht bestanden!! Zurück Benutzername alexbreuss wurde erstellt. Login

Was ist noch falsch?

Lg. Alex

P.S.: Könnt Ihr mir ein gutes Buch zum Thema Sicherheit mit PHP-Scripten empfehlen?
Bitte warten ..
Mitglied: Spao
30.08.2007 um 06:52 Uhr
lass dir mal die 2 variablen

$_POST['captcha']
$_SESSION['captcha_code']

mit echo ausgeben. Sind die vielleicht unteschiedlich ?
Bitte warten ..
Mitglied: Guenni
10.09.2007 um 16:25 Uhr
Selbst wenn die Captcha-Überprüfung funktionieren sollte,
würde das Skript nicht korrekt arbeiten.

Nach der Captcha-Überprüfung geht es nämlich munter weiter mit dem
Anlegen des neuen Users.

Daher auch die Ausgabe, siehe oben:

Funktioniert trotzdem noch nicht:
Du hast die Sicherheitsprüfung nicht bestanden!! Zurück
Benutzername alexbreuss wurde erstellt. Login

Denn woher soll der PHP-Interpreter wissen, dass das Skript gestoppt werden soll,
falls der übertragene Captcha-Code falsch ist? Der Interpreter überprüft nur die
Syntax, nicht aber die Logik des Skript.

Ich muß dem Interpreter also auch sagen, was er im negativem Fall machen soll:

01.
02.
if(trifft nicht zu){
03.
...
04.
exit;//Skript beenden
05.
}
06.
...
Zum zweiten ist eine solche simple Überprüfung ...

01.
02.
elseif(!isset($_POST['nickname']) || $_POST['nickname'] == ""){
03.
... ziemlich sinnfrei, weil auch die Eingabe eines oder mehrerer Leerzeichen
eine korrekte Eingabe ist. Es würden also im Falle einer positiven
Captcha-Überprüfung einfach Datenfelder mit Leerzeichen in der
Datenbank angelegt!

Die Eingabe sollte also besser über einen regulären Ausdruck
auf erlaubte/nicht erlaubte Zeichen überprüft werden.

Ich habe das Skript oben mal ein wenig verkürzt(wg. Übersicht) und
einige Variablen meiner Umgebung angepasst, nur um die Funktionalität
zu überprüfen.

01.
<?
02.
session_start();
03.
//Meine Datenbankverbindung und mehr...
04.
include("net-comm/inc/session.inc.php");
05.
?>
06.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
07.
<html>
08.
<head>
09.
<title>Registrierung</title>
10.
</head>
11.
<body>
12.
<?
13.
$cmd=$_POST['cmd'];
14.
if($cmd=="Eintragen"){
15.
 /*
16.
 trim entfernt Leerzeichen am Anfang und am Ende
17.
 */
18.
 $nickname=trim($_POST['nickname']);
19.
 $vorname=trim($_POST['vorname']);
20.
 $captcha=trim($_POST['captcha']);
21.
 /*
22.
 Nur Buchstaben(klein,GROSS,ohne Umlaute),
23.
 Zahlen,Punkt und Bindestrich sind erlaubt. z.B.:
24.
 hans45, Katja-12, w.broesel, hans-peter, 
25.
 */
26.
 if(!ereg("^[a-zA-Z1-9\.\-]+$",$nickname)){
27.
  echo "Sie haben ihren Nickname nicht korrekt angegeben";
28.
	echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
29.
	exit;// Skript beenden
30.
 }
31.
 /*
32.
 Nur Buchstaben(klein,GROSS,mit Umlaute) und Bindestrich
33.
 sind erlaubt. z.B:
34.
 Jürgen, Karl-Heinz, Paul, aber nicht Karl.Heinz
35.
 */
36.
 if(!ereg("^[a-zA-ZäöüÄÖÜ\-]+$",$vorname)){
37.
  echo "Sie haben ihren Vornamen nicht korrekt angegeben";
38.
	echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
39.
	exit;// Skript beenden
40.
 }
41.
 /*
42.
 Gibt es den Nickname schon?
43.
 */
44.
 $result=mysql_query("select * from auth where UserName='$nickname'");
45.
 if ( mysql_num_rows($result)>0){
46.
  echo "Benutzername $nickname ist schon vergeben";
47.
	echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
48.
	exit;// Skript beenden
49.
 }
50.
 /*
51.
 Captcha-Überprüfung
52.
 */
53.
 if($_SESSION["captcha_code"]!=$captcha){
54.
  echo "Sie haben den Code nicht korrekt eingegeben!<br/>";
55.
	echo "Benutzer $nickname wird nicht angelegt!";
56.
	echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
57.
 }else{
58.
			echo "Sie haben den Code <font color=\"#ff000\">$captcha</font> korrekt eingegeben.<br/>";
59.
			echo "Benutzer $nickname wird angelegt.";
60.
			/*
61.
			Datenbankeintrag vornehmen
62.
			*/
63.
			}
64.
}else{?>
65.
<form action="reg.php" method="post">
66.
Nickname: <input type="text" name="nickname" /><br/>
67.
Vorname: <input type="text" name="vorname" /><br><br>
68.
<img src="captcha_pic.php"> CaptchaCode <input type="text" name="captcha" /><br/>
69.
<input type="submit" name="cmd" value="Eintragen" />
70.
</form>
71.
<?}?>
72.
</body>
73.
</html>

Grüße
Günni
Bitte warten ..
Mitglied: 46356
17.09.2007 um 15:42 Uhr
Hallo Günni!

Du hast mir mit deinem Script sehr geholfen...

Leider werden bei mir die Benutzerdaten nicht in meinen SQL Datenbank geschrieben!

Vielleicht kannst du mir helfen...

Script:

01.
<?
02.
session_start();
03.
//Meine Datenbankverbindung und mehr...
04.
include("connect.inc.php");
05.
?>
06.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
07.
<html>
08.
<head>
09.
<title>Registrierung</title>
10.
</head>
11.
<body>
12.
<?
13.
$cmd=$_POST['cmd'];
14.
if($cmd=="Eintragen"){
15.
 /*
16.
 trim entfernt Leerzeichen am Anfang und am Ende
17.
 */
18.
 $vorname=trim($_POST['vorname']);
19.
 $nachname=trim($_POST['nachname']);
20.
 $Geburtstag=trim($_POST['geburtstag']);
21.
 $Adresse=trim($_POST['adresse']);
22.
 $Ort=trim($_POST['ort']);
23.
 $Land=trim($_POST['land']);
24.
 $Bundesland=trim($_POST['bundesland']);
25.
 $Telefon=trim($_POST['telefon']);
26.
 $Mail=trim($_POST['mail']);
27.
 $nickname=trim($_POST['nickname']);
28.
 $Passwort1=trim($_POST['passwort1']);
29.
 $Passwort2=trim($_POST['passwort2']);
30.
 $captcha=trim($_POST['captcha']);
31.
 
32.

33.
 if(!ereg("^[a-zA-ZäöüÄÖÜ\-]+$",$vorname)){
34.
  echo "Sie haben ihren Vornamen nicht korrekt angegeben";           	// Vorname
35.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
36.
    exit;// Skript beenden
37.
 }
38.

39.

40.
 if(!ereg("^[a-zA-Z1-9\.\-]+$",$nachname)){
41.
  echo "Du hast deinen Nachnamen nicht korrekt eingegeben!";		// Nachname	
42.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
43.
    exit;// Skript beenden
44.
 }
45.

46.
 if(!ereg("^[0123456789\.]+$",$Geburtstag)){
47.
  echo "Du hast dein Geburtstag nicht korrekt eingegeben!";		// Geburtstag	
48.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
49.
    exit;// Skript beenden
50.
 }
51.

52.
 if(!ereg("^[a-zA-Z0123456789\.\-\ \]+$",$Adresse)){
53.
  echo "Du hast deine Adresse nicht korrekt eingegeben!";		// Adresse	
54.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
55.
    exit;// Skript beenden
56.
 }
57.

58.
 if(!ereg("^[a-zA-Z1-9\.\-]+$",$Ort)){
59.
  echo "Du hast deinen Ort nicht korrekt eingegeben!";			// Ort	
60.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
61.
    exit;// Skript beenden
62.
 }
63.

64.
 if(!ereg("^[a-zA-Z1-9\.\-]+$",$Land)){
65.
  echo "Du hast dein Land nicht korrekt eingegeben!";			// Land 
66.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
67.
    exit;// Skript beenden
68.
 }
69.

70.
 if(!ereg("^[a-zA-Z1-9\.\-\ö\ä\ü]+$",$Bundesland)){
71.
  echo "Du hast deine Bundesland nicht korrekt eingegeben!";		// Bundesland	
72.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
73.
    exit;// Skript beenden
74.
 }
75.

76.

77.
 if(!ereg("^[0123456789\/\.]+$",$Telefon)){
78.
  echo "Du hast deine Telefonnummer nicht korrekt eingegeben!";		// Telefon	
79.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
80.
    exit;// Skript beenden
81.
 }
82.

83.
 if(!ereg("^[a-zA-Z1-9\.\@\-]+$",$Mail)){
84.
  echo "Du hast deine E-Mail Adresse nicht korrekt eingegeben!";	// Mail	
85.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
86.
    exit;// Skript beenden
87.
 }
88.

89.
 if(!ereg("^[a-zA-Z1-9\.\-]+$",$nickname)){
90.
  echo "Du hast deinen Nickname nicht korrekt angegeben";
91.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
92.
    exit;// Skript beenden
93.
 }
94.

95.
 /*
96.
 Gibt es den Nickname schon?
97.
 */
98.
 $result=mysql_query("select * from users where nickname='$nickname'");
99.
 if ( mysql_num_rows($result)>0){
100.
  echo "Benutzername $nickname ist schon vergeben";
101.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
102.
    exit;// Skript beenden
103.
 }
104.

105.
 if ($Passwort1 != $Passwort2)
106.
   {
107.
	echo "Die Passwörter stimmen nicht überein!!";
108.
        exit;
109.
   }
110.

111.
 /*
112.
 Captcha-Überprüfung
113.
 */
114.
 if($_SESSION["captcha_code"]!=$captcha){
115.
  echo "Sie haben den Code nicht korrekt eingegeben!<br/>";
116.
    echo "Benutzer $nickname wird nicht angelegt!";
117.
    echo "<a href=javascript:history.back(-1)> Zur&uuml;ck</a>";
118.
 }else{
119.
            echo "Sie haben den Code <font color=\"#ff000\">$captcha</font> korrekt eingegeben.<br/>";
120.
            echo "Benutzer $nickname wird angelegt.";
121.

122.
    $eintrag = "INSERT INTO users (Vorname, Nachname, Geburtstag, Adresse, Ort, Land, Bundesland, Telefon, Mail, Nickname, Passwort) VALUES 
123.
    ('$vorname', '$nachname', '$Geburtstag', '$Adresse', '$Ort', '$Land', '$Bundesland', '$Telefon', '$Mail', '$nickname', '$'Passwort)";
124.
    $eintragen = mysql_query($eintrag); 
125.

126.

127.

128.
            }
129.
}else{?>
130.
<form action="script.php" method="post">
131.
<table border="0">
132.

133.
<tr>
134.
<td> Vorname: </td> <td> <input type="text" name="vorname"> </td>
135.
</tr>
136.

137.
<tr>
138.
<td> Nachname: </td> <td> <input type="text" name="nachname"> </td> 
139.
</tr>
140.

141.
<tr>
142.
<td> Geburtstag: </td> <td> <input type="text" name="geburtstag"> </td> 
143.
</tr>
144.

145.
<tr>
146.
<td> Adresse: </td> <td> <input type="text" name="adresse"> </td> 
147.
</tr>
148.

149.
<tr>
150.
<td> Ort: </td> <td> <input type="text" name="ort"> </td> 
151.
</tr>
152.

153.
<tr>
154.
<td> Land: </td> <td> <input type="text" name="land"> </td> 
155.
</tr>
156.

157.
<tr>
158.
<td> Bundesland: </td> <td> <input type="text" name="bundesland"> </td> 
159.
</tr>
160.

161.
<tr>
162.
<td> Telefonnummer: </td> <td> <input type="text" name="telefon"> </td> 
163.
</tr>
164.

165.
<tr>
166.
<td> Mail: </td> <td> <input type="text" name="mail"> </td> 
167.
</tr>
168.

169.
<tr>
170.
<td> Nickname: </td> <td> <input type="text" name="nickname"> </td> 
171.
</tr>
172.

173.
<tr>
174.
<td> Passwort: </td> <td> <input type="password" name="passwort1"> </td> 
175.
</tr>
176.

177.
<tr>
178.
<td> Passwort wiederholen: </td> <td> <input type="password" name="passwort2"> </td> 
179.
</tr>
180.

181.
<tr>
182.
<td> CaptchaCode</td> <td> <input type="text" name="captcha"> </td> <td>  <img src="captcha.php"></td>
183.
</tr>
184.
<tr> 
185.
<td> <input type="submit" name="cmd" value="Eintragen"> </td> 
186.
</tr>
187.

188.
</form>
189.
<?}?>
190.

191.
Lg. Alex
Bitte warten ..
Mitglied: 46356
17.09.2007 um 21:25 Uhr
Habe das Problem gelöst!

Es lag an der "Instert into ..." eingabe...

Lg. Alex
Bitte warten ..
Ähnliche Inhalte
PHP
PHP statements mit PHp erzeugen
gelöst Frage von LorderichPHP4 Kommentare

Hallo zusammen, ich habe eine Datei, in welcher per switch und case die Webseiten definiert werden, welche bei Aufruf ...

Webbrowser

Windows 7 Internet Explorer 11 Das Captcha von Googel schaltet nicht weiter

Frage von 116480Webbrowser

Hallo, ab und zu kommt ein Captcha von Google. Wir haben schon Internet Explorer zurück gesetzt. Gibt man das ...

PHP

PHP Versionsproblem

gelöst Frage von HenerePHP3 Kommentare

Hallo zusammen, ich habe ein Motorradforum übernommen bzw. vor der Abschaltung bewahrt. Nun möchte ich es auf einen neuen ...

PHP

Verschlüsselung PHP

Frage von gamerffPHP4 Kommentare

Hallo Forum, da ich noch nicht so gut im PHP Programmieren bin benötige ich bitte eure Hilfe. Ich brauch ...

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 1 TagDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 1 TagSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 2 TagenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 3 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
Router & Routing
Lancom-VPN-Client
Frage von FM28880Router & Routing15 Kommentare

Hallo zusammen, ich habe heute zwei Rechner mit einem Lancom VPN-Client eingerichtet. Die VPN-Verbindung wird aufgebaut und steht. Jedoch ...

Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...

Basic
VBS soll alle Ordner auswählen, die im Startmenu angezeigt werden
Frage von Senseless-CreatureBasic12 Kommentare

Guten Morgen - gibt es eine Möglichkeit, per VBS das Startmenu in Win10 zu modifizieren? Ich beherrsche VBS mittlerweile ...

Hyper-V
Hyper-V Manager startet, jedoch keine VM
Frage von NaleorHyper-V11 Kommentare

Hallo zusammen, auf meinem Windows 10 (Build 1703) Notebook von der Arbeit scheint Hyper-V plötzliche nicht mehr zu funktionieren. ...