Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision f6e5b55a

Von Moritz Bunkus vor mehr als 17 Jahren hinzugefügt

  • ID f6e5b55ae22f3fda6863e8a14e07bc8ca6664564
  • Vorgänger e765448c
  • Nachfolger 5b60c0df

Benutze das Perl-Modul "YAML", um $form in einen String umzuwandeln und später daraus wieder herzustellen, da YAML im Gegensatz zu "Data::Dumper" ohne Perls "eval()" auskommt, sondern einen sicheren Parser zur Verfügung stellt. Damit kann die serialisierte $form auch über ein Formular vom Benutzer stammen, ohne ein Sicherheitsproblem darzustellen.

Unterschiede anzeigen:

bin/mozilla/common.pl
9 9
#
10 10
######################################################################
11 11

  
12
use Data::Dumper;
12
use YAML;
13 13

  
14 14
use SL::Common;
15 15

  
16 16
sub save_form {
17 17
  $lxdebug->enter_sub();
18 18

  
19
  my (@names, @values);
20
  foreach my $key (keys(%{$form})) {
21
    push(@names, "\$form->{\"$key\"}");
22
    push(@values, $form->{$key});
23
  }
24
  my $dumper = Data::Dumper->new(\@values, \@names);
25
  $dumper->Indent(0);
26
  my $old_form = $dumper->Dump();
19
  my $yaml = new YAML;
20
  $yaml->Indent(1);
21
  my $old_form = $yaml->dump($form);
22
  $old_form =~ s|!|!!|g;
23
  $old_form =~ s|\n|!n|g;
24
  $old_form =~ s|\r|!r|g;
25
  $lxdebug->message(0, "yeah!???\n\n$old_form\n\n\n");
27 26

  
28 27
  $lxdebug->leave_sub();
29 28

  
......
36 35
  my ($old_form, $no_delete) = @_;
37 36

  
38 37
  map({ delete($form->{$_}); } keys(%{$form})) unless ($no_delete);
39
  eval($old_form);
38
  $old_form =~ s|!r|\r|g;
39
  $old_form =~ s|!n|\n|g;
40
  $old_form =~ s|!!|!|g;
41
  $form = YAML::Load($old_form);
40 42

  
41 43
  $lxdebug->leave_sub();
42 44
}

Auch abrufbar als: Unified diff