Supportnet Computer
Planet of Tech

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:


<?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:

<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:
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:

<?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:

 
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

Antwort 10 von axe

Schaffe ich es auch noch, die Ticketnummer in den Betreff zu setzen?

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

$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:

<?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"].")"´;

Antwort 14 von rabies

Probier´s mal so:
$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

Antwort 16 von rabies

blöd... ich sollte nachdenken, bevor ich schreibe:

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 :)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: