• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Suche Kontaktformular (+tut für die Integration in die Seite)

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
ich suche ein Kontaktformular welches ich einfach (oder nach Anleitung) in eine bestehende Seite einbauen kann. Die Seite ist komplett mit CSS gestaltet, ohne Tabellen und JS.

Wie so oft bei solchen Threads: ich habe keine Ahnung von php.. drum wäre ein Formular mit Anleitung Ideal... (Tutorial?)

jemand vielleicht nen Tip?


grüße img
 

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
folgendes als kontakt.php (oder so) speichern (dabei die Adresse in der zweiten Zeile anpassen):

Code:
<?php

$email = "[email protected]"; // Empfängeradresse anpassen

$action = $_REQUEST['action'];
$absname = $_REQUEST['absname'];
$inhalt = $_REQUEST['inhalt'];
$absemail = $_REQUEST['absemail'];
$betreff = $_REQUEST['betreff'];

  if($action=="senden") {

    $inhalt = trim(stripslashes($inhalt));
    
    // Prüfung der Angaben nach dem Senden

    if(!$absname) $fehler[] = "Ihr Name fehlt.";
    if(!$inhalt) $fehler[] = "Sie haben keine Nachricht geschrieben.";
    if(!$email) $fehler[] = "Ihre Emailadresse fehlt";
    
    if(!count($fehler)) { 

    
      @mail($email ,$betreff,$inhalt,"From: ".$absemail);
      echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
      echo "Name: <b>$absname</b><br />\n";
      echo "Inhalt: <b>".nl2br($inhalt)."</b><br />\n";
  
    } else { // Fehlerausgabe, wenn Felder leer waren

      
      echo "Beim Senden traten folgender Fehler auf:";
      echo "<ul><li>".implode("<li>",$fehler)."</ul>";
    
    }
    
  }else{

?>

<form action="" method="post">
<input type="hidden" name="action" value="senden">

  <table width=100%><tr>
    <td>Name</td>
    <td><input name="absname" size="40" value="<?php echo $name; ?>"></td>
  </tr><tr>
    <td>E-Mailadresse</td>
    <td><input name="absemail" size="40" value=""></td>
  </tr><tr>
    <td></td>
    <td><input name="betreff" type="hidden" value="Kontaktformular E-Mail"></td>
  </tr><tr>
    <td>Inhalt</td>
    <td><textarea name="inhalt" rows="5" cols="40"><?php echo $inhalt; ?></textarea></td>
  </tr><tr>
    <td> </td>
    <td><input type="submit" value="senden"></td>
  </tr></table></form>
<?
}
?>

und an entsprechender Stelle mit
Code:
include "kontakt.php";
einbinden (evtl. auf relative Pfadangaben achten)
 
Zuletzt bearbeitet:

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
ok ich tests mal, wie muss ich das
include "kontakt.php"; in den body einbinden?
 

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
ok ich tests mal, wie muss ich das
include "kontakt.php"; in den body einbinden?

Deine Seiten Enden sicher alle auf .php, oder?

Wenn nicht, dann ändere die Endung auf .php, solange dein Webspace php kann ist das kein Problem - musst nur die Verlinkungen innerhalb der Seite auch so anpassen.
Dann haste eine PHP Seite mit deinem HTML Layout drin:

Code:
<html>
 <head>
  <title>Seitentitel</title>
 </head>
<body>
 Inhalt der Seite ...
</body> 
</html>


an der Stelle, an der das Formular erscheinen soll machst Du dann mit php (deswegen den Dateitypen auf php ändern) die Integration:

Code:
<html>
 <head>
  <title>Seitentitel</title>
 </head>
<body>
 Inhalt der Seite ...

<?
include "kontakt.php";
?>

</body> 
</html>

