Apache error 500
am 02.05.2004 00:43:15 von Jan EdenHi all,
I use a script to edit html pages served from a database. Now a peculiar er=
ror pattern shows up:
- New entries to the database never generate an error
- Changes to an existing entry create seem to generate an error when a) the=
lenght of the content field exceeds a certain length or b) unmapped charac=
ters are detected.
- Nevertheless, the changes are always transferred to the database before t=
he server error occurs.
- This (committing the changes) is the last directive in the script before =
printing a succeed message and disconnecting.
I tried everything, I just can't seem to find the cause, neither in my data=
base nor in my script. Please check my script for obvious mistakes. Thanks =
a lot.
- Jan
#!/usr/bin/perl -w
use strict;
use DBI;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
# mein Modul für user_check, mysql_config und headfoot
use Site2;
my $q =3D new CGI;
# Standardmodus ist lokal
my $mode =3D $q->param('mode') || 'local';
# Konfiguration fuer die Verbindung zum MySQL-Server
my ($server, $db, $username, $password) =3D mysql_config($mode);
my $dbh =3D DBI->connect("dbi:mysql:$db:$server", $username, $password, { =
RaiseError =3D> 1 });
# checken, ob es sich um Edition oder Neueintrag handelt
my $id =3D $q->param('id') || '';
# Einlesen des eingegebenen Benutzernamen und Passworts=20
my $user_name_input =3D $q->param('user_name') || '';
my $user_password_input =3D $q->param('user_password') || '';
# legt fest, ob eine Maske ausgegeben oder die Daten uebertragen werden
my $edit_mode =3D $q->param('edit_mode') || '';
# legt die Mutter des neuen Eintrags fest (wird von show.pl übergeben)
my $mother_id =3D $q->param('mother_id');
# Abrufen des Titels der Mutterseite für das Menü
my $query =3D "SELECT title FROM pages WHERE page_id =3D $mother_id";=20
my $sth =3D $dbh->prepare($query);
$sth->execute();
my ($mother_title) =3D $sth->fetchrow_array;
# Bestimmte Muttertitel werden nicht gedruckt (Home, Public, Private)
$mother_title =3D $mother_id == 1 || $mother_id == 2 || $mother_id =
== 2200 ? '' : '|' . $mother_title . '|';
my $title =3D 'Editieren und Einfügen';
# Einlesen des Seitenkopfes und -fußes (in Abhängigkeit von verschieden=
en Variablen)
my ($page_head, $page_foot) =3D headfoot($title, $mother_id, $mother_title,=
$mode);
# Deklaration verschiedener Variablen (leer für Neueinträge)
my ($author_id, $title, $content, $link, $page_type, $user_id, $pdf, $tex) =
=3D ();
# Ausdruck des Headers und Seitenkopfes
print $q->header(-type=3D>'text/html', -charset=3D>'utf-8'), $page_head unl=
ess $edit_mode eq 'commit';
# Wenn noch kein Benutzername/Passwort angegeben ist: Identifizierung
# Wenn Identifizierung nur außerhalb des lokalen Modus gewünscht ist: "=
$mode eq 'local' ||" zum Konditional hinzufügen=20
unless ($mode eq 'local' || $user_name_input && $user_password_input) {
print qq{
Identifizierung
Bearbeitungsfunktionen sind passwor=
tgeschützt. Bitte geben Sie Benutzernamen und Passwort ein.
" accept-charset=3D"utf-8">
Benutzer: | text" name=3D"user_name" value=3D"" size=3D"20" /> |
Passwor= t: | = td> |
}
# Wenn Benutzername/Passwort vorhanden sind: überprüfen (dito zum lokal=
en Modus)
elsif ($mode eq 'local' || user_check(1, $user_name_input, $user_password_i=
nput, $mode)) {
# Abrufen des Datensatzes, wenn eine $id vorhanden ist
if ($id) {
print qq{
Editieren
};my $query =3D "SELECT mother_id, author_id, title, content, link, p=
age_type, user_id, pdf, tex FROM pages WHERE page_id =3D $id";
my $sth =3D $dbh->prepare($query);
$sth->execute();
($mother_id, $author_id, $title, $content, $link, $page_type, $user=
_id, $pdf, $tex) =3D $sth->fetchrow_array;
}
# sonst: Festlegen der Standardwerte für den Neueintrag
else {
print qq{
Neueintrag
};($author_id, $page_type, $user_id, $pdf, $tex) =3D (1,2,0,0,0);
}
# Ausdruck der Eingabemaske mit allen Werten
print qq{ n/x-www-form-urlencoded" accept-charset=3D"utf-8"> lue=3D"Absenden" />
Page_ID: | e=3D"id" value=3D"$id" size=3D"5" readonly /> |
Mother_ID:= td> | id" /> |
Author_ID: | name=3D"author_id" value=3D"$author_id" /> |
User_ID: | |
Page_Type: | age_type" value=3D"$page_type" /> |
Link: | e=3D"text" size=3D"120" name=3D"link" value=3D"$link" /> |
P= DF: | <= /td> |
LaTeX: | " value=3D"$tex" /> |
Page_Title: | t" size=3D"120" name=3D"title" value=3D"$title" /> |
Content= : |
};
}
# bei nicht erfolgreicher Identifizierung
else {
print qq{
Falsches Passwort!
Bitte verwenden Sie den "Zurüc=
k"-Button Ihres Browsers, um die Eingaben zu korrigieren.};
}
print $page_foot unless $edit_mode eq 'commit';
# Übertragungsmodus
# für erneute Überprüfung hinzufügen: "&& user_check(1, $user_name_=
input, $user_password_input, $mode)"
if ($edit_mode eq 'commit') {
# Übernahme der Parameter aus der Editierungs- bzw. Neueintragsmaske
my $mother_id =3D $q->param('mother_id');
my $author_id =3D $q->param('author_id');
my $user_id =3D $q->param('user_id');
my $page_type =3D $q->param('page_type');
my $title =3D $dbh->quote($q->param('title'));
my $content =3D $dbh->quote($q->param('content'));
my $link =3D $dbh->quote($q->param('link'));
my $pdf =3D $q->param('pdf');
my $tex =3D $q->param('tex');
# bei vorhandener ID: Update des Datensatzes
if ($id) {
my $query =3D "UPDATE pages SET mother_id =3D $mother_id, author_id=
=3D $author_id, user_id =3D $user_id, page_type =3D $page_type, title =3D =
$title, content =3D $content, link =3D $link, pdf =3D $pdf, tex =3D $tex WH=
ERE page_id =3D $id";
my $sth =3D $dbh->prepare($query);
$sth->execute();
print $q->redirect("show.pl?mode=3Dlocal&id=3D$id");
print $q->header(-type=3D>'text/html', -charset=3D>'utf-8'), $page_=
head;
print $query;
}
# sonst: Einfügen eines neuen Datensatzes
else {
my $query =3D "INSERT INTO pages (mother_id, author_id, user_id, ti=
tle, content, link, page_type, pdf, tex) VALUES ($mother_id, $author_id, $u=
ser_id, $title, $content, $link, $page_type, $pdf, $tex)";
my $sth =3D $dbh->prepare($query);
$sth->execute();
print $q->redirect("show.pl?mode=3Dlocal&id=3D$mother_id");
} =20
}
$dbh->disconnect;
--=20
There are two major products that come out of Berkeley: LSD and UNIX. We do=
n't believe this to be a coincidence. - Jeremy S. Anderson
--
MySQL Perl Mailing List
For list archives: http://lists.mysql.com/perl
To unsubscribe: http://lists.mysql.com/perl?unsub=3Dgcdmp-msql-mysql-modules @m.gmane.org