• twitter image
  • facebook image
  • youtube image
  • linkedin image
Language: CMS Made Simple Czech CMS Made Simple France CMS Made Simple Spain CMS Made Simple Hungary CMS Made Simple Russia CMS Made Simple Netherlands

All times are UTC




Post new topic This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Kontaktformular implementieren mit PHP
PostPosted: Wed Aug 25, 2010 11:04 am 
Offline
Forum Members
Forum Members

Joined: Fri Mar 13, 2009 1:01 pm
Posts: 74
Hallo zusammen

Ich bin mir nicht ganz sicher ob das das richtige Unterforum dafür ist, aber auf jeden Fall habe ich das folgende Problem:

Ich habe ein Formular um mir ein Email zu senden folgendermassen definiert:

Code:
<form action="{$send_mail}" method="post">
<table border="0">
<tbody>
<tr>
<td><label for="absender">Ihr Name:</label></td>
<td><input id="absender" name="absender" size="25" type="text" /></td>
</tr>
<tr>
<td><label for="email">Ihre E-Mail Adresse:</label></td>
<td><input id="email" name="email" size="25" type="text" /></td>
</tr>
<tr>
<td><label for="betreff">Betreff ihrer Nachricht:</label></td>
<td><input id="betreff" name="betreff" size="25" type="betreff" /></td>
</tr>
<tr>
<td><label for="nachricht">Ihre Nachricht:</label></td>
<td><textarea id="nachricht" cols="30" rows="8" name="nachricht"></textarea></td>
</tr>
<tr height="20">
<td></td>
<td></td>
</tr>
<tr>
<th colspan="2" align="center"><input name="abschicken" type="submit" value="Nachricht verschicken" /></th>
</tr>
</tbody>
</table>
</form>


Das PHP Script habe ich als benutzerdefinierter Tag folgendermassen definiert:

Code:
/* Geben Sie hier Ihre E-Mail Adresse zwischen den beiden " an: */

$_emails[0] = "sebi@icu.uzh.ch";

// Wenn keine $_POST Daten übermittelt wurden, dann abbrechen
if(!isset($_POST) OR empty($_POST))
{
   header("Content-type: text/plain; charset=utf-8");
    echo "Es wurden keine Daten übermittelt!";
    exit;
}
else
{
    // Datum, Uhrzeit und Pfad zum eigenen Script feststellen
    $date = date("d.m.Y");
    $time = date("H:i");
    $host = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
  
    // Empfänger feststellen und auf Gültigkeit prüfen
    if(isset($_POST['recipient']) AND isset($_emails[ $_POST['recipient'] ])
       AND preg_match("/^.*@.*\..*$/", $_emails[ $_POST['recipient'] ]))
    {
        $recipient = $_emails[ $_POST['recipient'] ];
    }
    // Wurde kein (gültiger) Empfänger angegeben, es mit $_email[0] versuchen
    elseif(isset($_emails[0]) AND preg_match("/^.*@.*\..*$/", $_emails[0]))
    {
        $recipient = $_emails[0];
    }
    // Ist auch diese Adresse ungültig, mit Fehlermeldung abbrechen
    else
    {
        header("Content-type: text/plain");
        echo "Fehler im Script - es wurde kein Empfänger oder eine ungültige E-Mail Adresse in \ angegeben.";
        exit;
    }
  
    // Wenn Betreff übermittelt, diesen verwenden
    if(isset($_POST['subject']))
    {
        $subject = $_POST['subject'];
    }
    // sonst einen Default Betreff verwenden
    else
    {
        $subject = "Formular Daten von {$_SERVER['HTTP_HOST']}";
    }
  
    // E-Mai Kopf generieren
    $email = "Formular Eintrag\n"
           . "\n"
           . "Am $date um $time Uhr hast das Script auf $host Formulardaten empfangen,\n"
           . "welche nach Angabe des Browsers von {$_SERVER['HTTP_REFERER']} stammen.\n"
           . "\n"
           . "Der Formular Inhalt wird nachfolgend wiedergegeben.\n"
           . "\n";
  
    // Alle $_POST Werte an den E-Mail Kopf anhängen
    foreach($_POST as $key => $value)
    {
        if($key == "redirect" OR $key == "recipient" OR $key == "subject")
        {
            continue;
        }
        $email .= "Fomular Feld '$key':\n"
               .  "=============================\n"
               .  "$value\n"
               .  "\n";
    }
  
    // E-Mail Fuß anfügen
    $email .= "=============================\n"
           .  "Ende der automatisch generierten E-Mail.";
  
    // Versuchen E-Mail zu versenden
    if(!mail($recipient, $subject, $email)) {
        // Ist dies gescheitert, Fehlermeldung ausgeben
        echo "Es ist ein Fehler beim Versenden der E-Mail aufgetreten,"
             . " eventuell liegt ein Konfigurationsfehler am Server vor.\n\n";
        exit;
    }
  
    // Wenn gewünscht, auf Bestätigungsseite weiterleiten
    if(isset($_POST['redirect']) AND preg_match("=^(http|ftp)://.*\..*$=", $_POST['redirect'])) {
       header("Location: ".$_POST['redirect']);
        exit;
    } else {
        header("Content-type: text/html");
        echo "Die E-Mail wurde erfolgreich versendet.";
   echo '<br>';
     echo '<a href="http://www.ornitholog.li/cms/index.php?page=kontakt">Zurueck</a>';
        exit;
    }
}


Nun ist es so, dass Mails die ich damit verschicke nie bei mir an. Allerdings bekomme ich auch keine Fehlermeldung. Früher hatte ich das script in einer einzelnen php Datei auf dem Server gespeichert. Damals hatte alles funktioniert, nur leider wurde dann der echo Teil des PHP Scripts auf einer neuen Seite ausgegeben. Um das zu verhindern, habe ich auf SO den Tip erhalten, das PHP Script so einzufügen.

Kann jemand von euch den Fehler finden? Oder mir eine andere Lösung vorschlagen??

Vielen Dank!


Top
  Profile  
 
Share On:
Share on Facebook Share on Twitter Share on Google+
 Post subject: Re: Kontaktformular implementieren mit PHP
PostPosted: Wed Aug 25, 2010 10:12 pm 
Offline
Forum Members
Forum Members

Joined: Fri Mar 13, 2009 1:01 pm
Posts: 74
Danke. Kann eigentlich geschlossen werden. Ich habe jetzt den FormBuilder verwendet um das Problem zu lösen.


Top
  Profile  
 
Share On:
Share on Facebook Share on Twitter Share on Google+
 Post subject: Re: Kontaktformular implementieren mit PHP
PostPosted: Thu Aug 26, 2010 5:58 pm 
Hättest auch das alte contact_form plugin für deine Experimente verwenden können

http://dev.cmsmadesimple.org/projects/contact_form

FormBuilder ist nach meinem Geschmack für ein Kontaktformular etwas oversized :/ ...


Top
   
 
Share On:
Share on Facebook Share on Twitter Share on Google+
Display posts from previous:  Sort by  
Post new topic This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
A2 Hosting