Hi Leute!
Hab keine Ahnung vom Ganzen. Habs geschafft einen Shop zu konstruieren. Der läuft.
Nur, wenn ein User die Daten nun abschicken möchte hab ich das Problem, dass zwar
die Formularfelder ankommen. Die Daten des Shops sind in einer normalen Tab ebenfalls
im Form inegriert werden aber nicht verschickt. Gibts eine Möglichkeit die Eingabefelder und die Tab zu versenden??
Danke ich steh im Walde
Matthias
Das script mit dem ich die Form Felder aus HTML versende:
#! /usr/local/bin/perl
#
# Express-Mail Script:
# ===========================
use CGI qw(:standard);
use strict;
# ===========================
# Konfiguration
# ===========================
# E-Mail an die das Mail gesendet werden soll
# ist jeweils als eigenes hidden Field in der
# HTML Seite vorhanden.
# Ebenso die E-Mail Absender-Adresse, die direkt
# aus den Formular gelesen wird, dies ermöglicht
# die Verwendung von Reply.
# default Adressen
# ===========================
my ($MAILTO) = "weber\@as-verlag.ch";
my ($MAILFROM) = "Webserver <weber\@as-verlag.ch>";
# E-Mail Titel
# ===========================
my ($MAILSUBJ) = "Bestellung AS Verlag";
# ===========================
# Applikations Angaben
# ===========================
# Mailformular für Express Seite. Der Empfänger kann
# via ein hidden Field in der Seite bestimmt werden.
# Dies ermöglicht einfaches ändern des Empfängers.
# HTML-Seite welche als Bestaetigung fuer das Ausfuellen des
# Formulars ausgegeben werden soll.
# Die Adresse wird als Redirect an den Browser geschickt.
# wenn in cgi-bin Directory, sonst volle URL: http://...
# ===========================
my ($OKURL) = "http://www.as-verlag.ch/neu/warenkorb/danke.html";
my ($ERRURL) = "http://www.as-verlag.ch/neu/warenkorb/fehler.html";
# Reihenfolge der Benutzerdaten
# ===========================
my (@ORDER0) = ("Vorname", "Nachname", "Strasse", "Ort", "PLZ", "Land", "e-Mail");
# Verlangte Eingaben (müssen gemacht werden)
# ===========================
my (@REQUIRED) = ("Vorname", "Nachname", "Strasse", "Ort", "PLZ", "Land");
# Titel zur Mail
# ===========================
my (@MAINTITLE) = ("Bestellung\n\n");
# ABSTAND von links
# Da z.T. keine Tabulatoren unterstützt sind,
# kann nun der Abstand direkt angegeben werden
# dabei sollten die einzelnen Listeneinträge nicht
# mehr Zeichen als der Abstand haben.
# ===========================
my ($ABSTAND) = 25;
# != 0, alle Felder des Bestellers ausgeben, auch solche ohne Inhalt
# 0, nur die ausgefuellten Felder versenden
my ($SHOWALL) = 0;
#################################################################
#################################################################
#
# Unterhalb dieser Linie ist nichts zu veraendern
#
#################################################################
#################################################################
# Pfad zu sendmail
my ($SENDMAIL) = "/usr/lib/sendmail";
my ($query) = CGI::new; # neues CGI-Object
my ($text) = "";
my ($noerror) = 1;
&check_required if (@REQUIRED);
&prepare;
&send_mail ($text);
##################################################################
# Testen ob alle gewuenschten Felder gefuellt wurden
##################################################################
sub check_required
{
my ($missing) = 0;
foreach (@REQUIRED) {
$missing = 1 unless ($query->param($_));
}
if ($missing) { # etwas fehlt?
$noerror = 0;
&redirect ($ERRURL);
}
}
##################################################################
# prepare bereitet den zu schreibenden Text vor.
##################################################################
sub prepare
{
$MAILTO = $query->param("Empfaenger");
$MAILFROM = $query->param("e-Mail");
# Keine Reihenfolge angegeben? Dann alle beliebig
$text = @MAINTITLE[0];
foreach (@ORDER0) {
next unless ($SHOWALL || $query->param($_));
my $tabtext = ": ";
my $len = length($_);
# with tabulators
# my $counttab = 2 - (($len + 1) / 8);
# $counttab = $counttab * 8;
my $counttab = $ABSTAND - $len;
if ($counttab < 0) {
$counttab = 0;
}
for (my $ic = 0 ; $ic < $counttab; $ic++){
$tabtext .= " ";
}
$text .= $_;
$text .= $tabtext;
$text .= $query->param($_);
$text .= "\n";
}
}
##################################################################
# Mail versenden
##################################################################
sub send_mail
{
if ($noerror){
if (open (SM, "|$SENDMAIL $MAILTO")) {
print SM "From: $MAILFROM\n";
print SM "To: $MAILTO\n";
print SM "Subject: $MAILSUBJ\n";
print SM "X-Info: Generated by Webserver CGI-Script\n";
print SM "\n";
print SM "Ausgefuelltes Web-Formular auf ", $query->server_name, "\n";
print SM "Zugriff von ", $query->remote_addr, " (",
$query->remote_host, ")\n";
print SM "\n";
print SM @_;
close (SM);
&redirect ($OKURL);
} else {
# Fehler, Mail kann nicht gesendet werden
&local_error ("Sendmail Error");
}
}
}
sub local_error
{
my ($fehler) = @_;
print $query->header;
print "<html>\n<head>\n";
print "<title>Fehler im Mailscript</title>\n";
print "</head>\n<body>\n";
print "<h1>Fehler im Mailscript</h1>\n";
print "Im Mailscript ist ein Fehler aufgetreten: ";
print "<b>$fehler</b>\n";
print "</body></html>\n";
}
sub redirect
{
my ($url) = @_;
print $query->redirect ($url);
}
#print SM "Die E-Mail des Kunden wurde direkt als Absenderandresse eingefüllt!";
Hab keine Ahnung vom Ganzen. Habs geschafft einen Shop zu konstruieren. Der läuft.
Nur, wenn ein User die Daten nun abschicken möchte hab ich das Problem, dass zwar
die Formularfelder ankommen. Die Daten des Shops sind in einer normalen Tab ebenfalls
im Form inegriert werden aber nicht verschickt. Gibts eine Möglichkeit die Eingabefelder und die Tab zu versenden??
Danke ich steh im Walde
Matthias
Das script mit dem ich die Form Felder aus HTML versende:
#! /usr/local/bin/perl
#
# Express-Mail Script:
# ===========================
use CGI qw(:standard);
use strict;
# ===========================
# Konfiguration
# ===========================
# E-Mail an die das Mail gesendet werden soll
# ist jeweils als eigenes hidden Field in der
# HTML Seite vorhanden.
# Ebenso die E-Mail Absender-Adresse, die direkt
# aus den Formular gelesen wird, dies ermöglicht
# die Verwendung von Reply.
# default Adressen
# ===========================
my ($MAILTO) = "weber\@as-verlag.ch";
my ($MAILFROM) = "Webserver <weber\@as-verlag.ch>";
# E-Mail Titel
# ===========================
my ($MAILSUBJ) = "Bestellung AS Verlag";
# ===========================
# Applikations Angaben
# ===========================
# Mailformular für Express Seite. Der Empfänger kann
# via ein hidden Field in der Seite bestimmt werden.
# Dies ermöglicht einfaches ändern des Empfängers.
# HTML-Seite welche als Bestaetigung fuer das Ausfuellen des
# Formulars ausgegeben werden soll.
# Die Adresse wird als Redirect an den Browser geschickt.
# wenn in cgi-bin Directory, sonst volle URL: http://...
# ===========================
my ($OKURL) = "http://www.as-verlag.ch/neu/warenkorb/danke.html";
my ($ERRURL) = "http://www.as-verlag.ch/neu/warenkorb/fehler.html";
# Reihenfolge der Benutzerdaten
# ===========================
my (@ORDER0) = ("Vorname", "Nachname", "Strasse", "Ort", "PLZ", "Land", "e-Mail");
# Verlangte Eingaben (müssen gemacht werden)
# ===========================
my (@REQUIRED) = ("Vorname", "Nachname", "Strasse", "Ort", "PLZ", "Land");
# Titel zur Mail
# ===========================
my (@MAINTITLE) = ("Bestellung\n\n");
# ABSTAND von links
# Da z.T. keine Tabulatoren unterstützt sind,
# kann nun der Abstand direkt angegeben werden
# dabei sollten die einzelnen Listeneinträge nicht
# mehr Zeichen als der Abstand haben.
# ===========================
my ($ABSTAND) = 25;
# != 0, alle Felder des Bestellers ausgeben, auch solche ohne Inhalt
# 0, nur die ausgefuellten Felder versenden
my ($SHOWALL) = 0;
#################################################################
#################################################################
#
# Unterhalb dieser Linie ist nichts zu veraendern
#
#################################################################
#################################################################
# Pfad zu sendmail
my ($SENDMAIL) = "/usr/lib/sendmail";
my ($query) = CGI::new; # neues CGI-Object
my ($text) = "";
my ($noerror) = 1;
&check_required if (@REQUIRED);
&prepare;
&send_mail ($text);
##################################################################
# Testen ob alle gewuenschten Felder gefuellt wurden
##################################################################
sub check_required
{
my ($missing) = 0;
foreach (@REQUIRED) {
$missing = 1 unless ($query->param($_));
}
if ($missing) { # etwas fehlt?
$noerror = 0;
&redirect ($ERRURL);
}
}
##################################################################
# prepare bereitet den zu schreibenden Text vor.
##################################################################
sub prepare
{
$MAILTO = $query->param("Empfaenger");
$MAILFROM = $query->param("e-Mail");
# Keine Reihenfolge angegeben? Dann alle beliebig
$text = @MAINTITLE[0];
foreach (@ORDER0) {
next unless ($SHOWALL || $query->param($_));
my $tabtext = ": ";
my $len = length($_);
# with tabulators
# my $counttab = 2 - (($len + 1) / 8);
# $counttab = $counttab * 8;
my $counttab = $ABSTAND - $len;
if ($counttab < 0) {
$counttab = 0;
}
for (my $ic = 0 ; $ic < $counttab; $ic++){
$tabtext .= " ";
}
$text .= $_;
$text .= $tabtext;
$text .= $query->param($_);
$text .= "\n";
}
}
##################################################################
# Mail versenden
##################################################################
sub send_mail
{
if ($noerror){
if (open (SM, "|$SENDMAIL $MAILTO")) {
print SM "From: $MAILFROM\n";
print SM "To: $MAILTO\n";
print SM "Subject: $MAILSUBJ\n";
print SM "X-Info: Generated by Webserver CGI-Script\n";
print SM "\n";
print SM "Ausgefuelltes Web-Formular auf ", $query->server_name, "\n";
print SM "Zugriff von ", $query->remote_addr, " (",
$query->remote_host, ")\n";
print SM "\n";
print SM @_;
close (SM);
&redirect ($OKURL);
} else {
# Fehler, Mail kann nicht gesendet werden
&local_error ("Sendmail Error");
}
}
}
sub local_error
{
my ($fehler) = @_;
print $query->header;
print "<html>\n<head>\n";
print "<title>Fehler im Mailscript</title>\n";
print "</head>\n<body>\n";
print "<h1>Fehler im Mailscript</h1>\n";
print "Im Mailscript ist ein Fehler aufgetreten: ";
print "<b>$fehler</b>\n";
print "</body></html>\n";
}
sub redirect
{
my ($url) = @_;
print $query->redirect ($url);
}
#print SM "Die E-Mail des Kunden wurde direkt als Absenderandresse eingefüllt!";