Prob mit register_globals=off und Mailformular..

vocalszene

Grünschnabel
Hallo, über Nacht wurde php bei mir geupdatet und die Einstellungen von Register_globals von "on" auf "off" gesetzt.

Mittels $action = $_GET['action'];

konnte ich alle Seiten wieder aufrufbar und ausführbar machen. Lediglich beim Mailformular hapert es.

Problembeschreibung:
in der contact.inc.php ist das Formular. Man füllt es aus und klickt auf absenden.
nun wird die Datei mailer.inc.php geöffnet.
Das ist der relevante Code in der Datei:

PHP:
<?php
if($abschicken)
{
   if(empty($name) || empty($email) || empty($text))
   {
      echo "<tr style=\"vertical-align:top\"><td>Um Ihre Anfrage bearbeiten zu k&ouml;nnen ben&ouml;tigen wir Ihren Namen, Ihre eMail-Adresse und die eigentliche Anfrage.<br />Bitte gehen Sie zur&uuml;ck zum Kontaktformular und &uuml;berpr&uuml;fen, ob Sie alle Felder ausgef&uuml;llt haben.<br /><br />Selbstverst&auml;ndlich werden Ihre eingesendeten Daten streng vertraulich behandelt.<br /><br /><div style=\"text-align:right;\"><a href=\"javascript:history.go(-1)\" class=\"list\">zur&uuml;ck zum Kontaktformular</a></div></td></tr>";
   }
   else
   {
      while(list($feld,$wert)=each($_POST))
      {
         if($feld!="abschicken")
         {
            $mailnachricht.=ucfirst($feld).": $wert\n--------------------------\n";
         }
      }
      $mailnachricht.="\nDatum/Zeit an dem die Mail abgesendet wurde: ";
      $mailnachricht.=date("d.m.Y H:i:s");
      $mailbetreff="Kontakt &uuml;ber DeisterCom.de f&uuml;r: ";
      $mailbetreff.=$HTTP_POST_VARS[contact];
      mail("xyz@vos.de", $mailbetreff, $mailnachricht, "From: $email");
      echo "<tr style=\"vertical-align:top\"><td>Vielen Dank <b>".$HTTP_POST_VARS[name]."</b> f&uuml;r Ihre eMail,<br /><br />wir werden Ihr Anliegen schnellstm&ouml;glich bearbeiten und uns dann mit Ihnen in Verbindung setzen.<br /><br /><div style=\"text-align:right;\"><b>Ihr ...Team</b></div></td></tr>";
   }

}
else
{
   echo "<tr style=\"vertical-align:top\"><td>Ein Fehler ist aufgetreten.<br /><br />Sollte der Fehler sich wiederholen, kontaktieren Sie uns bitte unter 0 51 05 ...</td></tr>";
}

?>

nachdem ich nun (weil immer Meldung "Ein Fehler ist aufgetreten...")
folgendes vor den PHP Code eingefügt habe:

PHP:
extract ($_REQUEST, EXTR_OVERWRITE);

wird das Formualr wohl verarbeitet, jedoch nicht zugestellt...

Das heißt, jetzt erscheint die "Zustellmeldung" (Vielen Dank Abc.....), jedoch geht die Mail nicht raus.

Was mache ich falsch?

Vielen Dank für Eure Hilfe
 
Herrgott, wieviele Threads gibts hier mittlerweile zu dem Thema:mad:

Es reicht nicht aus, sporadisch die Variablen richtig anzusprechen...du musst das immer und überall machen....z.B. hier

Code:
mail("xyz@vos.de", $mailbetreff, $mailnachricht, "From: $email");
....dies verhindert das Absenden der Mail...
 
fatalus hat gesagt.:
Herrgott, wieviele Threads gibts hier mittlerweile zu dem Thema:mad:

Danke für den Hinweis, ich habe die Suchfunktion genutzt mit
"register_globals=off" und
"register global off"
und einigen anderen Möglichkeiten. Hätte ich eine Lösung für mich gefunden, hätte ich nicht gepostet...., oder?

Trotzdem danke für den Hinweis....

und nun viel viel netter:

