mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 19:06 Benutzername: Passwort: Auto-Login

Thema: Kontaktformular in PHP richtig? vom 29.05.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Kontaktformular in PHP richtig?
Seite: 1, 2  Weiter
Autor Nachricht
emrah89
Threadersteller

Dabei seit: 25.07.2007
Ort: Aachen
Alter: 34
Geschlecht: Männlich
Verfasst Fr 29.05.2009 10:49
Titel

Kontaktformular in PHP richtig?

Antworten mit Zitat Zum Seitenanfang

Moin Medi´s,

Ich versuche seit Tagen schon ein Kontaktformular für ne Homepage zu machen doch irgendwie funktioniert es nicht.
Da ich eigentlich Printer bin, habe ich sehr wenige Erfahrungen im Non-Print Bereich und brauche drigend Hilfe:

Mein Wunsch: Ein Kontaktformular, das nach der Versendung an mein E-Mail adresse weitergeleitet wird.

Auf der Internetseite www.formular-generator.de kann man einen Formuar generieren lassen, doch wenn ich diesen Code in meine PHP Datei reinkopiere und in Firefox testen möchte, werden die PHP tags angezeigt. Ist das normal? Oder wird das später nicht angezeigt wenn die Seite online ist?

So siehts in Firefox aus:

Code:
Bitte alle Pflichtfelder ausfuellen.'; } else if (!empty($_POST["senden"]) &&  !isEmail($_POST["eMail"])) { $formularAnzeigen = true; echo 'Die E-Mail-Adresse ist nicht korrekt.'; } else if (empty($_POST["senden"])) { $formularAnzeigen = true; } if ($formularAnzeigen) { ?>
*
   Vorname:       
*
   Nachname:       
*
   E-Mail:       z.B: name@gmx.net, ihrName@web.de
*
   Betreff:       
*
   Nachricht:    <?=$_POST['nachricht']; ?>    
     Kopie der Nachricht:    >    Möchten Sie eine Kopie der Nachricht per E-Mail erhalten?
   
Formular Generator erstellt.'; } else { $eMail = ' Vorname: '.$_POST['vorName'].' Nachname: '.$_POST['nachName'].' E-Mail: '.$_POST['eMail'].' Betreff: '.$_POST['betreff1'].' Nachricht: '.$_POST['nachricht'].' Kopie der Nachricht: '.$_POST['kopie'].''; if (@mail("ahmetoglu@verlag-mainz.de", "Neue Nachricht vom Kontaktformular", $eMail)) { echo "Ihre Nachricht wurde an unsverschickt, vielen Dank!
"; } else { echo "E-Mail-Verkehr funktioniert zur Zeit nicht
"; } if ($_POST['kopie']) { if (@mail($_POST['eMail'], "Kontaktformular von IchwerdeAutor.de", $eMail)) { echo "Sie haben eine Kopie der Nachricht zugeschickt bekommen.
"; } } } function isEmail($email) { $nonascii = "\x80-\xff"; $nqtext = "[^\\$nonascii\015\012\"]"; $qchar = "\\[^$nonascii]"; $protocol = "(?:mailto:)"; $normuser = "[a-zA-Z0-9][a-zA-Z0-9_.-]*"; $quotedstring = "\"(?:$nqtext|$qchar)+\""; $user_part = "(?:$normuser|$quotedstring)"; $dom_mainpart = "[a-zA-Z0-9][a-zA-Z0-9._-]*\."; $dom_subpart = "(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*"; $dom_tldpart = "[a-zA-Z]{2,5}"; $domain_part = "$dom_subpart$dom_mainpart$dom_tldpart"; $regex = "$protocol?$user_part\@$domain_part"; if (preg_match("/^$regex$/",$email)) { return true; } return false; } ?>


und mein Code sieht so aus:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body> 
<script language=JavaScript>
<!--
 function isValid() {

   var msg = "";
   
   if (kontaktFormular.eMail.value.indexOf("@") < 1 ||
       kontaktFormular.eMail.value.indexOf(".") < 1) {
     msg += "- Die E-Mail-Adresse ist syntaktisch nicht korrekt.\n";
   }
   
   if(kontaktFormular.vorName.value == "") {
     msg += "- Leeres Feld: Vorname:\n";
   }

   if(kontaktFormular.nachName.value == "") {
     msg += "- Leeres Feld: Nachname:\n";
   }

   if(kontaktFormular.betreff1.value == "") {
     msg += "- Leeres Feld: Betreff:\n";
   }

   if(kontaktFormular.nachricht.value == "") {
     msg += "- Leeres Feld: Nachricht:\n";
   }
   
   if(msg == "") {
     return true;   
   }
   alert(msg);
   return false;
 }
