迪拉斯: Direktaufruf oder über Formular

Beitrag lesen

Hey,

Wie kann ich im Perl-Programm erfahren, ob es direkt über die Angabe in der URL-Zeile des Browsers oder über eine href-Angabe in einem anderen Programm oder über ein Formular aufgerufen wurde?

das ist technisch kein Unterschied. In allen Fällen setzt der Browser/Useragent den gleichen Request an den Server ab. Zur Verdeutlichung ein Beispielprogramm:

  
#!perl  
use CGI qw();  
use Data::Dumper;  
my $cgi = new CGI;  
print $cgi->header('text/plain;charset=utf-8');  
print Dumper $cgi;  

* Tue in die Adresszeile des Browsers die Adresse http://localhost/dump?foo=bar;quux=baz;roflcopter
* Lege eine HTML-Datei an, die einen Link auf diese Adresse enthält, lade die Datei in den Browser und folge dem Link
* Lege eine HTML-Datei an, die ein Formular enthält, das auf http://localhost/dump zeigt und die Wertepaare foo=bar, quux=baz und roflcopter enthält, lade die Datei in den Browser und schicke das Formular ab
* Wenn du LWP installiert hast, führe den Befehl aus: lwp-request -m GET http://localhost/dump?foo=bar;quux=baz;roflcopter

In jedem Fall bekommst du dasselbe Ergebnis.

$VAR1 = bless( {
                 '.parameters' => [
                                    'foo',
                                    'quux',
                                    'roflcopter'
                                  ],
                 'use_tempfile' => 1,
                 '.charset' => 'ISO-8859-1',
                 'quux' => [
                             'baz'
                           ],
                 'roflcopter' => [
                                   ''
                                 ],
                 'foo' => [
                            'bar'
                          ],
                 '.fieldnames' => {},
                 '.header_printed' => 1,
                 'escape' => 1
               }, 'CGI' );