mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 13:16 Benutzername: Passwort: Auto-Login

Thema: kontakt php meldet immer "nicht alles ausgefüllt" vom 28.06.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> kontakt php meldet immer "nicht alles ausgefüllt"
Autor Nachricht
Macciquita
Threadersteller

Dabei seit: 24.07.2005
Ort: Monaco di Baviera
Alter: -
Geschlecht: Männlich
Verfasst Do 28.06.2007 14:00
Titel

kontakt php meldet immer "nicht alles ausgefüllt"

Antworten mit Zitat Zum Seitenanfang

Hallo zusammen,
mein Kontakt Formular geht nicht. Egal ob man nur die relevanten oder sogar alle Felder ausfüllt - es kommt dauernd "sie haben nicht alle Felder ausgefüllt"

Das gleiche script funktioniert aber auf einem anderen server

Danke für tipps

<?php

if($name == FALSE || $vorname == FALSE || $message == FALSE || $email == FALSE) {

echo "Sie haben nicht alle notwendigen Felder ausgef&uuml;llt.<br>Bitte gehen Sie <a href='javascript:history.go(-1);' class='navigation'>zur&uuml;ck</a> und korrigieren Sie dies.";

}

else {

$message = stripslashes($message);

$teil[0] = "Folgende Email wurde von XXX versendet:\n\n";

$teil[1] = "Name: ".$name."\n";

$teil[2] = "Vorname: ".$vorname."\n";

$teil[3] = "Strasse: ".$strasse."\n";

$teil[4] = "PLZ/Ort: ".$plz."-".$ort."\n";

$teil[5] = "Email: ".$email."\n";

$teil[6] = "Anliegen: ".$message."\n\n";

for($i=0; $i <= 6; $i++) {

$inhalt = $inhalt.$teil[$i];

}

$mailsend = mail("info@XXX.de","Kontakt der Webseite","$inhalt","From:$email");

echo "Vielen Dank! Ich habe Ihre Nachricht erhalten und werde mich sobald wie m&ouml;glich mit Ihnen in Verbindung setzen.";

}

?>
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Skyw4lker

Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 43
Geschlecht: Männlich
Verfasst Do 28.06.2007 14:02
Titel

Antworten mit Zitat Zum Seitenanfang

wo füllst du denn die Variablen für die IF Abfrage? ich tippe mal auf register globals
  View user's profile Private Nachricht senden
Anzeige
Anzeige
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Do 28.06.2007 14:14
Titel

Antworten mit Zitat Zum Seitenanfang

1. woher kommen die variablen
2. eine TRUE/FALSE abfrage sollte typecht abgefragt (if ($foo === TRUE)) abgefragt werden
3. error_reporting()

vielleicht schreit php um hilfe.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Macciquita
Threadersteller

Dabei seit: 24.07.2005
Ort: Monaco di Baviera
Alter: -
Geschlecht: Männlich
Verfasst Do 28.06.2007 14:19
Titel

Antworten mit Zitat Zum Seitenanfang

sorry, das versteh ich nicht. Ich kann kein php programmieren - nur ein bisschen anpassen. Bis jetzt hat das script schon mehrfach guten dienst erwiesen. Ich habe ein kontakt.php und eine kontakt_submit.php datei. Finde leider keine Verbindung zu den if werten
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Kraat

Dabei seit: 05.10.2006
Ort: Köln
Alter: 42
Geschlecht: Männlich
Verfasst Do 28.06.2007 14:29
Titel

Antworten mit Zitat Zum Seitenanfang

Du hast register_globals auf off gestellt was auch richtig ist.

Also solltest Du mit den Globals arbeiten: $_POST $_GET $_REQUEST

Gruß
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Do 28.06.2007 23:26
Titel

Antworten mit Zitat Zum Seitenanfang

und mal wieder...
Das ist kein Mailscript, sondern eine potientielle Spamschleuder!
Dein Hoster wird sich freuen, wenn die ersten paar tausend Spammails damit verschickt wurden...
Ein Angriff per E-Mail-Header-Injection ist möglich.
Man kann deinem Script so unerwünschte Headerzeilen unterschummeln. Mit CC- und BCC-Headern könnte man Mails an verschiedene Empfänger verschicken.
Headerzeilen werden durch Zeilenumbrüche voneinander getrennt. Also mußt du Zeilenumbrüche raus filtern!

Nie, nie, niemals darfst du irgendwelche Werte, die an dein Script übergeben werden, einfach ungeprüft in deine Funktionen einbauen! Alle Werte müssen erst geprüft und ggf. bereinigt werden.

Weiter. Damit verschickst du deine Mail:
Code:
$mailsend = mail("info@XXX.de","Kontakt der Webseite","$inhalt","From:$email");

Als optionalen Parameter kannst du mail() zusätzliche Headerzeilen mitgeben.
Du nutzt nur den From-Header. Da solltest du aber noch einige mehr einsetzen. Sicherlich willst du, daß deine Mails überall korrekt ankommen, also daß Sonderzeichen und Umlaute korrekt angezeigt werden?
Dann mußt du die verwendete Zeichenkodierung mit angeben. Ansonsten bleibt dem Mailclient nichts anderes übrig als zu raten.
Mach das mal folgendermaßen:
Code:
$header = "MIME-Version: 1.0\n";
$header.= "Content-type: text/html; charset=iso-8859-1\n";
$header.= "Content-Transfer-Encoding: 8bit\n";
$header.= "From: $_POST['email']\n";
$header.= "Reply-To: $_POST['email']\n";
$header.= "X-Mailer: PHP/" . phpversion() ."\n";

(Bei charset muß dann natürlich auch das wirklich verwendete Charset angeben werden.)

und dann übergibst du $header an mail():
Code:
$mailsend = mail( "info@XXX.de", "Kontakt der Webseite", $inhalt, $header );


Und dann frage ich mich, warum du den Rückgabewert von mail() in $mailsend speicherst, wenn du diesen Wert gar nicht benutzt.
Du gibst danach einfach eine Meldung aus und bedankst dich für die Mail.
Was, wenn die Mail gar nicht an den MTA übergeben werden konnte?
Code:
$mailsend = mail( "info@XXX.de", "Kontakt der Webseite", $inhalt, $header );
if ( $mailsend === TRUE )
{
   echo "Vielen Dank! Ich habe Ihre Nachricht erhalten und werde mich sobald wie m&ouml;glich mit Ihnen in Verbindung setzen.";
}
else
{
   echo "Fehler. Leider konnte Ihre Email aus technischen Gründen nicht an den Mail Transfer Agent übergeben werden. Bitte versuchen Sie es später noch einmal.";
}



Zitat:
Du hast register_globals auf off gestellt was auch richtig ist.

Ja.
Zitat:
Also solltest Du mit den Globals arbeiten: $_POST $_GET $_REQUEST

Nein. Eben nicht mit globalen Variablen arbeiten. Das funktioniert ja eh nicht, wenn register_globals auf off steht.
Mit den superglobalen assoziativen Arrays arbeiten. (Aber schätzungsweise war das nur ein Flüchtigkeitsfehler und schon richtig gemeint...)
Und ich bin auch recht sicher, daß hier der Grund liegt, warum das Script nicht funktioniert...
Das Formular wird sicherlich per POST verschickt, also gibt es kein $name, sondern die Variable wird $_POST['name'] heißen. Gleiches für $vorname, $message, $email und die anderen Variablen aus dem Formular.

Weiter:
Code:

$teil[0] = "Folgende Email wurde von XXX versendet:\n\n";

$teil[1] = "Name: ".$name."\n";

$teil[2] = "Vorname: ".$vorname."\n";

$teil[3] = "Strasse: ".$strasse."\n";

$teil[4] = "PLZ/Ort: ".$plz."-".$ort."\n";

$teil[5] = "Email: ".$email."\n";

$teil[6] = "Anliegen: ".$message."\n\n";

for($i=0; $i <= 6; $i++) {

$inhalt = $inhalt.$teil[$i];

Was soll denn das?
Ein Array füllen und eine for-Schleife einsetzen und einen String zusammenzusetzen?
Warum keine String-Konkatenation? Das setzt du ja sogar ein, um in deiner Schleife die Strings zu verbinden...
Code:
$inhalt = "Folgende Email wurde von XXX versendet:\n\n";
$inhalt.= "Name: ".$name."\n";
$inhalt.= "Vorname: ".$vorname."\n";
$inhalt.= "Strasse: ".$strasse."\n";
$inhalt.= "PLZ/Ort: ".$plz."-".$ort."\n";
$inhalt.= "Email: ".$email."\n";
$inhalt.= "Anliegen: ".$message."\n\n";



Zitat:
2. eine TRUE/FALSE abfrage sollte typecht abgefragt (if ($foo === TRUE)) abgefragt werden

Das ist natürlich vollkommen richtig.
Aber in diesem Fall würde ich auf die Existenz der Variablen mit isset() testen.
Wenn hier nämlich das error_reporting höher eingestellt wird, gibt es gleich ein paar Notices:
Code:
 if($name == FALSE || $vorname == FALSE || $message == FALSE || $email == FALSE) {

Notice: Undefined variable: name in ...
Notice: Undefined variable: vorname in ...
Notice: Undefined variable: message in ...
Notice: Undefined variable: email in ...


Code:
Bitte gehen Sie <a href='javascript:history.go(-1);' class='navigation'>zur&uuml;ck</a> und korrigieren Sie dies.";

Oh nöh... Bitte nicht... Was machen denn die User ohne JavaScript?
Du weißt doch, wie die Seite mit dem Formular heißt? Warum denn dann hier JS einsetzen?
Schreib da den Namen des Dokuments rein und es funktioniert auch ohne JS.
Wenn du im Linkziel das Pseudoprotokoll javascript: einsetzt, dann hast du zu 90% was falsch gemacht.
Lieber ein echtes Linkziel einsetzen und die JS-Funktion mit onclick aufrufen. Du kannst false an den Link zurückgeben, damit dieser dann nicht ausgeführt wird.
So hast du aber immer eine Fallbackmöglichkeit für die User, die kein JS einsetzen wollen oder können.
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Fr 29.06.2007 10:35
Titel

Antworten mit Zitat Zum Seitenanfang

Such doch mal bitte nach "Mein Kontaktformular geht nicht" hier in der Boardsuche. Ich versteh nicht, warum Rob die Faulheit hier auch noch belohnt.
 
 
Ähnliche Themen Möchte Formular ausgefüllt zurückbekommen
PHP Abfrage ob alle Felder ausgefüllt wurden
PHP Formular - Fehlermeldung wenn nicht alles ausgefüllt ist
Kontakt-Adressverwaltung
[PHP]Problem mit Kontakt Formular
Kontakt Formular Coden. Help!
Neues Thema eröffnen   Neue Antwort erstellen
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.