Lars: Nach Variablenauslagerung Fehler bei Skriptausführung

Servus allerseits!

Ich bastel grad an einer kleinen Intranetseite und dort an einer Loginmaske. Nun habe ich einige Variablen in eine Datei ausgelagert, da ich auf diese auch in anderen Skripten zugreifen muss. Das Skript kriegt von einem HTML-Formular via POST-Methode die Parameter nummer und passwd übergeben. Hier der Programmcode:

------login.pl------
#! /usr/bin/perl
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
{package Config; do 'config.inc';}
$db = DBI->connect("dbi:mysql:$Config::dbname;host=$Config::dbhost;port=$Config::dbport", $Config::dbuser, $Config::dbpasswd) or die($Config::dberror);

my $cgi = new CGI;
my @params = $cgi->param();
my $nummer=$cgi->param('nummer');
my $passwd=$cgi->param('passwd');

$sql = "SELECT passwd FROM Bewohner WHERE id ="".$nummer.""  LIMIT 0, 30 ";
$sth = $db->prepare($sql);
$sth->execute();
$correct = $sth->fetchrow_array();
$sth->finish();

print $cgi->header('text/html');
print $cgi->start_html('Login-Seite');
if ($nummer eq "" or $passwd eq "")
{
        print "Sie sollten schon was eingeben!<br>";
}

elsif ($passwd eq $correct)
{
        print "Willkommen Nummer:  $nummer!<br>";
}
else
{
        print "Das war wohl nix!";
}
print "</body></html>";
$db->disconnect();
-------------------

-----config.inc------
our $title="Loginseite";
our $author="test";
our $dbhost="localhost";
our $dbport="3306";
usw...
---------------------

Nun zum Problem: Starte ich auf der Shell einfach "perl login.pl" läuft es sauber ohne Fehlermeldung durch. Lasse ich das ganze aber so ablaufen wie gedacht, sprich Eingabe im HTML-Formular und Aufruf des Skripts mit POST-Methode, bekomme ich folgende Fehlermeldung:

Software error: at /home/lars/public_html/perl/login.pl line 6.

Versuchsweise habe ich die ausgelagerten Variablen in die login.pl aufgenommen und die Referenzen zu ihnen umgeschrieben. Erstaunlicherweise lief nun alles glatt.

Vielleicht hat ja jemand eine Idee oder einen Tipp, wie ich das Skript sauber zum Laufen bekommen kann.

Vielen Dank im Voraus!

Schöne Grüße,
Lars

  1. Hallo,

    Nun zum Problem: Starte ich auf der Shell einfach "perl login.pl" läuft es sauber ohne Fehlermeldung durch. Lasse ich das ganze aber so ablaufen wie gedacht, sprich Eingabe im HTML-Formular und Aufruf des Skripts mit POST-Methode, bekomme ich folgende Fehlermeldung:

    Software error: at /home/lars/public_html/perl/login.pl line 6.

    Evntl. kann das CGI die configdatei nicht finden. Da hilft ein
    use lib '/verzeichnis/wo/externe/datei/sich/befindet';

    Viele Grüße,
    Horst

    1. Hallo!

      Evntl. kann das CGI die configdatei nicht finden. Da hilft ein
      use lib '/verzeichnis/wo/externe/datei/sich/befindet';

      Ein Traum, das hat geholfen, jetzt kämpf ich mich durch meine logischen Fehler im Skript. :*)
      Vielen Dank!

      Schöne Grüße,
      Lars

  2. Vielleicht hat ja jemand eine Idee oder einen Tipp, wie ich das Skript sauber zum Laufen bekommen kann.

    Für das Auslagern derartiger Informationen kannst Du Config::IniFiles nutzen. Sauberer und eleganter geht es m.E. nicht :)

    Siechfred

    --
    Wir vom Moderatorenteam haben keinerlei Humor, von dem wir wüssten.