Jump to content


Kontakt : Zusätzliche Felder


1 reply to this topic

#1 Guest_Guest_*

  • Gast

Geschrieben 13 März 2006 - 04:36

Seid mir gegrüsst, ich habe auf meiner Seite das Kontakformular implementiert, und solange ich keine Ändeurngen daran vornehme funktioniert es auch tadellos. Sobald ich aber versuche Felder hinzu zu fügen, wird die Mail nach einw enig Fummelarbeit zwar versendet, aber interessanterweise sendet er mir nur noch den ersten Buchstaben der ersten Textarea. :| Ich bin beim Erstellen des zusätzlichen Feldes so vorgegangen, da sich alle "Dinge" die sich auf "nachricht" beziehen dupliziert habe, und es in "wissen" umbenannt habe. Keine wirklich gute Methode, schon garnicht zum Lernen, aber ich wollte mir zumindest jetzt auch noch keine PHP beibringen. :) Anyway: Ich poste hier mal den geänderten Code.

http://www.Neandertaler.net) (Moosa@web.de)
// Version 2.7.

// E-Mail Adresse des Empfängers (Im Normalfall Ihre eigene) einfach zwischen den beiden "" einfügen.
$adresse = "webmaster@alagos-tirith.de";

// Soll als Absenderadresse Ihre eigene oder die des Kontaktaufnehmenden benutzt werden?
// Bei manchen Providern ist es zwingend notwendig, dass die eigene benutzt wird
// 0 = eigene 1 = Besucher
$absender = "0";

// Hier kann definiert werden, nach wievielen Zeichen ein automatischer Zeilenumbruch eingefügt werden soll,
// wenn sie $umbruch = "no" eingeben, wird kein automatischer Zeilenumbruch eingefügt.
$umbruch = "70";

//bestimmen der Hintergrundfarbe:
$bgcolor = "#F3F4F5";

//bestimmen der Textfarbe:
$textcolor = "#000000";

//bestimmen der Textfarbe der Fehler:
$fehlercolor = "#FF3300";

// Hier können Sie definieren, was über dem Kontaktformular stehen soll:
$head = "Willkommen in Alagos Tirith";

// Bei manchen Webhoster ist es notwendig, dass noch ein zusätzlicher Parameter übergeben wird, der Ihre E-Mail-Adresse
// enthält.
// Bei den meisten Hostern ist dies nicht notwendig, dann müssen Sie zwischen die beiden "" nichts einfügen
// aber z.B. bei Hosteurope ist die Angabe zwingend und dann müssen sie hier eine Ihrem Webpack zugehörige und
// eingerichtete E-Mail-Adresse eintragen, z.B. in dieser Form: $add = "info@ihre_webpack_domain.tld"

// NOCHMAL: Setzen Sie hier nur was ein, wenn Sie wissen das es notwendig ist!!!

$add = "webmaster@alagos-tirith.de";

// Ab hier sollten Sie nur noch etwas ändern, wenn sie wissen was sie tun,
// bzw. wenn sie noch mehr am Design ändern wollen.

//hier wird die Länge der verschiedenen Eingaben ermittelt
$lengthm = strlen($_POST["send"]["mail"]);
$lengtha = strlen($_POST["send"]["autor"]);
$lengthb = strlen($_POST["send"]["betreff"]);
$lengthn = strlen($_POST["send"]["nachricht"]);
$lengthw = strlen($_POST["send"]["wissen"]);

// der Zähler wird auf null gesetzt
$i = "0";

// Je nachdem welche Adresse als Absender benutzt werden soll, wird die Variable beschrieben:
if ($absender == "0") {
	$from = $adresse ; }
else { $from = $_POST["send"]["mail"] ; }

//Nun überprüfen wir die Eingaben auf alle möglichen Fehler (Es muss überall was eingegeben werden,
// die Einträge dürfen eine bestimmte Länge nicht überschreiten und die E-Mail-Adresse muss ein @ enthalten)
// Ausserdem darf im Namensfeld kein @ Zeichen enthalten sein und in der Adresse nicht mehr als eins.
// Das ist notwendig, damit im vierten Parameter keine CC oder BCC Adressen übergeben werden können.
// Und zu guter Letzt werden die Sonderzeichen für die HTML-Ausgabe codiert und die Backslashes aus der Mail entfernt
if(isset($_POST["send"]) && is_array($_POST["send"])) {
	if(empty($_POST["send"]["autor"])) {
		$fautor = "Sie müssen einen Namen eingeben!";
	} else { $fautor = "Name ok!"; $i++; }
	if(empty($_POST["send"]["betreff"])) {
		$fbetreff = "Sie müssen einen Betreff eingeben!";
	} else { $fbetreff = "Betreff ok!"; $i++; }
	if(empty($_POST["send"]["mail"])) {
		$fmail = "Sie müssen Ihre E-Mail-Adresse eingeben!";
	} else { $fmail = "Adresse ok!"; $i++; }
	if(empty($_POST["send"]["nachricht"])) {
		$fnachricht = "Sie müssen eine Nachricht eingeben!";
	} else { $fnachricht = "Nachricht ok!"; $i++; }
	if(empty($_POST["send"]["wissen"])) {
		$fwissen = "Sie müssen eine Nachricht eingeben!";
	} else { $fwissen = "Wissen ok!"; $i++; }
	if ($lengthm > "50") {
		$flmail = "Ihre eingegebene E-Mail-Adresse ist zu lang!"; $fmail = ""; }
	else { $i++; }
	if ($lengtha > "30") {
		$flautor = "Ihr eingegebener Name ist zu lang!"; $fautor = ""; }
	else { $i++; }
	if ($lengthb > "150") {
		$flbetreff = "Ihr eingegebener Betreff ist zu lang!"; $fbetreff = ""; }
	else { $i++; }
	if ($lengthn > "60000") {
		$flnachricht = "Ihre eingegebene Nachricht darf nicht mehr als 60000 Zeichen haben! Sie hat: ".$lengthn.""; $fnachricht = ""; }
	else { $i++; }
	if ($lengthw > "30000") {
		$flwissen = "Ihre eingegebene Nachricht darf nicht mehr als 60000 Zeichen haben! Sie hat: ".$lengthw.""; $fwissen = ""; }
	else { $i++; }
	if (!strpos($_POST["send"]["mail"], "@") == "false" or substr_count($_POST["send"]["mail"], "@") > 1) {
		$fgmail = "Ihre angegebene E-Mail Adresse ist nicht gültig!"; $fmail = ""; }
	else { $i++; }
	if (substr_count($_POST["send"]["autor"], "@") >= 1) {
		$fgautor = "Aus Sicherheitsgründen darf das Namensfeld kein @ Zeichen enthalten!"; $fautor = "";
	} else { $i++; }
	$str = ":\/,\"";
	if (strcspn($_POST["send"]["mail"], $str) < $lengthm) {
		$fgmail = "Ihre angegebene E-Mail Adresse ist nicht gültig!"; $fmail = "" ;
	} else { $i++ ; }
	if (get_magic_quotes_gpc() == "1") {
		$_POST["send"]["autor"] = stripslashes($_POST["send"]["autor"]);
		$_POST["send"]["betreff"] = stripslashes($_POST["send"]["betreff"]);
		$_POST["send"]["mail"] = stripslashes($_POST["send"]["mail"]);
		$_POST["send"]["nachricht"] = stripslashes($_POST["send"]["nachricht"]);
		$_POST["send"]["wissen"] = stripslashes($_POST["send"]["wissen"]);
	}
	$sautor = htmlspecialchars($_POST["send"]["autor"]);
	$sbetreff = htmlspecialchars($_POST["send"]["betreff"]);
	$smail = htmlspecialchars($_POST["send"]["mail"]);
	$snachricht = htmlspecialchars($_POST["send"]["nachricht"]);
	$swissen = htmlspecialchars($_POST["send"]["wissen"]);
}

//Wenn alles korrekt eingegeben wurde, wird die Mail nun erst formatiert und dann verschickt
if(isset($_POST["send"]) && is_array($_POST["send"])) {
	if ($i == "13") {
		$autor = $_POST["send"]["autor"];
		if ($umbruch == "no") {
			$texto = $_POST["send"]["nachricht"]["wissen"] ;
			}
		else { $texto = wordwrap( $_POST["send"]["nachricht"]["wissen"], $umbruch ); }
		$_POST["text"] = $_POST["send"]["autor"]." mit der Mail Adresse: ".$_POST["send"]["mail"]." hat ihnen folgende Nachricht gesendet: \n \n $texto";
		$fautor = "

Ihre Mail wurde versendet!

"; $fbetreff = ""; $fmail = ""; $fnachricht = ""; $fwissen = ""; // Und ab dafür... je nachdem mit oder ohne additional_parameters if(empty($add)) { $addp = ""; if (@mail($adresse, $_POST['send']['betreff'], $_POST['text'], "From: \"$autor\" <$from>")) { $fautor = "

Ihre Mail wurde versendet!

"; unset($sautor); unset($sbetreff); unset($smail); unset($snachricht); unset($swissen); } else { $fautor = "

Fehler! Mail konnte nicht gesendet werden

"; } } else { if (@mail($adresse, $_POST['send']['betreff'], $_POST['text'], "From: \"$autor\" <$from>", "-f $add")) { $fautor = "

Ihre Mail wurde versendet!

"; unset($sautor); unset($sbetreff); unset($smail); unset($snachricht); unset($swissen); } else { $fautor = "

Fehler! Mail konnte nicht gesendet werden

"; } } } } // Hier kommt nun das eigentliche Formular in HTML + CSS ?>

Das Script, bzw die Seite befindet sich hier: Link Ich wäre wirklich mehr als dankbar wenn mir da jemand helfen könnte, da ich im Grunde nur ein Beispiel brauche, bzw es einmal funktionell haben muss, und dann kann ich es soweit denke ich auch selber. :) Vielen, vielen dank. p.s: Ich werde ein wenig warten, ansonsten versuche ich mich mal an einem anderen script, wobei mir das hier schon sehr gefällt. :)

#2 Moosa

    Administrator

  • Administrator
  • 198 Beiträge:
  • LocationHannover

Geschrieben 15 März 2006 - 11:24

Hi, fast hättest du mit deiner Methode Erfolg gehabt, im Endeffekt war nur eine Zeile falsch und zwar hast du geschrieben:
else { $texto = wordwrap( $_POST["send"]["nachricht"]["wissen"], $umbruch ); }
und zwar gibt es die Variable $_POST["send"]["nachricht"]["wissen"] nicht, das ganze lässt sich mit einem Kategoriesystem vergleichen, PHP sucht in der Oberkategorie "send" nach der Unterkategorie "nachricht" und in dieser nach dem Eintrag "wissen", das klappt allerdings nicht, weil es diese Unterkategorie nicht gibt. Es sind nämlich zwei verschiedene Variablen, die einmal $_POST["send"]["nachricht"] und $_POST["send"]["wissen"] heißen und nur dort findet PHP den gespeicherten Text. Funktionsfähig sieht dein Kontaktformular also wie folgt aus: (ich füge ihn hier jetzt mal ohne Syntax Highlighting ein, weil sonst einige Zeichen "entschärft" werden und der Code nicht mehr funktioniert)

 "50") {
        $flmail = "Ihre eingegebene E-Mail-Adresse ist zu lang!"; $fmail = ""; }
    else { $i++; }
    if ($lengtha > "30") {
        $flautor = "Ihr eingegebener Name ist zu lang!"; $fautor = ""; }
    else { $i++; }
    if ($lengthb > "150") {
        $flbetreff = "Ihr eingegebener Betreff ist zu lang!"; $fbetreff = ""; }
    else { $i++; }
    if ($lengthn > "60000") {
        $flnachricht = "Ihre eingegebene Nachricht darf nicht mehr als 60000 Zeichen haben! Sie hat: ".$lengthn.""; $fnachricht = ""; }
    else { $i++; }
    if ($lengthw > "30000") {
        $flwissen = "Ihre eingegebene Nachricht darf nicht mehr als 60000 Zeichen haben! Sie hat: ".$lengthw.""; $fwissen = ""; }
    else { $i++; }
    if (!strpos($_POST["send"]["mail"], "@") == "false" or substr_count($_POST["send"]["mail"], "@") > 1) {
        $fgmail = "Ihre angegebene E-Mail Adresse ist nicht gültig!"; $fmail = ""; }
    else { $i++; }
    if (substr_count($_POST["send"]["autor"], "@") >= 1) {
        $fgautor = "Aus Sicherheitsgründen darf das Namensfeld kein @ Zeichen enthalten!"; $fautor = "";
    } else { $i++; }
    $str = ":\/,\"";
    if (strcspn($_POST["send"]["mail"], $str) < $lengthm) {
        $fgmail = "Ihre angegebene E-Mail Adresse ist nicht gültig!"; $fmail = "" ;
    } else { $i++ ; }
    if (get_magic_quotes_gpc() == "1") {
        $_POST["send"]["autor"] = stripslashes($_POST["send"]["autor"]);
        $_POST["send"]["betreff"] = stripslashes($_POST["send"]["betreff"]);
        $_POST["send"]["mail"] = stripslashes($_POST["send"]["mail"]);
        $_POST["send"]["nachricht"] = stripslashes($_POST["send"]["nachricht"]);
        $_POST["send"]["wissen"] = stripslashes($_POST["send"]["wissen"]);
    }
    $sautor = htmlspecialchars($_POST["send"]["autor"]);
    $sbetreff = htmlspecialchars($_POST["send"]["betreff"]);
    $smail = htmlspecialchars($_POST["send"]["mail"]);
    $snachricht = htmlspecialchars($_POST["send"]["nachricht"]);
    $swissen = htmlspecialchars($_POST["send"]["wissen"]);
}
//Wenn alles korrekt eingegeben wurde, wird die Mail nun erst formatiert und dann verschickt
if(isset($_POST["send"]) && is_array($_POST["send"])) {
    if ($i == "13") {
        $autor = $_POST["send"]["autor"];
        if ($umbruch == "no") {
            $texto = $_POST["send"]["nachricht"];
            $texto .= $_POST["send"]["wissen"];
            }
        else { 
        	$texto = wordwrap( $_POST["send"]["nachricht"], $umbruch );
        	$wi = wordwrap( $_POST["send"]["wissen"], $umbruch );
        }
        $_POST["text"] = $_POST["send"]["autor"]." mit der Mail Adresse: ".$_POST["send"]["mail"]." hat ihnen folgende Nachricht gesendet: \n \n $texto \n \n Wissen: \n $wi";
        $fautor = "

Ihre Mail wurde versendet!

"; $fbetreff = ""; $fmail = ""; $fnachricht = ""; $fwissen = ""; // Und ab dafür... je nachdem mit oder ohne additional_parameters if(empty($add)) { $addp = ""; if (@mail($adresse, $_POST['send']['betreff'], $_POST['text'], "From: \"$autor\" <$from>")) { $fautor = "

Ihre Mail wurde versendet!

"; unset($sautor); unset($sbetreff); unset($smail); unset($snachricht); unset($swissen); } else { $fautor = "

Fehler! Mail konnte nicht gesendet werden

"; } } else { if (@mail($adresse, $_POST['send']['betreff'], $_POST['text'], "From: \"$autor\" <$from>", "-f $add")) { $fautor = "

Ihre Mail wurde versendet!

"; unset($sautor); unset($sbetreff); unset($smail); unset($snachricht); unset($swissen); } else { $fautor = "

Fehler! Mail konnte nicht gesendet werden

"; } } } } // Hier kommt nun das eigentliche Formular in HTML + CSS ?>







1 Besucher lesen dieses Thema

0 members, 1 guests, 0 anonymous users