Apache error 500

Apache error 500

am 02.05.2004 00:43:15 von Jan Eden

Hi 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.

on=3D"edit.pl" method=3D"post" enctype=3D"application/x-www-form-urlencoded=
" accept-charset=3D"utf-8">
Benutzer: text" name=3D"user_name" value=3D"" size=3D"20" />
Passwor=
t:
td>
ype=3D"hidden" name=3D"mother_id" value=3D"$mother_id" /> den" name=3D"mode" value=3D"$mode" /> den" />
};
}
# 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" /> d> d>
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=
: