zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden kontaktformular mit captcha fehler

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 05.12.2009, 23:53
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 23.10.2009
Beiträge: 65
talkuvit befindet sich auf einem aufstrebenden Ast
Standard kontaktformular mit captcha fehler

hallo user, ich habe eine menge fehlermeldung mit diesem formular
kontaktformular
wie bekomme ich diese beseitigt? kann mir da bitte jemand mit textung von code weiterhelfen?
hier der code:
PHP-Code:
<?
/***************************************************************************
 *                                                                          *
 *   copyright            : (C) 2008 Daniel Kauser                         *
 *   email                : danysahne333@mail.ru                           *
 *   website              : www.cb-talk.de/captcha.html                    *
 *                                                                         *
 *                                                                         *
 *                                                                         *
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   Diese Script ist gratis. Viele andere Scripte kosten viel Geld doch   *
 *   ich und zum Glück auch noch ein paar andere sind gegen sowas und      *
 *   bieten unsere Scripte gratis an. Deshalb löscht nicht den copyright   *
 *   von mir damit wir kein Stress kriegen                                   *
 *                                                                         *
 ***************************************************************************/
        
    // Header
    
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Datum aus Vergangenheit
    
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); 
                                                         
// immer geändert
    
header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
    
header("Cache-Control: post-check=0, pre-check=0"false);
    
header("Pragma: no-cache");                          // HTTP/1.0
    
    // Alle Fehler und Notices anzeigen
    
error_reporting(E_ALL);
    
    
session_start();
    
    
$CAPTCHA_TempString="";
    
    
// Zufallsfunktion für Zahlen und Buchstaben
        
function GetRandomChar() {
    
    
// Zufallszahl generieren
        
mt_srand((double)microtime()*1000000);
        
$CAPTCHA_RandVal mt_rand(1,2);
    
    
// Buchstabensalat generieren jeh nachdem ob Randval 1 oder 2 ist
        
switch ($CAPTCHA_RandVal) {
        case 
1:
            
// Zahlen 0-9
            
$CAPTCHA_RandVal mt_rand(4857);
            break;
        case 
2:
            
// Grosse Buchstaben
            
$CAPTCHA_RandVal mt_rand(6590);
            break;
        }
        
    
// Zufallscode ausgeben
        
return chr($CAPTCHA_RandVal);
    }
    
    
// Zufallscode x-stellig ausgeben
        
for ($i 1$i <= 6$i++) {
           
$CAPTCHA_TempString .= GetRandomChar();
    }

    
// Text in Sessionvariable speichern
    
if (isset($CAPTCHA_TempString)) {
        
$_SESSION["CAPTCHA_RndText"] = str_replace('I','E',str_replace('0','3',str_replace('1','S',str_replace('B','F',str_replace('O','P',str_replace('4','A',str_replace('D','K',$CAPTCHA_TempString)))))));
    } else {
        die(
"Zufallscode konnte nicht generiert werden!");
    }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="language" content="de" />
    <title>Kontaktformular</title>
</head>

<body>
<div style="border: 1px #000 solid; width: 350px; padding: 5px;">
<h3>Kontaktformular</h3>

<form method="post" action="kontakt_ausw.php" name="kontakt">
    <table>
    <tr><td><p>Name: </p></td><td><p><input name="name" size="34" type="text" <?if (isset($_SESSION['name'])) { echo 'value="' $_SESSION['name'] . '"'; }?>/></p></td></tr>
    <tr><td><p>Email: </p></td><td><p><input name="email" size="34" type="text" <?if (isset($_SESSION['email'])) { echo 'value="' $_SESSION['email'] . '"'; }?>/></p></td></tr>
    <tr><td><p>Betreff: </p></td><td><p><input name="betreff" size="34" type="text" <?if (isset($_SESSION['betreff'])) { echo 'value="' $_SESSION['betreff'] . '"'; }?>/></p></td></tr>
    <tr><td><p>Nachricht: </p></td><td><p><textarea name="nachricht" rows="3" cols="26"><?if (isset($_SESSION['nachricht'])) { echo  $_SESSION['nachricht'] ; }?></textarea></p></td></tr>
    
    <tr><td> </td><td><img border="0" src="captcha_img.php?PHPSESSID=<?echo session_id();?>&ver=<?echo time();?>" alt="" /></td></tr>
    <tr><td><p>Code: </p></td><td><p><input maxlength="6" name="txtCode" size="34" type="text" /></p></td></tr>
    <tr><td> </td><td><p><input class="button" type="submit" name="eintrag" value="eintragen" />&nbsp;<input class="button" type="reset" name="reset" value="l&ouml;schen" /></p></td></tr>
    </table>
    </div>
