Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Hilfe beim PHP Kontaktformular“

Gimpi

Noch nicht viel geschrieben

Hallo

Ich versuche eine Website mit Hilfe von einem Template(Themeforest) zu realisieren und dies gelingt mir ganz gut bis auf das PHP Kontaktformular.

Ich habe von PHP keine Ahnung und möchte mich zwar damit beschäftigen aber diese Seite wird darauf nicht warten können.

Wäre sehr dankbar wenn mir Jemand sagen könnte wohin ich die Email-adresse eingeben soll und was ich sonst noch ergänzen sollte.
Vielen vielen Dank im Voraus. :) :blumen:

Hier das HTML:

HTML:
<!--Success notifications-info text-->
				<div class="notifications clearfix" style="display:none">
                    <div class="alert alert-info">
                      <a class="close" data-dismiss="alert" href="#">×</a>
                      <strong>Success</strong> Send Messages Complete !
                    </div>
                </div>

				<form class="form-horizontal" id="contactform">
					<div class="control-group">
					<label class="control-label" >Name</label>
						<div class="controls">
							<input  type="text" name="youname"  id="youname" class="validate[required] span3" />
						</div>
					</div>
					<div class="control-group">
					<label class="control-label" >Email</label>
						<div class="controls">
							<input  type="text"  name="email" id="email" class="validate[required,custom[email]] span3"/>
						</div>
					</div>
				  <div class="control-group">
					<label class="control-label" for="textarea">Nachricht</label>
					<div class="controls">
					 		<textarea  name="Messages" class="validate[required] input-xlarge " id="textarea" rows="3"></textarea>
					</div>
				  </div>
				  <div class="control-group last">
					<div class="controls">
							<button type="submit" class="btn">NACHRICHT SENDEN</button>
					</div>
				  </div>
				</form>

Hier die eine PHP Datei:

PHP:
<?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header('Content-type:text/html;charset=utf8');
 include("js/sendmail/mimemail.inc.php");

sleep(2);

$name = $_REQUEST['youname'];
$email = $_REQUEST['email'];
$message =stripslashes($_REQUEST['Messages']); // messages
$subject = "Test Email By owua GmbH";

if($name  and $email ){

 $mail = new MIMEMAIL("HTML");
 $mail->senderName = "$name";
 $mail->senderMail = "$email";
 $mail->subject = "$subject";
 $mail->body = $message;
 $mail->attachment[] = ""; // if you have  attach file used part  example "images/01.jpg"
 $mail->create();
 $mail->send("$email");

	$check="1";   // if complete  set  check = 1

}else{ // not  complete

	$check="0";   // set  check = 0

}

$return_arr["check"] = $check; // set  data respone
echo json_encode($return_arr); // encode json data respone

?>

und Hier die andere:

