Großes Problem mit Kontaktformular

online

Erfahrenes Mitglied
Hallo,

ich hab ein riesiges Problem mit einem Kontaktformular, das einmal funktioniert hat und komischerweise nur auf diesem Server nicht funktioniert, obwohl dieser Server php unterstützt.

mein script ist:

HTML:
<?php
$adminaddress = "email@email.de"; 
$siteaddress ="http://www.name.de";
$date = date("d.m.Y H:i:s");
$c="Bitte f&uuml;llen Sie alle notwendigen Felder aus!";
$d="Leider ist ein Fehler aufgetreten, probieren sie es bitte erneut!";
$e="Vielen Dank f&uuml;r Ihre Kontaktaufnahme!";
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);

if($abschicken)
{
   if(empty($name) || empty($email) || empty($anliegen))
   {
      echo $c;
   }
   else
   {
      while(list($feld,$wert)=each($HTTP_POST_VARS))
      {
         if($feld!="abschicken")
         {
            $mailnachricht.=ucfirst($feld).": $wert\n";
         }
      }
      mail("$adminaddress","Betreff", 
"
Firma:             $firma
Name:              $name
Plz:               $cname
Ort:               $ort
Straße:            $strase
Telefon:           $tel
email              $email
Anliegen:


$anliegen



Informationen über den Besucher :
------------------------------
Server:         $ip
IP - Adresse:   $REMOTE_ADDR
Datum / Zeit:   $date","FROM:$adminaddress");

	  
	  mail("$email","Vielen Dank für Ihre Email!", 
"Text\n
$siteaddress","FROM:$adminaddress");
echo $e;	
   }
}
else
{ echo $d;
}

?>


Ich hab dem Serverteam von Strato auch schon bescheid gegeben, und die haben mir dann diese infodatei von php gezeigt, die mir aber irgendwie gar nicht weiterhilft, weil ich sie einfach nicht versteh :rolleyes:
Was muss denn auf dem Server aktiviert sein, damit das geht?

Kann mir jemand weiterhelfen?
Ist echt dringend...

Mit freundlichen Grüßen

Online
 
Das wird sicher daran liegen, dass auf dem Server die register_globals nicht "on" sind.
Das bekommst Du mit folgendem Miniscript raus
PHP:
<?php phpinfo(); ?>
Wenn das der Fall ist, dann musst Du alle Variablen, die an Dein Script übergeben werden nicht $c abrufen, sondern $_GET["c"], oder Du lässt vom Admin die register_globals "on" setzen.

redlama
 
Wie redlama sagt. Bei den ganzen Daten, denke ich, du hast eine post-Form, dazu gibt es dann das superglobale Array $_POST in dem Deine Variablen als Index drinstehen.
register-globals würde ich nicht einschalten, da dies extra abgeschafft wurde, um deutlich sicherere Skripte zu machen.
Es gibt wohl auch noch $_REQUEST, wo beide drin stehen, aber in der Regel sollte man wissen, woher die Daten kommen.

EDIT: Wieder einer schneller
 
Super, danke, da liegt genau der Fehler!
Muss ich dann alle var ändern, also auch die Zeile:

$adminaddress = "email@email.de";

?
Danke für die Hilfe
 
Nein, bei $adminaddress musst Du das nicht machen, denn Du gibst $adminaddress ja einen festen Wert. Nur bei den Variablen, die Du von wo anders (z. B. einem Formular) übergeben bekommst, musst Du $_GET["..."] bzw. $_POST["..."] verwenden.

redlama
 
Irgendwie hab ich immernoch ein Problem drin, anstatt "Leider ist ein Fehler aufgetreten" postet er jetzt gar nichts mehr!
Kannst du mir bitte alle stelle irgendwi markieren, die ich ändern muss, bin grad sehr verwirrt... :rolleyes:

Ganz grqoßes Dankeschön für eure Hilfe!

MFG

Online
 
Wo kommen denn Deine Daten alle her?
aus einem anderen Script oder einem Formular
Wenn ich nicht weiß, welche Daten woher kommen, wird es schwer zu sagen, was Du exakt ändern musst. Aber hier mal ein kleines Beispiel:
HTML:
<form name="form" action="speichern.php" method="post"> 
  <input type="text" name="nickname">
  <input type="password" name="kennwort">
  <input type="submit" name="senden" value="speichern">
</form>
So würde ich nickname und kennwort übergeben. In der speichern.php müsste ich dann die Daten so ausgeben:
PHP:
<?php
echo $_POST["nickname"];
echo $_POST["kennwort"];
?>
Ich hoffe, das hilft Dir weiter!?

redlama
 
Zuletzt bearbeitet:
Also sprich, überall wo echo steht?
Ich hohl sie mir zwar mit einem Formular, aber ich krieg meine Daten nicht mit echo?
Ich hab einfach mal nach jedem echo das eingefügt, nur jetzt kommt gar keine Mitteilung mehr.
Was mach ich falsch?

PHP:
<?php
$adminaddress = "email@email.de"; 
$siteaddress ="http://www.name.de";
$date = date("d.m.Y H:i:s");
$c="Bitte f&uuml;llen Sie alle notwendigen Felder aus!";
$d="Leider ist ein Fehler aufgetreten, probieren sie es bitte erneut!";
$e="Vielen Dank f&uuml;r Ihre Kontaktaufnahme!";
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);

if($abschicken)
{
   if(empty($name) || empty($email) || empty($anliegen))
   {
      echo $_POST["c;"];
   }
   else
   {
      while(list($feld,$wert)=each($HTTP_POST_VARS))
      {
         if($feld!="abschicken")
         {
            $mailnachricht.=ucfirst($feld).": $wert\n";
         }
      }
      mail("$adminaddress","Betreff", 
"
Firma:             $firma
Name:              $name
Plz:               $cname
Ort:               $ort
Straße:            $strase
Telefon:           $tel
email              $email
Anliegen:


$anliegen



Informationen über den Besucher :
------------------------------
Server:         $ip
IP - Adresse:   $REMOTE_ADDR
Datum / Zeit:   $date","FROM:$adminaddress");

	  
	  mail("$email","Vielen Dank für Ihre Email!", 
"Text\n
$siteaddress","FROM:$adminaddress");
echo $_POST["e;"];	
   }
}
else
{ echo $_POST["d;"];
}

?>
 
Versuch's mal damit (ist aber nicht getestet):
PHP:
<?php
$adminaddress = "email@email.de";
$siteaddress ="http://www.name.de";
$date = date("d.m.Y H:i:s");
$c="Bitte f&uuml;llen Sie alle notwendigen Felder aus!";
$d="Leider ist ein Fehler aufgetreten, probieren sie es bitte erneut!";
$e="Vielen Dank f&uuml;r Ihre Kontaktaufnahme!";
if ($REMOTE_ADDR == "")
  $ip = "no ip";
else
  $ip = getHostByAddr($REMOTE_ADDR);

if(isset($_GET["abschicken"]))
{
   if(empty($_POST["name"]) || empty($_POST["email"]) || empty($_POST["anliegen"]))
      echo $c;
   else
   {
      while(list($feld, $wert) = each($HTTP_POST_VARS))
         if($feld != "abschicken")
            $mailnachricht .= ucfirst($feld).": $wert\n";
      mail("$adminaddress", "Betreff",
"
Firma:             ".$_POST["firma"]."
Name:              ".$_POST["name"]."
Plz:               ".$_POST["cname"]."
Ort:               ".$_POST["ort"]."
Straße:            ".$_POST["strase"]."
Telefon:           ".$_POST["tel"]."
email              ".$_POST["email"]."
Anliegen:


".$_POST["anliegen"]."



Informationen über den Besucher :
------------------------------
Server:         $ip
IP - Adresse:   $REMOTE_ADDR
Datum / Zeit:   $date", "FROM:$adminaddress");

      mail($email, "Vielen Dank für Ihre Email!",
"Text\n
$siteaddress", "FROM:$adminaddress");
      echo $e;
   }
}
else
  echo $d;
?>

redlama

P.S. Als gut gemeinter Tip: Besorg Dir schnellstens ein PHP Buch und lerne, ...
 
Zurück