Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Kontaktformular

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Erdbeertorte
PostRank 2
PostRank 2
Beiträge: 43
Registriert: 05.08.2009, 19:59

Beitrag von Erdbeertorte » 04.06.2010, 08:06

Hallo Leute

ich habe ein Kontaktformular, welches zwar funktioniert, aber nicht ganz so wie ich möchte.
Wenn ich eine E-Mail erhalte, dann sehe ich nämlich in der Übersicht meines Posteingangs nicht, von wem diese E-Mail ist.
Stattdessen steht der Benutzername für meinen Webspace (zum Beispiel web123) dort.

Was muss ich denn an dem Formular ändern, damit der Name des Versenders in der Übersicht Posteingangs erscheint und nicht mein Benutzername für den Webspace?

Code: Alles auswählen

        <div class="right">
          <form action="contact.php" method="post" id="contactform">
            <ol>
              <li>
                <label for="name">First Name</label>
                <input id="name" name="name" class="text" />
              </li>
              <li>
                <label for="email">Your email</label>
                <input id="email" name="email" class="text" />
              </li>
              <li>
                <label for="company">Company</label>
                <input id="company" name="company" class="text" />
              </li>
              <li>
                <label for="subject">Subject</label>
                <input id="subject" name="subject" class="text" />
              </li>
              <li>
                <label for="message">Message</label>
                <textarea id="message" name="message" rows="6" cols="50"></textarea>
              </li>
              <li class="buttons">
                <input type="image" name="imageField" id="imageField" src="images/send.gif" class="send" />
                <div class="clr"></div>
              </li>
            </ol>
          </form>
        </div>
und hier die dazugehörige PHP

Code: Alles auswählen

<?php

if&#40;!$_POST&#41; exit;

$email = $_POST&#91;'email'&#93;;


//$error&#91;&#93; = preg_match&#40;'/\b&#91;A-Z0-9._%-&#93;+@&#91;A-Z0-9.-&#93;+\.&#91;A-Z&#93;&#123;2,4&#125;\b/i', $_POST&#91;'email'&#93;&#41; ? '' &#58; 'INVALID EMAIL ADDRESS';
if&#40;!eregi&#40;"^&#91;a-z0-9&#93;+&#40;&#91;_\\.-&#93;&#91;a-z0-9&#93;+&#41;*" ."@"."&#40;&#91;a-z0-9&#93;+&#40;&#91;\.-&#93;&#91;a-z0-9&#93;+&#41;*&#41;+"."\\.&#91;a-z&#93;&#123;2,&#125;"."$",$email &#41;&#41;&#123;
	$error.="Invalid email address entered";
	$errors=1;
&#125;
if&#40;$errors==1&#41; echo $error;
else&#123;
	$values = array &#40;'name','email','message'&#41;;
	$required = array&#40;'name','email','message'&#41;;
	 
	$your_email = "james@example.com";
	$email_subject = "New Message&#58; ".$_POST&#91;'subject'&#93;;
	$email_content = "new message&#58;\n";
	
	foreach&#40;$values as $key => $value&#41;&#123;
	  if&#40;in_array&#40;$value,$required&#41;&#41;&#123;
		if &#40;$key != 'subject' && $key != 'company'&#41; &#123;
		  if&#40; empty&#40;$_POST&#91;$value&#93;&#41; &#41; &#123; echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; &#125;
		&#125;
		$email_content .= $value.'&#58; '.$_POST&#91;$value&#93;."\n";
	  &#125;
	&#125;
	 
	if&#40;@mail&#40;$your_email,$email_subject,$email_content&#41;&#41; &#123;
		echo 'Message sent!'; 
	&#125; else &#123;
		echo 'ERROR!';
	&#125;
&#125;
?>

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Nullpointer
PostRank 10
PostRank 10
Beiträge: 4790
Registriert: 22.04.2005, 19:14
Wohnort: West Berlin

Beitrag von Nullpointer » 04.06.2010, 08:14

https://php.net/manual/de/function.mail.php

schau dir auf der seite beispiel 2 an. da wird eine variable header als vierter parameter an die mailfunktion übergeben und dieser header enthält die from adresse.

Erdbeertorte
PostRank 2
PostRank 2
Beiträge: 43
Registriert: 05.08.2009, 19:59

Beitrag von Erdbeertorte » 04.06.2010, 10:04

Vielen Dank! Werde ich mir zu Gemüte führen. Hoffentlich verstehe ich das

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


oliverp19
PostRank 4
PostRank 4
Beiträge: 182
Registriert: 05.03.2009, 20:32

