CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
19.04.2012, 22:39:17
|
Anfänger
|
|
Registriert seit: Apr 2012
Ort: Hannover
Alter: 63
Beiträge: 6
|
|
Captcha in Formular (mit Sessiondaten) integrieren
Hallo,
ich bin autodidaktischer php-Anfänger und betreibe eine Seite, auf der man Zimmer bei Inserenten (Vermietern) anfragen kann. Dazu sucht man sich einen Vermieter aus und kommt per Link auf das Anfrageformular. Dieses besteht neben anderen Frames (head.php, menu.php und foot.php) aus der anfrage.php.
In diese anfrage.php möchte ich gern aufgrund jüngster BOT-Erfahrungen ein Captcha einbauen, am besten unten am Ende, nach den Daten des Anfragenden und dem Freitext.
Mein Script hat, und das ist wohl gerade mein Problem, natürlich die Daten des Vermieters eingebunden (siehe hidden inputs).
Kann mir jemand dabei helfen, das Captcha so einzubinden, dass es vor das submit der Anfrage eingebunden wird? Vielleicht gibt es auch eine Lösung mit nur noch einem einzigen Button, also Check des Captchas und nach Prüfung dann das Absenden?
Das Script ist nicht aus meiner Feder, das habe ich nicht drauf, wie gesagt... siehe meine ersten Worte;)
Die anfrage.php ist zu lang, daher als zip-Anhang.
captcha.php
PHP-Code:
<?php
session_start();
unset($_SESSION['captcha_spam']);
function randomString($len) {
function make_seed(){
list($usec , $sec) = explode (' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
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 = "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);
?>
captcha_demo.php
PHP-Code:
<?
session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
echo "stimmt alles";
}else{
?>
<form action="/index.php" method="POST">
<tr>
<td><img src="captcha.php" border="0" title="Sicherheitscode"></td>
<td><input type="text" name="sicherheitscode" size="5"></td>
<td><input type="submit" value="Send Captcha"</td>
</tr>
</form>
<?
}
?>
Mit dieser Datei habe ich die Funktionstüchtigkeit des Captchas bereits auf gesondertem Webspace geprüft. Natürlich mit png-Datei als Hintergrund und ttf-Datei. Alles ok.
|
19.04.2012, 23:43:59
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Captcha in Formular (mit Sessiondaten) intgrieren
Hi
in dem anfrage.zip hab ich folgenden Code gefunden MEHR NICHT
Code:
<a href="mycaptcha/captcha-page.php">
O.o
Zitat:
Kann mir jemand dabei helfen, das Captcha so einzubinden, dass es vor das submit der Anfrage eingebunden wird?
|
Das ist hier KEIN helft-mir-ich-mach-nix-forum sondern du versuchst
zeigst uns das wir helfen das besser/effizienter zu machen und geben
weiterführende Links.
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
20.04.2012, 12:50:49
|
Anfänger
|
|
Registriert seit: Apr 2012
Ort: Hannover
Alter: 63
Beiträge: 6
|
|
AW: Captcha in Formular (mit Sessiondaten) intgrieren
Oh, sorry, da war ich gestern abend wohl schon etwas überarbeitet und habe nach der vielen Umbenennerei der Dateien glatt die falsche anfrage.php. gepostet. Jetzt ist die richtige dran.
In der ist nun auch mein Versuch enthalten, das Captcha einzubinden. Ich hatte im ersten Post halt nur nicht vor, mit meiner amateurhaften Einbindung für Belustigung zu sorgen;) Aber richtig, nur so lernt man es wohl...
Die Scripts hab ich von stoppt-den-spam.info und nur ganz vorsichtig angepasst.
Das Ergebnis ist zu sehen auf:
http://www.messezimmer-hannover.de/r...6/anfrage1.php
Vorerst erkenne ich 2 Fehler:
- Die captcha.png wird offensichtlich nicht geladen, auch der direkte Aufruf über
http://www.messezimmer-hannover.de/r...ha/captcha.png
geht nicht (not found on this server), sie liegt da aber!
- Ich bekomme auf der Ausgabeseite die Fehlermeldung:
Warning: Cannot send session cache limiter - headers already sent (output started at /mnt/web6/62/74/529274/htdocs/relaunch06/anfrage1.php:3) in /mnt/web6/62/74/529274/htdocs/relaunch06/anfrage1.php on line 328
Weiß jemand, was ich falsch mache?
|
20.04.2012, 15:59:21
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
|
|
AW: Captcha in Formular (mit Sessiondaten) intgrieren
In deiner anfrage1.php werden schon Headerinformationen an den Client gesendet bevor session_start() die SESSION beginnen kann.
Ausserdem habe ich dein PNG gefunden. Mal sehen ob dir etwas auffällt.
http://www.messezimmer-hannover.de/r...ha/captcha.PNG
Und das ist die Stelle an der der Fehler sich befindet.
PHP-Code:
<td> </td>
<? // Captcha Start
session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
session_start
Geändert von urvater (20.04.2012 um 16:21:28 Uhr)
|
20.04.2012, 16:09:02
|
Anfänger
|
|
Registriert seit: Apr 2012
Ort: Hannover
Alter: 63
Beiträge: 6
|
|
AW: Captcha in Formular (mit Sessiondaten) intgrieren
DANKE!
Also muss das ganze Script mit session_start() beginnen, richtig?
Und png ist nicht gleich PNG??? Das habe ich über Dekaden vernachlässigt;)
|
20.04.2012, 16:27:25
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
|
|
AW: Captcha in Formular (mit Sessiondaten) intgrieren
Zitat:
Zitat von tmaina
DANKE!
Also muss das ganze Script mit session_start() beginnen, richtig?
|
fast richtig. session_start muss gesetzt werden bevor es zu einer Ausgabe kommt. Theoretisch befindet sich die Ausgabe immer am Ende einer Verarbeitung.
Nennt sich EVA Prinzip.
Zitat:
Zitat von tmaina
Und png ist nicht gleich PNG??? Das habe ich über Dekaden vernachlässigt;)
|
Wir reden hier von Dingen, die ein Server oder PC verarbeiten soll. Für die meisten Server ist ein APFEL weder Apfel noch apfel.
|
20.04.2012, 16:41:00
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
|
|
AW: Captcha in Formular (mit Sessiondaten) intgrieren
Ich habe einmal versucht ein Zimmer auf der Seite zu suchen. Da knallt es nur so vor Fehlermeldungen.
Zitat:
Warning: include(lang/lang_.php) [function.include]: failed to open stream: No such file or directory in /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php on line 2
Warning: include() [function.include]: Failed opening 'lang/lang_.php' for inclusion (include_path='.:/opt/RZphp52/includes') in /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php:2) in /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php on line 29
|
und
Zitat:
Warning: mktime() expects parameter 4 to be long, string given in /mnt/web6/62/74/529274/htdocs/relaunch06/inc/preiskalk.php on line 32
Warning: mktime() expects parameter 4 to be long, string given in /mnt/web6/62/74/529274/htdocs/relaunch06/inc/preiskalk.php on line 34
|
und
Zitat:
Warning: Invalid argument supplied for foreach() in /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php on line 309
Warning: Invalid argument supplied for foreach() in /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php on line 319
Warning: Invalid argument supplied for foreach() in /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php on line 330
Warning: Invalid argument supplied for foreach() in /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php on line 340
Warning: Invalid argument supplied for foreach() in /mnt/web6/62/74/529274/htdocs/relaunch06/liste.php on line 350
|
Ich glaube du solltest deine Seite nicht online stellen bevor alles ohne Probleme funktioniert.
Das benutzte Formular fand ich auf Unterkünfte finden
|
20.04.2012, 18:34:38
|
Anfänger
|
|
Registriert seit: Apr 2012
Ort: Hannover
Alter: 63
Beiträge: 6
|
|
AW: Captcha in Formular (mit Sessiondaten) intgrieren
Oh je, das war bis gestern in Ordnung. Hatte heute auf Strato die php-Einstellungen von 4.1.2 auf 5.2.17 geändert. Kann es sein, dass das die Ursache für die Fehlermeldungen war? Jetzt wieder zurück auf 4.1.2 und es scheint es wieder ok zu sein.
Sessioneintrag ist jetzt oben und Fehlermeldung weg.
png hab ich zu PNG geändert, das Bild bleibt jedoch noch weiter nur ein Logo.
|
20.04.2012, 19:00:12
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Captcha in Formular (mit Sessiondaten) integrieren
Zitat:
Zitat von tmaina
... Mit dieser Datei habe ich die Funktionstüchtigkeit des Captchas bereits auf gesondertem Webspace geprüft. Natürlich mit png-Datei als Hintergrund und ttf-Datei. Alles ok.
|
Ich vermisse hier ne Frage...
Prinzipiell gehört in Dein Formular-Script das Feld für den Captcha Text mit rein.
Optisch in der Nähe dann der img Tag:
Code:
<img src="captcha.php">
Das Script, welches die Formulareingaben überprüft, muß natürlich den Userstring mit dem String in der Session vergleichen.
btw: captcha.php scheint wohl schon ein paar Jahre auf dem Buckel zu haben...
Eben mal getestet:
http://validator.w3.org/check?uri=ht...Inline&group=0
Result: 169 Errors, 18 warning(s)
Das HTML ist grottenschlecht.
|
20.04.2012, 20:17:11
|
Anfänger
|
|
Registriert seit: Apr 2012
Ort: Hannover
Alter: 63
Beiträge: 6
|
|
AW: Captcha in Formular (mit Sessiondaten) intgrieren
Oh, und dafür hab ich damals mal Geld gezahlt. Egal, ist lange her;)
Session_start, Textfeld und img Tag hab ich drin. Das sieht in der anfrage.php jetzt so aus (Ausschnitte):
PHP-Code:
<?
session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
echo "OK";
}else{
}
?>
...
PHP-Code:
<td><img src="captcha/captcha.php" border="0" title="Sicherheitscode"></td></tr>
<tr>
<td> </td>
<td><input type="text" name="sicherheitscode" size="5"></td></tr>
<tr>
<td> </td>
<td><input type="submit" value="Check"</td></tr>
<?
}
?>
Die Klammer in der vorletzten Zeile irritiert mich, aber ohne gibts parse error.
Im Unterordner "captcha" liegen die captcha.php, captcha.PNG und XFILES.TFF
Ich füge aber auch nochmal die komplette aktualisierte anfrage.php als zip bei.
Das Problem ist nun: Image (und font) werden nicht angezeigt.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:33:52 Uhr.
|