Zur Website

Start Buchtipp Noch mehr Lösungen und Tricks Kontakt Copyright Impressum







Perl Modul:

Formular-Werte lesen

Liest Variablen
eines "get" oder "post"
Request

Nr.23

©2004



Erläuterung:

Die Subroutine HTML_DECODE_VARS liest die Variablen eines "get" oder "post" Requests ein und gibt diese als Hash-Refenz (sehr praktisch!) zurück.

In der beiliegenden Datei PL0006.pm ist die Programmierung als eigenes Perl-Modul ausgeführt, lauffähig sowohl unter Linux/Perl als auch Windows/Active Perl.

Subroutine:

sub HTML_DECODE_VARS
{
my (@pairs,$tmp,$item,$key,$content,$it,$temp,%fields);
if ($ENV{'REQUEST_METHOD'} eq 'GET')
{
# Name-Wert Paare aufspalten
@pairs = split(/&/, $ENV{'QUERY_STRING'});
}
elsif ($ENV{'REQUEST_METHOD'} eq 'POST')
{
read(STDIN,$temp,$ENV{'CONTENT_LENGTH'});
@pairs=split(/&/,$temp);
}
foreach $item(@pairs)
{
($key,$content)=split(/=/,$item,2);
$content=~tr/+/ /;
$content=~s/%(..)/pack("c",hex($1))/ge;
$content=~s/\t/ /g;
$fields{$key}=$content;
}
return(\%fields);
}

Aufruf:

1. Subroutine

$fields = &HTML_DECODE_VARS;

z.B.

$fields->{'Name'} # z.B. "Heinz"

Alle Variablen:

while (($key,$val) = each %{$fields})
{
# Tue etwas mit jedem Paar
}

Die Subroutine muss im Programmtext gespeichert sein.

2. Modul

A:Speichern Sie das Modul in Ihrem Perlverzeichnis unter

/usr/bin/perl/lib/EIGEN/Form/PL0006.pm (Linux)

c:\Perl\lib\EIGEN\Form\PL0006.pm (Windows)

B: Fügen Sie in den Kopf Ihres Perl-Programmes folgende Zeile ein:

use EIGEN::Form::PL0006 qw(HTML_DECODE_VARS);

C: So rufen Sie die Subroutine auf:

$fields = HTML_DECODE_VARS; # ohne "&" korrekt!

Die Subroutine muss nicht im Programmtext gespeichert sein.