Beitrag von oliverp19 » 04.06.2010, 10:33

Code: Alles auswählen

header = 'From&#58; Vorname Nachname <absender@example.com>';
@mail&#40;$your_email,$email_subject,$email_content,$header&#41;
Grüße
Oli

Nullpointer
PostRank 10
PostRank 10
Beiträge: 4790
Registriert: 22.04.2005, 19:14
Wohnort: West Berlin

Beitrag von Nullpointer » 04.06.2010, 10:54

oliverp19 hat geschrieben:

Code: Alles auswählen

header = 'From&#58; Vorname Nachname <absender@example.com>';
@mail&#40;$your_email,$email_subject,$email_content,$header&#41;
Grüße
Oli
dann aber gleich angepaßt.

Code: Alles auswählen

$header = 'From&#58; Vorname Nachname '.$email;
@mail&#40;$your_email,$email_subject,$email_content,$header&#41;

Erdbeertorte
PostRank 2
PostRank 2
Beiträge: 43
Registriert: 05.08.2009, 19:59

Beitrag von Erdbeertorte » 04.06.2010, 15:07

Danke für eure Hilfe. Dummerweise verstehe ich anscheinend überhaupt nichts von PHP, denn vom Kontaktformular empfange ich keine E-Mails mehr :(

die PHP schaut folgendermaßen aus

Code: Alles auswählen

<?php

if&#40;!$_POST&#41; exit;

$email = $_POST&#91;'email'&#93;;


//$error&#91;&#93; = preg_match&#40;'/\b&#91;A-Z0-9._%-&#93;+@&#91;A-Z0-9.-&#93;+\.&#91;A-Z&#93;&#123;2,4&#125;\b/i', $_POST&#91;'email'&#93;&#41; ? '' &#58; 'INVALID EMAIL ADDRESS';
if&#40;!eregi&#40;"^&#91;a-z0-9&#93;+&#40;&#91;_\\.-&#93;&#91;a-z0-9&#93;+&#41;*" ."@"."&#40;&#91;a-z0-9&#93;+&#40;&#91;\.-&#93;&#91;a-z0-9&#93;+&#41;*&#41;+"."\\.&#91;a-z&#93;&#123;2,&#125;"."$",$email &#41;&#41;&#123;
	$error.="Invalid email address entered";
	$errors=1;
&#125;
if&#40;$errors==1&#41; echo $error;
else&#123;
	$values = array &#40;'name','email','message'&#41;;
	$required = array&#40;'name','email','message'&#41;;
	 
	$your_email = "james@example.com";
	$email_subject = "New Message&#58; ".$_POST&#91;'subject'&#93;;
	$email_content = "new message&#58;\n";
	
	$header = 'From&#58; Vorname Nachname '.$email; 
 
	foreach&#40;$values as $key => $value&#41;&#123;
	  if&#40;in_array&#40;$value,$required&#41;&#41;&#123;
		if &#40;$key != 'subject' && $key != 'company'&#41; &#123;
		  if&#40; empty&#40;$_POST&#91;$value&#93;&#41; &#41; &#123; echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; &#125;
		&#125;
		$email_content .= $value.'&#58; '.$_POST&#91;$value&#93;."\n";
	  &#125;
	&#125;
	 
	if&#40;@mail&#40;$your_email,$email_subject,$email_content,$header&#41;&#41; &#123;
		echo 'Message sent!'; 
	&#125; else &#123;
		echo 'ERROR!';
	&#125;
&#125;
?>

DanielS
PostRank 9
PostRank 9
Beiträge: 1179
Registriert: 03.08.2008, 08:45

Beitrag von DanielS » 04.06.2010, 15:19

Nimm mal das @ vor @mail raus, dann kriegst Du vielleicht ein Fehlermeldung mit der Du was anfangen kannst.

Nullpointer
PostRank 10
PostRank 10
Beiträge: 4790
Registriert: 22.04.2005, 19:14
Wohnort: West Berlin

Beitrag von Nullpointer » 05.06.2010, 06:24

in der zeile, wo $header gesetzt wird, muß natürlich auch der name eingefügt werden. das nur am rande, hat aber nichts damit zu tun, dass das script jetzt nicht mehr mailt.

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 05.06.2010, 08:16

Code: Alles auswählen

$header = 'From&#58; Vorname Nachname '.$email; 
"Vorname Nachname" ist der Name des Absenders.
$email ist die EMailadresse des Absenders.

Aber! Die Email muss in <> gesetzt werden, also als

Code: Alles auswählen

$header = 'From&#58; Vorname Nachname <'.$email.'>'; 
Das @ zu entfernen bringt nicht viel, da die mail()-Funktion nur true oder false als Antwort liefert und keinen Error-Code.

Möglich wäre allerdings auch, dass es am fünften-Parameter liegt. Siehe dazu Beispiel #3, auf der von Nullpointer genannten Seite.

DanielS
PostRank 9
PostRank 9
Beiträge: 1179
Registriert: 03.08.2008, 08:45

Beitrag von DanielS » 05.06.2010, 13:23

Synonym hat geschrieben:Das @ zu entfernen bringt nicht viel, da die mail()-Funktion nur true oder false als Antwort liefert und keinen Error-Code.
Ok, das wusste ich nicht. Danke für den Hinweis!

Erdbeertorte
PostRank 2
PostRank 2
Beiträge: 43
Registriert: 05.08.2009, 19:59

Beitrag von Erdbeertorte » 06.06.2010, 18:25

Es hatte nichts mit dem @ zu tun. Die E-Mails wurden anscheinend einfach nicht sofort versendet. Erst ein paar Stunden später. Ich habe nun die ganze Zeit die Sonne genossen und gerade erst mit dem Kontaktformular weitergemacht.

Leider passt es noch immer nicht. Ich möchte doch den Namen in der Übersicht des Posteingangs erscheinen lassen und wenn man die E-Mail anschließend anklickt und dann auf Antworten geht, sollte gleich die E-Mail-Adresse des Absenders im entsprechenden Feld eingetragen sein.
Bisher hat der dazugehörige Teil so gelautet

Code: Alles auswählen

	$header = 'From&#58; Vorname '.$email; 
Statt des Namens, welcher im Kontaktformular angegeben wurde, steht nur " Vorname ".


Bei meinem derzeitigen Stand sieht es so aus

Code: Alles auswählen

	$header = 'From&#58; <'.$email.'>'; 
aber damit fehlt natürlich ein entscheidender Teil.



Der folgende Absatz von der Beispielseite hat mir dabei auch nicht geholfen. Diesen konnte ich nicht auf mein Beispiel anwenden.

Code: Alles auswählen

$header = 'From&#58; webmaster@example.com' . "\r\n" .
    'Reply-To&#58; webmaster@example.com' . "\r\n" .
    'X-Mailer&#58; PHP/' . phpversion&#40;&#41;;

Erdbeertorte
PostRank 2
PostRank 2
Beiträge: 43
Registriert: 05.08.2009, 19:59

Beitrag von Erdbeertorte » 07.06.2010, 18:26

Zumindest funktioniert es schon, dass die E-Mail-Adresse des Absenders im entsprechenden Feld eingetragen ist, wenn man auf Antwort klickt


aber wie macht man das mit dem Namen?

Nullpointer
PostRank 10
PostRank 10
Beiträge: 4790
Registriert: 22.04.2005, 19:14
Wohnort: West Berlin

Beitrag von Nullpointer » 08.06.2010, 07:20

Erdbeertorte hat geschrieben:.....

$header = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: '.$name.' <webmaster@example.com>' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
hast du das mal probiert?wobei in $name dann natürlich der name des absenders stehen muss.

Erdbeertorte
PostRank 2
PostRank 2
Beiträge: 43
Registriert: 05.08.2009, 19:59

Beitrag von Erdbeertorte » 08.06.2010, 15:28

Ich meine den Namen, den der Absender im Kontaktformular eingegeben hat.
Das Formular beinhaltet doch ein Feld mit dem Namen, ein Feld für die E-Mail-Adresse, ein Feld für den Betreff und dann noch ein Feld für die eigentliche Nachricht.


In der Übersicht des Posteingangs gibt es bei den ganzen E-Mails eine Spalte, in der der Name der Person angezeigt wird, von der die E-Mails stammt. Und neben dieser Spalte steht dann der Betreff der E-Mail.


Oder funktioniert das nicht so wie ich meine?

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 08.06.2010, 16:14

Na das

Code: Alles auswählen

$header = 'From&#58; Vorname Nachname <'.$email.'>'; 
war ja auch nur ein Beispiel. Das "Vorname Nachname" musst Du natürlich noch ersetzen.

Code: Alles auswählen

$header = 'From&#58; '.$_POST&#91;'name'&#93;.' <'.$email.'>'; 
Wobei dann noch die Prüfung fehlt, ob der Name überhaupt gültig ist oder unzulässige Zeichen enthält.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag