[PHP]Kleines Problem mit Form Mailer:

LostHero

Admiral Special
Mitglied seit
07.08.2006
Beiträge
1.597
Renomée
39
Standort
Osnabrück
Hallo,
ich habe ein kleines Problem mit diversen Form-Mailer scripten in PHP.
Ich komme leider generell nicht aus dem "PHP-Lager" und kenen daher nur die Bascis + n paar Dinge darüber hinaus und benötige daher eure Hilfe.

Ich habe ein recht umfangreiches Forumlar erstellt, auf Basis eines "Tutorial Formulars".

Nun bekomme ich aber einen Fehler, bzw eine Warning und erhalte im Gegenzug keine eMail.
Um den Fehler in meinen Modifikationen aus zu schließen, habe ich einmal das unveränderte, originale Tutorial Script auf die Website geladen und erhalte interessanter weise die Selbe Warning :(.

Habe daher keine Ahnung woran es scheitert.


Nun zur eigendlichen Warning:
Code:
Warning: Variable passed to each() is not an array or object in /mnt/web2/63/77/52449677/htdocs/test2/Kontakt.php on line 4

Als Script kommt dieses zum Einsatz:
http://www.webdesign.rudomazin.de/scripte/kostenlose/kontaktformular-script.html


Wie gesagt, der selbe Fehler kommt auch bei dem unveränderten originalscript, weshalb ich mich erstmal darauf beziehe (weils kürzer ist).

Jemand ne Idee?



Edit:

Habe das hier gefunden:
http://xtc-wiki.de/Warning:_Variabl..._/xxx/inc/xtc_get_products.inc.php_on_line_34
Hat das problem leider auch nicht behoben!


Edit2:

Es scheint so, als gibt es da n problem mit den Variablen.. wenn ich die von hand auf " " initialisiere, kommt zwar immer noch die warning, aber das script sendet mir eine (leere) email, ganz egal, was ich in die felder eingebe.

Hier noch mal der code falls euch die schrift auf der verlinkten Seite zu klein ist:

Code:
<?php

	
	// wenn das Formular übermittelt wurde
	if(isset($_POST['Senden'])){
		while(list($feld,$wert) = each($HTTP_POST_VARS)){
			// übermittelte Inhalte "entschärfen"
			$wert = preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$wert);
			$feld = $wert;
			// die übermittelten Variablen werden zum "Text der Email" zusammengefasst
			if($feld!="Senden"){
			$mailnachricht.=ucfirst($feld).": $wert\n";
        }
    }
    $mailnachricht.="\nDatum/Zeit: ". date("d.m.Y H:i:s");
    // Überprüfen ob alle Pflichtfelder gefüllt sind
	empty($Vorname) ? $err[] = "<p>- Bitte geben Sie einen Vornamen an!</p>" : false;
	empty($Nachname) ? $err[] = "<p>- Bitte geben Sie einen Nachnamen an!</p>" : false; 
	empty($eMail) ? $err[] = "<p>- Bitte geben Sie eine E-Mail-Adresse an!</p>" : false; 
	empty($Nachricht) ? $err[] = "<p>- Bitte geben Sie eine Nachricht an!</p>" : false; 
    // wenn nicht, werden die Fehlermeldungen ausgegeben und das "halbgefüllte" Formular angezeigt
    if(!empty($err)) {
		echo "<p>Bitte korrigieren Sie folgende Fehler:</p>";
        foreach($err as $fehler){
            echo $fehler;
        } 
?>

<br />
<p>*Pflichtfelder</p>
<form action="#" method="post">
	<table width="100%" border="0" cellpadding="3" cellspacing="1">
		<tr><td width="100" align="right">Vorname*:</td><td align="left"><input type="text" name="Vorname" value="<?php echo $Vorname; ?>" style="width:100%;" /></td></tr>
		<tr><td align="right">Nachname*:</td><td align="left"><input type="text" name="Nachname" value="<?php echo $Nachname; ?>" style="width:100%" /></td></tr>
		<tr><td align="right">Strasse:</td><td align="left"><input type="text" name="Strasse" value="<?php echo $Strasse; ?>" style="width:100%" /></td></tr>
		<tr><td align="right">Postleitzahl:</td><td align="left"><input type="text" name="Postleitzahl" value="<?php echo $Postleitzahl; ?>" style="width:100%" /></td></tr>
		<tr><td align="right">Stadt:</td><td align="left"><input type="text" name="Stadt" value="<?php echo $Stadt; ?>" style="width:100%" /></td></tr>
		<tr><td align="right">eMail*:</td><td align="left"><input type="text" name="eMail" value="<?php echo $eMail; ?>" style="width:100%" /></td></tr>
		<tr><td align="right">Telefonnummer:</td><td align="left"><input type="text" name="Telefonnummer" value="<?php echo $Telefonnummer; ?>" style="width:100%" /></td></tr>
		<tr><td colspan="2"><textarea rows="12"  style="width:100%" name="Nachricht"><?php echo $Nachricht; ?></textarea></td><td>&nbsp;</td></tr>
		<tr><td colspan="2" align="left" nowrap><br /><input type="reset" value="Formular l&ouml;schen" style="width:49%" />&nbsp;&nbsp;<input type="submit" name="Senden" class="button" value="Senden" style="width:49%" /></td></tr>
	</table>
</form>

<?php    
	// sind keine Fehler vorhanden, wird die Email versendet
    } else {
		$mailbetreff="Feedback zur LGS Bad Essen ".$_SERVER['HTTP_HOST'];
        
		if(mail("email@gibsnich.com", $mailbetreff, $mailnachricht, "From: $email")){
			echo "<p>Ihre Nachricht wurde erfolgreich versendet!</p>";
        } else {
            echo "<p>Nachricht konnte nicht gesendet werden, bitte versuchen Sie es erneut!</p>";
        }
    }
	// das Formular welches als erstes dem Besucher angezeigt wird
	
	} else { 
	
?>
<br />
<p>*Pflichtfelder</p>
<form action="#" method="post">
	<table width="100%" border="0" cellpadding="3" cellspacing="1">
		<tr><td width="100" align="right">Vorname*:</td><td align="left"><input type="text" name="Vorname" value=" " style="width:100%;" /></td></tr>
		<tr><td align="right">Nachname*:</td><td align="left"><input type="text" name="Nachname" value=" " style="width:100%" /></td></tr>
		<tr><td align="right">Strasse:</td><td align="left"><input type="text" name="Strasse" value=" " style="width:100%" /></td></tr>
		<tr><td align="right">Postleitzahl:</td><td align="left"><input type="text" name="Postleitzahl" value=" " style="width:100%" /></td></tr>
		<tr><td align="right">Stadt:</td><td align="left"><input type="text" name="Stadt" value=" " style="width:100%" /></td></tr>
		<tr><td align="right">eMail*:</td><td align="left"><input type="text" name="eMail" value=" " style="width:100%" /></td></tr>
		<tr><td align="right">Telefonnummer:</td><td align="left"><input type="text" name="Telefonnummer" value=" " style="width:100%" /></td></tr>
		<tr><td colspan="2"><textarea rows="12" style="width:100%" name="Nachricht">" "</textarea></td><td>&nbsp;</td></tr>
		<tr><td colspan="2" align="left" nowrap><br /><input type="reset" value="Formular l&ouml;schen" style="width:49%" />&nbsp;&nbsp;<input type="submit" name="Senden" class="button" value="Senden" style="width:49%" /></td></tr>
	</table>
</form>
<br />
<br />
<br /><!-- bitte lassen Sie diesen Link sichtbar auf Ihrer Seite. Danke! -->
        <p style="text-align:right;font:normal 10px Verdana, Arial, Helvetica, sans-serif;"><a href="http://www.webdesign.rudomazin.de/" target="_blank">Script von DERUS Webdesign</a></p>

<?php
	}
