Eine Variable über 2 Formulare weitergeben
tommyboy
- programmiertechnik
Servus Selfhtmler...
bin so langsam am verzweifeln...
Ich versuche ein Serverseitiges Kontaktformular aufzubauen, das an mehrere E-Mailaddis versenden kann,
Hierfür habe ich in den Seiten wo eine Kontaktaufnahme zu den Personen erwünscht ist einen Button unter die jeweilige Person gesetzt und als Form Deklariert.
<form name="1" action="kontakt.php" method="post">
<input name="1" type="submit" value="Mail-Kontakt">
</form>
Hierüber wird jetzt afair der Wert "1" an die kontakt.php übergeben.
Soweit so gut... das funktioniert auch jetzt.
In der Kontakt.php wird nun aus einer MySQL Tabelle die zugehörige E-Mail ausgelesen (Auch das klappt).
Nun soll diese E-Mailadresse an die Mail.php weitergeleitet werden und das klappt nicht da siese ja nicht im Form-Tag steht... ;(
Wie kann ich das erreichen ?
zum anschauen:
http://www.schuetzenverein-sande.de/php/gesetz_vorstand.php
Hallo Tommy!
[...] der Wert "1" an die kontakt.php übergeben.
In der Kontakt.php wird nun aus einer MySQL Tabelle die zugehörige E-Mail ausgelesen (Auch das klappt).
Nun soll diese E-Mailadresse an die Mail.php weitergeleitet werden und das klappt nicht da siese ja nicht im Form-Tag steht... ;(
Wie kann ich das erreichen ?
Also, kontakt.php erzeugt ein weiteres Formular, oder sehe ich das falsch?
Dann kannst Du doch dort einfach ein hidden-Feld mit der ID einbauen, und erst in der mail.php aus dieser ID dann die E-Mail-Adresse machen?!
Ähm, ich hab mir grad den ersten Button angeschaut, der sieht im Moment anders aus, wie du gepostet hast, nämlich so:
<form action="kontakt.php?mailan={ID}">
<input type="submit" name="{ID}" value="Mail-Kontakt">
Wozu die ID zweimal übergeben?
Ich befürchte, ich habe Dein Problem noch nicht so ganz verstanden - aber die selbe ID zweimal zu übergeben ist definitiv einmal zu viel ;)
MfG
Götz
Hallo Götz,
Also, kontakt.php erzeugt ein weiteres Formular, oder sehe ich das falsch?
jain - es ruft nur die Mail.php auf (überprüfen und versenden des Mailstrings) von der dann ausgegeben wird ob das versenden geklappt hat oder nicht ...
Dann kannst Du doch dort einfach ein hidden-Feld mit der ID einbauen, und erst in der mail.php aus dieser ID dann die E-Mail-Adresse machen?!
Also nochmal zur besseren verständnis wie mir das vorschwebt---
Von der 1. Seite aus "Button-Klick" übergabe ID des Buttons...
mit POST an Kontakt.php.
Hier auslesen ID und dann zuweisen der Mailaddi-
<Click auf Absenden> Aufruf der Mail.php, zusammensetzen des MailStrings und versenden der Mail - ausgabe ob geklappt hat oder nicht ...
wenn es da eine einfachere Lösung gibt bin ich für jede Anregung zu haben !
Hello,
jain - es ruft nur die Mail.php auf (überprüfen und versenden des Mailstrings) von der dann ausgegeben wird ob das versenden geklappt hat oder nicht ...
Dann kannst Du doch dort einfach ein hidden-Feld mit der ID einbauen, und erst in der mail.php aus dieser ID dann die E-Mail-Adresse machen?!
Also nochmal zur besseren verständnis wie mir das vorschwebt---
Von der 1. Seite aus "Button-Klick" übergabe ID des Buttons...
mit POST an Kontakt.php.
Hier auslesen ID und dann zuweisen der Mailaddi-
<Click auf Absenden> Aufruf der Mail.php, zusammensetzen des MailStrings und versenden der Mail - ausgabe ob geklappt hat oder nicht ...
wenn es da eine einfachere Lösung gibt bin ich für jede Anregung zu haben !
Ganz im Gegenteil! Damit Du Dir nicht aus Versehen ein "open relay" bastelst, musst Du das Ganze noch viel komplexer gestalten. Anderenfalls könntest Du leicht als Mitstörer verurteilt werden, wenn über dein Relay Spam verschickt wird. Von Mailern sollte man solange die Finger lassen, bis man selber weiß, wie sie funktionieren. Also auch keine fertigen ungeprüft einsetzen, denn ca. 80% davon (geschätzt) haben das Problem mit der Sicherheit.
Außerdem würde ich das Kontakt- und das Sendescript in einem "Affenformular" zusammenfassen, damit das Projekt wartbar bleibt und man leicht Formular-IDs gegen (un-)beabsichtigtes Mehrfachmail einsetzen kann.
Von einer wirklichen Lösung für einen _öffentlichen_ Webserver bist Du also noch weit entfernt. Für Übungen im LAN ist der Schritt schon ein Baustein zum Ziel... ;-))
#####################
Bitte sei vorsichtig!
#####################
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
<form name="1" action="kontakt.php" method="post">
<input name="1" type="submit" value="Mail-Kontakt">
</form>
Hierüber wird jetzt afair der Wert "1" an die kontakt.php übergeben.
Nein, hierüber wird das Name-Value-Pair "1=Mail-Kontakt" an das Script übergeben.
1. Parameternamen sollten immer mit einem Buchstaben anfangen
2. es ist überhaupt kein "Datenwert" vorhanden
Handelt es sich denn um eine Liste mit Mailempfängern? Dann würde sich doch vielleicht ein Radio oder eine Checkbox als Input-Type besser eignen?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
<form name="1" action="kontakt.php" method="post">
<input name="1" type="submit" value="Mail-Kontakt">
</form>Hierüber wird jetzt afair der Wert "1" an die kontakt.php übergeben.
Nein, hierüber wird das Name-Value-Pair "1=Mail-Kontakt" an das Script übergeben.
- Parameternamen sollten immer mit einem Buchstaben anfangen
- es ist überhaupt kein "Datenwert" vorhanden
Handelt es sich denn um eine Liste mit Mailempfängern? Dann würde sich doch vielleicht ein Radio oder eine Checkbox als Input-Type besser eignen?
Tom
hallo Tom - nein Keine Liste mit Mailempfängern es soll immer nur ein Empfänger angeschrieben werden...
Schau dir die Site mal an ... dann siehst du evtl. warum ich das so machen will
gruß Tommyboy
Hello,
Handelt es sich denn um eine Liste mit Mailempfängern? Dann würde sich doch vielleicht ein Radio oder eine Checkbox als Input-Type besser eignen?
hallo Tom - nein Keine Liste mit Mailempfängern es soll immer nur ein Empfänger angeschrieben werden...
Schau dir die Site mal an ... dann siehst du evtl. warum ich das so machen will
Ich habe es mir angeschaut und fünf Empfänger festgetellt. Das ist also eine Liste von fünf möglichen, aus dnen immer nur einer ausgewählt werden soll.
da bevorzuge ich folgendes Konstrukt:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="post"
enctype="multipart/form-data">
<p><img src="bild1.jpg"><br />
<input type="submit" name="btn[mail][1]" value="Mitteilung schicken">
</p>
<p><img src="bild2.jpg"><br />
<input type="submit" name="btn[mail][2]" value="Mitteilung schicken">
</p>
<p><img src="bild3.jpg"><br />
<input type="submit" name="btn[mail][3]" value="Mitteilung schicken">
</p>
<!-- u.s.w. -->
</form>
Kopier dir das mal auf Deine Platte und tausche action="..." zum Testen gegen
action="http://selfhtml.bitworks.de/debug/kontrolle.php"
aus. Dann schaust Du Dir die Post-Variablen an und machst Dir deinen reim darauf.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Ich habe es mir angeschaut und fünf Empfänger festgetellt. Das ist also eine Liste von fünf möglichen, aus dnen immer nur einer ausgewählt werden soll.
Tom
ja... gut für diese Seite trifft das mit 5 Empfängern zu...
auf anderen Seiten kommen aber noch mehrere hinzu...
Zum Ende sind das aber bis zu 40 E-MailAddressen...
Was natürlich nicht vom eigentlichen Problem ablenken soll...
In sofern hast du recht.
Habe das jetzt mal so geändert, wie du Vorgeschlagen hast.
das Ergebnis der Post sieht so aus:
POST-VariablenArray
(
[btn] => Array
(
[2] => Mail-Kontakt
)
)
und das bei allem - Egal ob 1, 2 oder sonst was ...
Soll das heissen, das ich dann dementsprechend den Button Text ändern muß ? oder die ID des Buttons ?
Hello,
ja... gut für diese Seite trifft das mit 5 Empfängern zu...
auf anderen Seiten kommen aber noch mehrere hinzu...
Zum Ende sind das aber bis zu 40 E-MailAddressen...
Was natürlich nicht vom eigentlichen Problem ablenken soll...
In sofern hast du recht.Habe das jetzt mal so geändert, wie du Vorgeschlagen hast.
das Ergebnis der Post sieht so aus:
POST-VariablenArray
(
[btn] => Array
(
[2] => Mail-Kontakt
))
und das bei allem - Egal ob 1, 2 oder sonst was ...
Soll das heissen, das ich dann dementsprechend den Button Text ändern muß ? oder die ID des Buttons ?
... name="btn[mail][2]" value="Mail-Kontakt" ...
war mein Vorschlag. Das hat Vorteile
mit if(isset($_POST['btn']['mail'])
kann man feststellen, ob die integrierte Mailfunktion aufgerufen werde sollte. Die ruft man dan mit
$mailok = send_mail($_POST['btn']['mail'], $_maildata)
auf und kann darin dann danach fragen, welche Mailadresse zu welchem Index gehört und kann diese Mail versenden.
Auf diese Weise kann man auch umfangreiche Formulare sauber strukturieren und jeweils die passenede Kategorie mittels include_once() zur Abarbeitung dazuladen. Das hält das Kernprogramm klein und verursacht daruch nicht Millionen von Bytes unnützen Speicherbedarfs.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
... name="btn[mail][2]" value="Mail-Kontakt" ...
war mein Vorschlag. Das hat Vorteile
mit if(isset($_POST['btn']['mail'])
kann man feststellen, ob die integrierte Mailfunktion aufgerufen werde sollte. Die ruft man dan mit
$mailok = send_mail($_POST['btn']['mail'], $_maildata)
auf und kann darin dann danach fragen, welche Mailadresse zu welchem Index gehört und kann diese Mail versenden.
Auf diese Weise kann man auch umfangreiche Formulare sauber strukturieren und jeweils die passenede Kategorie mittels include_once() zur Abarbeitung dazuladen. Das hält das Kernprogramm klein und verursacht daruch nicht Millionen von Bytes unnützen Speicherbedarfs.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Danke erstmal
Werde es mir zu gemüte führen...
Hi,
<input type="hidden" name="weiterleiten" value="daswillichhaben">
So vielleicht?
E7