Kontaktformular
#11
Hallo Koter,

du hast Recht, ich sollte ein bischen gewissenhafter vorgehen... Zum Glück ist das alles was ich selber eingebe, den Rest macht das Program, sonst würde die Seite bestimmt nicht mehr laufen... :?

Folgendes habe ich gemacht:

1. "body" wieder entfernt, hatte eh nicht geklappt was ich vor hatte und er war doppelt vorhanden.

2. "</p>" entfernt weil es nicht gebraucht wurd, Überbleibsel von der seite wo ich den <iframe> code her hatte...

3. " gesetzt, das war in der Tat ein Fehler mit dem ich zu kämpfen hatte, beim SoundCloud Inhalt laden noch kein Problem aber dann mit meinem Formular, ist auch behoben... Danke dafür.

XAMPP habe ich mir mal runtergeladen und werde es mir anschauen aber ich befürchte das mich das "aufwendige Konfigurieren" davon abhalten wird weil ich jetzt nur einmalig eine dreiseitige Homepage mit einem PHP Formular machen möchte...

Es geht auch nur mit PHP wenn ich die Nachrichten direkt an mich verschicken möchte ohne Firmen wie JotForm oder Serif dazwischen zu haben, ja?

Ich denke dann werde ich das Kontaktformular erst fertigstellen können wenn ich das Hostingpaket gekauft habe und da bin ich mir noch nicht sicher wann das sein wird weil ich erst in 4 oder eher 8 Wochen hosten will...

Grüße
Markus
Zitieren
#12
Nochmal eine Frage zu XAMPP, wenn es installiert ist, wie gehe ich weiter vor, habe keine grundsätzliche Beschreibung gefunden... Unterstützt es einfach was im Browser läuft oder muss ich mein Projekt in XAMPP laden, oder... ? :?
Zitieren
#13
Hallo Markus,

MarSch schrieb:XAMPP habe ich mir mal runtergeladen und werde es mir anschauen aber ich befürchte das mich das "aufwendige Konfigurieren" davon abhalten wird weil ich jetzt nur einmalig eine dreiseitige Homepage mit einem PHP Formular machen möchte...

Du kannst auch Glück haben, dass es auf Abhieb so funktioniert wie es soll. Bei mir war das leider nicht so.

MarSch schrieb:Es geht auch nur mit PHP wenn ich die Nachrichten direkt an mich verschicken möchte ohne Firmen wie JotForm oder Serif dazwischen zu haben, ja?

Es soll auch mit JavaScript gehen, damit habe ich mich aber noch nicht beschäftigt. Die Lösung gefällt mir aus verschiedenen Gründen nicht, falls es überhaupt funktioniert.

Es gibt auch noch das gute alte mailto. Dazu muss beim Benutzer aber ein E-Mail-Programm installiert sein.

MarSch schrieb:Ich denke dann werde ich das Kontaktformular erst fertigstellen können wenn ich das Hostingpaket gekauft habe und da bin ich mir noch nicht sicher wann das sein wird weil ich erst in 4 oder eher 8 Wochen hosten will...

Du kannst zum Testen auch einen Gratis-Hoster benutzen.

MarSch schrieb:Unterstützt es einfach was im Browser läuft oder muss ich mein Projekt in XAMPP laden, oder... ?

Wenn XAMPP installiert wurde startest Du Apache. Dann startest Du Deinen Browser und gibst in die Adressleiste „http://localhost/“ ein (ohne Anführungszeichen). Wenn die Installation erfolgreich war, siehst Du die Willkommensseite von XAMPP.

Das Wurzelverzeichnis von XAMPP ist „xampp\htdocs“.
Dort sind die Dateien der Willkommensseite von XAMPP abgelegt.
Diese Dateien solltest Du nun in ein anderes Verzeichnis sichern und Deine Dateien dort ablegen.
Wenn das geschehen ist, gibst wieder „http://localhost/“in die Adressleiste ein.

Jetzt solltest Du Deine lokale Internetseite sehen.

Gruß

Koter
Zitieren
#14
Hallo Koter,

vielen Dank für die Erklärung, es lief sofort ohne Probleme! Smile