das <? leitet dabei den PHP Quelltext ein und das ?> beendet es wieder. Alles was dazwischen ist, erkennt der Webserver bzw. der PHP Parser als zu verarbeitenden Code, den Rest gibt er einfach so über die Leitung an den Browser weiter (deswegen kann man so schön oder unschön PHP und HTML mischen)
 

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
werds gleich ma antesten und geb dir ne Rückmeldung :)
 

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
Parse error: syntax error, unexpected T_VARIABLE in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 5
 

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
ooops, nach dem " in der zweiten Zeile fehlte ein ; hab ich korrigiert.
 

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
ah super danke, leider sind da noch 1, 2 kleine Fehler drin glaube ich...

trägt man die emailadresse nicht ein, kommt keine fehlermeldung und er sendet alles ab. Und in der mail wird leider das feld "name" nicht mitgesendet?
Sehe gerade, die emailadresse wird auch nicht mitgesendet
 

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
mach mal in der zeile mit dem @mail mal zwischen jedes ,$ ein leerzeichen, es kann webserver geben, die sich dran verschlucken
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
leider nich, dann geht nichmal mehr das eingabe interface :(
Code:
@mail($email , $betreff , $inhalt , "From: " . $absemail);
geht nicht?

EDIT: wenn du das $ von z.B. betreff trennst, dann erkennt PHP das nicht mehr als Variable.
Alles mit $ vorne ist eine Variable in PHP und $ muss von einer Zahl/einem Buchstaben gefolgt sein - wenn da ein Leerzeichen ist, dann ist das ein Fehler bei dem das Skript abbricht
 

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
ah ok ja die seite geht, aber die mail und name wird trotzdem nicht gesendet, auch die überprüfung der mail geht nich
 

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
kommt mnoch immer nur das feld "inhalt" in der email an
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
kommt die Email also an?
pack doch nur mal aus reiner Neugierde

Code:
error_reporting(E_ALL);

direkt an den Anfang, ganz oben unter <?php und vor $email

wenn die Mail ankommt, dann kannst du aber die anderen Variablen in den Text einfügen, sowas wie
Code:
$inhalt2 = $absname . ", " . $absemail . " sendete folgende Nachricht mit dem Betreff '" . $betreff . "':\n" . $inhalt ;

das setzt du vor den Block, der mit @mail losgeht und die Zeile mit @mail ersetzt du dann durch
Code:
@mail($email , $betreff , $inhalt2 , "From: " . $absemail);
 

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
wenn ichs so mach

<?php
error_reporting(E_ALL);
$email = "#####"; // Empfängeradresse anpassen

$action = $_POST['action'];

dann gehts nich mehr ;)

Notice: Undefined index: action in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 5

Notice: Undefined index: absname in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 6

Notice: Undefined index: inhalt in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 7

Notice: Undefined index: absemail in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 8

Notice: Undefined index: betreff in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 9
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
dann lass error_reporting weg, war nur so ein Gedanke.

Wenn die Email im Endeffekt bei dir ankommt, dann hilft $inhalt2, da siehst du dann alles im Emailtext.
 

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
dann lass error_reporting weg, war nur so ein Gedanke.

Wenn die Email im Endeffekt bei dir ankommt, dann hilft $inhalt2, da siehst du dann alles im Emailtext.

Code:
<?php
$email = "[email protected]"; // Empfängeradresse anpassen

