Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung PHP

Mitglied: 46356

46356 (Level 2)

29.08.2007, aktualisiert 17.09.2007, 4789 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.
?>
Mit freundlichen Grüßen. 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 ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Windows Netzwerk
gelöst Problem mit PSexec64 von Sysinternals (5)

Frage von MaxMoritz6 zum Thema Windows Netzwerk ...

Windows Server
gelöst Problem nach DC-Installation unter Server 2012 R2 (9)

Frage von manuel1985 zum Thema Windows Server ...

Windows 10
Problem: einzige Konto gesperrt + Bitlocker aktiv (14)

Frage von Windows11 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...