?>
 
Zuletzt bearbeitet:
lol wäre in 10 Jahren nich auf die idee gekommen, dass es an den HTTP_POST_VARS liegt.
hab den fehler die ganze zeit bei den Formularfeldern selbst vermutet weil die variablen immer NULL sind und each() keine NULL Objects erlaubt...

Ok eine änderung von HTTP_POST_VARS in _POST hat zwar die warning beseitigt, das script tut aber dennoch nicht ;).
mit allen feldern ausgefüllt reseted es das formular und schickt keine email (die variablen der einzelnen felder sind immer noch NULL).

wie gesagt, stamme nich aus dem PHP lager und wüsste jetzt so nicht woran das liegt. der code "scheint korrekt" zu sein :(.


EDIT:

habe ein
Code:
		error_reporting(E_ALL); 
		ini_set('display_errors', TRUE);
eingefügt und erhalte nun in allen Formularfeldern:

"<br /> <b>Notice</b>: Undefined variable: Vorname in <b>/mnt/web2/63/77/52449677/htdocs/test2/Kontakt2.php</b> on line <b>144</b><br />"

Natürlich mit dem jeweiligen Variablennamen des jeweiligen Feldes, das bestätigt meine Vermutung dass es daran liegt. Hat das auch mit php4->php5 zu tun? Das originalscript scheint ja (unter php4) zu funktionieren oO.




EDIT2:

Okay vergesst es, ich bin ein kacknoob.
Der Fehler war, dass ich

Code:
$feld = $wert;

hatte.
Korrekt muss es aber

Code:
$$feld = $wert;

heißen -.-. Läuft jetzt!

Kopf -> Tisch
 
Zuletzt bearbeitet:
Zurück
Oben Unten