$xNeTworKx.: encode_entities verliert Wirkung durch Subroutine ?

Beitrag lesen

Hi,

Aber in der nächsten Subroutine is die Kodierung schon wieder vergessen worden

wie übergibst Du die Daten der Subroutine, wie verwendest Du sie, wie wurden sie definiert/deklariert, gibt es Referenzen, ...

Hmmm, das ist irgendwie ziemlich umfangreich, aber ich versuche mal das Relevante herauszunehmen :

Ich rufe die Sub "linkverbesserung" auf :

linkverbesserung($pointer,$changedtext,$text,$thema,$name,$usergrafik,$breite,$hoehe,$email,$hpadresse,$icq);

-----------------
Hier ist die Subroutine "linkverbesserung":
---------------
sub linkverbesserung   {
my ($pointer,$neuertext,$text,$thema,$name,$usergrafik,$breite,$hoehe,$email,$hpadresse,$icq) = @_;

$thema = HTML::Entities::encode($thema);
$name = HTML::Entities::encode($name);
$text = HTML::Entities::encode($text);

print <<EOF;
     <link rel="stylesheet" type="text/css" href="neuesposting.css">
     <title>xNeTworKx's Bulletin Board V3.0</title>
     </head>
     <body>
     <div>
    <form action="" method="post">
    <table>
    <colgroup>
    <col width="50%">
    <col width="50%">
    </colgroup>
    <tr><td colspan="2" class="mitte">Die Grafiken müssen jetzt funktionieren, aber es wurden nicht anklickbare Links entdeckt !<br>
                                      Klicke auf "zurück" und setze bitte die Links zwischen ein [link] und [/link].<br>
         Bedenke : Links müssen auch als absolute Pfade geschrieben werden (also inkl. http://, ftp://...)</td></tr>
    <tr><td colspan="2" class="postinghintergrund">$neuertext</td></tr>
    <tr><td colspan="2" class="mitte"> Soll das Posting trotzdem abgeschickt werden ? </td></tr>
    <tr><td class="mitte">zurück, Links korrigieren : <input type="radio" name="action" value="korrigieren" checked></td><td class="mitte">Posting trotzdem abschicken : <input type="radio" name="action" value="abschicken"></td></tr>
    <tr><td colspan="2" class="mitte"><input type="hidden" name="pointer" value="$pointer">
                                      <input type="hidden" name="text" value="$text">
         <input type="hidden" name="thema" value="$thema">
         <input type="hidden" name="name" value="$name">
         <input type="hidden" name="usergrafik" value="$usergrafik">
         <input type="hidden" name="breite" value="$breite">
         <input type="hidden" name="hoehe" value="$hoehe">
         <input type="hidden" name="email" value="$email">
         <input type="hidden" name="hpadresse" value="$hpadresse">
         <input type="hidden" name="icq" value="$icq">
         <input type="submit" class="linkbutton" value="senden"></td></tr>
   </table>
   </form>
   </div>
EOF
}
--------------
Klicke ich jetzt auf "korrigieren" im Formluar, und der Aufruf dieses Teils des CGI Scripts tritt in Kraft, muss ich trotzdem encode_entities nach der Variablenübergabe angeben (siehe unten), weil die Variablen wieder unencoded sind, also im HTML Quelltext wird " und < usw auch so dargestellt. (obwohl ich oben $thema = HTML::Entities::encode($thema); angegeben habe ?)
----------------------------------
if ($query->param('action') eq 'korrigieren')  {
            my $pointer = $query->param('pointer');
     my $text = $query->param('text');
            my $thema = $query->param('thema');
            my $name = $query->param('name');
            my $usergrafik = $query->param('usergrafik');
     my $breite = $query->param('breite');
            my $hoehe = $query->param('hoehe');
            my $email = $query->param('email');
            my $hpadresse = $query->param('hpadresse');
            my $icq = $query->param('icq');
     my $error = 0;

encode_entities($thema);
            encode_entities($name);
            encode_entities($text);
.
.
.
.

$xNeTworKx.