Danke für den Hinweis mit der globalität und so, da ich Anfänger bin werde ich versuchen eben solche Fehler zukünftig zu vermeiden und nicht nur sporadisch was zu deklarieren :)

PS.: Danke für die Hilfe - und das ist wirklich ernst gemeint!
 
hm...
leider as dann doch nicht bei mir, werde da wohl irgendwas total falsch machen!

Wenn ich die betreffende Stelle z.B. so mache
Code:
      mail("xyz@vos.de", $mailbetreff, $mailnachricht, "From: xyz@vos.de");
geht´s nicht....

schreibe ich das mit

Code:
      mail("xyz@vos.de", $mailbetreff, $mailnachricht, "From:".$_POST[email]);

geht´s auch nicht.

Ich dachte auch, das mit extract ($_REQUEST, EXTR_OVERWRITE); das gehen müsste, er macht ja auch sonst alle Variablen aus dem Formular nutzbar...
Bitte also nochmals um Hilfe (und werde selbstverständlich auch weiterhin hier forschen gehen...!)
 
Naja... wenn da steht "Ein fehler ist aufgetreten", dann ist halt einfach die if-Bedingung nicht erfüllt.
Ich würde
PHP:
if($abschicken)
grundsätzlich mal in
PHP:
if(isset($abschicken))
ändern.

Außerdem solltest Du den Rat von fatalus beherzigen und ALLE Variablen mit $_POST bzw. $_GET versehen.
 
Hallo, es steht doch die Fehlermeldung gar nicht da....

Das war bei meinem ersten Versuch noch so, dann habe ich die Zeile:
Code:
extract ($_REQUEST, EXTR_OVERWRITE);
eingefügt. Nun erkennt er die Variablen und geht in der Schleife weiter. Ich erhalte weiterhin die Erfolgsmeldung, das die Mail versendet wurde, jetzt muß ich nur noch erreichen, das zu der Erfolgsmeldung auch die Mail wirklich verschickt wird.

Gebe ich
PHP:
print_r($_REQUEST);
ein, werde mir die Variablen ja auch angezeigt:

Code:
Array ( [action] => mailer [name] => Sebastian [email] => xyz@vos.de [contact] => VocalSzene Admin [text] => Dies ist ein Test [abschicken] => Abschicken )

Ich habe ja auch versucht sus dem $email ein $_POST[email] zumachen, das hilft aber leider am Versand nichts...

Ich bin nicht gerade der fitteste, was die php Programmierung betrifft, evtl, hab ich ja auch ein "Brett" vorm Kopf, aber es wurden doch durch die zuoberst stehende Codezeile die Variablen aus dem Formular sozusagen der Maildatei zur Verfügung gestellt, oder nicht....?

Wenn es denn an dieser Zeile scheitert:
Code:
mail("xyz@vos.de", $mailbetreff, $mailnachricht, "From: $email");

und das so auch nicht geht:
Code:
mail("xyz@vos.de", $mailbetreff, $mailnachricht, "From:".$_POST[email]);

was könnte dann dort so ziemlich genau stehen müssen?

Ich habe bereits einmal vor jede Variable ein $_POST gesetzt. genutzt hat´s aber leider auch nichts..........?
 
wieso schreibst du nicht am Anfang für alle übergebenen Variablen dies oben in deiner php-Datei? :

if($_request['email']) $email = $_request['email'];

dies dann für alle Variablen, somit kannst du dann mit den alten Variablen weiterarbeiten.
 
Vielen Dank noch einmal für Eure Hilfe!

Lösung war eine komische Sache :)
Der Quellcode von mir war i.O.

mit dem vorangesetzten
extract ($_REQUEST, EXTR_OVERWRITE);
ging es! Man sollte aber auch auf dem Mailserver das Versenden von emails erlauben... :)

Fazit, viel Wirbel und Gehirnschmalz um nichts weil der liebe Serveradmin da einen "kleinen" Bock gebaut hat!

Mein herzlicher Dank geht trotzdem an Alle, die mir haben helfen wollen.

.... und ja, ich werde in Zukunft alle Variablen mit entsprechenden $_xxx versehen

Danke
 
Zurück