Bitte um Hilfe bei meinem Formular

  • Hallo!


    Ich bin gerade mit dem PHP-Kurs beschäftigt, und hänge beim Erstellen eines Formulares.
    Es werden immer Fehlermeldungen angezeigt, ich finde aber keinen Fehler. Ich bin genau wie im Kurs erklärt vorgegangen, aber es funktioniert nicht.
    Das Komische dabei ist, dass der Versand der Nachricht funktioniert. :?:


    So sieht es aus:
    [attachment=0]<!-- ia0 -->Snap_?Samstag, ?31. ?Dezember ?2011_13h53m33s_001.png<!-- ia0 -->[/attachment]


    Hier der Code:

    PHP
    1. <span class="syntaxdefault"><?php<br /></span><span class="syntaxkeyword">require_once (</span><span class="syntaxstring">'funktionen.php'</span><span class="syntaxkeyword">);<br /> if ( </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'mail'</span><span class="syntaxkeyword">] <> </span><span class="syntaxstring">"" </span><span class="syntaxkeyword">)<br /> {<br /> if ( </span><span class="syntaxdefault">is_mail</span><span class="syntaxkeyword">( </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'mail'</span><span class="syntaxkeyword">]) == </span><span class="syntaxdefault">false </span><span class="syntaxkeyword">)<br /> {<br /> echo </span><span class="syntaxstring">"<p>E-Mail-Adresse ist falsch - neu eingeben</p>"</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'mail'</span><span class="syntaxkeyword">] = </span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /> }<br /> }<br />if ( </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'mail'</span><span class="syntaxkeyword">] == </span><span class="syntaxstring">"" </span><span class="syntaxkeyword">or </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'anliegen'</span><span class="syntaxkeyword">] == </span><span class="syntaxstring">"" </span><span class="syntaxkeyword">)<br />{<br /> echo </span><span class="syntaxstring">'<h1>Kontaktformular</h1>'</span><span class="syntaxkeyword">;<br /> if (</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'abgesendet'</span><span class="syntaxkeyword">] == </span><span class="syntaxstring">"ja"</span><span class="syntaxkeyword">)<br /> {<br /> echo </span><span class="syntaxstring">'<p>Bitte beide Felder ausf&uuml;llen</p>'</span><span class="syntaxkeyword">;<br /> }<br /> echo </span><span class="syntaxstring">'<form action="kontakt.php" method="post">'</span><span class="syntaxkeyword">;<br /><br /> echo </span><span class="syntaxstring">'<p>E-Mail-Adresse<br />'</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxstring">'<input type="text" name="mail" value="'</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'mail'</span><span class="syntaxkeyword">];<br /> echo </span><span class="syntaxstring">'" size="30" />'</span><span class="syntaxkeyword">;<br /><br /> echo </span><span class="syntaxstring">'<p>Ihre Nachricht<br />'</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxstring">'<textarea name="anliegen" rows="7" cols="60">'</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'anliegen'</span><span class="syntaxkeyword">];<br /> echo </span><span class="syntaxstring">'</textarea>'</span><span class="syntaxkeyword">;<br /><br /> echo </span><span class="syntaxstring">'<input type="hidden" name="abgesendet" value="ja" />'</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxstring">'<input type="submit" value="senden" />'</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxstring">'</form>'</span><span class="syntaxkeyword">;<br />}<br />else<br />{<br /> echo </span><span class="syntaxstring">'<h1>Vielen Dank ...</h1>'</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxstring">'<p>vielen Dank f&uuml;r Ihre Nachricht</p>'</span><span class="syntaxkeyword">;<br /><br /> </span><span class="syntaxdefault">$empfaenger </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"admin@example.com"</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$inhaltbetreff </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"Anfrage von Website"</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$inhaltmail </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"Anfrage von Website:"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'anliegen'</span><span class="syntaxkeyword">];<br /><br /> </span><span class="syntaxdefault">mail </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$empfaenger</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$inhaltbetreff</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$inhaltmail</span><span class="syntaxkeyword">);<br />}<br /></span><span class="syntaxdefault">?></span>


    Danke für die Hilfe! :lol:


    Wolfi


    @all: Einen guten Rutsch ins neue Jahr! :mrgreen:

  • Hi.! :)


    bitte nutze um Code zu posten BB code

    PHP
    1. <span class="syntaxdefault"><br />hier kommt der code rein<br /></span>


    das sind nur Notizen; keine fehlermeldungen.
    du greifst auf die variablen zu, bevor sie zugewießen sind. wenn du submit drückst, sind diese sicherlich weg. (sind sie es? keine zeit zum probieren)


    Ist nix schlimmes.


    Grüße
    drPHIP132

  • Danke für die rasche Antwort! :lol:


    Das hat mich ja auch so irritiert, dass die Meldungen nach dem Klick auf submit wieder verschwinden.


    Seltsamer Weise funktioniert es am anderen Server ohne diese Meldungen, gibt es da Unterschiede zu den einzelnen Servern?


    Danke Wolfi

  • im XAMPP (hast du doch sicherlich; oder arbeitest du direkt auf dem server?) werden sandartmäßig alle sachen angezeigt. (Warnungen, Notizen, Fehler)
    Wobei dies auf (den meisten) Webserven abgestellt ist um deine Besucher nicht zu irritieren.


    Du kannst allerdings die Ausgabe der Meldungen steuern, via:

    PHP
    1. <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /><br /></span><span class="syntaxcomment">// Error Reporting komplett abschalten<br /></span><span class="syntaxdefault">error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Nur einfache Fehler melden<br /></span><span class="syntaxdefault">error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">E_ERROR </span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> E_WARNING </span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> E_PARSE</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// E_NOTICE ist sinnvoll um uninitialisierte oder<br />// falsch geschriebene Variablen zu entdecken<br /></span><span class="syntaxdefault">error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">E_ERROR </span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> E_WARNING </span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> E_PARSE </span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> E_NOTICE</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Melde alle Fehler außer E_NOTICE<br />// Dies ist der Vorgabewert in php.ini<br /></span><span class="syntaxdefault">error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">E_ALL </span><span class="syntaxkeyword">^</span><span class="syntaxdefault"> E_NOTICE</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Melde alle PHP Fehler (siehe Changelog)<br /></span><span class="syntaxdefault">error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">E_ALL</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Melde alle PHP Fehler<br /></span><span class="syntaxdefault">error_reporting</span><span class="syntaxkeyword">(-</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Dies entspricht error_reporting(E_ALL);<br /></span><span class="syntaxdefault">ini_set</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'error_reporting'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> E_ALL</span><span class="syntaxkeyword">);<br /><br /><br /></span><span class="syntaxcomment">//Quelle: php.net<br /></span><span class="syntaxdefault">?></span> <br /></span>
  • Hallo! :D


    Hab wieder ein Problem mit meinem Formular.
    Es funktioniert soweit alles wie gewünscht, jetzt hab ich das Problem, dass die Umlaut in der Mail maskiert angezeigt werden. :shock:


    Ich hab leider täglich nur 1 bis 2 Stunden Zeit für mein Projekt, deshalb fehlt mir leider die Zeit große Recherchen zu betreiben und bin hier lästig. :oops:


    Danke für eure Hilfe!


    Lg
    Wolfi

  • PHP
    1. <span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><!</span><span class="syntaxdefault">doctype html</span><span class="syntaxkeyword">><br /><</span><span class="syntaxdefault">html</span><span class="syntaxkeyword">><br /><</span><span class="syntaxdefault">head</span><span class="syntaxkeyword">><br /><</span><span class="syntaxdefault">meta charset</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"UTF-8"</span><span class="syntaxkeyword">><br /></</span><span class="syntaxdefault">head</span><span class="syntaxkeyword">><br /><</span><span class="syntaxdefault">body</span><span class="syntaxkeyword">><br /></span><span class="syntaxdefault">dein formular mit php code<br /></span><span class="syntaxkeyword"></</span><span class="syntaxdefault">body</span><span class="syntaxkeyword">><br /></</span><span class="syntaxdefault">html</span><span class="syntaxkeyword">><br /></span><span class="syntaxdefault"> </span>


    gib bescheid ob es klappt....wegen dem zeichensatz sollte eigentlich mit den umlauten umgegangen werden können

  • Damit auch die Mail in UTF-8 übertragen wird, musst du in der mail-Funktion den Zeichensatz als zusätzlichen Header übermitteln:

    PHP
    1. <span class="syntaxdefault"></span><span class="syntaxcomment">// Für reine Text-Mails, bei HTML-Mails "text/plain" in "text/html" ändern<br /></span><span class="syntaxdefault">$header </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Content-Type: text/plain; charset="utf-8"\r\n'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">mail </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$empfaenger</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $inhaltbetreff</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $inhaltmail</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $header</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span>


    Mail-Funktion

  • &quot;Sören&quot; schrieb:

    Damit auch die Mail in UTF-8 übertragen wird, musst du in der mail-Funktion den Zeichensatz als zusätzlichen Header übermitteln:

    PHP
    1. <span class="syntaxdefault"></span><span class="syntaxcomment">// Für reine Text-Mails, bei HTML-Mails "text/plain" in "text/html" ändern<br /></span><span class="syntaxdefault">$header </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Content-Type: text/plain; charset="utf-8"\r\n'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">mail </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$empfaenger</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $inhaltbetreff</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $inhaltmail</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $header</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span>


    Mail-Funktion


    Ich weiß jetzt nicht, ob es etwas aus macht, aber ich meine im Normalfalle sollte die Angabe Charset ohne Anführungszeichen stehen.
    *hust* Du wolltest aber sicher im gesamten Doppelte Anführungszeichen verwenden, oder? den nur in Doppelten Anführungszeichen erkennt und Wandelt PHP ausgeschriebene Zeilenumbrüche um.

    PHP
    1. <span class="syntaxdefault"></span><span class="syntaxcomment">// Also entweder<br /></span><span class="syntaxdefault">$header </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Content-Type: text/plain; charset=utf-8\r\n"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxcomment">// oder <br /></span><span class="syntaxdefault">$header </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Content-Type: text/plain; charset=utf-8<br />'</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span>


    &quot;drPHIP132&quot; schrieb:

    hattest du auch wirklich den Normgerechten HTML-Dokumentaufbau verwendet, mit dem meta tag <meta charset="UTF-8">?


    Das hat hier nicht all zu viel zu sagen, Außerdem kommt hier dann noch die Frage ins Spiel, ob er den richtigen Content-Type bei der E-Mail mitgeschickt hat.
    Der wäre - wie Sören erben erwähnt" - text/html.


    Gruß
    Sarkka

  • Ich hab mal ein paar Mails untersucht, in allen ist der Charset in Anführungszeichen. Ich weiß nicht ob das etwas ausmacht.


    Natürlich meinte ich doppelte Anführungszeichen :roll:

  • &quot;Sören&quot; schrieb:

    Ich hab mal ein paar Mails untersucht, in allen ist der Charset in Anführungszeichen. Ich weiß nicht ob das etwas ausmacht.


    Natürlich meinte ich doppelte Anführungszeichen :roll:


    Oh, okey. Wie gesagt, da war ich mir nicht ganz sicher^^ Ich kannte die Angabe halt nur ohne Anführungszeichen beim Charset und auch auf php.net wurde überwiegend darauf verzichtet :D

  • Komme da nicht ganz mit


    aber wenn du ein problem mit UTF-8 hast


    mußt du auch nach deinem ersten


    <?php
    den header... UTF-8 angeben


    so wars bei mir !

  • Nein Markus, dass muss nicht.
    Hier hat ein PHP-Header nichts zu suchen, da wir eine E-Mail versenden. Die Daten die mit der mail-Function übergeben werden, gehen 1:1 an den E-Mail-Server.
    Er konvertiert nicht einmal, sondern schustert alles zusammen und startet dann die Kommunikation mit dem anderen Server.

  • Hallo Leute!


    Danke für Eure Hilfe, jetzt funktioniert alles wie es soll. :lol:


    Entschuldigt, dass ich mich erst jetzt wieder melde, aber ich bin beruflich immer sehr eingespannt.


    Nochmals Danke!


    Wolfi

  • Wieder ein Problem mit meinem Formular.


    Bei meinem Bekannten, für den ich dieses Formular gestalte, kommen die Anfragen ohne jegliche Umlaute und scharfem 's' an. :shock:
    Woran kann das schon wieder liegen? Bei mir funktioniert es einwandfrei.


    Danke
    Wolfi

  • ich bin da nicht so fix...


    klingt aber nach dem UTF Problem...


    hast du diese UTF Angaben jeweils in deinem Formular !!


    Sorry falls das unstimmig ist und nicht richtig
    aber es ist ein meinerseitiger Erfahrungswert

  • Ja, das hab ich bereits integriert.
    Kann es am Format der PHP - Datei liegen? Muss diese im UTF - Format gespeichert werden?

  • Also bei mir ist in meiner index der php Bereich


    PHP
    1. <?php
    2. $header = 'Content-Type: text/plain; charset="utf-8"\r\n';
    3. //meine Formular Angaben
    4. ?>


    Code
    1. <!-- der HTML bereich -->
    2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


    und hier habe ich in beiden Angaben mein UTF angegeben !


    in meinem HTML bereich wars eh, nur in meinem PHP bereich nicht, daduch hatte ich Probleme.... (ok die hab ich zu 90% bei PHP *g*)