CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
29.01.2004, 22:28:35
|
|
Probleme mit einem Formular
Also ich weis das gehört eigentlich nicht zu PHP aber ich habe ein prob mit nem formmailer
und zwar will ich ein Kontaktformular welches ja nach betreff an die jeweiligen zuständigen leute geschickt wird
der code für das form sieht etwa so aus
Code:
<head>
<link rel="stylesheet" type="text/css" href="/css.css">
</head>
<form action="/cgi-bin/form2mail.cgi" method="post" name="kontakt" id="kontakt">
<input type=hidden name="Mail_Subject" value="Innersphere - Mailer">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="50%"> <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif">Thema:</font></div></td>
<td width="50%"> <font face="Verdana, Arial, Helvetica, sans-serif">
<select name="Mail_To" size="1">
<option value="clanleader@innersphere.de" selected>Allgemeines</option>
<option value="serveradmin@innersphere.de">Rootserver</option>
<option value="ircadmin@innersphere.de">IRC Channel</option>
<option value="webmaster@innersphere.de">Homepage</option>
</select>
<br>
</font></td>
</tr>
<tr valign="top">
<td><font face="Verdana, Arial, Helvetica, sans-serif">eMailadresse:</font></td>
<td><font face="Verdana, Arial, Helvetica, sans-serif">
<input name="Mail_From" type="text" id="Mail_From">
</font></td>
</tr>
<tr valign="top">
<td width="50%"><font face="Verdana, Arial, Helvetica, sans-serif">Nachricht:</font></td>
<td width="50%"><font face="Verdana, Arial, Helvetica, sans-serif">
<textarea name="text" cols="50" rows="10" id="text"></textarea>
<br>
</font></td>
</tr>
<tr valign="top">
<td width="50%"><font face="Verdana, Arial, Helvetica, sans-serif"> </font></td>
<td width="50%"><font face="Verdana, Arial, Helvetica, sans-serif">
<input type="submit" name="Submit" value="Nachricht versenden">
<input name="reset" type="reset" id="reset" value="Zurücksetzen">
</font></td>
</tr>
</table>
</form>
vielleicht kann mir da ja einer helfen und zwar wenn ich das form ausfülle und abschicke kommt immer wider die meldung "no recipient"
wäre euch sehr dankbar
|
30.01.2004, 06:58:36
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Viel interessanter wäre der PHP-Code. Das Forumlar ist schon fast egal.
Mal ein Standardposting:
Vermutlich das:
Mit Version 4.1 wurde in PHP ein neues Sicherheitskonzept eingeführt, welches seit Version 4.2 standardmäßig aktiviert ist. Seit dem muss man alle übergebenen Variablen mit
$_GET['variable'] - für Urlparameter
$_POST['variable'] - für mit method=post versendete Parameter
$_COOKIE['variable'] - für Cookies
$_REQUEST['variable'] - $_POST, $_GET und $_COOKIE zusammen
$_FILES['variable'] - für hochgeladene Dateien
$_SERVER['variable'] - für Servervariablen (z.B. $_SERVER['PHP_SELF'])
$_ENV['variable'] - für Umgebungsvariablen
ansprechen. Also ehemals $str mit $_GET['str']
Oder Du setzt in der php.ini register_globals auf on. Davon rate ich aber ab.
|
30.01.2004, 07:33:40
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
Zitat:
Original geschrieben von _c_4_
Viel interessanter wäre der PHP-Code.
|
Das wird schwer werden:
Code:
action="/cgi-bin/form2mail.cgi"
|
30.01.2004, 12:21:06
|
|
eben ich sagte ja das es ein perl script ist
aber ich hoffe das ihr mir auch dabei helfen könnt
|
30.01.2004, 13:33:11
|
Junior Member
|
|
Registriert seit: Jan 2004
Beiträge: 496
|
|
Quellcode! *gier* *sabber* ;)
|
30.01.2004, 18:02:22
|
|
hier ist der quellcode den ich aber in 2 posts teilen muss passt sonst nicht hin
Code:
require 5.002; # needed for Socket.pm
#use strict; # only used during development
use Socket qw(:DEFAULT :crlf);
my $date = localtime;
my $version = '1.4';
my ($smtpserver,$port,@referer,$return_addr,$doLog,$maillogfile,@hidden,%query);
##############################################################################
# USER DEFINEABLE VARIABLES
# Set this to your SMTP server
$smtpserver = 'smtp.clan-web.de';
# Mail port of the SMTP server. Usually 25
$port = 25;
# hosts allowed accessing this cgi
@referer = ('localhost');
# this is the default Return address if no email was submitted by the form
$return_addr = 'www.innersphere.de';
# logging. set to 0 for no logging, 1 for logging errors and 2 for debugging
# (debugging logs all SMTP server replies)
$doLog = 1;
# location of logfile.
# Only used if $doLog is set to 1 or 2 or from the commandline
$maillogfile = 'C:logsF2Merror.log';
# END OF USER DEFINEABLE VARIABLES
##############################################################################
# These fields will not be send with the mail
@hidden = ('recipient','redirect','bgcolor','background','subject',
'link_color','vlink_color','alink_color','text_color','title',
'env_report','return_link_title','return_link_url','required',
'no_table','font_face','font_size','sort','hide_blanks');
# Check if running from commandline
my $clmode = 0;
if (!$ENV{'REQUEST_METHOD'}) {
$clmode = 1;
&commandline_mode;
}
# Get the Form input
%query = &read_input;
# Check Referring URL
&check_referer;
# Check Required Fields
&check_required;
# Send E-Mail
&sendmail;
# Return HTML Page or Redirect User
&return_html;
sub commandline_mode {
my $yesno;
print "Commandline mode. Answers in brackets are default values.n",
"Do you wish to send a test email? ([y]/n) ";
chomp ($yesno = <STDIN>);
if ($yesno =~ /^n/i) {
print "n"; exit;
}
print "Enter recipient(s): [",$return_addr,"] ";
chomp ($query{recipient} = <STDIN>);
$query{recipient} ||= $return_addr;
print "Ok, trying to connect...n";
&sendmail;
print "n"; exit;
}
sub check_referer {
my ($allowed_referer,$referer_OK);
if ($ENV{'HTTP_REFERER'}) {
foreach $allowed_referer (@referer) {
if ($ENV{'HTTP_REFERER'} =~ /$allowed_referer/i) {
$referer_OK = 1;
last;
}
}
}
else {
$referer_OK = 1;
}
if (!$referer_OK) {
&error('Bad Referer');
}
}
sub check_required {
my ($require,@required,@ERROR);
@required = split(/,/,$query{'required'});
foreach $require (@required) {
if (!($query{$require}) || $query{$require} eq ' ') {
push(@ERROR,$require);
}
}
if (@ERROR) {
&error('Blank Fields', @ERROR);
}
}
sub return_html {
my $title = $query{'title'} || "Thank you";
my @TO = split(/,/,$query{'recipient'});
if ($query{'redirect'} =~ /http(s)?://.*..*/) {
print "HTTP/1.0 303 See Otherrn" if $ENV{PERLXS} eq "PerlIS"; # for perlIS.dll
print "Location: $query{'redirect'}nn";
}
else {
&build_body("$title");
print "<center>n";
my $font = &check_font;
print "<H1>$title</H1>n<P><HR size=7 width="75%">n";
# check whether using a table or not. default is yes.
if (!$query{'no_table'}) {
print "<TABLE width="75%">n<TR><TD>n";
&check_font;
}
print "Below is what you submitted to $TO[0] on $daten<p>n";
print "<UL>n";
my ($key,$value,@sorted);
my $sort = $query{'sort'};
if ($sort eq 'alphabetic') {
foreach $key (sort keys %query) {
print "<LI>$key: $query{$key}</LI>n"
unless ((grep {$_ eq $key} @hidden)||(!$query{$key}));
}
}
elsif ($sort =~ /^order:.+,.+/) {
$sort =~ s/order://;
@sorted = split(/,/, $sort);
foreach $key (@sorted) {
if ($query{$key}) {
print "<LI>$key: $query{$key}</LI>n"
unless ((grep {$_ eq $key} @hidden)||(!$query{$key}));
}
}
}
else {
while (($key,$value) = each %query) {
print "<LI>$key: $value</LI>n"
unless ((grep {$_ eq $key} @hidden)||(!$value));
}
}
print "</UL>n";
# check if closing Table tags are needed
if (!$query{'no_table'}) {
print "</FONT>n" if $font;
print "</TD></TR>n</TABLE>n";
}
print "<P><HR width="75%" size=7>n";
# Check for a Return Link
if ($query{'return_link_url'} =~ /http://.*..*/) {
print "<UL>n<LI><A href=ISp//%22$query%7B%27return_link_url%27%7D/%22>";
print $query{'return_link_title'} || $query{'return_link_url'};
print "</A></LI>n</UL>n";
}
print "</CENTER><P><HR></P>n<P align="right"><FONT size=-1>n",
"Created with Form2Mail v$version by <A href=ISp//%22%22,
"http://www.liquidsilver.com/scripts/">Liquid Silver</A></P>n";
print "</FONT>n" if $font;
print "</BODY>n</HTML>n";
}
}
sub sendmail {
my ($iaddr, $paddr, $proto, $a, $i);
my $debug = ($doLog == 2 or $clmode);
my $subject = $query{'subject'} || "WWW Form Submission";
my $from = $query{'email'} || "$return_addr";
my $retaddr = $from;
if ($query{'realname'}) {
$retaddr = '"'.$query{'realname'}.'"'." <$from>";
}
&error("No recipient!") unless $query{'recipient'};
my @TO = split(/,/,$query{'recipient'});
$port ||= 25;
$port = getservbyname($port,'tcp') if $port =~ /D/;
error("Port not valid.") unless $port;
print "Resolving hostname for $smtpserver..." if $clmode;
$iaddr = inet_aton($smtpserver);
error("Can not resolve hostname $smtpserver") unless $iaddr;
print "okn" if $clmode;
$paddr = sockaddr_in($port, $iaddr);
$proto = getprotobyname('tcp');
my $ipstring = inet_ntoa((unpack_sockaddr_in($paddr))[1]);
print "Connecting to $ipstring..." if $clmode;
socket(S, PF_INET, SOCK_STREAM, $proto) or error("socket call failed: $!");
connect(S, $paddr) or error("Unable to connect to $ipstring on port $port: $! (possibly no route to host or connection refused by host)");
print "okn" if $clmode;
select(S); $| = 1; select(STDOUT);
# session is initiated
print "SMTP session initiated. Debug mode is on.nCheck $maillogfile for",
" details of session.n" if $clmode;
if ($debug) {
open LOG, ">>$maillogfile" or error("Could not open logfile $maillogfile: $!");
print LOG '='x79,"n$date SMTP session with $ipstring on port $portn",'='x79,"n";
}
$a=<S>; print LOG strip($a) if $debug;
error("SMTP error: $a") if $a !~ /^2/;
print S "HELO localhost$CRLF";
print LOG "HELO localhostn" if $debug;
$a=<S>; print LOG strip($a) if $debug;
error("SMTP error: $a") if $a !~ /^2/;
print S "MAIL FROM:$from$CRLF";
print LOG "MAIL FROM:$fromn" if $debug;
$a=<S>; print LOG strip($a) if $debug;
error("SMTP error: $a") if $a !~ /^2/;
foreach $i(@TO) {
print S "RCPT TO:<$i>$CRLF";
print LOG "RCPT TO:<$i>n";
$a=<S>; print LOG strip($a) if $debug;
error("SMTP error: $a") if $a !~ /^2/;
}
|
30.01.2004, 18:09:29
|
|
so hier der 2. teil
Code:
# send message body
print S "DATA n";
print LOG "DATA n";
$a=<S>; print LOG strip($a) if $debug;
error("SMTP error: $a") if $a !~ /^3/;
print LOG "Sending messagebody...n" if $debug;
print S "From: $retaddr$CRLF";
print S "To: $TO[0]";
for ($i = 1; $i < @TO; $i++) {
print S ",$TO[$i]";
}
print S "$CRLF";
print S "Subject: $subject$CRLF";
print S "Reply-To: $from$CRLF";
print S "X-Mailer: Form2Mail v$version by Liquid Silver$CRLF";
print S "Below is the result of your email form.$CRLF";
print S "Submitted by $from$CRLF";
print S "$CRLF";
# sort fields
my ($key,$value,@sorted);
my $sort = $query{'sort'} || '';
if ($sort eq 'alphabetic') {
foreach $key (sort keys %query) {
next if grep {$_ eq $key} @hidden;
next if (!$query{$key} && $query{'hide_blanks'});
print S "$key: $query{$key}n";
}
}
elsif ($sort =~ /^order:.+,.+/) {
$sort =~ s/order://;
@sorted = split(/,/, $sort);
foreach $key (@sorted) {
if ($query{$key} || !$query{'hide_blanks'}) {
print S "$key: $query{$key}n"
unless (grep {$_ eq $key} @hidden);
}
}
}
else {
while (($key,$value) = each %query) {
print S "$key: $valuen"
unless ((grep {$_ eq $key} @hidden)||(!$value && $query{'hide_blanks'}));
}
}
print S "$CRLF$CRLF";
# Send Environment variables
my @env_report = split(/,/,$query{'env_report'} || '');
my $env;
foreach $env (@env_report) {
print S "$env: $ENV{$env}$CRLF";
}
print S ".$CRLF";
$a=<S>; print LOG strip($a) if $debug;
print S "QUIT$CRLF";
print LOG "QUITnnn" if $debug;
close LOG if $debug;
print "Mail transmitted.n" if $clmode;
}
sub strip {
$_ = $_[0];
s/(r|n)//g;
return "$_n";
}
sub error {
my ($error,@error_fields) = @_;
my $missing_field;
&build_body("Mail Error") unless $clmode;
if ($error =~ /Bad Referer/) {
print "<H1>Bad Referer - Access Denied</H1>n",
"Sorry, but you are requesting <A href=ISp//%22%22,
"http://www.liquidsilver.com/scripts/">Form2mail</A>n",
"from $ENV{'HTTP_REFERER'}, who is not allowed to access this CGI script.n";
}
elsif ($error =~ /Blank Fields/) {
print "<CENTER>n<H1>Error: Blank Fields</H1>n";
print "<TABLE width="75%">n<TR><TD>n" unless $query{'no_table'};
my $font = &check_font;
print "Sorry, but the following fields were left blank in your submission form:n<P>n";
# Print Out Missing Fields in a List.
print "<DD><UL>n";
foreach $missing_field (@error_fields) {
print "<LI>$missing_field</LI>n";
}
print "</UL>n<P><HR size=7>nThese fields must be filled out before you can ",
"successfully submit the form.nPlease return to the <A href=ISp//%22%22,
"$ENV{'HTTP_REFERER'}">Submission Form</A> and try again.n</P>n";
print "</FONT>" if $font;
print "</TD></TR>n</TABLE>n" unless $query{'no_table'};
print "</CENTER>n";
}
else {
my @recipients = split/,/,$query{'recipient'};
print "<H2>Sorry, an error occured and your mail was not transmitted.</H2>n",
"Please send email directly to <A href="mailto:$recipients[0]">",
"$recipients[0]</A>.nThank you.n<P>Error message: $error</P>";
if ($doLog) {
if (open FILE,">>$maillogfile") {
print FILE "$date $errorn";
print FILE "***form2mail v$version, Perl v$], OS: $^O***n" if $doLog == 2;
close FILE;
}
}
}
print "</BODY></HTML>n" unless $clmode;;
exit;
}
sub build_body {
my $title = $_[0] || "Thank you.";
my ($bgcolor,$background,$link_color,$vlink_color,$alink_color,$text_color) =
( $query{'bgcolor'} || "#FFFFFF",
$query{'background'},
$query{'link_color'} || "#0000FF",
$query{'vlink_color'} || "#660099",
$query{'alink_color'} || "#FF0000",
$query{'text_color'} || "#000000"
);
undef $background if $background !~ /^http(s)?:///i;
print "HTTP/1.0 200 OKrn" if $ENV{PERLXS} eq "PerlIS"; # for perlIS.dll
print "Content-type: text/htmlnn<HTML>n<HEAD>n <TITLE>$title</TITLE>n",
" <META name="generator" content="Form2mail v$version">n",
" <META name="copyright" content="copyright 1996,1997 by",
",",","Liquid Silver, all rights reserved.">n</HEAD>n<BODY ",
",",","bgcolor="$bgcolor" text="$text_color" link="$link_color"",
"vlink="$vlink_color" alink="$alink_color"";
print " background="$background"" if $background;
print ">n";
}
sub check_font {
my $font = 0;
if ($query{'font_face'} && ($query{'font_face'} ne ' ')) {
print "<FONT face="$query{'font_face'}"";
if ($query{'font_size'} && ($query{'font_size'} ne ' '''')) {
print " size="$query{'font_size'}";
}
print "">n";
$font = 1;
}
return $font;
}
sub read_input {
my ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$buffer = $ENV{'QUERY_STRING'};
}
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%(..)/pack("C", hex($1))/eg;
# remove potentially dangerous commands
$value =~ s/<!--(.|n)*-->//g;
$value =~ s/<([^>]|n)*>//g;
$FORM{$name} = $value;
}
%FORM;
}
|
30.01.2004, 18:13:16
|
|
Junior Member
|
|
Registriert seit: Dec 2003
Ort: Wien
Beiträge: 328
|
|
?
Ich hab zwar weder das Problem richtig verstanden noch kann ich perl aber eine if-anweisung wenn gewählt wurde postmaster@innersphere.com dann mail(postmaster@inner...
wahrscheinlich ist das gar nicht dein Problem aber so hab uich das verstanden und if-anweisungen wird es n perl ja doch gebwen oder?
|
31.01.2004, 08:43:34
|
Junior Member
|
|
Registriert seit: Jan 2004
Beiträge: 496
|
|
Du musst in das Formular noch ein Hiddenfeld einbauen das den Namen recipient hat und als Wert eben die Empfängeradresse - dann sollte es gehen.
|
31.01.2004, 17:18:50
|
|
ja bloss ich habe doch mehrere empfänger
muss ich die denn alle eintragen oder wie funzt das
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:07:37 Uhr.
|