mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mi 24.04.2024 15:27 Benutzername: Passwort: Auto-Login

Thema: AlienForm schneidet Text ab. vom 10.06.2004


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Allgemeines - Nonprint -> AlienForm schneidet Text ab.
Autor Nachricht
Annegret
Threadersteller

Dabei seit: 10.06.2004
Ort: Böblingen
Alter: 71
Geschlecht: Weiblich
Verfasst Do 10.06.2004 18:47
Titel

AlienForm schneidet Text ab.

Antworten mit Zitat Zum Seitenanfang

Hallo ins Forum,

sobald jemand in einer Textarea ein Wort in Anführungszeichen schreibt, wird der Text ab dieser Stelle nicht übermittelt. Es handelt sich um KEIN Pflichtfeld und man kann beliebige Zeichen notieren.

Ich benutze Alienform in der englichen Originalversion (AlienForm2 - Released 23 May, 1998.) mit Formularen über mehrere Seiten. Übergeben wird die Eingabe in einem Textfeld, denn ich habe vor dem Absenden nochmal eine Seite, auf der alle Eingaben vor dem Abschicken aufgelistet sind. Auf dieser Seite wird der Text komplett angezeigt - in der Email wird, wie gesagt, der Text ab Anführungszeichen abgeschnitten. Eine Begrenzung der Anzahl von Buchstaben gibt es nicht

Da diese Zeichen (wahrscheinlich andere auch nicht) offensichtlich nicht erlaubt sind, ist meine Frage, ob man das im Script ändern kann.

Wenn jemand Zeit und Lust hat, kann er/sie hier mal das Formular "Alienform" testen. Im Formular "Schritt 3/3" gibt es unten ein Feld "Bemerkungen". Um dieses Feld dreht sich mein Problem. Um den Fehler sehen zu können, muß Eure richtige Mailadresse angeben werden. Es wird nichts gespeichert oder sonst ein Unfug getrieben. Ich bekomme lediglich auch eine Mail, dass ein Testformular abgeschickt wurde.

Für Tipps wäre ich sehr dankbar.

Viele Grüße
Anne

Achja - die übersetzte Version von www.tag4tag.com habe ich auch, aber die läuft leider gar nicht.


Zuletzt bearbeitet von Annegret am Sa 12.06.2004 12:54, insgesamt 4-mal bearbeitet
  View user's profile Private Nachricht senden
aUDIOfREAK

Dabei seit: 04.04.2002
Ort: Ansbach
Alter: 44
Geschlecht: Männlich
Verfasst Do 10.06.2004 19:50
Titel

Antworten mit Zitat Zum Seitenanfang

hm... ohne code wird dir wohl keiner wirklich helfen können... poste mal den code des formulars und den code des verarbeitenden cgi bzw. php-scriptes der das mailen übernimmt. da ist sicherlich nur eine variable vom textfeld falsch gesetzt, weil auf die anzeige-seite werden die inhalte ja übernommen...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Annegret
Threadersteller

Dabei seit: 10.06.2004
Ort: Böblingen
Alter: 71
Geschlecht: Weiblich
Verfasst Fr 11.06.2004 12:17
Titel

Ein abgespektes Formular

Antworten mit Zitat Zum Seitenanfang

Hallo und Dank für die schnelle Antwort.

Damit ich nicht 3 Formulare als Code posten muß, habe ich nochmal ein einseitiges Formular editiert und hier mal die Tabletags weggelassen. Lediglich das Emailfeld ist ein Pflichtfeld und wird mit "re" auf richtige Schreibweise geprüft

--- Seite 1 - das Formular ---
Code:
<form name="form1" method="post" action="../../cgi-bin/mailforms/aftest.pl">
<input name="_browser_out" type="hidden" id="_browser_out" value="form2.html">
<input name="_error_path" type="hidden" id="_error_path" value="error.html">
<input name="re_email" type="text" id="re_email" size="30"><a/td>
<textarea name="nachricht" cols="40" rows="8" id="nachricht"></textarea>
<input type="submit" name="button" value="Abschicken">
<input type="reset" name="button" value="Nein doch nicht" onClick="return confirm('Formular wirklich zur&uuml;cksetzen ?')">
</form>

Legende:
"_browser_out" öffnet nach Abschicken des Formulars "form2.html. In diesem Beispiel die Vorschau, kann aber über beliebig viele Seiten gehen.
"_error_path" zeigt auf eine Fehlerseite.
Die Eingaben werden vom Script in versteckte Felder, oder bei Bedarf als Vorschau in eckige Klammern ausserhalb des Formtags der nächsten Seite geschrieben.

