php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.12.2011, 07:27  
Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 56
PHP-Kenntnisse:
Anfänger
myoddo befindet sich auf einem aufstrebenden Ast
Standard Captcha Wo ist der Hund begraben ?

Hallo Leute,
versuche in ein Kontaktformular ein Captcha einzubauen.
Das Captcha wird im Formular angezeigt. Der Code ändert sich auch immer.
Die if Abfrage bringt mir aber immer einen Fehler
else
{
echo "<br> Bitte geben sie einen neuen Sicherheitscode ein";
}

Wo muss ich die sassion starten ?
Welche Fehler findet ihr noch ?
Nachfolgend der Code.
DANKE

Html Kontaktformular:
PHP-Code:
</head>
<?php
session_start
();
?>
<body id="kontakt">
      <div id="wrapper

.............
<div class="capcha">
                        <img class="capcha"src="captcha/captcha.php" border="0" title="Sicherheitscode"/>
                        <input type="text" name="sicherheitscode" size="5">
                        
                        </div>
                    
                    
                    
                    
                    </form>

Nun zur Formular Datei


PHP-Code:
<div id="textbereich">
            <div id="textinlay">

                              
                 
                <div class="kontaktformular">  <!-- anfang formular -->
                
<?php 

session_start
();



    

echo 
"<h3> Kontaktformular Auswertung</h3>";

    
$empfaenger "xxxxx@yyyyyy" ;
    
$betreff "xxxxx" ;
    
$von "From: Kontaktformular <xxxxxx@yyyy.de>" ;
        
    
$betreff "Sie haben folgenden Betreff gewählt: -" ;
    if (isset(
$_POST['CheckBox01'])) $betreff .= "www - ";
    if (isset(
$_POST['CheckBox02'])) $betreff .= "www- ";
       
    
$anrede $_POST ['anrede'];
    
$name $_POST ['name'];
    
$email $_POST ['email'];
    
$nachricht $_POST ['nachricht'];
    
    
    
$name strip_tags ($name);    /* Entfernt Sonderzeichen in Namenfeld,Email,Nachricht */
    
$name htmlspecialchars ($name);
    
$name trim ($name);
    
$name stripslashes ($name);

    
$email strip_tags ($email);
    
$email htmlspecialchars ($email);
    
$email trim ($email);
    
$email stripslashes ($email);
    
    
$nachricht strip_tags ($nachricht);
    
$nachricht htmlspecialchars ($nachricht);
    
$nachricht trim ($nachricht);
    
$nachricht stripslashes ($nachricht);
    
$nachricht nl2br ($nachricht);
    
     
    
$name_error false//fehler beim Nameneintrag 
    
    
if ($mail_gesendet=false) {
    echo 
"<h4>Ihr Mail wurde an uns gesendendet.</h4> <br />";
    }
    
    
    if (empty (
$name)){
    
$name_error true;
    }else{
    
$name_ok $name;
    }
    if(
$name_error == true) {  //Fehler beim Namen
    
echo " Sie haben vergessen ihren Name einzutragen!<br /> ";
    }
            
    echo 
"Name: " .$anrede' '.$name_ok'<br />';
    
    
/* Überprüft die E-Mail-Adresse auf Gültigkeit*/

    
function mailCheck($email) { 
    return 
preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-.]+\.([a-zA-Z]{2,4})$/"$email); 
        
    }
    
    
$mail_gepr mailCheck ($email);
    
    if(
$mail_gepr == 1)
    {
    echo 
"Ihre eMail Adresse lautet: $email";
    }
    else
    {
    echo 
"<br /> Ihr Mailadresse ist nicht OK. Bitte überprüfen sie diese!";
    }
    
    
/* Ende Überprüft die E-Mail-Adresse auf Gültigkeit*/
    
    
/* und hier das captcha */
    
      
if (md5$_POST['sicherheitscode'] ) != $_SESSION['captcha_code'])
    {
        
$Fehlerfrei FALSE;
        
$CaptchaFehler TRUE;
    }
 
    
// Wenn alle Felder ausgefuellt wurden und der CAPTCHA-Code korrekt war
    
if ($Fehlerfrei)    
    {
        
// Code zum Email-Versand ausfuehren
        
echo"captcha ist OK";
    }
    else 
    {
    echo 
"<br> Bitte geben sie einen neuen Sicherheitscode ein";
    }
    
    
 
// Ende captcha 


    
echo '<br />'.$betreff;
    echo 
'<br /> Nachricht: <br />';
    echo 
$nachricht;
    
    
$mailnachricht $betreff.
                     
"\nName: ".$anrede' '.$name
                    
"\nMailadresse: ".$email.
                    
"\nNachricht:\n".$nachricht;
    
    if ((
$mail_gepr == "1")AND ($name_ok)){
        
mail($empfaenger,$betreff,$mailnachricht);
        
$mail_gesendet true;
    }
    else{
        echo 
"<br /> <br /> <h4>Ihr Mail wurde wegen fehlerhafte Eingabe nicht versendet! </h4>";
        
    }
    

    
    
    
    
    
