SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 29.01.2004, 22:28:35
ISP-Wolvi
Guest
 
Beiträge: n/a
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">&nbsp;</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&uuml;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
Mit Zitat antworten
  #2  
Alt 30.01.2004, 06:58:36
c4 c4 ist offline
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.
Mit Zitat antworten
  #3  
Alt 30.01.2004, 07:33:40
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
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"
Mit Zitat antworten
  #4  
Alt 30.01.2004, 12:21:06
ISP-Wolvi
Guest
 
Beiträge: n/a
eben ich sagte ja das es ein perl script ist
aber ich hoffe das ihr mir auch dabei helfen könnt
Mit Zitat antworten
  #5  
Alt 30.01.2004, 13:33:11
bazubi bazubi ist offline
Junior Member
 
Registriert seit: Jan 2004
Beiträge: 496
Quellcode! *gier* *sabber* ;)
Mit Zitat antworten
  #6  
Alt 30.01.2004, 18:02:22
ISP-Wolvi
Guest
 
Beiträge: n/a
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/;
    }
Mit Zitat antworten
  #7  
Alt 30.01.2004, 18:09:29
ISP-Wolvi
Guest
 
Beiträge: n/a
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;
}
Mit Zitat antworten
  #8  
Alt 30.01.2004, 18:13:16
Benutzerbild von Jacki
Jacki Jacki ist offline
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?
Mit Zitat antworten
  #9  
Alt 31.01.2004, 08:43:34
bazubi bazubi ist offline
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.
Mit Zitat antworten
  #10  
Alt 31.01.2004, 17:18:50
ISP-Wolvi
Guest
 
Beiträge: n/a
ja bloss ich habe doch mehrere empfänger
muss ich die denn alle eintragen oder wie funzt das
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:07:37 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt