Thread HTML Seite mit Links mittels Perl-Module erstellen (53 answers)
Opened by rooky at 2007-10-25 01:56

GwenDragon
 2007-10-27 16:01
#101458 #101458
User since
2005-01-17
14762 Artikel
Admin1
[Homepage]
user image
Der Server kann nur Dateien ausliefern, die im Documentroot sind!
Dein Homeverzeichnis ist eben nicht Documentroot.

Vielleicht hilft folgendes abzuändern:

//EDIT:
Zeile 10:
löschen!

Wenn du pfad als Parameter mit dem absoluten Pfad an das CGI-Skript übergibst, dann wird nur da gesucht, ansonsten im HOME-Verzeichnis.
Zeile 12:
statt
Code: (dl )
find( \&wanted, '.' );
dann
Code: (dl )
1
2
3
4
5
#unbedingt kompletten Pfad angeben!
my $cgih = new CGI;
my $suchpfad = $cgih->param("pfad") || $ENV{HOME};
find( \&wanted, $suchpfad ); # im Homeverzeichnis suchen!
print $cgih->header();

Die Angabe eines Pfades als CGI-Parameter ist aber nicht ohne Risiko. Damit können dann alle Dateien in dem Pfad geholt werden!

Zeile 23:
statt
Code: (dl )
push @files, $_ if /\.pdf$/;
dann
Code: (dl )
push @files, "$File::Find::dir/$_" if /\.pdf$/;


Zeile 29:
statt
Code: (dl )
<%LOOP LINKS %><li><a href="<%= HREF ESCAPE=URL %>"><%= TITLE ESCAPE=HTML %></a></li> 
dann
Code: (dl )
<%LOOP LINKS %><li><a href="file://localhost/<%= HREF ESCAPE=URL %>"><%= TITLE ESCAPE=HTML %></a></li> 

Durch das Hinzufügen von file:// wird lokal auf die Dateien zugeriffen.


Wenn du also das CGI so aufrufst:
http://localhost/~user/skript.pl
wird alles in deinem Homeverzeichnis durchsucht!

Wenn du also das CGI so aufrufst:
http://localhost/~user/skript.pl?pfad=/home/user1/...
wird alles in /home/user1/test/docs durchsucht!

//EDIT2: ungetestet

View full thread HTML Seite mit Links mittels Perl-Module erstellen