Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 570abc83

Von Moritz Bunkus vor mehr als 14 Jahren hinzugefügt

  • ID 570abc830fa2c4382d1b731297420c4eefde8cc4
  • Vorgänger 2827b2dc
  • Nachfolger 7a604472

Scriptparameter sowohl via %ENV als auch von @ARGV und STDIN auswerten

Bisher war es so, dass -- in aufsteigender Priorität -- entweder STDIN
mit $ENV{QUERY_LENGTH}, $ENV{QUERY_STRING} oder $ARGV0 als Eingabe
gelesen wurde. Nun werden alle drei Kanäle in der Reihenfolge
$ENV{QUERY_STRING}, $ARGV0 und STDIN gelesen und ausgewertet. Die
Eingaben überschreiben sich nur bei identischen Keys, ergänzen sich
aber ansonsten.

Beispiel:

<form method="post" action="am.pl?who=me">
<input type="submit" name="action" value="Gogogo">
</form>

sorgt für zwei Key/Value-Paare in $form; who => me und action => Gogogo.

Unterschiede anzeigen:

SL/Form.pm
243 243
    tie %{ $self }, 'SL::Watchdog';
244 244
  }
245 245

  
246
  read(STDIN, $_, $ENV{CONTENT_LENGTH});
246
  bless $self, $type;
247 247

  
248
  if ($ENV{QUERY_STRING}) {
249
    $_ = $ENV{QUERY_STRING};
250
  }
248
  $self->_input_to_hash($ENV{QUERY_STRING}) if $ENV{QUERY_STRING};
249
  $self->_input_to_hash($ARGV[0])           if @ARGV && $ARGV[0];
251 250

  
252
  if ($ARGV[0]) {
253
    $_ = $ARGV[0];
251
  if ($ENV{CONTENT_LENGTH}) {
252
    my $content;
253
    read STDIN, $content, $ENV{CONTENT_LENGTH};
254
    $self->_request_to_hash($content);
254 255
  }
255 256

  
256
  bless $self, $type;
257

  
258
  $self->_request_to_hash($_);
259

  
260 257
  my $db_charset   = $main::dbcharset;
261 258
  $db_charset    ||= Common::DEFAULT_CHARSET;
262 259

  

Auch abrufbar als: Unified diff