</form>
</body>
</html>
Gruß, talkuvit
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 06.12.2009, 15:05
Benutzerbild von Thielo
Web Ninja
XHTMLforum-Kenner
 
Registriert seit: 17.09.2009
Ort: Stuttgart oder so
Beiträge: 3.372
Thielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein Lichtblick
Standard

Vielleicht würdest du uns sagen was die Fehler sind.
Vielleicht solltest du deinen Code so aufbauen das auch du ihn verstehst. ersetz die php short tags mal durch das "richtige" einleitungstag.

verzichte vielleicht auf die Tabelle.

Gruß
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 06.12.2009, 15:31
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Zu deiner Frage... nehm die Ausgaben vor dem Senden der header()-Befehle raus. Sonst kannst du auch mit einem Output-Buffer arbeiten: ob_start()
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #4 (permalink)  
Alt 06.12.2009, 20:48
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 23.10.2009
Beiträge: 65
talkuvit befindet sich auf einem aufstrebenden Ast
Standard

du habe den header befehl herrausgenommen. nun sind weniger fehler vorhanden. erstmal danke dir praktikant.
folgende fehler sind noch da:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /kunden/137744_78112/webseiten/index.php: in /kunden/137744_78112/webseiten/kontakt.php on line 24

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /kunden/137744_78112/webseiten/index.php: in /kunden/137744_78112/webseiten/kontakt.php on line 24

------------------------------------
das ist der veränderte code


PHP-Code:
<?
/***************************************************************************
 *                                                                          *
 *   copyright            : (C) 2008 Daniel Kauser                         *
 *   email                : danysahne333@mail.ru                           *
 *   website              : www.cb-talk.de/captcha.html                    *
 *                                                                         *
 *                                                                         *
 *                                                                         *
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   Diese Script ist gratis. Viele andere Scripte kosten viel Geld doch   *
 *   ich und zum Glück auch noch ein paar andere sind gegen sowas und      *
 *   bieten unsere Scripte gratis an. Deshalb löscht nicht den copyright   *
 *   von mir damit wir kein Stress kriegen                                   *
 *                                                                         *
 ***************************************************************************/
    
    // Alle Fehler und Notices anzeigen
    
error_reporting(E_ALL);
    
    
session_start();
    
    
$CAPTCHA_TempString="";
    
    
// Zufallsfunktion für Zahlen und Buchstaben
        
function GetRandomChar() {
    
    
// Zufallszahl generieren
        
mt_srand((double)microtime()*1000000);
        
$CAPTCHA_RandVal mt_rand(1,2);
    
    
// Buchstabensalat generieren jeh nachdem ob Randval 1 oder 2 ist
        
switch ($CAPTCHA_RandVal) {
        case 
1:
            
// Zahlen 0-9
            
$CAPTCHA_RandVal mt_rand(4857);
            break;
        case 
2:
            
// Grosse Buchstaben
            
$CAPTCHA_RandVal mt_rand(6590);
            break;
        }
        
    
// Zufallscode ausgeben
        
return chr($CAPTCHA_RandVal);
    }
    
    
// Zufallscode x-stellig ausgeben
        
for ($i 1$i <= 6$i++) {
           
$CAPTCHA_TempString .= GetRandomChar();
    }

    
// Text in Sessionvariable speichern
    
if (isset($CAPTCHA_TempString)) {
        
$_SESSION["CAPTCHA_RndText"] = str_replace('I','E',str_replace('0','3',str_replace('1','S',str_replace('B','F',str_replace('O','P',str_replace('4','A',str_replace('D','K',$CAPTCHA_TempString)))))));
    } else {
        die(
"Zufallscode konnte nicht generiert werden!");
    }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="language" content="de" />
    <title>Kontaktformular</title>
</head>

<body>
<div style="border: 1px #000 solid; width: 350px; padding: 5px;">
<h3>Kontaktformular</h3>

