Stefan Muenz: SelfHTML Formmailer erweitern

Beitrag lesen

Hallo Sebastian,

Nur würde ich das noch gerne ein bisschen erweitern, hab davon aber nicht wirklich Ahnung.

Also ich versteh ja, wenn man ohne Perlkenntnisse nicht gleich alles versteht. Aber soooo unglaublich undurchsichtig ist doch der Quelltext nun auch wieder nicht, dass man gar nichts mal selber ausprobieren kann, oder? Ich sag das mal deswegen, weil hier in letzter Zeit gerade zu dem Form-Mailer einige solcher Anfragen kommen.

Zuerst würde ich gerne als Absenderadresse die Mail haben die der User in ein Input Feld eingibt.

print MAIL "From: $query->param('email')\n";
(wobei angenommen wird, dass in HTML <input type="text" name="email"> verwendet wurde)
Nur als Beispiel: um so was selber rauszukriegen, muss man einfach mal in den Quelltext einer typischen E-Mail gucken, so bekommt man das "From: " raus. Und der Rest koennte man durch Ableiten von den uebrigen, schon vorhandenen Anweisungen im Script schaffen. Ich sag das jetzt mal so ausfuehrlich hier, nicht um dir speziell Vorwuerfe zu machen - aber einfach so allgemein: auch wenn man keine Ahnung von den Tiefen einer bentutzten Technologie hat, kann man durchaus durch "intuitives Verstehen" einiges rausbekommen. Und dann halt mal ausprobieren.

Zweitens würde ich gern die ganzen hidden Felder diekt in das Script schreiben, wie muss das dann aussehen?

Nun - es werden in dem Script doch folgende Zeilen notiert:

$delimiter = $query->param('delimiter');  # ---> Begrenzerzeichen zwischen name und value
$mailto = $query->param('mailto');        # ---> Empfängeradresse
$returnhtml = $query->param('return');    # ---> URL für Dankeseite
$subject = $query->param('subject');      # ---> E-Mail-Subject

Die loeschst du einfach. Stattdessen notierst du ueberall im weiteren Verlauf des Scriptcodes, wo eine der Variablen $delimiter, $mailto, $returnhtml oder $subject vorkommt, direkt den gewuenschten Wert. Beispiel - du ersetzt die Zeile:
$mailtext = $mailtext.$delimiter;
durch:
$mailtext = $mailtext." = ";
Oder:
print MAIL "To: $mailto\n";
durch:
print MAIL "To: deine.mail@irgendwo.de\n";

Und zu guter letzt würde ich noch gern die IP Adresse mitübermitteln.

print MAIL "IP: $ENV{'REMOTE_ADDR'}\n";
print MAIL "Host: $ENV{'REMOTE_HOST'}\n";

viele Gruesse
  Stefan Muenz