webseite per mail problem mit einer variable

Zero2000

Erfahrenes Mitglied
Hallo

Ich könnte rumheulen. Ich habe eine Seite, auf der verschiedene Werte aus einer DB (MySQL) kommen. Diese Seite habe ich mit
PHP:
$textmail = $textmail . 'SEITE';
in einer Variablen zusammengefasst, damit ich diese Content-Typ und charsetmäßig genau so in einer Email darstellen kann.
Wenn ich die Mailfunktion einfach mit ans Ende der Seite stelle wird automatisch eine Mail verschickt. Das verschicken sowie das Anzeigen klappen hervorragend.

Nun will ich aber nicht immer die Seite verschicken sondern erst auf Knopfdruck (submit) und da hängts bei mir. Das alles passiert noch auf der selben Seite also $_SERVER['PHP_SELF'] als action für den Formularbereich.

Ich bekomm nur nicht den Inhalt der variablen $textmail in der Mail angezeigt. Ich bekomm zwar eine Mail aber diese ist leer.

Nachfolgenden Code rufe ich beim absenden mittels Submitbutton auf.
PHP:
if(isset($mailversand))
{
$textmail = $_POST['textmail'];
$tourplannummer = $_POST['tourplannummer'];
$woche = $_POST['woche'];
echo $textmail;
var_dump( "<pre>", $_POST, "</pre>" );
error_reporting(E_ALL);
###########################################################################################################
# EMAILVERSAND BEI NEUER ERSTELLUNG
###########################################################################################################
$mail_empfaenger = "xxx@xxx.de";
$betreff = "Nr.: $tourplannummer für $woche";
$mail_absender = "xxxxxx";
//$text = "\n\Tourplannummer: $tourplannummer";
mail($mail_empfaenger, $betreff, $textmail, "From:$mail_absender\nContent-Type: text/html; charset=Windows-1252");
###########################################################################################################
echo '<table width=750 background="../images/1px_hellgrn.gif" style="caption-side: bottom; border:1px solid #009900;">';
echo '<tr><td><b><font color="#009900" face="Arial, Helvetica, sans-serif" size="2">Die Mail wurde verschickt!</b><br>Sie werden in 3 sek. automatisch zur Übersicht weitergeleitet. Falls Ihr Browser keine Weiterleitung unterstützt oder Javascript deaktiviert ist, klicken Sie <a href="../i_index.php?action=tour_list"><b>hier</b></a></font></td></tr>';
echo '</table>';
}
Ich weis jetzt nicht welchen Code oder so Ihr noch benötigt deshalb belasse ich es für den Anfang mal mit dem obrigen.
error_reporting(E_ALL); gibt mir keine Fehler aus und ein var_dumb($_POST); sagt folgendes, wobei mailversand der Name meines submitbuttons ist und EMail der Value auf selbigem.
HTML:
string(5) "
"
array(1) {
  ["mailversand"]=>
  string(5) "EMail"
}
string(6) "
"
Ich hoffe mir kann jemand einen kleinen Denkanstoß geben

MfG
Maik
 
Hallo!

na mit
Code:
$textmail = $_POST['textmail'];
überschreibst du dir ja die Variable -- $_POST brauchst du nur dazu um Daten aus dem POST-Bereich des HTTP-Protokolls zu lesen.
Wenn du das so machst, musst du auf deine HTML Seite in dein Fomular noch ein hidden-field z.B. geben und dort den ganzen wert speichern .. also so

<input type="hidden" name="textmail" value="... hier den sourcecode der seite einfügen ...">

ist natürlich nicht besonders schön wenn der ganze source-code zwei mal gemacht wird.

Ich kenn den Rest deines Scripts nicht, aber evtl. reicht es alleine schon aus
PHP:
$textmail = $_POST['textmail'];
heraus zu löschen ... give it a try!
 
Füllst du den POST Cache auch richtig bevor du die Seite neu aufrufst?
Weil wenn nicht, kannst du das so oft losschicjen wie du ,möchtest! Da keine Daten im Cache stehen können auch keine übernommen und versendet werden!!

Versuch mal:

PHP:
if(!$mailversand) $_POST['textmail'] = textmail . 'SEITE';


Lg Mohag
 
Zuletzt bearbeitet:
Wenn ich mir meine Seite so angucke fällt mir ja auf, dass die Variablen ja nur als Variablen existieren, also ohne in einem Inputfeld als Value oder Name zu stehen.
Wenn ich diese Zeile
PHP:
$textmail = $_POST['textmail'];
lösche, gibts nen Undefined variable "Fehler".
Und zwar wegen dieser Zeile hier:
PHP:
mail($mail_empfaenger, $betreff, $textmail, "From:$mail_absender\nContent-Type: text/html; charset=Windows-1252");
hidden-Inputfelder hatte ich auch schon das geht auch nicht wirklich, denn wenn ich ein hidden-Inputfeld nehme und als Value die Variable $textmail einfüge dann habe ich die Seite zweimal untereinander wenn Ihr versteht was ich meine...

Ich lese die Daten aus der DB und zeige diese mittels einer while-Schleife an.
Eigentlich gehts ja nur noch darum die Variable per submit zu übergeben. Bisher habe ich das alles immer per Formular gelöst, aber nun sind ja diese variablen nicht in Inputfeldern integriert und die Lösung per Formular geht für diesen Zweck nicht.

Ich hoffe Ihr könnt mir noch folgen. Wie gesagt funktioniert es tadellos, wenn ich die Abfrage rausnehme und die Mail beim laden der Seite gleich verschickt wird.

[EDIT]Kann man Variablen überhaupt ohne ein formular zu benutzen übergeben
meine Seite gebe ich letztendlich mit
PHP:
echo $textmail;
aus.[/EDIT]

MfG
Maik
 
Zuletzt bearbeitet:
Dann mach mal ein Form auf mit POST übergabe, setz die CacheVariablen und deine Mailversandvariable (diese würde ich per GET übergeben) und dann versuchs nochmal ;)

Lg Mohag
 
Ja kannst du, indem du register_globals auf on setzt
und mit globalen Variablen arbeitest.

ist allerdings sehr unsicher und deshalb wurden die Chaches POST usw entwickelt!!

Lg Mohag
 
das mit register_globals lasse ich, weil die Skripte dann nicht mehr beim Hoster laufen.
Ich habe jetzt einen neuen Formbereich erstellt und bis auf die $textmail kommt auch alles was ich benötige mit rüber.
Wie soll ich denn die $textmail mit GET übergeben wenn ich im Formularbeginn als Methode POST ausgewählt habe?

MfG
Maik
 
GELÖST!
Habe die variable $textmail einfach in eine Session getan und fertig!
Hätte nicht gedacht das es so einfach gehen würde, aber das denke ich ja immer. :)

MfG
Maik
 
Zurück