Nochmal einen Nachtrag, du hattest ja gefragt gehabt wie du ein 2. CGI aufrufen kannst. Das deutet darauf hin, dass du dir nicht klar bist welche Möglichkeiten du hast und wie du dein Skript sinnvoll Konstruieren kannst. Da wir ja mittlerweile mehr Wissen mal ein paar Ideen von mir.
Also, du willst ein Gästbuch machen mit einem Adminbereich. Den Adminbereich willst du aber nicht im normalen Code mitschleppen. Dazu bnietet sich an, diese Funktionen mit require einzubinden (wobei man sagen muss, dass sich das für so ein Projekt nicht lohnt, da require zur Laufzeit den code übersetzen muss). aber es geht um's Prinzip.
Nehmen wir an dein skript heißt guest.cgi
der normale Aufruf ist also: http://doamin.lt/cgi-bin/guest.cgi
üblicherweise hast du noch einen Parameter, um einzelne Seiten anzeigen zu lassen:
http://doamin.lt/cgi-bin/guest.cgi?page=1
um den Adminbereich anzeigen zu lassen willst du eine Usernamen und Passwort Kombination übergeben:
http://doamin.lt/cgi-bin/guest.cgi?name=XXX&pwd=XXX
Dein skript könnte dann in etwa so aussehen:
#!/usr/bin/perl -w
use strict;
use CGI;
my $admin;
if(CGI::param('name'))
{
# Es wurde en Name übergeben
# also muss der User identifiziert werden
# da wir das in einem separaten Modul machen wollen
# muss dieses eingebunden werden.
require admin.cgi;
$admin = user_auth( CGI::param('name'), CGI::param('pwd') );
}
jetzt kannst du die entsprechenden Optionen über if($admin) anzeigen lassen
wenn $admin defniert ist, dann ist es eine HASH Referenz
mit den Schlüsseln ->{name} und ->{pwd}
show( CGI::param('page'), $admin);
sub show
{
my ($page, $admin) = @_;
print showPage($page);
if($admin)
{
print CGI::a( {-href => CGI::url() . "?name=$admin->{name}&pwd=$admin->{pwd}" },
'[1] Gästebucheinträge kommentieren');
}
}
......
admin.cgi:
------------------------
my %pwd = {
user1 => 'pwd1',
user2 => 'pwd2',
user3 => 'pwd3',
....
};
sub user_auth
{
my ($name, $pwd) = @_;
return unless $name;
return unless $pwd;
return unless $pwd{$name}; # User unbekannt
return unless $pwd{$name} ne $pwd; # Passwort falsch
# wir geben eine Hashreferenz zurück
return { name => $name, pwd => $pwd };
}
1; # um require Glücklich zu machen
Du kannst natürlich in der admin.cgi auch fehlermeldung ausgeben lassen.
Struppi.