PHP:
<?
/*
 +-------------------------------------------------------------------+
 |                     M I M E M A I L   (v1.5)                      |
 |                                                                   |
 | Copyright Gerd Tentler               www.gerd-tentler.de/tools    |
 | Created: Nov. 2, 2004                Last modified: Oct. 19, 2005 |
 +-------------------------------------------------------------------+
 | This program may be used and hosted free of charge by anyone for  |
 | personal purpose as long as this copyright notice remains intact. |
 |                                                                   |
 | Obtain permission before selling the code for this program or     |
 | hosting this software on a commercial website or redistributing   |
 | this software over the Internet or in any other medium. In all    |
 | cases copyright must remain intact.                               |
 +-------------------------------------------------------------------+

==========================================================================================================
 This script can send MIME-mails with attachments. It uses the PHP mail-function.

 EXAMPLE:

 $mail = new MIMEMAIL("HTML");

 $mail->senderName = "sender name";
 $mail->senderMail = "sender@email";
 $mail->bcc = "bcc@email";

 $mail->subject = "This is the subject line";

 $mail->body = "Hello! This is a message for you.";   // OR: $mail->body = "path_to_file/filename";

 $mail->attachment[] = "path_to_file1/filename1";
 $mail->attachment[] = "path_to_file2/filename2";
 ...

 $mail->create();

 $mail->send("recipient1@email");
 $mail->send("recipient2@email,recipient3@email,recipient4@email");
 ...
==========================================================================================================
*/
  error_reporting(E_WARNING);

  class MIMEMAIL {
//--------------------------------------------------------------------------------------------------------
// Configuration
//--------------------------------------------------------------------------------------------------------
    var $type = 'Text';             // e-mail type ("HTML" or "Text")
    var $senderName = '';           // sender name
    var $senderMail = '';           // sender e-mail address
    var $cc = '';                   // Cc (e-mail address)
    var $bcc = '';                  // Bcc (e-mail address)
    var $documentRoot = '';         // document root (path to images, stylesheets, etc.)
    var $saveDir = '';              // save e-mail to this directory (do not send) => just for testing :)
//    var $charSet = 'ISO-8859-1';    // character set (ISO)
    var $charSet = 'windows-874';
    var $useQueue = false;          // use mail queue (true = yes, false = no) => does not work with PHP
                                    // versions < 4.0.5, or with versions >= 4.2.3 in Safe Mode, or with
                                    // MTAs other than sendmail!

    var $mime = array('jpg'  => 'image/jpeg',
                      'jpeg' => 'image/jpeg',
                      'gif'  => 'image/gif',
                      'png'  => 'image/png',
                      'swf'  => 'application/x-shockwave-flash',
                      'doc'  => 'application/msword',
                      'xls'  => 'application/msexcel',
                      'ppt'  => 'application/mspowerpoint',
                      'pdf'  => 'application/pdf',
                      'zip'  => 'application/zip',
                      'rtf'  => 'text/rtf',
                      'rtx'  => 'text/richtext',
                      'txt'  => 'text/plain',
                      'js'   => 'text/javascript',
                      'css'  => 'text/css');

    var $exclude = array('htm', 'php', 'pl', 'prl', 'cgi');
    var $inline = array();
    var $attachment = array();
    var $subject, $body, $header, $footer;

//--------------------------------------------------------------------------------------------------------
// Functions
//--------------------------------------------------------------------------------------------------------
    function MIMEMAIL($type = '') {
      if($type) $this->type = $type;
    }

    function get_img_type($data) {
      $abc = substr($data, 0, 20);
      if(strstr($abc, 'GIF')) $ftype = 'gif';
      else if(strstr($abc, 'JFIF') || strstr($abc, 'Exif')) $ftype = 'jpeg';
      else if(strstr($abc, 'PNG')) $ftype = 'png';
      else if(strstr($abc, 'FWS') || strstr($abc, 'CWS')) $ftype = 'swf';
      else $ftype = '';

      return $ftype;
    }

    function get_img_data($html, $m, $css) {
      global $HTTP_HOST;

      $host = 'http://' . ereg_replace('/$', '', $HTTP_HOST);

      for($i = 0; $i < count($m[0]); $i++) {
        $ftype = $data = $ext = $fname = '';

        if(!preg_match('/^(http|ftp|mailto|javascript)/i', $m[2][$i])) {
          $inlName = $m[2][$i];
          $ext = substr($inlName, strrpos($inlName, '.') + 1);
          $incl = true;

          for($j = 0; $j < count($this->exclude) && $incl; $j++) {
            if(stristr($ext, $this->exclude[$j])) $incl = false;
          }

          if($incl) {
            if($this->documentRoot) {
              $doc_root = $this->documentRoot;

              while(ereg('^\.\./', $inlName)) {
                $inlName = substr($inlName, 3);
                $doc_root = ereg_replace('/[^/]+$', '', $doc_root);
              }
              $fname = "$doc_root/$inlName";
            }
            else $fname = $inlName;

            if($fp = @fopen($fname, 'rb')) {
              $data = fread($fp, @filesize($fname));
              fclose($fp);
            }
          }
        }

        if($data) {
          if(!$ext) $ftype = $this->get_img_type($data);
          else $ftype = $ext;

          if($css) $html = str_replace($m[0][$i], ' ' . $m[1][$i] . '(cid:' . $inlName . ')', $html);
          else $html = str_replace($m[0][$i], ' ' . $m[1][$i] . '="cid:' . $inlName . '"', $html);

          if(!$this->inline[$ftype][$inlName]) {
            $this->inline[$ftype][$inlName] = chunk_split(base64_encode($data));
          }
        }
        else if(!preg_match('/^(http|ftp|mailto|javascript)/i', $m[2][$i])) {
          if($css) $html = str_replace($m[0][$i], ' ' . $m[1][$i] . "($host/$inlName)", $html);
          else $html = str_replace($m[0][$i], ' ' . $m[1][$i] . "=\"$host/$inlName\"", $html);
        }
      }
      return $html;
    }

    function check_body() {
      if(preg_match_all('/ (src|background|href)="?([^" >]+)"?/i', $this->body, $m))
        $this->body = $this->get_img_data($this->body, $m, false);
      if(preg_match_all('/ (url)\(([^\)]+)\)/i', $this->body, $m))
        $this->body = $this->get_img_data($this->body, $m, true);

      $this->body = preg_replace("/<(table|tr|div)([^>]*)>\r?\n?/i", "<\\1\\2>\r\n", $this->body);
      $this->body = preg_replace("/<\/(table|tr|td|style|script|div|p)>\r?\n?/i", "</\\1>\r\n", $this->body);
    }

    function prepare() {
      $attachments = $filetype = array();

      if(count($this->attachment)) while(list(, $att) = each($this->attachment)) {
        if($att && $att != 'none') {
          if($fp = @fopen($att, 'rb')) {
            $filename = basename(str_replace('\\', '/', $att));
            $file = fread($fp, @filesize($att));
            fclose($fp);

            $ext = substr($filename, strrpos($filename, '.')+1);
            $filetype[$filename] = $this->mime[$ext] ? $this->mime[$ext] : 'application/octet-stream';
            $attachments[$filename] = chunk_split(base64_encode($file));
          }
        }
      }

      $this->header = $this->footer = '';
      $uid1 = 'Next_' . strtoupper(md5(uniqid(time()) . 1));
      $uid2 = 'Next_' . strtoupper(md5(uniqid(time()) . 2));

      $this->header .= "Return-Path: " . $this->senderMail . "\n" .
                       "Subject:\n" .
                       "From: " . $this->senderName . " <" . $this->senderMail . ">\n" .
                       "X-Sender: <" . $this->senderMail . ">\n" .
                       "X-Mailer: PHP " . phpversion() . "\n" .
                       "MIME-Version: 1.0\n";

      if($this->cc) $this->header .= "Cc: " . $this->cc . "\n";
      if($this->bcc) $this->header .= "Bcc: " . $this->bcc . "\n";

      if($this->type == 'HTML' || count($attachments)) {
        $this->header .= "Content-Type: multipart/mixed;\n\t" .
                         "boundary=\"$uid1\"\n\n" .
                         "This is a multi-part message in MIME format.\n\n" .
                         "--$uid1\n";
      }

      if($this->type == 'HTML') {
        $this->header .= "Content-Type: multipart/related;\n\t" .
                         "boundary=\"$uid2\"\n\n" .
                         "--$uid2\n";
      }

      $this->header .= "Content-Type: text/" . (($this->type == 'HTML') ? 'html' : 'plain') . ";\n\t" .
                       "charset=\"" . $this->charSet . "\"\n" .
                       "Content-Transfer-Encoding: 8bit\n\n";

      if($this->type == 'HTML') {
        if(count($this->inline)) while(list($ftype, $arr) = each($this->inline)) {
          if(count($arr)) while(list($inlName, $data) = each($arr)) {
            $inlType = $this->mime[$ftype] ? $this->mime[$ftype] : 'application/octet-stream';
            $this->footer .= "--$uid2\n" .
                             "Content-Type: $inlType;\n\t" .
                             "name=\"$inlName\"\n" .
                             "Content-ID: <$inlName>\n" .
                             "Content-Disposition: inline;\n\t" .
                             "filename=\"$inlName\"\n" .
                             "Content-Transfer-Encoding: base64\n\n" .
                             "$data\n\n";
          }
        }
        $this->footer .= "--$uid2--\n\n";
      }

      if(count($attachments)) while(list($filename, $file) = each($attachments)) {
        $this->footer .= "--$uid1\n" .
                         'Content-Type: ' . $filetype[$filename] . ";\n\t" .
                         "name=\"$filename\"\n" .
                         "Content-Disposition: attachment;\n\t" .
                         "filename=\"$filename\"\n" .
                         "Content-Transfer-Encoding: base64\n\n" .
                         "$file\n\n";
      }

      if($this->type == 'HTML' || $file) $this->footer .= "--$uid1--";
    }

    function send($email) {
      if($this->saveDir) $this->header = str_replace("Subject:\n", 'Subject: ' . $this->subject . "\n", $this->header);
      else $this->header = str_replace("Subject:\n", '', $this->header);

      $mime_mail = $this->header . $this->body . "\n\n" . $this->footer;

      if($this->saveDir) {
        if($fp = @fopen($this->saveDir . '/mail.eml', 'w')) {
          $mime_mail = "To: $email\n" . $mime_mail;
          fwrite($fp, $mime_mail, strlen($mime_mail));
          fclose($fp);
          $ok = true;
        }
        else $ok = false;
      }
      else {
        $php_ver = phpversion();
        if(function_exists('ini_get')) $safe_mode = ini_get('safe_mode');
        else $safe_mode = get_cfg_var('safe_mode');

        if($php_ver < '4.0.5' || ($php_ver >= '4.2.3' && $safe_mode)) {
          $ok = @mail($email, $this->subject, '', $mime_mail);
        }
        else {
          $options = ($this->useQueue ? '-odq ' : '') . '-i -f ' . $this->senderMail;
          $ok = @mail($email, $this->subject, '', $mime_mail, $options);
        }
      }

      return $ok;
    }

    function create() {
      if(strlen($this->body) < 100) {
        $file = str_replace('\\', '/', $this->body);

        if($fp = @fopen($file, 'r')) {
          $this->body = fread($fp, @filesize($file));
          fclose($fp);
          $this->documentRoot= dirname($file);
        }
      }
      if($this->type == 'HTML') $this->check_body();
      $this->prepare();
    }
  }