--- Seite 2 - die Vorschau ---
Code:
Email: [re_email]
Ihre Nachricht:
[nachricht]

<form name="alien" method="post" action="../../cgi-bin/mailforms/aftest.pl">
<input name="_browser_out" type="hidden" id="_browser_out" value="form3.html">
<input name="_error_path" type="hidden" id="_error_path2" value="error.html">
<input name="name" type="hidden" id="name2" value="[name]">
<input name="re_email" type="hidden" id="re_email" value="[re_email]">
<input name="nachricht" type="hidden" id="nachricht" value="[nachricht]">
<input type="hidden" name="_send_email1" value="mail.txt">
<input type="hidden" name="_send_email2" value="mail2.txt">
<input type="submit" name="Submit" value="Abschicken">
</form>


Legende:
Die Daten sind also von Seite 1 übernommen worden und können abgeschickt werden.
Mit "_send_email1" und "_send_email2" werden die Daten nun in vordefinierte Textdateien geschrieben, die dann abgeschickt werden.

--- Textdatei - Bestätigungsmail an User ---
Code:
To: [re_email]
From: meine@adresse.de
Subject: ** AlienForm im Test **

Von [re_email] kommt folgende Nachricht:
****************************************************
Nachricht:
[nachricht]
****************************************************


--- Textdatei - Mail an Betreiber der Website ---
Code:
To: meine@adresse.de
From: [re_email]
Subject: ** AlienForm im Test **

Von [re_email] kommt folgende Nachricht:
****************************************************
Nachricht:
[nachricht]
****************************************************

Bis hierher sollten keine Fehler vorliegen.

Zum Veröffentlichen des Scripts.
Mit Urheberrecht habe ich meine schlechten Erfahrungen. Ich poste hier nur den wichtigen Teil. Lediglich das Setup, wie Pfade und Mailservereinstellungen über den Zeitpunkt des Versandes habe ich abgeschnitten.
Code:
# Set this to the list of Valid Referers- ie those sites & pages
# you want to be able to use the script. All others will be denied
# access. You can be very specific so only one page has access, or
# general so a whole site can use it. To allow any site at all to use
# the form, comment out this value entirely.
@Referers       = ('annes-castle.de','www.annes-castle.de');

## DON'T GO ANY FURTHER UNLESS YOU KNOW WHAT YOU ARE DOING! ##
##     NOTHING BELOW THIS LINE NEEDS TO BE CHANGED!!        ##


$error_loop     = 0;
$browser_out    = 0;

if ($ENV{'REQUEST_METHOD'} ne 'POST' and not $ENV{'QUERY_STRING'}) {
    $ENV{'OUT_TITLE'} = 'AlienForm2 Release Edition ($Revision: 1.5 $)';
    $ENV{'OUT_MSG'}   = q|The latest version of this script and the documentation is available
                          from <a href="http://www.cgi.tj">Jon's CGI-Scape.|;
    @msg = (<DATA>);
    @msg = ParseText(@msg);
    BrowserOut(@msg);
    exit(0);
 }
&CheckRef;
&ParseForm;

if (@missing_values or @bad_emails or @only_digits or @only_words or @currency) { Error('evil values') }


foreach $key (keys %FORM) {
    if ($key =~ /^_send_email/) {
        @lines = ReadFile('Email Template',$FORM{$key});
        @lines = ParseText(@lines);
        SendMail(@lines);
    }
    elsif ($key =~ /^_out_file/) {
        @lines = ReadFile('Log File',$FORM{$key});
        @lines = ParseText(@lines);
        LogFile('LogFile Template',@lines);
    }
    elsif ($key =~ /^_browser_out/ and $browser_out < 2) {
        $browser_out++;
        @lines = ReadFile('Browser Template',$FORM{$key});
        @lines = ParseText(@lines);
        BrowserOut(@lines);
    }
    elsif ($key =~ /^_redirect/ and $browser_out < 2) {
        $browser_out++;
        print "Location: $FORM{$key}\n\n";
    }
}

unless ($browser_out) {
    @msg = (<DATA>);
    $ENV{'OUT_TITLE'} = "Submission Successful";
    $ENV{'OUT_MSG'}   = "Your submission was successful. Thank you.";
    @msg              = ParseText(@msg);
    BrowserOut(@msg);
}

exit(0);

sub BrowserOut
    { print "$content_type@_\n" }

