online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Friedel vom 21.02.2020, 07:54 Options

Formmailer mailt nicht

Hallo.

Ich plage mich seit einiger Zeit mit einem Problem herum, das wahrscheinlich ganz einfach zu lösen ist, wenn man Php kann. Ich kann's leider nicht.

Auf Seite http://meine.domain.de/beispiel.php ist ein Formmailer eingebaut. Ich verschicke per Email (oder sonst wie) einen Link, bei dem ich ein Codewort und eine Emailadresse an die URL angehängt habe. z.B.
Zitat:
http://meine.domain.de/beispiel.php?codewort=123&addi=verrat@ich.net


In der http://meine.domain.de/beispiel.php steht:
<?php
  $strEmpfaenger = urldecode($_GET['addi']);

  $timestamp = time();
  $datum = date("d.m.Y",$timestamp);
  $uhrzeit = date("H:i",$timestamp);

  $strSubject    = 'Bestaetigung';

  $strReturnhtml = 'http://meine.domain.de/danke.html';

  $strDelimiter  = ":\t";

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Bestätigungsseite</title>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
</head>

<body>

<h1>Bestätigungslink</h1>

<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
<dl>
  <dt>Codewort:</dt>
     <dd><input type="text" name="Codewort" value="<?php echo$_GET['codewort']; ?>"/></dd>
  <dt>Datum:</dt>
    <dd><input type="text" name="Datum"  value="<?php echo$datum; ?>"/></dd>
  <dt>Uhrzeit:</dt>
    <dd><input type="text" name="Uhrzeit"  value="<?php echo$uhrzeit; ?>"/></dd>
  <dt>IP:</dt>
    <dd><input type="text" name="PI"  value="<?php echo$_SERVER['REMOTE_ADDR']; ?>"/></dd>
</dl>
<p><input type="submit" value="Senden" /><input type="reset" value="Zurücksetzen" /></p>
</form>

</body>
</html>


Es wird nach dem Klick auf "Senden" zwar zur Seite "danke.html" weiter geleitet, aber die Email wird nicht verdandt. Wenn ich die Zeile
 $strEmpfaenger = $_GET['addi'];
durch
 $strEmpfaenger = 'verrat@ich.net';
ersetze, funktioniert alles. Wo ist der Fehler? Die Emailadresse soll ebenfalls im Link übergeben werden.


Antwort schreiben

Antwort 1 von disco vom 21.02.2020, 08:41 Options

moin

hast du mal $strEmpfanger einfach mal mit echo ausgegeben, um zu sehen was tatsächlich drin steht?

g,
disco

Antwort 2 von Friedel vom 21.02.2020, 16:36 Options

Ja, hab ich probiert. Da wird die korrekte Adresse ausgegeben.

Antwort 3 von DeluxeStyle vom 21.02.2020, 16:40 Options

wenn du auf senden gehst, ist die Variable $strEmpfanger leer

Antwort 4 von Friedel vom 21.02.2020, 20:46 Options

@DeluxeStyle: Wie kommst du darauf? Warum sollte sie leer sein? Mit echo$strEmpfanger bekomme ich die korrekte Adresse angezeigt. Also sollte $strEmpfanger nicht leer sein.

Antwort 5 von Friedel vom 27.02.2020, 06:29 Options

Und hoch damit. Das muss doch jemand wissen.

Antwort 6 von rabies vom 28.02.2020, 16:23 Options

Es wird wohl daran liegen, dass Du die Variable 'addi' nirgendwo mitschleifst. Die Variablen Uhrzeit, Datum, PI, Codewort aber schon.

Ich denke, das Problem wäre gelöst, wenn Du einfach noch ein Input-Feld vom Typ hidden einfügst.

<input type="hidden" name="addi" value="<?php echo $_GET['addi']; ?>" />


--rabies.

Antwort 7 von rabies vom 28.02.2020, 16:33 Options

Aber selbst dann kann es eigentlich nicht funktionieren, da Du die Variable per GET übergibst und das Formular über POST rausschickst. ... Also solltest Du nachdem Du überprüfst, ob $_POST gesetzt ist, $strEmpfaenger neu setzen.

Also:

if($_POST)
{
 $strMailtext = "";
 $strEmpfaenger = $_POST['addi'];
 ...


--rabies.

Antwort 8 von DeluxeStyle vom 28.02.2020, 16:41 Options

genau das was rabies meint, meinte ich auch damit

Antwort 9 von rabies vom 28.02.2020, 16:44 Options

Aber ich hab's schöner formuliert, ätsch. :P

Ähnliche Themen

Fotobearbeitungsprogramm
milacku  22.09.2007 - 3 Hits - 1 Antwort

Seitenquelltext auswerten
Heintje  26.11.2007 - 80 Hits - 1 Antwort

formmailer
Ich34  23.05.2008 - 32 Hits - 1 Antwort

Formmailer Mail kommt nur zur Hälfte an //*CLOSED*//
TK24  23.05.2008 - 27 Hits - 1 Antwort

Error404 //*CLOSED*//
TK24  23.05.2008 - 24 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026