#!/usr/bin/perl -w # # created by Marlen Bredehoeft # 15.07.2009 # use CGI qw/:standard -private_tempfiles/; # CGI-Routinen laden use CGI::Carp qw(fatalsToBrowser); # Fehlermeldungen werden im # Browser Window ausgegeben $CGI::DISABLE_UPLOADS = 1; # keine Uploads erlaubt $CGI::POST_MAX=1024; # max 1 kB bei POST-Request use DBI; # DBI einbinden use strict; ####################################### # Funktion fuer die Sicherheitsabfrage ####################################### sub VerboteneEingabe ($) { my @data = (";", "&", "<", ">", "\"","'"); my $variable = shift; my $verboten ; my $k; foreach $k(@data){ if ($variable =~ "$k"){ return "verboten"; } #end if } #end foreach $k(@data) return "ok"; } #end VerboteneEingabe ####################################### # main ####################################### print "Content-type: text/html\n\n", "\n",, "

\n", "

Datenbankbeispiel mit DBI (MySQL Datenbank)

\n", "

"; ####### # Der Variablen "$Eingabe" wird der Wert des FORM-Paramters "Eingabe" zugewiesen # Der Variablen "$Loesche" wird der Wert des FORM-Paramters "Loesche" zugewiesen # Der Variablen "$Submit" wird der Wert des FORM-Paramters "Submit" zugewiesen ####### my $Eingabe = param('Eingabe'); my $Loeschen = param('Loeschen'); my $Submit = param('Submit'); if (length($Eingabe) > 10 || length($Loeschen) > 10) { print "

Irgendeine Eingabe ist zu lang.
", "Mehr als 10 Zeichen", " pro Textfeld werden nicht bearbeitet.

\n"; $Eingabe = ''; $Loeschen = ''; } # if (length($Eingabe) > 10 || length($Loeschen) > 10) if ( VerboteneEingabe($Eingabe) ne "ok" || VerboteneEingabe($Loeschen) ne "ok" ) { print "

Ihre Eingabe enthält mindestens ein ", "nicht erlaubtes Zeichen.
", "Keine Aktion.

\n"; $Eingabe = ''; $Loeschen = ''; } # if VerboteneEingabe ############################################################################### ### Datenbank-Variablen setzen ############################################################################### open(FILE,"mysqlid.txt"); # UserID, Passwort und Datenbankname einlesen my $dbuser=; chomp($dbuser); my $dbpw=; chomp($dbpw); my $dbname=; chomp($dbname); close(FILE); my $dsn="dbi:mysql:$dbname"; # $dbname muss den Namen Ihrer Datenbank enthalten ############################################################################### ### Verbindung zur MySQL-Datenbank aufbauen ############################################################################### my $lda = DBI->connect($dsn, $dbuser, $dbpw); die ("Es konnte keine Verbindung zur Datenbank aufgebaut werden.\n", "$dbname: $DBI::errstr\n") if (not defined($lda)); ############################################################################### ### Datenbank bearbeiten : ############################################################################### my $delete_db;my $insert_db; my $csr_name; my $csr_maxid; my $id; my $maxid; my $name; if ( $Submit eq "Datenbank bearbeiten" ) { ### Loeschen eines Namens: if ( $Loeschen ne "" ) { $delete_db = $lda->prepare("DELETE FROM test WHERE name='$Loeschen'")|| warn "$lda->errstr\n"; $delete_db->execute() || die ($delete_db->errstr); print "

Aktion: " . $Loeschen , " aus der Datenbank gelöscht

\n"; } # ( $Loeschen ne "" ) ### Auslesen der hoechsten ID und ### Einfuegen eines neuen Namens if ( $Eingabe ne "" ) { $csr_maxid = $lda->prepare("select max(id) from test") || die "$lda->errstr\n"; $csr_maxid->execute() || die $csr_maxid->errstr; $maxid = $csr_maxid->fetchrow_array; $maxid++; $id=$maxid; $insert_db = $lda->prepare("INSERT INTO test (id, name) VALUES ($maxid, '$Eingabe')") || warn "$lda->errstr\n"; $insert_db->execute() || die ($insert_db->errstr); print "

Aktion: " . $Eingabe , " in die Datenbank aufgenommen

\n"; } # ( $Eingabe ne "" ) } # if ($Submit eq "Datenbank bearbeiten") ############################################################################### ### Inhalt der Datenbank ausgeben ############################################################################### print "

Inhalt der Datenbank:

\n", "\n", "\n"; $csr_name = $lda->prepare("SELECT id, name from test order by id") || die "$lda->errstr\n"; $csr_name->execute() || die ($csr_name->errstr); while(($id, $name) = $csr_name->fetchrow_array ) { print "\n"; } print "
IDName
$id $name
\n"; ########################################################################### ### Datenbankverbindung beenden ########################################################################### $lda->disconnect || warn "$lda->errstr\n"; ###### print "


back
", ""; #