-->
</script>
<?php
 
  $formularAnzeigen = false;
  if (!empty($_POST["senden"]) && (
      empty($_POST["vorName"]) ||
      empty($_POST["nachName"]) ||
      empty($_POST["eMail"]) ||
      empty($_POST["betreff1"]) ||
      empty($_POST["nachricht"]))) {
    $formularAnzeigen = true;
    echo '<span style="color: #FF0000; font-size: x-large;">Bitte alle Pflichtfelder ausfuellen.</span>';
  } else if (!empty($_POST["senden"]) &&
             !isEmail($_POST["eMail"])) {
    $formularAnzeigen = true; 
    echo '<span style="color: #FF0000; font-size: x-large;">Die E-Mail-Adresse ist nicht korrekt.</span>';
  } else if (empty($_POST["senden"])) {
    $formularAnzeigen = true; 
  }
  if ($formularAnzeigen) {
?>
<form name="kontaktFormular" method="post" action="<?=$_SERVER[PHP_SELF]; ?>" onSubmit="return isValid()">
  <table width="800" border="0">
<!--anfang vorName--> 
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Vorname:
      </strong></td>
      <td>
      <input name="vorName" type="text" value="<?=$_POST['vorName']; ?>" /></td>

      <td>
        &nbsp;
      </td>         
    </tr>
<!--ende vorName-->
<!--anfang nachName-->   
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Nachname:
      </strong></td>
      <td><input name="nachName" type="text" value="<?=$_POST['nachName']; ?>" /></td>
      <td>
        &nbsp;
      </td>         
    </tr>
<!--ende nachName-->
<!--anfang eMail-->       
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        E-Mail:
      </strong></td>
      <td><input name="eMail" type="text" id="eMail" value="<?=$_POST['eMail']; ?>" /></td>
      <td>
        z.B: name@gmx.net, ihrName@web.de
      </td>     
    </tr>
<!--ende eMail-->
<!--anfang betreff1-->
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Betreff:
      </strong></td>
      <td><input name="betreff1" type="text" id="betreff1" value="<?=$_POST['betreff1']; ?>" size="50" /></td>
      <td>
        &nbsp;
      </td>         
    </tr>
<!--ende betreff1-->
<!--anfang nachricht-->     
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Nachricht:
      </strong></td>
      <td><textarea name="nachricht" cols="40" rows="10"><?=$_POST['nachricht']; ?></textarea></td>
      <td>
        &nbsp;
      </td>         
    </tr>
<!--ende nachricht-->
<!--anfang kopie-->       
    <tr>
      <td>&nbsp;</td>
      <td><strong>
        Kopie der Nachricht:
      </strong></td>
      <td><input name="kopie" type="checkbox" value="checked" <?=$_POST['kopie']; ?>></td>
      <td>
        M&Atilde;&para;chten Sie eine Kopie der Nachricht per E-Mail erhalten?
      </td>         
    </tr>
<!--ende kopie-->   
    <tr>
      <td colspan="3">
        <div align="center">
          <input name="senden" type="submit" value="Senden" />
        </div>
      </td>         
      <td>&nbsp;</td>         
    </tr>
  </table>
</form>

<?php
  echo'Dieses Formular wurde mit dem <a href="http://www.formular-generator.de" target="_blank">Formular Generator</a> erstellt.';
  } else {
    $eMail = '
       
Vorname:
'.$_POST['vorName'].'
       
Nachname:
'.$_POST['nachName'].'
       
E-Mail:
'.$_POST['eMail'].'
       
Betreff:
'.$_POST['betreff1'].'
       
Nachricht:
'.$_POST['nachricht'].'
       
Kopie der Nachricht:
'.$_POST['kopie'].'';
   
    if (@mail("ahmetoglu@verlag-mainz.de",
         "Neue Nachricht vom Kontaktformular",
         $eMail)) {
      echo "Ihre Nachricht wurde an unsverschickt, vielen Dank!<br />";
    } else {
      echo "E-Mail-Verkehr funktioniert zur Zeit nicht<br />";
    }
    if ($_POST['kopie']) {
      if (@mail($_POST['eMail'],
           "Kontaktformular von IchwerdeAutor.de",
           $eMail)) {
        echo "Sie haben eine Kopie der Nachricht zugeschickt bekommen.<br />";
      }
    }
  }
 
  function isEmail($email) {
    $nonascii      = "\x80-\xff";
    $nqtext        = "[^\\$nonascii\015\012\"]";
    $qchar         = "\\[^$nonascii]";
    $protocol      = "(?:mailto:)";
    $normuser      = "[a-zA-Z0-9][a-zA-Z0-9_.-]*";
    $quotedstring  = "\"(?:$nqtext|$qchar)+\"";
    $user_part     = "(?:$normuser|$quotedstring)";
    $dom_mainpart  = "[a-zA-Z0-9][a-zA-Z0-9._-]*\.";
    $dom_subpart   = "(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*";
    $dom_tldpart   = "[a-zA-Z]{2,5}";
    $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";
    $regex         = "$protocol?$user_part\@$domain_part";
    if (preg_match("/^$regex$/",$email)) {
      return true;
    }
    return false;
  }
?>
</body>
</html>


Wenn einer bitte bitte bitte kurz gucken würde, wo die Fehler sind wäre ich sehr dankbar, denn ich die Seite drigend ins Netz gestellt werden :S

[edit]
Bitte [code]-Tags verwenden.


Zuletzt bearbeitet von Smooth-Graphics am Fr 29.05.2009 12:45, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Snifferdog

Dabei seit: 08.03.2007
Ort: Düsseldorf
Alter: 35
Geschlecht: Männlich
Verfasst Fr 29.05.2009 10:57
Titel

Antworten mit Zitat Zum Seitenanfang

Hey,

ehm was heißt "Oder wird das später nicht angezeigt wenn die Seite online ist?"? Führst du die PHP Datei auf deinem Computer aus? Wenn ja, dann ist es kein Wunder, dass es nicht funktioniert, denn PHP wird serverseitig ausgeführt.
Du brauchst also einen Server der dir das Script vorher verarbeitet bevor du dein "Ergebnis" bzw die Ausgabe ansehen kannst.

Gruß

EDIT:

Ich sehe grade, dass du die POST-Daten direkt in deine Nachricht einbaust. Das sollte man nie machen.
Sicherheitstechnisch ist das vollkommmen fürn .... Dazu gibts hier im Forum und auch bei Google aber genügend Lesestoff. Such einfach mal nach "sicheres kontaktformular" o.ä.


Zuletzt bearbeitet von Snifferdog am Fr 29.05.2009 11:07, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
willshedo

Dabei seit: 21.12.2005
Ort: Waldshut
Alter: 51
Geschlecht: -
Verfasst Fr 29.05.2009 21:05
Titel

Antworten mit Zitat Zum Seitenanfang

Hi,

dein "So siehts in Firefox aus:" kapier ich zwar nicht, aber den Code hab ich eben online auf ausprobiert, der funktioniert wunderbar und sendet die beiden Mails brav ab. 'Fehler' in dem Sinne sind also nicht drin, auch wenn der PHP-Code reichlich unsauber daherkommt.

Dann lag es also tatsächlich daran, daß du nicht online auf einem Webspace getestet hast, wo auch PHP bereitsteht, richtig? Php-Dateien wie Html-Dateien lokal testen isnich', wie Snifferdog schon sagte.

Grüßle,

Chris
  View user's profile Private Nachricht senden
nickdesign

Dabei seit: 28.02.2007
Ort: South London
Alter: 43
Geschlecht: Männlich
Verfasst Fr 29.05.2009 22:48
Titel

Antworten mit Zitat Zum Seitenanfang

- > DOWNLOAD http://www.apachefriends.org/de/xampp.html

Installieren und starten dann müsste deine PHP Seite auch angezeigt werden... mehr sag ich net dazu...der rest ist selbsterklärend... *lol*
  View user's profile Private Nachricht senden
fishtown

Dabei seit: 20.06.2009
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 20.06.2009 11:37
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo, ich benutze das selbe Script und habe eine Frage dazu:

Wenn eine Mail verschickt wird, dann kommt sie zwar an, leider aber mit der Server-EMail-Addy (anonymous@xxxxxxx.stratoserver.net).
Wie kann ich das ändern, sodass meine E-Mail Adresse dafür genutzt wird)
  View user's profile Private Nachricht senden
Pixelpole

Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht: Männlich
Verfasst Sa 20.06.2009 11:50
Titel

Antworten mit Zitat Zum Seitenanfang

http://de3.php.net/manual/de/function.mail.php
  View user's profile Private Nachricht senden
fishtown

Dabei seit: 20.06.2009
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 20.06.2009 12:04
Titel

Antworten mit Zitat Zum Seitenanfang

Ja, ne, is klar. Danke erstmal, aber wo kommt was hin?
Sorry, aber scheint so als ob ich in meinem Alter echt Probleme mit dem Verstehen habe.
  View user's profile Private Nachricht senden
Smooth-Graphics

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Sa 20.06.2009 13:28
Titel

Antworten mit Zitat Zum Seitenanfang

fishtown hat geschrieben:
Ja, ne, is klar. Danke erstmal, aber wo kommt was hin?
Sorry, aber scheint so als ob ich in meinem Alter echt Probleme mit dem Verstehen habe.


Code:
<?php
$empfaenger = 'niemand@example.com';
$betreff = 'Der Betreff';
$nachricht = 'Hallo';
$header = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($empfaenger, $betreff, $nachricht, $header);
?>


Schau dir mal die $header Variable an. Allerdings kann das ganze auch vom Hoster bedingt sein, manche haben da ziemlich "blöde" Einstellungen, so dass immer diese E-Mail angezeigt wird.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Kontaktformular
PHP-Kontaktformular
Kontaktformular
Kontaktformular
kontaktformular
Kontaktformular
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.