Das Kontakt-PHP lasse ich nun in einen iframe laden weil das direkte Einfügen in den Body/Div nicht funktionierte. Im iframe läuft es und ich kann alles im LocalHost eintragen und abschicken nur das es nicht ankommt... Eine "Es hat geklappt Bestätigung" bekomme ich vom Formular. Kann das jetzt noch am "Vor Ort PHP" liegen das es nicht abgeschickt wird (habe unten im Text meine E-Mail Adresse abgeändert, da stand die Richtige drin).

Dann würde ich noch gern das Aussehen ein wenig verändern, z.B. die Länge der Zeilen Name, E-Mail und Betreff und die Länge sowie Zeilenanzahl von der Messagebox, wie geht das? Kann ich das ganze Dokument auch noch mittig in meinem HTML plazieren? Bzw. in seinem iframe? Das ich den PHP-Teil quasi "center" setze?

Grüße
Markus
Zitieren
#15
Sorry, PHP Inhalt vergessen:

<?php header('Content-Type: text/html; charset=utf-8'); /* AN OBERSTER STELLE BELASSEN, WENN DU KEIN UTF-8 NUTZT, LÖSCHEN! */ ?>

<!-- Hier kann der Inhalt deiner Seite vor das Kontaktformular platziert werden -->

<?php
/* http://www-coding.de/individuelles-konta...ha-in-php/ (MEHR INFORMATIONEN UND ANLEITUNG)
*
* [VERSION OHNE CAPTCHA]
*
* Dieser 1. Teil kann angepasst werden, um die Formularfelder zu beeinflussen ($fields)
* Außerdem solltest Du in $adminMail deine E-Mail-Adresse speichern
* $formTitle beinhaltet die Überschrift des Formulars
* In $msgInfo ist der Hinweistext gespeichert, der angezeigt werden soll
* $msgError wird angezeigt, wenn nicht alle Pflichtfelder ausgefüllt wurden
* $msgSent hingegen beinhaltet eine Erfolgsmeldung, wenn die Anfrage verschickt wurde
*/

$adminMail = 'markus@xyz.de';

$formTitle = '';
$msgInfo = '';
$msgError = 'Sorry, something went wrong. Please try again!';
$msgSent = 'Message successfully send!';

$fields = array (
// 'Feldname' => Typ, Pflichtfeld?, Ergänzungen (z.B. bei select-Feld)
'Name' => array('text', true),
'E-Mail' => array('text', true),
'About' => array('text', false),
'Message' => array('textarea', true),
);

/* Funktion um aus den Feldnamen eine URL-Form zu erstellen (AB HIER BITTE NUR NOCH EVENTUELLE TEXTE ANPASSEN) */
function field2url($fieldname) {
return "f_".preg_replace('/([^a-z0-9-_]+)/', '', strtolower($fieldname));
}

/* Ausgabe des Formulars */
if (isset($_POST['send'])) {
// 2. Eingaben prüfen //
$mailSubject = 'Nachricht über das Kontaktformular';
$mailText = "Das Kontaktformular deiner Website wurde dazu verwendet, Dir diese Nachricht zukommen zulassen.\r\n\r\n";
$mailHeader = "From: kontaktformular@".$_SERVER['HTTP_HOST']."\r\n"."Content-type: text/plain; charset=utf-8"."\r\n";

// Einzelne Felder auslesen //
foreach ($fields AS $name => $settings) {
if ( !( !$settings[1] || ( $settings[1] && isset($_POST[field2url($name)]) && $_POST[field2url($name)] != '' ) ) ) {
// Pflichtfeld nicht ausgefüllt => Abbruch //
$sent = false;
break;
} else if ($_POST[field2url($name)] != '') {
// Inhalt (wenn nicht leer) in die E-Mail schreiben //
$mailText .= $name.": ".$_POST[field2url($name)]."\r\n";
}
}

// Kurzer Spam-Check //
if (isset($_POST['email']) && $_POST['email'] != '') {
// Bot => Abbruch //
$sent = false;
}

if (!isset($sent)) {
// Nach erfolgreicher Überprüfung E-Mail verschicken //
mail($adminMail, $mailSubject, $mailText, $mailHeader);

echo "<h1>".$formTitle."</h1>" .
"<p>".$msgSent."</p>";

$sent = true;
}
} else
$sent = false;

