Guest peterstuNa dann.
Danke für deine Antwort.
Auch die Template Module sind noch zeitgemäß und werden fleissig genutzt?
2018-03-11T16:23:16 peterstuIch verstehe deine Antwort nicht. Der Perlcode wird doch quasi in die Templates eingebettet oder nicht?
1
2
3
4
5
6
7
8
9
10
my $cgi = CGI->new;
my $param = $cgi->param('action');
my %dispatch = (
speicher => \&speichern,
liste => \&liste,
);
my $sub = $dispatch{$param} || $dispatch{liste};
$sub->();
2018-03-12T10:45:38 reneeDu könntest z.B. eine eigene Version von Mojo::Message schreiben, die die body_params-Methode erweitert...
https://metacpan.org/source/SRI/Mojolicious-7.70/l...
Aber ich lehne mich mal aus dem Fenster und behaupte, dass peterstu das nicht sofort braucht ;-)
2018-03-12T15:24:28 rostiSelbstverständlich kann das mein Parser auch. Das Einzige was ich von CGI.pm übernommen habe ist der Name der Methode. So liefert $self->param('name') den Wert zu diesem Parameter, egal mit welchem Enctype und Requestmethode der Request erfolgte. Wobei dieser Wert natürlich auch eine Liste von Werten sein kann.
1 2 3 4
$VAR1 = { 'timestamp' => 1520945690, 'wide' => 'Tue Mar 13 13:54:50 2018' };
(wide => scalar localtime)
Quotekäme da als Fehlermeldung sofern man Warnungen nicht unterdrückt!Odd number of elements in hash assignment
2018-03-13T13:04:39 rostiUnd: Man kann auch mit den vorhandenen Enctypes so programmieren, daß keine Sicherheitslücken entstehen. Z.B. indem man Schlüsselparameter sauber trennt von Parametern die der Datenübertragung dienen. Genau das konnte man auch schon mit CGI.pm tun indem man davon ausgeht daß param() auch eine Liste liefern kann und wenn man das nicht haben will, mit scalar den scalaren Kontext erzwingt.
Entweder haben das die Kollegen von CCC nicht gewußt oder mit fragwürdigen Absichten falsch in Szene gesetzt. Die Behauptung daß CGI.pm in dieser Hinsicht ein Sicherheitsproblem darstellt ist unsinnig!
QuoteDass man einen skalaren Kontext erzwingen kann, steht ja gar nicht zur Diskussion.
QuoteObwohl ich selbst keine Webentwicklung mache, folgender der Rat: schau dir mal Dancer und Mojolicious an.
1 2 3 4 5 6 7 8 9 10
my $dbh = $self->dbh('webdaten') or die $@; my $q = q( SELECT url, count(url) as cnt FROM log group by url order by cnt desc limit 30 ); my $slice = $dbh->selectall_arrayref($q, { Slice => {}}); if($self->param('load')){ my $j = JSON->new; $self->{CONTENT} = $j->encode($slice); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script id="templ" type="text/plain">
<table class="grid">
<thead>
<tr>
<th>URL</th>
<th>Aufrufe</th>
</tr>
</thead>
<tbody>
@loop_stats@
<tr>
<td>@url@</td>
<td>@cnt@</td>
</tr>
@endloop@
</tbody>
</table>
</script>
2018-03-12T22:31:14 peterstuSieht gar nicht so schwer aus.
Mir hat damals HTML::Template gut gefallen. Das ist dann jetzt wohl die Weiterentwicklung.
2018-03-12T22:22:27 peterstuIch habe nichts anderes vor. Ich wüsste gerade nicht, was ich an Funktionalität mit einem Framework hinzufügen könnte. Mir ist nicht klar, was damit alles möglich ist. Meine Idee soll eigentlich Betriebsgeheiknis bis zur Vorstellung bleiben. :)