sub CheckRef {
    my ($valid_referer, @terms);
    if ((@Referers) and ($ENV{'HTTP_REFERER'})) {
        foreach $referer (@Referers) {
            if ($ENV{'HTTP_REFERER'} =~ m|http.*?://$referer|i) {
                $valid_referer++;
                last;
            }
        }
    }
    else { $valid_referer++ }
    unless ($valid_referer) {
        @terms = split(/\//,$ENV{'HTTP_REFERER'});
        Error('Bad Referer',
            qq['$ENV{'HTTP_REFERER'}' is not authorised to use this script. If you want them to be able to,
            you should add '$terms[2]' to the referer list.]);
     }
}

sub Error {
    ++$error_loop;
    my $title = shift @_;
    my $msg   = shift @_;
    my @error;

    if ($title eq 'evil values') {
        my $val;
        if (@missing_values) {
            $msg = q|<p>Fehler aufgetreten.<br>Folgendes Pflichtfeld wurde nicht ausgefüllt</p><ol type="i">|;
            foreach $val (@missing_values) { $msg .= "<li>$val\n" }
            $msg .= "</ol>\n";
        }
        if (@bad_emails) {
            $msg .= q|<p>Bitte ausfüllen - please complete your request:</p><ol type="i">|;
            foreach $val (@bad_emails) { $msg .= "<li>$val\n" }
            $msg .= "</ol>\n";
        }
        if (@only_digits) {
            $msg .= qq|<p>Bitte verwenden Sie nur Zahlen (0-9) - Field(s) can only be filled in with digits (0-9)(.) for a successful submission:</p><ol type="i">|;
            foreach $val (@only_digits) { $msg .= "<li>$val\n" }
            $msg .= "</ol>\n";
        }
        if (@currency) {
            $msg .= q|<p>The following field(s) can only be filled in with digits (0-9), a decimal place (.), or a dollar sign ($) for a successful submission:</p><ol type="i">|;
            foreach $val (@currency) { $msg .= "<li>$val\n" }
            $msg .= "</ol>\n";
        }
        if (@only_words) {
            $msg .= q|<p>The following field(s) are required to be filled in only with word characters (A-Z, 0-9) before successful submission:</p><ol type="i">|;
            foreach $val (@only_words) { $msg .= "<li>$val\n" }
            $msg .= "</ol>\n";
       }
       $title = 'Fehler aufgetreten';
       $msg .= q[<p>Bitte gehen Sie zurück und vervollständigen Ihre Eingabe.</p>];
    }
    if    ($FORM{'_error_url'})  { print "Location: $FORM{'_error_url'}\n\n" }
    elsif ($FORM{'_error_path'} and $error_loop < 2) {
        $ENV{'OUT_TITLE'} = $title;
        $ENV{'OUT_MSG'}   = $msg;
        @error = ReadFile('Error Template',$FORM{'_error_path'});
        @error = ParseText(@error);
        BrowserOut(@error);
    }
    else {
        @error = (<DATA>);
        $ENV{'OUT_TITLE'} = $title;
        $ENV{'OUT_MSG'}   = $msg;
        @error = ParseText(@error);
        BrowserOut(@error);
    }
    exit(0);
}

sub LogFile {
    my $msg  =  shift @_;
    my $file =  shift @_;
    $file    =~ s[\.\./] []g;
    $file    =~ s/[^\w-\.\/\\]+//g;
    $file    =  $base_path . $file;
    open(FILE,">>$file") or Error('File Access Error',"An error occurred when trying to append to the $msg ($file): $!");
    flock(FILE,2)        or Error('File Lock Error',"An error occured when locking the $msg ($file): $!.");
    print FILE @_;
    close(FILE)          or Error('File Close Error',"An error occurred when close the $msg ($file): $!.");
}

sub ReadFile {
    my $msg  =  shift @_;
    my $file =  shift @_;
    $file    =~ s[\.\./] []g;
    $file    =~ s/[^\w-\.\/\\]+//g;
    $file    = $base_path . $file;
    open(FILE, "$file") or Error('File Access Error',"An error occurred when opening the $msg ($file): $!.");
    my @lines = (<FILE>);
    close(FILE)         or Error('File Close Error',"An error occurred when close the $msg ($file): $!.");
    return @lines;
}

sub ParseForm {
    my ($key, $prefs, $buffer);
    my @pairs = split(/&/, $ENV{'QUERY_STRING'});
    if ($ENV{'REQUEST_METHOD'} eq 'POST') {
        read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
        push @pairs, (split /&/, $buffer);
    }

    foreach my $pair (@pairs) {
        my ($name, $value) = split(/=/, $pair);
        $name =~ tr/+/ /;
        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

        if ($name =~ /_/ and $name !~ /^_/) {
            ($prefs, $key) = split /_/, $name, 2;
            if ($prefs =~ /r/i and not $value)                { push @missing_values, $key }
            if ($prefs =~ /e/i and $value and
                (($value =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/) or
                 ($value !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/)))
                                                              { push @bad_emails, $key      }
            if ($prefs =~ /d/i and $value =~ /[^\d\.]/)       { push @only_digits, $key     }
            if ($prefs =~ /c/i and $value =~ /[^\d\.\$]/)     { push @currency, $key        }
            if ($prefs =~ /w/i and $value =~ /\W/)            { push @only_words, $key      }
            if ($prefs =~ /s/i and $value)                    { $value =~ s/^\s+(.*?)\s+$/$1/}
            if ($prefs =~ /n/i and $value)                    { $value =~ s/[\r\n]+/ /g     }
        }
        if ($prefs =~ /m/i and $FORM{$name}) {
            unless ($FORM{_multi_separator}) {$FORM{_multi_separator} = ', '}
            $FORM{$name} .= $FORM{_multi_separator} . $value;
        }
        else {$FORM{$name} = $value}
    }
}

sub ParseText {
    my ($line, $key, $value, $sub);
    foreach my $line (@_) {
        while (($key => $value) = each %FORM)
            { $line =~ s/\[$key\]/$value/ig }
        while (($key => $value) = each %ENV)
            { $line =~ s/\[\%$key\]/$value/ig }
        $line =~ s/\[[^<](.)*?[^>]\]//g;
    }
    foreach my $line (@_) {
        while ($line =~ /\[<((.)*?)>\]/) {
            my $sub = $1;
            $sub =~ s/[^\d\+\*\/\-%\.x<>\(\)]+//g;
            $sub = eval $sub;
            if ($FORM{_format_decimals} =~ /^\d+$/) {
                $sub = sprintf "%.$FORM{_format_decimals}f", $sub;
            }
            $line =~ s/\[<(.)*?>\]/$sub/
        }
    }
    return @_;
}

sub SendMail {
    if ($smtp_server) { SendMailSMTP(@_) }
    else {
        # check that mailer exists and is executable:
        unless(-X $mail_cmd) {Error('Mailer Command Error', "The mailer '$mail_cmd' does not exist, or is not executable."); return}
        open(MAIL,"|$mail_cmd $mail_flags") || Error('Mailer Open Error',"An error occurred when trying to open the mailer ($mail_cmd): $!.");
        print MAIL @_;
        close(MAIL) or Error('Mail Send Error',"An error occurred when sending the email: $?. Please check the email's headers.");
    }

}

sub SendMailSMTP { # First piece of newish code since 98?
    my @message = @_;

    # codify array to scalar (why was I using arrays to handle the mail in the first place?)
    my $message = join '', @message;
    my (%mail, $head, $body);

    # Load Mail/Sendmail.pm
    eval "use Mail::Sendmail";
    if ($@) {
        Error('Mail Send Error', "Can't load Mail::Sendmail module ($@)");
        return 0;
    }

    $mail{smtp} = $smtp_server;

    # Split email into hash for passing to module
    ($head, $body) = split(/^\r?\n/m, $message, 2);
    # split headers, building a comma seperated list of multi lines
    while ($head =~ /^(\w+)\s*:\s*(.*?)$/mg) { $mail{$1} = $mail{$1} ? "$mail{$1}, $2" : $2 }
    $mail{message} = $body;

    # Send it! (I think Sendmail.pm's use of 'sendmail' is dangerous, but it falls
    # outside of our nameing standard anyway.
    unless (sendmail(%mail)) { Error('Mail Send Error', "Error sending SMTP mail: $Mail::Sendmail::error") }
}

__END__
<html>
<head>
<title>[%OUT_TITLE]</title>
</head>

<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
S C N I P P
</body>
</html>


Ich hoffe nun sehr, dass mir hier weitergeholfen werden kann. Das Script ist zu genial, um es in die Tonne zu treten, aber die User zu bitten nichts zwischen Sonderzeichen zu schreiben kann es auch nicht sein *zwinker*

Herzliche Grüße
Anne

Nachtrag Es geht tatsächlich nur um Wörter in Anführungszeichen. Alle anderen Zeichen (°^ * # usw) werden in der Mail übertragen.


Zuletzt bearbeitet von Annegret am Sa 12.06.2004 12:53, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen div mit min-height schneidet Hintergrund ab
Scrollbar schneidet Inhalte ab
firefox schneidet eingebettetes video im web an
Summa d60/u,, schneidet nicht alles
Schriften gelöscht - Excel/Word Text Text nicht angezeigt
Indesign Text vektorisieren oder Text einbetten
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Allgemeines - Nonprint


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.