Matti Maekitalo: geht nicht

Beitrag lesen

use Mosche;

ich habe mir heute folgendes script runtergeladen und das geht aber nicht so ganz weil der ständig die seiten und alles im web sucht obwohl eigentlich kein befehl mehr auf die ursprungsseite zeigt.
könnt ihr mir das mal so ändern das es wieder geht?

Das Script ist an sich nicht unbedingt gut (was Programmierstil angeht, halte ich mich mal zurück). Auf jeden Fall scheint es veraltet zu sein.

#!/usr/local/bin/perl

use strict;

Change these variables with your own values

$correctpass = "passwort";
  $correcturl = "correct.html";
  $scriptlocation = "password.cgi";

in einer CGI Umgebung ist das aktuelle Verzeichnis undefiniert

Read in form data

&parse_form;

use CGI qw(param);

$password =  $input{'password'};
  $function = $input{'function'};

my $password = param('password';
my $function = param('function');

if ($function eq "post") {
       if ($password eq $correctpass) {

Ist unnötig. Es reicht:
if ($password && $correctpass eq $password) {

...

}

Den gesamten function Mist kannst du dir dann sparen.

&goto_url;

goto_url(); # &... ist veraltet (Perl 4)

sub badpassword {
[viele einzelne print Befehle]

print <<EOF;
dein HTML-Code
EOF;

So, jetzt nochmal verbessert:

#!/usr/local/bin/perl

use CGI qw(param header);

Change these variables with your own values

$correctpass = "passwort";
  $correcturl = "/correct.html";  # jeweils absolute Pfade angeben
  $scriptlocation = "/cgi-bin/password.cgi";

$password =  param('password');

if ($password) {
  if ($password eq $correctpass) {
   &goto_url;
  } else {
   &badpassword;
  }
 } else {
  &ask_password;
 }

sub badpassword {
 print header;  # deinen restlichen HTML-Müll räume ich _nicht_ auf
print <<EOF;
    <HTML>
    <HEAD><TITLE>Invalid Password</Title></HEAD>
    <BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#0000FF VLINK=#800040 ALINK=#800040>
    <CENTER><H2>Invalid Password</H2></CENTER><BR>
    </BODY>
    </HTML>
EOF
    exit;
}

sub ask_password {
 print header;  # deinen restlichen HTML-Müll räume ich _nicht_ auf
    print <<EOF;
<html>
<head>
<title>Editor</title>
</head>
<BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#0000FF VLINK=#800040 ALINK=#800040>
<Center><FONT SIZE=6 COLOR=0000A0><CODE>Please Enter Your Password</CODE></FONT>\n";
    <BR><BR><BR><TABLE WIDTH=75% Border=10><TR><TD><CENTER><BR>
    <FORM ACTION="$scriptlocation">
    <INPUT TYPE=password  NAME=password SIZE=15>
    <INPUT TYPE=hidden NAME=function VALUE=post>
    <INPUT TYPE=submit VALUE="Verify Me">
    </FORM>
    </CENTER></TD></TR></TABLE>
    <FONT SIZE=2 COLOR=000080>Password Script - brought to you by The <A HREF="http://technotrade.com/cgi">Techno Trade CGI Archive</A></FONT>
    </CENTER></BODY></HTML>

EOF
    exit;
}

sub goto_url {
    print "Location: $correcturl\n\n";
}

so sollte es jetzt funktionieren

use Tschoe qw(Matti);