?>
 

dlogic

Allrounder

AW: Hilfe beim PHP Kontaktformular

Ich gehe mal davon aus du meinst die Absender Mailadresse oder?
Die kannst du hier eingeben.

Jedoch steht im Grunde alles unter
EXAMPLE: in der letzten von dir geposteten Datei...

Ja, was musst du sonst noch beachten? .... Nicht bei rot über die Ampel gehen, nicht zuviel trinken, Kondome schützen und ansonsten das übliche... :D




//--------------------------------------------------------------------------------
// Configuration
//--------------------------------------------------------------------------------
var $type = ''; // e-mail type ("HTML" or "Text")
var $senderName = 'Gimpi'; // sender name
var $senderMail = 'deine@mail.de'; // sender e-mail address
var $cc = ''; // Cc (e-mail address)
 

owieortho

Aktives Mitglied

AW: Hilfe beim PHP Kontaktformular

PHP:
 $mail->send("recipient1@email"); 
 $mail->send(recipient2@email,recipient3@email,recipient4@email);
und hier käme(n) Deine Empfängeradresse(n) hin.
 

Gimpi

Noch nicht viel geschrieben

AW: Hilfe beim PHP Kontaktformular

Vielen Dank für Eure Hilfe, weil ich komme hier echt alleine nicht mehr weiter.

