XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   Fehlermeldungen im php-script werden nicht ausgegeben (http://xhtmlforum.de/showthread.php?t=65965)

seeadler 14.10.2011 11:34

Fehlermeldungen im php-script werden nicht ausgegeben
 
hi,

habe folgendens phpscript
PHP-Code:

<?php
include 'head.php';
?>
<div id="maintext">
  <h2>Kontaktformular</h2>
<?php

// Ihre E-Mail-Adresse
$mailto "test@jaki-klaiber.de";

// Ihre Webseite (Startseite). Nach dem absenden der E-Mail
// gelangt der Besucher über einen Link auf Ihre Startseite.
$url "http://jaki.dyntec.de/unternehmen.php";

// Floodsperre - Innerhalb der Zeitspanne kann das Formular
// vom selben Benutzer nicht mehrmals gesendet werden.
$floodsperrzeit 50// Sperrzeit in Sekunden

// Datei in der die IP und die Zeit gespeichert werden sollen.
$flooddatei "floodsperre.txt"// Die Datei benötigt Schreibrechte!

// Automatische Weiterleitung zur Startseite nach dem absenden des Formulars.
$autoforward 5// Zeit in Sekunden

// Fortgeschrittene Anwender können ab hier Änderungen vornehmen.
error_reporting(0);
$eingabefehler ""// Bitte leer lassen!
$anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : "";
$anredeCk $anrede == "Frau" " checked='checked'" "";
$name = isset($_POST["name"]) ? $_POST["name"] : "";
$feld1 = isset($_POST["feld1"]) ? $_POST["feld1"] : ""// "Firma"
$feld2 = isset($_POST["feld2"]) ? $_POST["feld2"] : ""// "Straße und Haus-Nr."
$feld3 = isset($_POST["feld3"]) ? $_POST["feld3"] : ""// "PLZ und Ort"
$feld4 = isset($_POST["feld4"]) ? $_POST["feld4"] : ""// "Telefon"
$mailfrom = isset($_POST["mailfrom"]) ? $_POST["mailfrom"] : "";
$betreff "Anfrage"// Der Betreff für den E-Mail Kopf.
$nachricht = isset($_POST["nachricht"]) ? $_POST["nachricht"] : "";

// Spamschutz: Rechenaufgabe
$zufallszahl1 mt_rand(190);
$zufallszahl2 mt_rand(19);
$ergebnis md5($zufallszahl1 $zufallszahl2);
$code "&#" . (48 $zufallszahl2) . ";";

// Formular erstellen
$formular "<form action='" $_SERVER["SCRIPT_NAME"] . "' method='post'>
  <fieldset id='kf'>
  <label for='anrede'>Anrede</label>
    <select name='auswahl' size='1'>
      <option>Bitte wählen Sie aus...</option>
      <option>Frau</option>
      <option>Herr</option>
    </select>
  <!--<label>Anrede:</label>
  <input type='radio' name='anrede' value='Herr' checked='checked' id='Herr' /><label for='Herr' style='width: 50px;'>Herr</label> 
  &nbsp; <input type='radio' name='anrede' value='Frau'" 
$anredeCk " id='Frau' /><label for='Frau' style='width: 50px;'>Frau</label>
  <br />-->
  <label for='firma'>Firma</label><input type='text' name='feld1' value='" 
$feld1 "' id='Feld1'/>
  
  <label for='vornachname'>Vor-/Nachname *</label><input type='text' name='name' value='" 
$name "' id='Name' />
    
  <label for='strasse'>Straße und Haus-Nr.</label><input type='text' name='feld2' value='" 
$feld2 "' id='Feld2' />
    
  <label for='plzort'>PLZ und Ort</label><input type='text' name='feld3' value='" 
$feld3 "' id='Feld3'/>
    
  <label for='telefon'>Telefon *</label><input type='text' name='feld4' value='" 
$feld4 "' id='Feld4'/>
    
  <label for='email'>E-Mail *</label><input type='text' name='mailfrom' value='" 
$mailfrom "' id='Email'/>
    
  <label for='anfrage'>Ihre Anfrage *</label><textarea name='nachricht' id='Nachricht'>" 
$nachricht "</textarea>
    
    <label for='spamschutz' class='spamschutz'>Spamschutz *</label> <br />" 
$zufallszahl1 " + " $code " =
 <input class='spamschutz' type='text' name='zip' id='Spamschutz' /><input type='hidden' name='zip2' value='" 
$ergebnis "' /> <small>(Rechenaufgabe lösen)</small>
    </fieldset>
    <ul id='button'>
  <li>Angaben mit * sind Pflichtangaben</li>
  <li><input type='submit' name='sendung' value='Absenden'></li>
   </ul>
  </form>"
;
 
   
if (isset(
$_POST["sendung"])) {
 
// Pflichtfelder überprüfen
 
if (strlen($name) <= 2$eingabefehler .= "&bull; Name fehlt!<br />";
 if (
$feld4 == ""$eingabefehler .= "&bull; Telefon fehlt!<br />";
 if (
filter_var($mailfromFILTER_VALIDATE_EMAIL) === false$eingabefehler .= "&bull; Fehler in der E-Mail-Adresse!<br />";
 if (
strlen($nachricht) <= 19$eingabefehler .= "&bull; Die Nachricht " . ((strlen($nachricht) == 0) ? " fehlt" " ist zu kurz") . " (min. 20 Zeichen)!<br />";
 if (
md5($_POST["zip"]) != $_POST["zip2"]) $eingabefehler .= "&bull; Der Spamschutz ist leider falsch!<br />";
 
// Floodsperre
 
if (file_exists($flooddatei) && is_readable($flooddatei)) {
  foreach (
file($flooddatei) as $element) {
   list(
$ip$zeit) = explode("|"$element);
   if (
$ip == $_SERVER["REMOTE_ADDR"]) {
    if ((
floor((time() - $zeit))) < $floodsperrzeit) {
     exit(
"<p>Ihre Nachricht wurde bereits versandt!<br />" .
     
"<a href='" $url "'>Weiter zur Startseite</a></p>");
    }
   }
  }
 }
 if (
$eingabefehler == "") {
  
// Floodsperre - IP und Zeit speichern
  
if (file_exists($flooddatei) && is_writeable($flooddatei)) {
   
$array file($flooddatei);
   
$array array_slice($array, -10);
   
$fh fopen($flooddatei"w+");
   
fputs($fhimplode(""$array) . $_SERVER["REMOTE_ADDR"] . "|" time() . "|\n");
   
fclose($fh);
  }
  
// Diese Nachricht wird an Ihre E-Mail-Adresse gesendet (\n = neue Zeile)
  
$datum date("d.m.Y H:i");
  
$text "
   Datum: 
$datum \n

   ====

   Anrede: 
$anrede \n

   Name: 
$name \n

   Firma: 
$feld1 \n

   Straße und Haus-Nr.: 
$feld2 \n

   PLZ und Ort: 
$feld3 \n

   Telefon: 
$feld4 \n

   E-Mail: 
$mailfrom \n

   Nachricht: 
$nachricht \n\n

   ===="
;
  
// E-Mail versenden
  
@mail($mailto$betreff$text"From: " $mailfrom);
  
// Bestätigung der E-Mail
  
echo "<p>" 
  
"Vielen Dank, die Nachricht wurde gesendet.<br /><br />";
  
// Automatische Weiterleitung
  
echo "<meta http-equiv='refresh' content='" $autoforward "; URL=" $url "' />" .
  
"Sie werden in " $autoforward " Sekunden zur Startseite weitergeleitet.<br /><br />";
  
// Link zur Startseite
  
echo "<a href='" $url "'>Weiter zur Startseite</a></p>";
  
 }
 else {
  
// Eingabefehler und Formular ausgeben
  
echo str_replace("<!-- Fehleranzeige -->",
  
"<strong>Die Nachricht wurde aus folgendem Grund nicht gesendet:</strong><br />" .
  
$eingabefehler$formular);
 }
}
else {
 
// Formular ausgeben
 
echo $formular;
}
  print 
" </div>
   <ul id='sidebar'>
   </ul>"
;
include 
'footer.php';
?>

Kann mir jemand sagen, warum keine Fehlermeldungen -beispielsweise wenn ich die Telefonnummer vergesse - nicht ausgegeben werden?
link zur Seite Jaki und Klaiber - Heizung, Energie und Haustechnik

zeji 14.10.2011 11:47

Ist schwierig zu erkennen, bei den ganzen verschachtelten Bedingungen.

Um genaueres zu sagen, änder mal

error_reporting(0) in error_reporting(E_ALL) um...

seeadler 14.10.2011 11:56

mmh; habe das error_reporting sowohl
PHP-Code:

error_reporting(E_ALL); 

als auch
PHP-Code:

error_reporting("E_ALL"); 

ausprobiert! Leider hat es nicht funktioniert. Woran könnte es noch liegen?
Irgendwie finde ich den Fehler nicht?

zeji 14.10.2011 12:02

Das sollte auch nur die Fehlerausgabe anschalten, da es aber anscheinend keine Fehler gibt, wird einfach nichts ausgegeben.

Versuch mal den String / das Array mit den Fehlern über print_r($fehlerstring) bzw var_dump($fehlerstring) an geeigneter Stelle ausgeben, um zu sehen, was zu dem Zeitpunkt drin steht.

seeadler 14.10.2011 12:56

Zitat:

Das sollte auch nur die Fehlerausgabe anschalten, da es aber anscheinend keine Fehler gibt, wird einfach nichts ausgegeben.

eigentlich sollte diese ja schon als Fehler interpretiert werden, sobald man in die Pflichtfelder nichts einträgt;

Zitat:

print_r($fehlerstring) bzw var_dump($fehlerstring)
kannst du mir vielleicht etwas dabei helfen, wo ich genau diesen Code platzieren soll?

fox 14.10.2011 14:25

Vielleicht hilft dir auch die folgende Beschreibung:

PHP: Laufzeit-Konfiguration - Manual

Zitat:

display_errors string

This determines whether errors should be printed to the screen as part of the output or if they should be hidden from the user.

zeji 14.10.2011 15:37

Zitat:

Zitat von seeadler (Beitrag 503914)
kannst du mir vielleicht etwas dabei helfen, wo ich genau diesen Code platzieren soll?

Naja am besten in den Code, der nach dem Formular-Absenden ausgeführt wird und natürlich nach dem setzen der Fehlervariable, aber vor der if/else-Bedingung für die Fehlerüberprüfung.

Also denke ich mal direkt vor.

Code:

if ($eingabefehler == "") {

Code:

print_r($eingabefehler);
if ($eingabefehler == "") {

Gruß

Praktikant 14.10.2011 17:27

Du musst in der Variable $formular den HTML Kommentar <!-- Fehleranzeige --> hinzufügen. Der wird dann entsprechend ersetzt.

seeadler 15.10.2011 20:55

ich habe das formular mit einem php-generator generieren lassen;
das war der ursprüngliche Code:
PHP-Code:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title></title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta http-equiv="Content-Style-Type" content="text/css" />
 <meta name="robots" content="noindex,nofollow" />
 </head>
 <body>

<?php

// Ihre E-Mail-Adresse
$mailto "test@jaki-klaiber.de";

// Ihre Webseite (Startseite). Nach dem absenden der E-Mail
// gelangt der Besucher über einen Link auf Ihre Startseite.
$url "http://jaki.dyntec.de/unternehmen.php";

// Floodsperre - Innerhalb der Zeitspanne kann das Formular
// vom selben Benutzer nicht mehrmals gesendet werden.
$floodsperrzeit 60// Sperrzeit in Sekunden

// Datei in der die IP und die Zeit gespeichert werden sollen.
$flooddatei "floodsperre.txt"// Die Datei benötigt Schreibrechte!

// Automatische Weiterleitung zur Startseite nach dem absenden des Formulars.
$autoforward 5// Zeit in Sekunden

// Fortgeschrittene Anwender können ab hier Änderungen vornehmen.
error_reporting(0);
$eingabefehler ""// Bitte leer lassen!
$anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : "";
$anredeCk $anrede == "Frau" " checked='checked'" "";
$name = isset($_POST["name"]) ? $_POST["name"] : "";
$feld1 = isset($_POST["feld1"]) ? $_POST["feld1"] : ""// "Firma"
$feld2 = isset($_POST["feld2"]) ? $_POST["feld2"] : ""// "Straße und Haus-Nr."
$feld3 = isset($_POST["feld3"]) ? $_POST["feld3"] : ""// "PLZ und Ort"
$feld4 = isset($_POST["feld4"]) ? $_POST["feld4"] : ""// "Telefon"
$mailfrom = isset($_POST["mailfrom"]) ? $_POST["mailfrom"] : "";
$betreff "Anfrage"// Der Betreff für den E-Mail Kopf.
$nachricht = isset($_POST["nachricht"]) ? $_POST["nachricht"] : "";

// Spamschutz: Rechenaufgabe
$zufallszahl1 mt_rand(190);
$zufallszahl2 mt_rand(19);
$ergebnis md5($zufallszahl1 $zufallszahl2);
$code "&#" . (48 $zufallszahl2) . ";";

// Formular erstellen
$formular "<form action='" $_SERVER["SCRIPT_NAME"] . "' method='post'>
<table>
 <tr><td colspan='2'><!-- Fehleranzeige --></td></tr>
 <tr>
  <td><label>Anrede:</label></td>
  <td><input type='radio' name='anrede' value='Herr' checked='checked' id='Herr' /><label for='Herr'>Herr</label> 
  &nbsp; <input type='radio' name='anrede' value='Frau'" 
$anredeCk " id='Frau' /><label for='Frau'>Frau</label></td>
 </tr>
 <tr>
  <td><label for='Feld1'>Firma: </label></td>
  <td><input type='text' size='40' name='feld1' value='" 
$feld1 "' id='Feld1' /></td>
 </tr>
 <tr>
  <td><label for='Name'>Name: *</label></td>
  <td><input type='text' size='35' name='name' value='" 
$name "' id='Name' /></td>
 </tr>
 <tr>
  <td><label for='Feld2'>Straße und Haus-Nr.: </label></td>
  <td><input type='text' size='40' name='feld2' value='" 
$feld2 "' id='Feld2' /></td>
 </tr>
 <tr>
  <td><label for='Feld3'>PLZ und Ort: </label></td>
  <td><input type='text' size='40' name='feld3' value='" 
$feld3 "' id='Feld3' /></td>
 </tr>
 <tr>
  <td><label for='Feld4'>Telefon: *</label></td>
  <td><input type='text' size='40' name='feld4' value='" 
$feld4 "' id='Feld4' /></td>
 </tr>
 <tr>
  <td><label for='Email'>E-Mail: *</label></td>
  <td><input type='text' size='45' name='mailfrom' value='" 
$mailfrom "' id='Email' /></td>
 </tr>
 <tr>
  <td colspan='2'><label for='Nachricht'>Nachricht: *</label><br />
  <textarea name='nachricht' rows='6' cols='60' id='Nachricht'>" 
$nachricht "</textarea></td>
 </tr>
 <tr>
  <td colspan='2'><label for='Spamschutz'>Spamschutz: *</label> &nbsp; <em>" 
$zufallszahl1 " + " $code "</em> = 
 <input type='text' name='zip' size='3' id='Spamschutz' /><input type='hidden' name='zip2' value='" 
$ergebnis "' /> <small>(Rechenaufgabe lösen)</small></td>
 </tr>
 <tr>
  <th colspan='2'>
   <br />&nbsp; ✲ <small>Bitte alle Pflichtfelder ausfüllen!</small> &nbsp; &nbsp; &nbsp; &nbsp; 
     <input type='submit' name='sendung' value='Formular absenden' />
  </th>
 </tr>
</table>
</form>"
;

if (isset(
$_POST["sendung"])) {
 
// Pflichtfelder überprüfen
 
if (strlen($name) <= 2$eingabefehler .= "&bull; Name fehlt!<br />";
 if (
$feld4 == ""$eingabefehler .= "&bull; Telefon fehlt!<br />";
 if (
filter_var($mailfromFILTER_VALIDATE_EMAIL) === false$eingabefehler .= "&bull; Fehler in der E-Mail-Adresse!<br />";
 if (
strlen($nachricht) <= 19$eingabefehler .= "&bull; Die Nachricht " . ((strlen($nachricht) == 0) ? " fehlt" " ist zu kurz") . " (min. 20 Zeichen)!<br />";
 if (
md5($_POST["zip"]) != $_POST["zip2"]) $eingabefehler .= "&bull; Der Spamschutz ist leider falsch!<br />";
 
// Floodsperre
 
if (file_exists($flooddatei) && is_readable($flooddatei)) {
  foreach (
file($flooddatei) as $element) {
   list(
$ip$zeit) = explode("|"$element);
   if (
$ip == $_SERVER["REMOTE_ADDR"]) {
    if ((
floor((time() - $zeit))) < $floodsperrzeit) {
     exit(
"<p>Ihre Nachricht wurde bereits versandt!<br />" .
     
"<a href='" $url "'>Weiter zur Startseite</a></p>");
    }
   }
  }
 }
 if (
$eingabefehler == "") {
  
// Floodsperre - IP und Zeit speichern
  
if (file_exists($flooddatei) && is_writeable($flooddatei)) {
   
$array file($flooddatei);
   
$array array_slice($array, -10);
   
$fh fopen($flooddatei"w+");
   
fputs($fhimplode(""$array) . $_SERVER["REMOTE_ADDR"] . "|" time() . "|\n");
   
fclose($fh);
  }
  
// Diese Nachricht wird an Ihre E-Mail-Adresse gesendet (\n = neue Zeile)
  
$datum date("d.m.Y H:i");
  
$text "
   Datum: 
$datum \n

   ====

   Anrede: 
$anrede \n

   Name: 
$name \n

   Firma: 
$feld1 \n

   Straße und Haus-Nr.: 
$feld2 \n

   PLZ und Ort: 
$feld3 \n

   Telefon: 
$feld4 \n

   E-Mail: 
$mailfrom \n

   Nachricht: 
$nachricht \n\n

   ===="
;
  
// E-Mail versenden
  
@mail($mailto$betreff$text"From: " $mailfrom);
  
// Bestätigung der E-Mail
  
echo "<p>" 
  
"Vielen Dank, die Nachricht wurde gesendet.<br /><br />";
  
// Automatische Weiterleitung
  
echo "<meta http-equiv='refresh' content='" $autoforward "; URL=" $url "' />" .
  
"Sie werden in " $autoforward " Sekunden zur Startseite weitergeleitet.<br /><br />";
  
// Link zur Startseite
  
echo "<a href='" $url "'>Weiter zur Startseite</a></p>";
 }
 else {
  
// Eingabefehler und Formular ausgeben
  
echo str_replace("<!-- Fehleranzeige -->",
  
"<strong>Die Nachricht wurde aus folgendem Grund nicht gesendet:</strong><br />" .
  
$eingabefehler$formular);
 }
}
else {
 
// Formular ausgeben
 
echo $formular;
}
?>

 </body>
</html>

der funktioniert auch soweit; nur das er eben nicht mein CSS - Design besitzt.
Ich habe ja am php Code soweit nichts verändert - die Fehlermeldungen in meinem angepassten Formular werden nicht ausgegeben; Das verstehe ich nicht??
Ursprüngliches generiertes php-formular
http://jaki.dyntec.de/kontaktformular.php

uspri 16.10.2011 09:30

Code:

// Formular erstellen
$formular = "<form action='" . $_SERVER["SCRIPT_NAME"] . "' method='post'>
<table>
 <tr><td colspan='2'><!-- Fehleranzeige --></td></tr>
 <tr>

Das fehlt bei dir <!-- Fehleranzeige -->


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:00 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023