PHP Problem - Kontaktformular



  • Hallo zusammen,

    ich arbeite gerade an einer Website für einen bekannten. bei der Programmierung des Kontaktforumlares habe ich schwierigkeiten.

    Das ganze hab ich in 2 dateien gelegt. Die Html Datei wo das Formular drin steckt und eine Php Datei die nachher die Eingaben prüfen soll und die Email schicken wird.

    Das Problem was ich grade habe, ich lasse prüfen ob das Email Adressenfeld != "" ist und danach entscheiden ob geschickt wird oder eine Fehlermeldung ausgegeben wird. Und egal was man macht es kommt immer die Fehlermeldung 😕

    ich poste mal den HTML teil

    <form id="f_kontakt" name="kontakt" action="kontakt.php" method="post" >
    		<table width="420" id="t_kontakt" height="78" border="0">
    		<tr>
    			<td><label for="name">Ihr Name:</label></td>
    			<td><input type="text" id="name" style="background-color:#300; color:#D2B914;" name="name" /></td>
    		</tr>
    		<tr>
    			<td><label for="mail">E-Mail:</label></td>
    			<td><input type="text" id="mail"style="background-color:#300; color:#D2B914;" name="mail" /></td>
    		</tr>
    		<tr>
    			<td><label for="nachricht">Ihre Nachricht: </label></td>
    			<td><textarea id="nachricht" style="background-color:#300; color:#D2B914;" name="nachricht" cols="50" rows="10"> </textarea></td>
    		</tr>
    		<tr>
    			<td>&nbsp;</td>
    			<td><input name="senden" value="Senden" type="submit" id="senden" style="background-color:#300;color:#D2B914; font-weight:bold;" tabindex="1" />
    			    <input name="reset" type="reset" value="Reset" id="reset" style="background-color:#300;color:#D2B914; font-weight:bold;"/></td>
    		</tr>
    
    	</table>
    
    	</form>
    

    Und hier der PHP Teil

    <!-- PHP Code zur Generierung der Email -->
    		<?php
    
    		$name=$HTTP_POST_VARS['name'];
    		$mail=$HTTP_POST_VARS['mail'];
    		$nachricht=$HTTP_POST_VARS['nachricht'];
    
    		if($mail!="") {
    			$mailtext="#### ecY-Design Mailsystem ####\n";
    			$mailtext.="#### $datum - $uhrzeit Uhr ####\n \n";
    			$mailtext.="Absender: $name \n";
    			$mailtext.="Email: $mail \n";
    			$mailtext.="Nachricht: \n \n";
    			$mailtext.=$nachricht;
    
    			$absender="From:";
    			$absender.="$mail";
    
    			mail("","Betreff","$mailtext","$absender");
    
    			print("GEschickt");
    		}
    		else {
    			print("Fehler");
    		}
    	?>
    

    Also mein Problem ist das ich nicht weiss woran es liegt das die If anweisung jedesmal die von mir definierte Fehlermeldung ausgibt.

    Würde mich freuen wenn Ihr mir helfen könntet.

    Lg Sebbo



  • Probiers mal nach dem Schema:

    if (isset($_POST['mail']) && !empty($_POST['mail']))
    {
     // Okay
    }
    else
    {
     // Error
    }
    

    Übrigens solltest du deine Email rauseditieren. Die muss ja nicht jeder wissen 😉



  • Danke für die Antwort ich werd das gleich mal Probieren.

    Wegen der Email wäre supi wenn das ein Admin machen könnte, ich muss mich gleich mal registrieren. Kann den Post nicht editieren. Die Email sollte da echt nicht drin stehn. Muss ich in der hektik vergessen haben.

    Lg Ecy



  • Huhu Ich nochmal 😉

    Hab das mal ausprobiert.

    <?php
    
    		$name=$HTTP_POST_VARS['name'];
    		$mail=$HTTP_POST_VARS['mail'];
    		$nachricht=$HTTP_POST_VARS['nachricht'];
    
    		if (isset($_POST['mail']) && !empty($_POST['mail']))
    		{
    
     			$mailtext="#### ecY-Design Mailsystem ####\n";
    			$mailtext.="#### $datum - $uhrzeit Uhr ####\n \n";
    			$mailtext.="Absender: "
    			$mailtext.=$name;
    			$mailtext.="\n";
    			$mailtext.="Email: ";
    			$mailtext.=$mail;
    			$mailtext.="\n";
    			$mailtext.="Nachricht: \n \n";
    			$mailtext.=$nachricht;
    
    			$absender="From:";
    			$absender.="$mail";
    
    			mail("","","$mailtext","$absender");
    
    			print("Geschickt");
    		}
    		else
    		{
    
    			print("Fehler");
    		}
    
    	?>
    

    Da bekomm ich jetzt von Firefox ne meldung

    PHP Parse error: syntax error, unexpected T_VARIABLE in D:\XUnitConf\web34\html\flo2\kontakt.php on line 51

    Das ist die Zeile wo die Variable $name in $mailtext angefügt werden soll 😕

    Weiß da jemand was ?

    Lg Ecy



  • OKay habs hinbekommen. da fehlte ein ; ... peinlich 🙂

    Das funktioniert jetzt alles so wie es soll ich bedanke mich herzlich!!!

    Lg Ecy



  • Ecy schrieb:

    OKay habs hinbekommen. da fehlte ein ; ... peinlich 🙂

    Das funktioniert jetzt alles so wie es soll ich bedanke mich herzlich!!!

    Lg Ecy

    Du solltest übrigens HTTP_XXXX_VARS komplett aus deinem Code verbannen und stattdessen immer $_POST und $_GET usw. nutzen.

    Je nach PHP-Version kann es da zu Problem führen und in PHP6 wird es diese Variable wohl gar nicht mehr geben. Also frühzeitig umstellen!



  • Hi,

    ich habe die Adresse (und den Betreff) aus der mail()-Funktion entfernt.



  • árn[y]ék schrieb:

    Hi,

    ich habe die Adresse (und den Betreff) aus der mail()-Funktion entfernt.

    Ob dus glaubst oder nicht, er hat den gleichen Fehler aber wieder gemacht, als er seinen neuen Code gepostet hatte 😃



  • Hmpf ... kein Kommentar 🤡



  • Ja da hast recht... Sorry vielmals werd in Zukunft besser aufpassen *g*
    Vielen dank für den Edit und danke für die Hilfe. Das funktioniert jetzt super.

    Ich hab hier n Buch liegen was anscheind veraltet ist, bzw. einige syntax probleme hat. Hab ein Kontaktformular komplett aus dem Buch (was php 4x behandelt) probiert und da passiert der selbe fehler mit dem if($mail!="") Beispiel.

    Ausserdem ist mir aufgefallen das es anscheind Probleme gibt mit der übergabe von variablen per

    $name=$HTTP_POST_VARS['name'];
    

    Die waren nämlich in der Email stets leer. Hab mir da Abhilfe geschaffen mit folgendem Code.

    $HTTP_POST_VARS   = !empty($HTTP_POST_VARS)   ? $HTTP_POST_VARS   : $_POST;
    		$HTTP_GET_VARS    = !empty($HTTP_GET_VARS)    ? $HTTP_GET_VARS    : $_GET;
    		$HTTP_COOKIE_VARS = !empty($HTTP_COOKIE_VARS) ? $HTTP_COOKIE_VARS : $_COOKIE;
    		$HTTP_SERVER_VARS = !empty($HTTP_SERVER_VARS) ? $HTTP_SERVER_VARS : $_SERVER;
    

    Damit funktioniert es.

    Lg Ecy



  • Schreib doch einfach vernünftigen, modernen PHP-Code und tritt dein Buch in die Tonne. PHP4 war vor einem halben Jahrzehnt ...



  • So machen wirs 😉

    Lg Ecy


Anmelden zum Antworten