@dlogic
Nun , das dachte ich auch und habe brav wie es im Beispiel steht und Du mir auch noch bestätigst die richtigen Felder ergänzt, aber leider ohne Wirkung.

@owieortho
Entschuldige meine Unfähigkeit aber wo genau muss es rein weil diese Zeilen sind ja nur im EXAMPLE und dort nützt es ja nichts. Kommt es in die erste PHP Datei hier hin?

PHP:
sleep(2); 

$name = $_REQUEST['youname']; 
$email = $_REQUEST['email']; 
$message =stripslashes($_REQUEST['Messages']); // messages 
$subject = "Test Email By";

oder übersehe ich etwas?
 
Zuletzt bearbeitet:

LGobln

Noch nicht viel geschrieben

AW: Hilfe beim PHP Kontaktformular

Naja. Es wäre auch hilfreich bei den Code Snipptes zu erfahren was du glaubst was die machen. Damit weiß man dann auch besser wie/wie sehr man dir helfen muss.

Ansonsten würde ich nämlich Plump sagen, dass du die Absender-Infos und Co in der class MIMEMAIL eintragen (3).
Und die Empfänger Info dahin wo du die Mail "zusammenbaust" und absendest (2).
 

owieortho

Aktives Mitglied

AW: Hilfe beim PHP Kontaktformular

Bei der Suche nach der Dokumentation des MIMEMAIL-Skripts habe ich eine neuere Version gefunden. Da die, die Du verwendest doch schon etwas älter ist und sich der Programmierer da auch sicher was bei gedacht hat, solltest Du vielleicht besser das neuere Skript nutzen.

Und dann fiel mir noch auf, dass es in Deinem form-tag kein method- und kein action-Attribut gibt. Der Browser weiss also überhaupt nicht wie er die aufgenommenen Daten an welches Skript schicken soll.

Soweit erstmal
O.
 

dlogic

Allrounder

AW: Hilfe beim PHP Kontaktformular

@gimpi
Ich denke mit dem Script, selbst mit der neuen Version... wirst du etwas überfordert sein und das Script an sich schießt etwas über dein Ziel hinaus. Ich gehe davon aus das du ein einfaches Kontaktformular haben möchstest, welches über eine Webseite ausgefüllt werden muss ohne irgendwelche Anhänge mitzusenden und das die Mail welche über das Kontaktformular abgesendet wird nicht unbedingt HTML interpretieren muss... liege ich damit richtig? Wenn ja, dann solltest du dich eher mit folgendem Tutorial beschäftigen:




Anstelle mit einer PHP Klasse welche MIME Types definiert, Anhänge versendet aber leider eine Validierung nicht wirklich durchführt....
 
Zuletzt bearbeitet:

Gimpi

Noch nicht viel geschrieben

AW: Hilfe beim PHP Kontaktformular

Vielen Dank für Eure Hilfe.
Wie gesagt es ist ein gekauftes Template mit dem auch andere Käufer es geschafft haben ohne grosse Veränderungen dieses Formular zum laufen zu bringen. (Irgendwo habe ich etwas übersehen).
Ich habe hier direkt beim Entwickler noch um ein Tutorial gebeten mal schauen ob etwas kommt.

@dlogic
Weil das CSS und das JS auch schon auf dieses Formular zugeschnitten sind wollte ich jetzt nicht bei diesem Projekt auch noch mehr durcheinander stiften und ein selbstgemachtes Formular neu einbinden.
Aber danke für die Links werde mich auf jeden Fall damit auseinandersetzen damit ich beim nächsten Projekt auch selber eins erstellen kann.

@owieortho
Wo müsste ich den Code ergänzen?

@LGobln
Das heisst konkret (siehe die HTML und zwei PHP Dateien oben) wohin?
 
Zuletzt bearbeitet:

msa1989

Bin da

AW: Hilfe beim PHP Kontaktformular

@Gimpi:

Im Moment steht bei dir im HTML Code in der 9. Zeile folgendes:
HTML:
<form class="form-horizontal" id="contactform">

(ich gehe davon aus, dass dieses Template mithilfe von Twitter Bootstrap gebaut wurde)

Ändere diese Zeile mal so ab:
HTML:
<form class="form-horizontal" id="contactform" action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

Das "<?php print $_SERVER['PHP_SELF']; ?>" ist die aktuelle Adresse deines Formulars.
Hast du den Code den du unter "PHP-Code" gepostet hast in einer separaten Datei?
Die zum Beispiel mail.php heißt, und im selben Ordner liegt wie deine formular.php in der dein HTML Code ist, dann muss anstatt <?php print $_SERVER['PHP_SELF']; ?> einfach nur "mail.php" stehen:
HTML:
<form class="form-horizontal" id="contactform" action="mail.php" method="post">
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken

Ansonsten gibt es hier ein richtig richtig einfaches Kontaktformular welches auf Basis von Twitter Bootstrap gemacht wurde (sprich: Die css classen sind dieselben, und du kannst bequem den HTML Code kopieren)
Die "Action" Angabe musst du allerdings trotzdem noch setzen
 

Gimpi

Noch nicht viel geschrieben

AW: Hilfe beim PHP Kontaktformular

Vielen Dank Freunde, ich habe den Fehler gefunden.
Der Fehler war nicht im HTML und auch nicht in den PHP Dateien sondern in einer js Datei.

// Function
// Contact Submiting form
function Contact_form(form, options){
// text on load you change , 0: No Overlay , 1 loading with Overlay
loading('Sending',1);
var data=form.serialize();
$.ajax({
url: "contact.php",
data: data,
success: function(data){
if(data.check==0){ // if Ajax respone data.check =0 or not complete

Die contact.php habe ich nicht in kontakt.php geändert.
Ich wusste gar nicht das diese js Datei etwas mit dem Mailformular zu tun hat.
Es braucht also keine "Action" Angabe, aber um das alles zu verstehen brauche ich noch länger.
Jetzt funktioniert alles wunderbar.

Nochmals Danke für Eure Hilfe

Beste Grüsse aus der Schweiz
 

Technology

Nicht mehr ganz neu hier

AW: Hilfe beim PHP Kontaktformular

ich bin gestern mit php angefangen kann mir einer von ihnen sagen welches buch ich mir ab besten kaufen könnte was ist gut für den einstieg
 

owieortho

Aktives Mitglied

AW: Hilfe beim PHP Kontaktformular

Es wäre sinnvoll, mit dieser Frage einen eigenen Thread aufzumachen, anstatt sich an ein zwar verwandtes aber eine andere Fragestellung betreffendes Thema anzuhängen.
Bevor Du etwas kaufst, würde ich die kostenlosen Angebote im Netz nutzen:

schattenbaum, für Anfänger, wirklich ganz sachte
w3schools, gut auch zum probieren
tizag
und php.net

Nicht zu vergessen, die Tutorials, die es hier für wenige Punkte und bisweilen auch gratis gibt.

Viel Erfolg
O.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.077
Mitglieder
67.259
Neuestes Mitglied
SaschMasch1312
Oben