if (!$sent) {
// 3. Formular ausgeben (Beginn des Formulars) //
echo "<h1>".$formTitle."</h1>" .
"<p>".$msgInfo."</p>" .
((isset($_POST['send'])) ? $msgError : '') .
"<form action=\"?".$_SERVER['QUERY_STRING']."\" method=\"POST\">" .
'<table>';

// Felder auslesen //
foreach ($fields AS $name => $settings) {
// Ausgabe je nach Typ //
switch ($settings[0]) {
case 'select':
// Select-Feld //
echo "<tr><td>".$name.":".(($settings[1]) ? ' (*)' : '')."</td><td><select name=\"".field2url($name)."\">";

// Select-Felder auslesen //
foreach ($settings[2] AS $f) {
echo "<option".((isset($_POST[field2url($name)]) && $_POST[field2url($name)] == $f) ? ' selected' : '').">".$f."</option>";
}

// Ende des Select-Feldes //
echo '</select></td></tr>';
break;

case 'text':
// Einfaches Text-Feld //
echo "<tr><td>".$name.":".(($settings[1]) ? ' (*)' : '')."</td><td><input type=\"text\" name=\"".field2url($name)."\" value=\"".((isset($_POST[field2url($name)])) ? htmlspecialchars($_POST[field2url($name)]) : '')."\" /></td></tr>";
break;

case 'textarea':
// Mehrzeiliges Textfeld //
echo "<tr><td>".$name.":".(($settings[1]) ? ' (*)' : '')."</td><td><textarea name=\"".field2url($name)."\">".((isset($_POST[field2url($name)])) ? htmlspecialchars($_POST[field2url($name)]) : '')."</textarea></td></tr>";
break;

case 'checkbox':
// Checkbox //
echo "<tr><td>".$name.":".(($settings[1]) ? ' (*)' : '')."</td><td><label><input type=\"checkbox\" name=\"".field2url($name)."\" value=\"gesetzt\" ".((isset($_POST[field2url($name)]) || $setttings[1]) ? 'checked ' : '')."/> ".((isset($settings[2])) ? $settings[2] : '')."</td></label></tr>";
break;
}
}

// Formular-Ausgabe abschließen //
echo '</table>' .
'<input type="text" name="email" style="display:none;" />' .
'<input type="hidden" name="send" value=1 />' .
'<input type="submit" value="Send" />'.
'</form>';
}


?>

<!-- Hier kann der Inhalt deiner Seite hinter das Kontaktformular platziert werden -->
Zitieren
#16
Hallo Markus,

MarSch schrieb:vielen Dank für die Erklärung, es lief sofort ohne Probleme!

Herzlichen Glückwunsch! Warum klappt so etwas bei mir nie auf Anhieb?! :stinkig:

Ein wenig Konfigurationsarbeit wird aber wohl, des Mailversands wegen, doch noch zu leisten sein:

MarSch schrieb:...nur das es nicht ankommt... Eine "Es hat geklappt Bestätigung" bekomme ich vom Formular. Kann das jetzt noch am "Vor Ort PHP" liegen das es nicht abgeschickt wird (habe unten im Text meine E-Mail Adresse abgeändert, da stand die Richtige drin)...

PHP verschickt selber keine Mails, es leitet die Mails an Deinen Lokalen Mail-Server weiter. Die „Es hat geklappt Bestätigung“ bedeutet nur, dass PHP die Mail erfolgreich an Deinen Lokalen Mail-Server weitergeleitet hat. Was dieser damit macht, kannst Du so nicht testen.

Viele E-Mail-Anbieter filtern Mails von lokalen Servern heraus. Die Mails landen dann noch nicht einmal im Spam-Ordner sondern der Empfänger bekommt sie garnicht zu sehen.

Ich verwende zum Testen das Programm „mailtodisk“. Dadurch werden die von PHP erzeugten Mails nicht verschickt, sondern in einer Textdatei im Ausgabeverzeichnis gespeichert.

Damit das klappt muss in der php.ini der sendmail_path angepasst werden:

sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