?>
    
        
                
                
                
                
                </div>  <!-- ende Formular -->

Diese Datei habe ich in captcha/captcha.php gespeichert
/ von phpBuddy.de kopiert/


PHP-Code:
<?php
// Session starten
session_start();
// Alten CAPTCHA-Code aus der Session loeschen
unset( $_SESSION['captcha_code'] );

// Das Cachen der Grafik verhindern
header"Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header"Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT" );
header"Cache-Control: no-store, no-cache, must-revalidate" );
header"Cache-Control: post-check=0, pre-check=0"false );
header"Pragma: no-cache" );

// Dem Browser mitteilen das es sich hierbei um ein JPG handelt.
header'Content-type: image/jpeg' );

// Sicherheitscode generieren
$AlphaNumerischerString "ABCDEFGH2345689";
$ZufallString1 substrstr_shuffle$AlphaNumerischerString ), 0);
$ZufallString2 substrstr_shuffle$AlphaNumerischerString ), 0);
$ZufallString3 substrstr_shuffle$AlphaNumerischerString ), 0);
$ZufallStringKomplett $ZufallString1.$ZufallString2.$ZufallString3;

// Sicherheitscode in der Session speichern
$_SESSION['captcha_code'] = md5$ZufallStringKomplett );

// Grafik erzeugen und an den Browser senden
$Schriftarten = array( "zachary.ttf""mtcorsva.ttf""gilligan.ttf");
$Bilddatei imagecreatefrompng"hintergrund.png" );
$TextFarbe1 imagecolorallocate$Bilddatei0125);
$TextFarbe2 imagecolorallocate$Bilddatei1307090 );
$TextFarbe3 imagecolorallocate$Bilddatei18090190 );
imagettftext$Bilddatei1215324$TextFarbe1$Schriftarten[0], $ZufallString1 );
imagettftext$Bilddatei1602615$TextFarbe2$Schriftarten[1], $ZufallString2 );
imagettftext$Bilddatei14, -205318$TextFarbe3$Schriftarten[2], $ZufallString3 );
imagejpeg$Bilddatei );

// Grafik zerstoeren und Speicher freigeben
imagedestroy$Bilddatei );
?>
myoddo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.12.2011, 08:37  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.141
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

PHP-Code:
error_reporting(-1); 
Zitat:
Hinweis:

Um Cookie-basierte Sessions zu verwenden muss session_start() aufgerufen werden, bevor irgend etwas an den Browser geschickt wird.


http://php.net/manual/de/function.session-start.php
Und dann noch: http://1ngo.de/web/captcha-spam.html

LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 10.12.2011, 11:17  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Code:
</head> <---AUSGABE
<?php 
session_start(); <-- FEHLER weil schon eine Ausgabe gemacht wurde
?>
Und hier das gleiche:
Code:
  <div class="kontaktformular">  <!-- anfang formular --> 
                 
<?php  

session_start();
PHP Handbuch zu session_start: http://php.net/manual/de/function.session-start.php
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 11.12.2011, 07:18  
Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 56
PHP-Kenntnisse:
Anfänger
myoddo befindet sich auf einem aufstrebenden Ast
Standard Captcha sorry muss noch einmal nachfragen

Danke für eure Hilfe!
Bin allerdings doch zu doof.
Habe nun das Formular ausgeschlachtet und mochte erst mal das Captcha zum laufen bringen.

Seite mit dem Captcha.
PHP-Code:
<?php 
session_start
();
?>
<!-- nun das html Formular-->
<html>
<body>        
                    
<form name="formular" action="kontakt-reture.php" method="post" enctype="text/html">
                    
                                                    <div class="capcha">
<img class="capcha"src="captcha/captcha.php" border="0" title="Sicherheitscode"/>
<input type="text" name="sicherheitscode" size="6">
                                        </div>                
                                                
<div class="submit"><input type="submit" value="Senden" id="submit" name="submit" />
<input type=reset value="Clear" id="submit" name="clear">
</div>
</form>            

</body>
</html>

Und jetzt die zurückgegebene Seite.
Ich kann eingeben was ich will. Es kommt immer else „ Bitte geben sie einen neuen Sicherheitscode ein"

PHP-Code:
<?php 
session_start
();

echo 
"<h3> Kontaktformular Auswertung</h3>";

      if (
md5$_POST['sicherheitscode'] ) != $_SESSION['captcha_code'])
    {
        
$Fehlerfrei FALSE;
        
$CaptchaFehler TRUE;
    }
 
    
// Wenn alle Felder ausgefuellt wurden und der CAPTCHA-Code korrekt war
    
if ($Fehlerfrei)    
    {
        
// Code zum Email-Versand ausfuehren
        
echo"captcha ist OK";
    }
    else 
    {
    echo 
"<br> Bitte geben sie einen neuen Sicherheitscode ein";
    }    
    
    
