Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Variabeln auf nächste Seite übermitteln
Frage
Wie bringe ich es hin, das Formular per Mail versendet wird und auch auf der nächsten Seite angezeigt wird?
Ich benutze denn Formmailer von [url]http://aktuell.de.selfhtml.org/tippstricks/php/form-mail/index.htm[/url]
Dann kommt mein Formular:
[code]<form name="kontakt" action="<?php print $_SERVER[´PHP_SELF´]; ?>" method="post">
<table bgcolor="#d4e6ef" width="350" align="center" border="0" cellspacing="1" cellpadding="1">
<tr>
<td bgcolor="#7878B3" width="80%"><font face="Arial Narrow" size="2">Ihre Ticketnummer</font></td>
<td bgcolor="#999999" width="20%"><font face="Arial Narrow" size="1"><input type="text" id="uhr" name="Ticketnummer" value="Error" size="13" readonly="readonly"> </font></td>
</tr>
<tr>
<td bgcolor="#7878B3" width="50%"><font face="Arial Narrow" size="2">Name</font></td>
<td bgcolor="#999999" width="50%"><font face="Arial Narrow" size="1"><input action="hidden" class="input" type="text" name="Name" value="" size="32"></font></td>
</tr>
<tr>
<td bgcolor="#7878B3"><font face="Arial Narrow" size="2">Vorname</font></td>
<td bgcolor="#999999"><font face="VArial Narrow" size="1"><input class="input" type="test" name="Vorname" value="" size="32"></font></td>
</tr>
<tr>
<td bgcolor="#7878B3"><font face="Arial Narrow" size="2">E-Mailadresse</font></td>
<td bgcolor="#999999"><font face="Arial Narrow" size="1"><input class="input" type="text" name="email" value="" size="32"></font></td>
</tr>
<tr>
<td bgcolor="#7878B3" width="50%"><font face="Arial Narrow" size="2">Titel</font></td>
<td bgcolor="#999999" width="50%"><font face="Arial Narrow" size="1"><input class="input" type="text" name="Titel" value="" size="32"></font></td>
</tr>
<tr>
<td bgcolor="#7878B3"><font face="Arial Narrow" size="2">Problem</font></td>
<td bgcolor="#999999"><font face="Arial Narrow" size="2"><textarea class="input" name="Nachricht" rows="5" cols="25" wrap="hard" onChange="CheckLen(this)" onFocus="CheckLen(this)" onKeyDown="CheckLen(this)" onKeyUp="CheckLen(this)"></textarea><br></font></td>
</tr>
<tr>
<td bgcolor="#7878B3" align="center"><input class="text" type="submit" value="Senden"></td>
<td bgcolor="#7878B3" align="center"><INPUT class="text" type="button" value="Fenster schliessen" name="B3" onclick="self.close()"></td>
</tr>
</table>[/code]
Wie kann ich nun diese Daten auf die Seite mailok.html übermitteln und weiterhin auch per Mail versenden? Wenn ich zwei Mal die action="XXXX" in den Formtag schreibe, versendet es nur an die erste Variante.
Kurz: Ich möchte die Versendeten Daten dem Besucher nochmals zeigen, das er diese Ausdrucken kann.
Gruss
axe
Antwort 1 von axe
Bzw. sieht dann die nächste Seite (mailok.php) so aus:
<html>
<font class="text">
Vielen Dank für Ihre Anfrage. Die Daten wurden erfolgreich an uns versendet. Untenstehend Ihre Daten.<br><br><hr>
<?php
echo "Ihre <b>Ticketnummer</b> lautet: $Ticketnummer<br>";
?>
<br><br>Ihre Daten, die Sie uns angegeben haben lauten:<br>
<?php
echo "<b>Name:</b> $Name<br>";
echo "<b>Vorname:</b> $Vorname<br>";
echo "<b>E-Mail Adresse:</b> $email<br>";
echo "<b>Problem:</b> $Nachricht<p>";
?>
<br><br><br><br><br><br>
<INPUT class="text" type="button" value="Fenster schliessen" name="B3" onclick="self.close()">
</font>
</body>
</html> Antwort 2 von axe
Dieser Versuch ging auch in die Hose:
<form name="kontakt" action="<?php print $_SERVER[´PHP_SELF´]; mailok.php; ?>" method="post">Antwort 3 von rabies
n´Abend.
So ganz verstehe ich das Problem, und das was Du da versuchst nicht... zwei actions in einem Form sind Nonsens. Und selbst wenn es funktionieren würde: Syntaktisch wäre der PHP-Code falsch, da Du einfach nur mailok.php; schreibst - richtig wäre etwas wie echo od. print "mailok.php".
Wie wär´s denn mit folgender Zusammenstellung:
1. Seite, wo das Formular drin ist (kann von mir aus auch pur HTML sein - PHP wird hier nicht benötigt).
2. Seite, wo einfach nur die POST-Daten genommen werden, in den Formmailer geschmissen werden, und dann noch der "Bestätigungstext" ausgegeben wird.
Seite Nr. 1 sollte dann natürlich als action den Namen der zweiten Seite haben.
Und die zweite Seite könnte so aufgebaut sein:
So, nennen wir diese Datei nun mail.php - in der ersten Seite müsste im Form folglich mail.php in der action stehen.
Eine Übermittlung der Daten auf eine Seite "mailok.html" fällt unter den Tisch, da man ja die Daten auch irgendwie in die Datei "hineinprügeln" muss. -- mit purem HTML ist das nicht zu machen.
--rabies.
So ganz verstehe ich das Problem, und das was Du da versuchst nicht... zwei actions in einem Form sind Nonsens. Und selbst wenn es funktionieren würde: Syntaktisch wäre der PHP-Code falsch, da Du einfach nur mailok.php; schreibst - richtig wäre etwas wie echo od. print "mailok.php".
Wie wär´s denn mit folgender Zusammenstellung:
1. Seite, wo das Formular drin ist (kann von mir aus auch pur HTML sein - PHP wird hier nicht benötigt).
2. Seite, wo einfach nur die POST-Daten genommen werden, in den Formmailer geschmissen werden, und dann noch der "Bestätigungstext" ausgegeben wird.
Seite Nr. 1 sollte dann natürlich als action den Namen der zweiten Seite haben.
Und die zweite Seite könnte so aufgebaut sein:
<?php
// Formmailer-Gedöhns. Den Quelltext des Formmailers brauche ich ja wohl nicht zu wiederholen.
?>
<html>
<head>
<title>Bestätigung</title>
</head>
<body>
<font class="text">
Vielen Dank für Ihre Anfrage. Die Daten wurden erfolgreich an uns versendet. Untenstehend Ihre Daten.<br><br><hr>
<?php
echo "Ihre <b>Ticketnummer</b> lautet: ".$_POST["Ticketnummer"]."<br>";
?>
<br><br>Ihre Daten, die Sie uns angegeben haben lauten:<br>
<?php
echo "<b>Name:</b>".$_POST["Name"]".<br>";
echo "<b>Vorname:</b>".$_POST["Vorname."<br>";
echo "<b>E-Mail Adresse:</b>".$_POST["email"]."<br>";
echo "<b>Problem:</b>".$_POST["Nachricht"]."<p>";
?>
<br><br><br><br><br><br>
</font>
</body>
</html>
So, nennen wir diese Datei nun mail.php - in der ersten Seite müsste im Form folglich mail.php in der action stehen.
Eine Übermittlung der Daten auf eine Seite "mailok.html" fällt unter den Tisch, da man ja die Daten auch irgendwie in die Datei "hineinprügeln" muss. -- mit purem HTML ist das nicht zu machen.
--rabies.
Antwort 4 von axe
Hallo rabies
Ich habe nun in der ersten Datei folgendes als Form:
Dann in der mailok.php hab ich den Formmailer und dann das Script, wie du es geschrieben hast. Dann kommt die Meldung:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ´,´ or ´;´ in /home/httpd/vhosts/domain.ch/httpdocs/test/mailok.php on line 69
Die Linie 69 ist folgendes:
echo "<b>Name:</b>".$_POST["Name"]".<br>";
Es werden also keine Daten angezeigt.
Soll ich dieses Projekt schon im ganzen neu angehen? Ich meine wäre es nicht schlauer, die ticket.php zu schreiben, dann in ticket2.php dasselbe nochmals, und wenn OK, dann senden.
Also die erste form (ticket.php) würde im ticket2.php genau dasselbe wiedergeben, auch in Formfeldern und dann kann der Besucher nochmals durchschauen, wenn fehler vorhanden sind korrigieren und dann absenden via Formmailer?!
Gruss
axe
P.S.: Oder hast du sonst eine gute Idee? *smile*
Ich habe nun in der ersten Datei folgendes als Form:
<form onsubmit="return checkForm()" name="kontakt" action="mailok.php" method="post">Dann in der mailok.php hab ich den Formmailer und dann das Script, wie du es geschrieben hast. Dann kommt die Meldung:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ´,´ or ´;´ in /home/httpd/vhosts/domain.ch/httpdocs/test/mailok.php on line 69
Die Linie 69 ist folgendes:
echo "<b>Name:</b>".$_POST["Name"]".<br>";
Es werden also keine Daten angezeigt.
Soll ich dieses Projekt schon im ganzen neu angehen? Ich meine wäre es nicht schlauer, die ticket.php zu schreiben, dann in ticket2.php dasselbe nochmals, und wenn OK, dann senden.
Also die erste form (ticket.php) würde im ticket2.php genau dasselbe wiedergeben, auch in Formfeldern und dann kann der Besucher nochmals durchschauen, wenn fehler vorhanden sind korrigieren und dann absenden via Formmailer?!
Gruss
axe
P.S.: Oder hast du sonst eine gute Idee? *smile*
Antwort 5 von axe
oder das es gleich geht wie hier, bei supportnet? Das wäre doch auch eine Möglichkeit...... ?!
Antwort 6 von rabies
Sorry, in der 69 ist´n Tippfehler von mir drin.
Müsste so aussehen:
Dann sollte alles funktionieren.
Müsste so aussehen:
echo "<b>Name:</b>".$_POST["Name"]."<br>"; Dann sollte alles funktionieren.
Antwort 7 von axe
Ah - Kleinigkeiten sind wichtig - danke :)
Nun, wenn ich keinen Formmailer in dir mailok.php stecke, geht es, wenn ich aber den Formmailer einsetze, wir nichts mehr angezeigt, das Mail wird aber korrekt versendet.
So sieht meine mailok.php aus:
Nun, wenn ich keinen Formmailer in dir mailok.php stecke, geht es, wenn ich aber den Formmailer einsetze, wir nichts mehr angezeigt, das Mail wird aber korrekt versendet.
So sieht meine mailok.php aus:
<?php
### Konfiguration ###
# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = ´info@domain.de´;
# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom = ´"Formmailer" <formular@domain.de>´;
# Welchen Betreff sollen die Mails erhalten?
$strSubject = ´Supportanfrage mit Ticket´;
# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = ´http://www.domain.de/faq_pc/mailok.php´;
# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter = ":\t";
### Ende Konfiguration ###
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, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
header("Location: $strReturnhtml");
exit;
}
?>
<html>
<head>
<title>Bestätigung</title>
</head>
<body>
<font class="text">
Vielen Dank für Ihre Anfrage. Die Daten wurden erfolgreich an uns versendet. Untenstehend Ihre Daten.<br><br><hr>
<?php
echo "Ihre <b>Ticketnummer</b> lautet: ".$_POST["Ticketnummer"]."<br>";
?>
<br><br>Ihre Daten, die Sie uns angegeben haben lauten:<br>
<?php
echo "<b>Name:</b>".$_POST["Name"]."<br>";
echo "<b>Vorname:</b>".$_POST["Vorname"]."<br>";
echo "<b>E-Mail:</b>".$_POST["email"]."<br>";
echo "<b>Problem:</b>".$_POST["Nachricht"]."<br>";
?>
<br><br><br><br><br><br>
</font>
</body>
</html>Antwort 8 von rabies
Lösche mal die beiden Zeilen:
... dann sollte es funktionieren.
header("Location: $strReturnhtml");
exit;
... dann sollte es funktionieren.
Antwort 9 von axe
Hey - es geht. Vielen herzlichen Dank. Ich glaube, jetzt wo ich das Projekt fertig habe, bzw. dann bald mal fertig habe, werde ich mich mal mit PHP auseinander setzen. Scheint schon interessant zu sein - doch komplex *smile*
Vielen Dank nochmals.
Gruss
axe
Vielen Dank nochmals.
Gruss
axe
Antwort 10 von axe
Schaffe ich es auch noch, die Ticketnummer in den Betreff zu setzen?
Formmailer:
Angezeit wird sie nun ja so:
Gruss
axe
Formmailer:
<?php
### Konfiguration ###
# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = ´info@domain.de.ch´;
# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom = ´"Formmailer" <formular@domain.de>´;
# Welchen Betreff sollen die Mails erhalten?
$strSubject = ´Supportanfrage mit Ticket´;
# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = ´http://www.domain.de/faq_pc/mailok.php´;
# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter = ":\t";
### Ende Konfiguration ###
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, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
}
?>Angezeit wird sie nun ja so:
<?php
echo "Ihre <b>Ticketnummer</b> lautet: ".$_POST["Ticketnummer"]."<br>";
?>Gruss
axe
Antwort 11 von rabies
Tausche
durch:
--Sven.
$strSubject = ´Supportanfrage mit Ticket´;
durch:
$strSubject = "Supportanfrage mit Ticket (Ticket-Nr.: ".$_POST["Ticketnummer"].")";
--Sven.
Antwort 12 von axe
Guten Morgen und vielen Dank.
Es hat funktioniert. Nun hab ich es auch selbst *selberaufschulterklopf* geschafft, das email der Absender ist.
Nur noch eine Frage: Woran liegt es, dass das Mail dass ich bekomme nur eine Breite von ca. 30 Zeichen hat und nach dann immer eine Leerlinie hat?
Also in etwa so:
Ticketnummer: 422006-092402
Nachname: Tester
Vorname: Christoph
email: axe@domain.de
Titel: Test
Nachricht: Hier kommt dann eben die
Nachticht mit immer jeweils
einem Zwischenschlag und
mit nur ca. 30 Zeichen pro
Linie.
*******
Der Mailer sieht mom. so aus:
Es hat funktioniert. Nun hab ich es auch selbst *selberaufschulterklopf* geschafft, das email der Absender ist.
Nur noch eine Frage: Woran liegt es, dass das Mail dass ich bekomme nur eine Breite von ca. 30 Zeichen hat und nach dann immer eine Leerlinie hat?
Also in etwa so:
Ticketnummer: 422006-092402
Nachname: Tester
Vorname: Christoph
email: axe@domain.de
Titel: Test
Nachricht: Hier kommt dann eben die
Nachticht mit immer jeweils
einem Zwischenschlag und
mit nur ca. 30 Zeichen pro
Linie.
*******
Der Mailer sieht mom. so aus:
<?php
### Konfiguration ###
# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = ´info@domain.de´;
# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom = " (".$_POST["email"].")";
# Welchen Betreff sollen die Mails erhalten?
$strSubject = " (Ticket-Nr.: ".$_POST["Ticketnummer"].")";
# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = ´http://www.domain.de/faq_pc/mailok.php´;
# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter = ":\t";
### Ende Konfiguration ###
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, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
}
?>Antwort 13 von axe
Vielleicht das letzt Mal; Was stimmt hier nicht, wenn ich die Daten dem Benutzer per Mail zustellen möchte?
$strEmpfaenger = ´info@domain.de," (".$_POST["email"].")"´;
$strEmpfaenger = ´info@domain.de," (".$_POST["email"].")"´;
Antwort 14 von rabies
Probier´s mal so:
Zu dem Problem mit der nur 30 Zeilen breiten Nachricht. Nimm mal ´wrap="hard"´ aus der Textarea im Formular raus (eine andere mögliche Ursache sehe ich nicht und fällt mir jetzt auch nicht ein).
--Sven.
$strEmpfaenger = "info@domain.de", $_POST["email"];Zu dem Problem mit der nur 30 Zeilen breiten Nachricht. Nimm mal ´wrap="hard"´ aus der Textarea im Formular raus (eine andere mögliche Ursache sehe ich nicht und fällt mir jetzt auch nicht ein).
--Sven.
Antwort 15 von axe
Mit der zweiten Aussage hattest du recht - ich habe eben nur den Formmailer angeschaut bzw. nach Problemen durchsucht.
Und betreffend
$strEmpfaenger = "info@domain.de", $_POST["email"];
geht nicht. Ich habe es auch mal mit
$strEmpfaenger = "info@domain.de"; $_POST["email"];
versucht, dann versendet er es an die info Adresse, aber nicht an den Besucher. OK, das ist eigentlich kein Problem. Da müssen wir nicht lange rumbasteln und studieren; Lassen wir.
Vielen Dank.
axe
Und betreffend
$strEmpfaenger = "info@domain.de", $_POST["email"];
geht nicht. Ich habe es auch mal mit
$strEmpfaenger = "info@domain.de"; $_POST["email"];
versucht, dann versendet er es an die info Adresse, aber nicht an den Besucher. OK, das ist eigentlich kein Problem. Da müssen wir nicht lange rumbasteln und studieren; Lassen wir.
Vielen Dank.
axe
Antwort 16 von rabies
blöd... ich sollte nachdenken, bevor ich schreibe:
So MUSS es aber funktionieren:
$strEmpfaenger = "info@domain.de, ".$_POST["email"];
So MUSS es aber funktionieren:
$strEmpfaenger = "info@domain.de, ".$_POST["email"];
Antwort 17 von axe
Also zuerst mal danke, so klappt es. Doch ich muss mich deinem Satz anschliessen, betreffend nachdenken;
Es wird die E-Mailadresse meines Providers als Absender angegeben: anonymous@muster.domain.de.
Und so müsste dann wieder das ganze Script anders aussehen, soviel ich mitbekommen habe? *smile*
Naja, ist Wochenende. Geniesst es :)
Es wird die E-Mailadresse meines Providers als Absender angegeben: anonymous@muster.domain.de.
Und so müsste dann wieder das ganze Script anders aussehen, soviel ich mitbekommen habe? *smile*
Naja, ist Wochenende. Geniesst es :)