Der Test sieht dann so aus:
[Bild: kotaktformular_3971kb1.gif]


MarSch schrieb:Dann würde ich noch gern das Aussehen ein wenig verändern, z.B. die Länge der Zeilen Name, E-Mail und Betreff und die Länge sowie Zeilenanzahl von der Messagebox, wie geht das? Kann ich das ganze Dokument auch noch mittig in meinem HTML plazieren? Bzw. in seinem iframe? Das ich den PHP-Teil quasi "center" setze?.

Dazu kannst Du ein paar Zeilen CSS in die Iframe-Quelle hinzufügen:

[HTML]
<!-- Hier kann der Inhalt deiner Seite vor das Kontaktformular platziert werden -->
<html>
<head>
<style type="text/css">
body{
font-family:Arial, Helvetica, sans-serif;
}
textarea{
font-family:Arial, Helvetica, sans-serif;
height: 220px;
width: 250px;
}
input {
font-family: Arial, Helvetica, sans-serif;
height: 22px; width: 250px;
padding: 3px;
}
#Sendeknopf{
font-family: Arial, Helvetica, sans-serif;
height: 32px; width: 50px;
padding: 3px;
}
#Formularrahmen{
width: 360px;
border:1px solid black;
background-color:cornsilk;
margin-left:auto;
margin-right:auto;
padding:10px;
}
</style>
</head>
<body>
<div id="Formularrahmen">

<!-- hier folgt der PHP-Code -->

<!-- am Ende die Schluss-Tags nicht vergessen: -->

</div>
</body>
</html>
[/HTML]

Die Gestaltung per CSS kannst Du natürlich nach Deinen Wünschen ändern. Das ist nur ein Beispiel.

Wie Du den IFrame in Deine Seite mittig einbindest, kann ich nicht sagen, ich kenne ja Deine Seite nicht.

Gruß

Koter
Zitieren
#17
Hallo Koter,

Aah! Jetzt wo ich das erste Mal auf Grund deiner Grafik in den mailoutput ordner schaue sehe ich abgespeichert .txt Nachrichten. So sieht es aus:

-------------------
To: [email]markus@xyz.de[/email]
Subject: Nachricht über das Kontaktformular
From: kontaktformular@localhost
Content-type: text/plain; charset=utf-8

Das Kontaktformular deiner Website wurde dazu verwendet, Dir diese Nachricht zukommen zulassen.

Name: Mark Schu
E-Mail: [email]mark@xyz.com[/email]
Betreff: sdsa
Mitteilung: Hallo!

Schön!

Grüße
-------------------

Das "From:kontaktformular@localhost" wäre doch dann als Absender E-Mail in der richtigen Mail, ja? Kann man da auch gleich von PHP die des Absenders eintragen lassen so das ich nur auf antworten klicken muss?

Ich probiere jetzt mal das CSS aus, bin mir noch nicht sicher ob ich es in's PHP speichern muss das in den iframe auf der HTML Seite geladen wird... Der iframe in der HTML Seite ist mittig angeordnet nur der läd ja das PHP Formular und das richtet sich links/oben aus...
Zitieren
#18
Ich habe mir das jetzt mal genauer angesehen, der CSS Code muss ja in ein HTML Dokument, der wirkt dann ja nicht auf die Textzeilen des PHP Dokumentes das über das HTML Dokument in einen iframe geladen wird...
Der PHP Code läuft auch nicht wenn ich ihn direkt im HTML Dokument ausführe, habe ich probieret, du sagtest ja auch das da bestimmte Funktionen vom Server/Anbieter her zugelassen sein müssen...
Ich müßte jetzt PHP-Gestaltungsbefehle im PHP Dokument verwenden, oder?
Zitieren
#19
PS: Der iframe ist in einem div auf der HTML-Seite und läd die Kontakt.php...
Zitieren
#20
Hier nochmal optisch zur Erklärung...

PS: Irgendwie recht unscharf weil klein gerechnet, kann ich das was dran ändern?


Angehängte Dateien Thumbnail(s)
   
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Externes Kontaktformular einbinden patrick1287 4 2.468 15.04.2013, 20:41
Letzter Beitrag: Nachtviole