perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 18
Click for quality!




12.02.2012 / 02:02

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragVariableninhalt als -name
Seitenanfang
Hallo,

ich bin neu in Perl, hab bisher nur mit PHP programmiert. Ich hab schon bei google gesucht, wusste aber nicht genau, nach was ich suchen muss, deswegen dachte ich, ich frag mal schnell hier nach:

in PHP kann ich, wenn ich z.B. die Variable $section mit dem Wert "home" und die Variable $home mit dem wert "/path/to/home/" habe, der Variable $content leicht den Wert von $home zuweisen, wenn ich

$content = ${$section}

setze (geht dabei um ein Auslese-Skript von Get-Variablen, ich weiß durchaus, dass ich gleich $content = $home setzen könnte).

Wie mach ich das ganze aber in Perl?

Datum: 02.12.2008-22:39

Beitragre: Variableninhalt als -name
Seitenanfang
Du kannst in $section eine Referenz auf $home speichern. Das geht dann wie folgt
$section=\$home;
Lesen via
$content=$$section;
bzw
$content=${$section}

Damit speicherst du in $section die Speicheradresse, in welcher $home seinen Inhalt geschrieben hat. Letztendlich hast du also damit zwei Variablennamen für einen Wert. Das extra "$" sorgt dafür, dass der Inhalt von $section als Speicheradresse interpertiert wird.
Analog geht das auch mit Arrays und Hashes, wombei du dann beim dereferenzieren anstelle von "$" mit "@" oder "%" arbeiten musst.

Datum: 08.12.2008-22:44

Beitragre: Variableninhalt als -name
Seitenanfang
Du machst das genauso wie bei PHP auch und genauso wie bei PHP solltest du dies nicht tun.
Verwende lieber assoziative Arrays (Hashes).

Damit verhinderst du dass, wenn $section einen unerwarten Wert erhaelt, nicht ungewuenscht auf beliebige Variablen zugegriffen werden kann. Du beschraenkst den Zugriff auf z.Bsp. den Hash.

Angenommen, und dies ist haeufig der Fall, deine Anwendung speichert irgendwo ein Passwort oder einen Schluessel im Klartext (warum auch immer).


my $geheimer_schluessel = "1haslkjasdwer";

Und da _nichts sicher ist_, findet dein Anwender einen Weg $section so zu manipulieren dass sie den Wert "geheimer_schluessel" erhaelt.

my $content = ${$section};

# entspricht
my $content = ${geheimer_schluessel};

# bzw.
my $content = $geheimer_schluessel};


Den Rest kannst du dir ja denken...

Am besten ist es du legst eine Liste gueltiger Werte fest.
Deinen Beispiel nach zu urteilen bietet es sich in deinen Fall besonders an.
Du moechtest doch den Benutzer durch Angabe von einer aehnlichen URL wie

http://.../?section=../../../../geheime_datei

keine ungewollten Zugriff auf Dateien erlauben oder doch?

Datum: 13.12.2008-06:12

-






-
-