$action = $_POST['action'];
$absname = $_POST['absname'];
$inhalt = $_POST['inhalt'];
$absemail = $_POST['absemail'];
$betreff = $_POST['betreff'];

  if($action=="senden") {

    $inhalt = $absname . ", " . $absemail . ", sendete folgende Nachricht mit dem Betreff '" . $betreff . "':\n" . $inhalt ;
    
    // Prüfung der Angaben nach dem Senden

    if(!$absname) $fehler[] = "Ihr Name fehlt.";
    if(!$inhalt) $fehler[] = "Sie haben keine Nachricht geschrieben.";
    if(!$email) $fehler[] = "Ihre Emailadresse fehlt";
    
    if(!count($fehler)) { 

        @mail($email , $betreff, $inhalt, "From: " . $absemail);
        echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
      echo "Name: <b>$absname</b><br />\n";
      echo "Inhalt: <b>".nl2br($inhalt)."</b><br />\n";
  
    } else { // Fehlerausgabe, wenn Felder leer waren

      
      echo "Beim Senden traten folgender Fehler auf:";
      echo "<ul><li>".implode("<li>",$fehler)."</ul>";
    
    }
    
  }else{

?>

<form action="" method="post">
<input type="hidden" name="action" value="senden">

  <table width=100%><tr>
    <td>Name</td>
    <td><input name="absname" size="40" value="<?php echo $name; ?>"></td>
  </tr><tr>
    <td>eMail</td>
    <td><input name="absemail" size="40" value=""></td>
  </tr><tr>
    <td></td>
    <td><input name="betreff" type="hidden" value="Kontaktformular Webseite"></td>
  </tr><tr>
    <td>Inhalt</td>
    <td><textarea name="inhalt" rows="5" cols="40"><?php echo $inhalt; ?></textarea></td>
  </tr><tr>
    <td> </td>
    <td><input type="submit" value="senden"></td>
  </tr></table></form>
<?
}
?>

die bestätigung des absendens sieht etwas seltsam aus ;)

Ihre Nachricht wie folgt wurde gesendet.
Name: name
Inhalt: name, email sendete folgende Nachricht mit dem Betreff 'Kontaktformular Webseite':
inhalt
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
Was ich meinte ist hier mal rot markiert:

Code:
<?php
$email = "[email protected]"; // Empfängeradresse anpassen

$action = $_POST['action'];
$absname = $_POST['absname'];
$inhalt = $_POST['inhalt'];
$absemail = $_POST['absemail'];
$betreff = $_POST['betreff'];

  if($action=="senden") {

    $inhalt[COLOR="Red"]2[/COLOR] = $absname . ", " . $absemail . ", sendete folgende Nachricht mit dem Betreff '" . $betreff . "':\n" . [COLOR="Red"]$inhalt[/COLOR] ;
    
    // Prüfung der Angaben nach dem Senden

    if(!$absname) $fehler[] = "Ihr Name fehlt.";
    if(!$inhalt) $fehler[] = "Sie haben keine Nachricht geschrieben.";
    if(!$email) $fehler[] = "Ihre Emailadresse fehlt";
    
    if(!count($fehler)) { 

      @mail($email , $betreff, $inhalt[COLOR="red"]2[/COLOR], "From: " . $absemail);
      echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
      echo "Name: <b>$absname</b><br />\n";
      echo "Inhalt: <b>".nl2br([COLOR="red"]$inhalt[/COLOR])."</b><br />\n";
  
    } else { // Fehlerausgabe, wenn Felder leer waren

      
      echo "Beim Senden traten folgender Fehler auf:";
      echo "<ul><li>".implode("<li>",$fehler)."</ul>";
    
    }
    
  }else{

?>

<form action="" method="post">
<input type="hidden" name="action" value="senden">

  <table width=100%><tr>
    <td>Name</td>
    <td><input name="absname" size="40" value="<?php echo $name; ?>"></td>
  </tr><tr>
    <td>eMail</td>
    <td><input name="absemail" size="40" value=""></td>
  </tr><tr>
    <td></td>
    <td><input name="betreff" type="hidden" value="Kontaktformular Webseite"></td>
  </tr><tr>
    <td>Inhalt</td>
    <td><textarea name="inhalt" rows="5" cols="40"><?php echo $inhalt; ?></textarea></td>
  </tr><tr>
    <td> </td>
    <td><input type="submit" value="senden"></td>
  </tr></table></form>
<?
}
?>

Deswegen ja $inhalt2, dann sieht das so aus:

Ihre Nachricht wie folgt wurde gesendet.
Name: name
Inhalt: inhalt

weil: $inhalt2 dient nur dir, damit du einen schnellen Überblick hast, wer was schreibt und mit welcher Emailadresse, auch wenn du kein Absenderfeld hast.
Der Benutzer muss ja nicht sehen, wie du am Ende die Mail bekommst ($inhalt2), sondern nur dass, was er dir schreibt ($inhalt).