<form method="post" action="kontakt_ausw.php" name="kontakt">
    <table>
    <tr><td><p>Name: </p></td><td><p><input name="name" size="34" type="text" <?if (isset($_SESSION['name'])) { echo 'value="' $_SESSION['name'] . '"'; }?>/></p></td></tr>
    <tr><td><p>Email: </p></td><td><p><input name="email" size="34" type="text" <?if (isset($_SESSION['email'])) { echo 'value="' $_SESSION['email'] . '"'; }?>/></p></td></tr>
    <tr><td><p>Betreff: </p></td><td><p><input name="betreff" size="34" type="text" <?if (isset($_SESSION['betreff'])) { echo 'value="' $_SESSION['betreff'] . '"'; }?>/></p></td></tr>
    <tr><td><p>Nachricht: </p></td><td><p><textarea name="nachricht" rows="3" cols="26"><?if (isset($_SESSION['nachricht'])) { echo  $_SESSION['nachricht'] ; }?></textarea></p></td></tr>
    
    <tr><td> </td><td><img border="0" src="captcha_img.php?PHPSESSID=<?echo session_id();?>&ver=<?echo time();?>" alt="" /></td></tr>
    <tr><td><p>Code: </p></td><td><p><input maxlength="6" name="txtCode" size="34" type="text" /></p></td></tr>
    <tr><td> </td><td><p><input class="button" type="submit" name="eintrag" value="eintragen" />&nbsp;<input class="button" type="reset" name="reset" value="l&ouml;schen" /></p></td></tr>
    </table>
    </div>
</form>
</body>
</html>
Mit Zitat antworten
  #5 (permalink)  
Alt 07.12.2009, 01:28
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Jetzt noch alles rausnehmen, was mit sessions zu tun hat. Das doofe ist dann nur... dein Captcha arbeitet dann auch nicht mehr.
Nutz lieber den Output-Buffer. Den beginnst du am Anfang des ersten Dokumentes, in dem eine Ausgabe stattfindet und am Ende des letzten Dokumentes wieder aus.

Das heißt. Wenn du eine index.php hast, die alles zusammenfeührt, dann beginnst du in der ersten Zeile mit ob_start() und schreibst in die letzte ob_end_flush(). So einfach ist das
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #6 (permalink)  
Alt 07.12.2009, 18:21
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 23.10.2009
Beiträge: 65
talkuvit befindet sich auf einem aufstrebenden Ast
Standard

also du meinst ich muss dieser zwei befehle direktn in die index.php schreiben oder doch in die includende kontakt.php datei? jeweils am anfang und am ende.
Mit Zitat antworten
  #7 (permalink)  
Alt 07.12.2009, 19:45
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 23.10.2009
Beiträge: 65
talkuvit befindet sich auf einem aufstrebenden Ast
Standard

du hab es jeweils probiert in der index und in der kontakt.php funktionierte irgendwie nicht.
gíbt es nicht noch andere möglichkeit?? oder habeb ich bestimmt etwas falsch gemacht??

er sagt mir immer folgendes: Parse error: syntax error, unexpected T_STRING in /kunden/137744_78112/webseiten/kontakt.php on line 24


also noch info, die index.php hat eigentlich zum teil eigenschaften wie eine html datei vom aufbau her.

Geändert von talkuvit (07.12.2009 um 19:59 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 07.12.2009, 20:48
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Ja, und um genau diese Ausgaben geht es, die musst du unterbinden, sonst kannst du die Session nicht setzen.
Das heißt, vor diese Ausgaben muss der Output-Buffer (natürlich in ein php-Tag) und nach diesen Ausgaben muss dann der Output-Buffer ausgegeben werden. Zum Beispiel so:

PHP-Code:
<?php ob_start(); ?>
<!DOCTYPE .... >
<html>
  <head>
    ....
  </head>
  <body>
    <div id="wrapper">
      <div id="header"> </div>
      ...
      <div id="footer">
    </div>
 </body>
</html>
<?php ob_end_flush(); ?>
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #9 (permalink)  
Alt 07.12.2009, 21:13
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 23.10.2009
Beiträge: 65
talkuvit befindet sich auf einem aufstrebenden Ast
Standard

du sebastian, es hat funktioniert , ich danke.

du wie macht man das die bestätigung auch mit auf der seite angezeigt wird?
wieder irgendie includen das ganze? also muss man einen befehl schreiben in der kontakt.php oder eben wo die auswertung ist das diese auswertung in der index.php angezeigt wird.

hier die kontakt_ausw.php

PHP-Code:
<?
    
// Session starten und confog.php includen
    
session_start();
    include (
"config.php");
    
    
// CaptchaCodes abfragen
    
$CAPTCHA_RandomText "";
    if (isset(
$_POST['txtCode'])){
    
$CAPTCHA_EnteredText str_replace("<","",str_replace(">","",str_replace("'","",str_replace("[","",str_replace("]","",$_POST['txtCode'])))));
    }
    if (isset(
$_SESSION['CAPTCHA_RndText'])) {
    
$CAPTCHA_RandomText $_SESSION['CAPTCHA_RndText'];
    }

    
// Eingabefelder abfragen
    
$_SESSION['name'] = $_POST['name'];
    
$_SESSION['email'] = $_POST['email'];
    
$_SESSION['betreff'] = $_POST['betreff'];
    
$_SESSION['nachricht'] = $_POST['nachricht'];
    
    
$email_i $_SESSION['email'];
    
    
// Email Funktion
    
function pruefe_mail($email_i) {
          if(
strstr($email_i"@")) {
            
$email_i explode ("@"$email_i);
            if(
strstr($email_i[1], ".")) $ok TRUE;
          }
          return 
$ok;
        }
    
    
// Eingaben prüfen
    
$fehler "";
    if(!
pruefe_mail($email_i) && !empty($email_i)) {
            
$fehler .= "<li>Email fehlerhaft!</li>";
            }
            if (
$_SESSION['name'] == ""){ 
            
$fehler .= "<li>Name fehlt!</li>";
            }
            if (
$_SESSION['email'] == ""){ 
            
$fehler .= "<li>Email fehlt!</li>";
            }
            if (
$_SESSION['betreff'] == ""){ 
            
$fehler .= "<li>Betreff fehlt!</li>";
            }
            if (
$_SESSION['nachricht'] == ""){ 
            
$fehler .= "<li>Nachricht fehlt!</li>";
            }
            if (
$CAPTCHA_EnteredText == $CAPTCHA_RandomText and isset($_POST['txtCode']) == true and isset($_SESSION['CAPTCHA_RndText'])){
            
$captcha true;
            } else {
            
$fehler .= "<li>Captcha fehlt oder fehlerhaft!</li>";
            }
    echo 
'<div style="border: 1px #000 solid; width: 350px; padding: 5px;">';        
    if (
$fehler == ""){
    
// Email zumsammensetzen
    
$email "From: " $_SESSION['email'];
    
$nachrichtfertig $_SESSION['name']. " schrieb: \n\n" $_SESSION['nachricht'];
    
$versand mail($empfaenger$_SESSION['betreff'], $nachrichtfertig$email);
            if (
$versand) {
            echo 
'<h3>Kontaktformular</h3>
            <p>Email ist erfolgreich versendet worden!</p>'
;
            
            
// Sessionvariablen löschen
            
unset($_SESSION['name']);
            unset(
$_SESSION['email']);
            unset(
$_SESSION['betreff']);
            unset(
$_SESSION['nachricht']);
            }
            
    } else {
    echo 
'<h3>Kontaktformular</h3>';
    echo 
$fehler;
    echo 
'<p><a href="kontakt.php">zurück</a></p>';
    }
    echo 
'</div>';    

    
// Session unset
    
unset($_SESSION['CAPTCHA_RndText']);
    
?>
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 07.12.2009, 21:28
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Propiers mal damit (entsprechende Passage in deinem Quelltext ersetzen):
PHP-Code:
echo '<h3>Kontaktformular</h3>';
    if(!empty(
$feher)) {
      echo 
$fehler;
    }
      else {
        echo 
'Das Formular wurde versendet. Vielen Dank';
      }
    echo 
'<p><a href="kontakt.php">zurück</a></p>'
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Redesign für Steiner Cycling Team pkipper Site- und Layoutcheck 11 09.02.2011 13:25
Kontaktformular Fehler ... root-2k (X)HTML 3 22.11.2010 21:05
PHP Kontaktformular und verschiedene Browser HTMLLernender (X)HTML 1 22.01.2010 12:08
Kontaktformular Inhalt von Textarea übergeben? sepp88 Serveradministration und serverseitige Scripte 8 27.12.2009 02:20
Sicherheit von eigenem PHP Kontaktformular Lloyd Larkin Serveradministration und serverseitige Scripte 13 01.10.2006 13:02


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:14 Uhr.