?>
Danke für eure Mühe !
myoddo ist offline   Mit Zitat antworten
Alt 11.12.2011, 10:36  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.141
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Was hälts du von debuggen? Lass dir an der Stelle hier die beiden mal ausgeben, dann kannst Du genau sehen was darin enthalten ist und verglichen wird. Nachdem das vermutlich nicht das das selbe ist, gilt dann zu prüfen "warum" die Werte nicht ident sind.

-> Ist der Captcha Code auch md5() gehast?
-> Ist der Session Wert ev. gar nicht vorhanden?
-> Wo initialisiert du $Fehlerfrei und $CaptchaFehler ?
dazu: dreh dein Error Reporting auf -> error_reporting(-1);

PHP-Code:
// ...

// hier mach mal
var_dumpmd5($_POST['sicherheitscode']), $_SESSION['captcha_code'] );

// dein code
if (md5$_POST['sicherheitscode'] ) != $_SESSION['captcha_code'])
// ... 
LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (11.12.2011 um 10:40 Uhr).
hausl ist offline   Mit Zitat antworten
Alt 11.12.2011, 11:40  
Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 56
PHP-Kenntnisse:
Anfänger
myoddo befindet sich auf einem aufstrebenden Ast
Standard

Was hälts du von debuggen?

Bestimmt viel. Muss nur wissen wie ??
myoddo ist offline   Mit Zitat antworten
Alt 11.12.2011, 11:49  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.141
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Lass dir an den "kritischen" Stellen (direkt vor Bedingungen, Schleifen, in Schleifen, ...) die relevanten Inhalte ausgeben mit echo oder var_dump().

Hier: http://www.php.de/wiki-php/index.php...ging:Leitfaden
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 11.12.2011, 11:55  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von myoddo Beitrag anzeigen
Was hälts du von debuggen?

Bestimmt viel. Muss nur wissen wie ??
Ist ja nicht so, als hätte hausl Dir nicht bereits die wichtigsten Knackpunkte gezeigt, die Du checken solltest!
Dazu noch mit einem konkreten Ansatz. Was brauchst Du noch???
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 11.12.2011, 14:03  
Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 56
PHP-Kenntnisse:
Anfänger
myoddo befindet sich auf einem aufstrebenden Ast
Standard

Was hälts du von debuggen? Lass dir an der Stelle hier die beiden mal ausgeben, dann kannst Du genau sehen was darin enthalten ist und verglichen wird. Nachdem das vermutlich nicht das das selbe ist, gilt dann zu prüfen "warum" die Werte nicht ident sind.


Sorry der Wert ist identisch

Kontaktformular Auswertung
string(32) "189ca41b6840e385ea949d0f1f9c3efd" string(32) "189ca41b6840e385ea949d0f1f9c3efd"
Bitte geben sie einen neuen Sicherheitscode ein


hast noch ne Idee ?
Danke
myoddo ist offline   Mit Zitat antworten
Alt 11.12.2011, 14:11  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Klar das immer kommt das der Code falsch ist.

PHP-Code:
   if ($Fehlerfrei
Wird auf false gesetzt wenn der Code "tatsächlich" falsch ist. Aber wenn er richtig ist wird $Fehlerfrei niemals gesetzt weswegen es auch nicht true sein kann -> else Case wird ausgeführt.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Probleme beim Captcha erstellen maikell PHP Einsteiger 2 26.04.2011 14:23
Probleme mit Captcha Dennis85 PHP Einsteiger 10 08.02.2011 15:15
Scriptangebot Captcha md5() Scriptbörse 8 12.09.2010 23:21
Captcha problem Speedchecker94 Beitragsarchiv 1 30.10.2009 15:06
captcha stimmt nicht überein chrismh PHP Tipps 2009 5 22.06.2009 22:11
Gästebuch Captcha DjRay PHP Tipps 2008 9 10.10.2008 14:44
captcha problem in unterordnern Change PHP Tipps 2008 9 10.08.2008 22:43
Captcha in Website einbauen Dartgott PHP Tipps 2008 9 23.04.2008 15:53
Captcha in bestehendes GB einbauen ZeroQL PHP Tipps 2008 6 08.04.2008 15:32
Captcha Frage und vorstelung meiner seite oerny18 PHP Tipps 2008 10 31.03.2008 20:05
[Erledigt] Probleme mit Einbindung Captcha PHP Tipps 2006 0 18.08.2006 19:42
Cookie-Problem: Wo liegt der Hund begraben? SvenLittkowski PHP Tipps 2006 6 03.04.2006 22:39
Gästebuch mit captcha emerge PHP Tipps 2006 8 01.04.2006 10:06
Da wird der Hund in der Pfanne verrückt… php_frage Off-Topic Diskussionen 5 30.01.2006 23:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
input name=\submit\ type=\submit\ class=\submit\ id=\submit\ value=\senden\, der sicherheitscode stimmt nicht mit dem im bild überein. ein neuer code wurde erzeugt, bitte versuche es noch einmal.

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum