SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 19.04.2012, 22:39:17
tmaina tmaina ist offline
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($img000); //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.
Angehängte Dateien
Dateityp: zip anfrage.zip (154 Bytes, 5x aufgerufen)
Mit Zitat antworten
  #2  
Alt 19.04.2012, 23:43:59
Ckaos Ckaos ist offline
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!
Mit Zitat antworten
  #3  
Alt 20.04.2012, 12:50:49
tmaina tmaina ist offline
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?
Angehängte Dateien
Dateityp: zip anfrage.zip (3,1 KB, 5x aufgerufen)
Mit Zitat antworten
  #4  
Alt 20.04.2012, 15:59:21
Benutzerbild von urvater
urvater urvater ist offline
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>&nbsp;</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)
Mit Zitat antworten
  #5  
Alt 20.04.2012, 16:09:02
tmaina tmaina ist offline
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;)
Mit Zitat antworten
  #6  
Alt 20.04.2012, 16:27:25
Benutzerbild von urvater
urvater urvater ist offline
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 Beitrag anzeigen
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 Beitrag anzeigen
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.
Mit Zitat antworten
  #7  
Alt 20.04.2012, 16:41:00
Benutzerbild von urvater
urvater urvater ist offline
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
Mit Zitat antworten
  #8  
Alt 20.04.2012, 18:34:38
tmaina tmaina ist offline
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.
Mit Zitat antworten
  #9  
Alt 20.04.2012, 19:00:12
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
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 Beitrag anzeigen
... 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.
Mit Zitat antworten
  #10  
Alt 20.04.2012, 20:17:11
tmaina tmaina ist offline
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.
Angehängte Dateien
Dateityp: zip anfrage.zip (3,1 KB, 2x aufgerufen)
Mit Zitat antworten
Antwort

Stichworte
captcha, formular, sessiondaten


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Pflichtfelder mit Captcha verbinden neoman PHP Grundlagen 1 16.01.2011 03:51:33
Nach Submit Nutzereingaben im Formular behalten phpfey PHP Grundlagen 4 05.01.2010 11:55:37
captcha im Affenformular skone PHP Grundlagen 9 20.07.2009 11:55:55
Formular Problem (session?) dersupergrobi PHP für Fortgeschrittene und Experten 2 25.07.2004 14:27:16
update formular problem Silencer PHP für Fortgeschrittene und Experten 1 14.10.2002 08:29:44


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:33:52 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt