|
Warning: include(/www/htdocs/webadki/inc/navigation_01.php) [function.include]: failed to open stream: No such file or directory in /home/www/kochbuch01.php on line 44 Warning: include() [function.include]: Failed opening '/www/htdocs/webadki/inc/navigation_01.php' for inclusion (include_path='.:/usr/share/php') in /home/www/kochbuch01.php on line 44 |
Probleme & Lösungen für Perl, PHP und JavascriptHier finden Sie Tipps zu Alltagsproblemen, die bei der Einbindung von Perl, PHP und Javascript anfallen und den Anfänger schnell zur Verzweiflung bringen können. Falls Sie Fragen und Anregungen haben, so können Sie mir gerne per Mail entsprechende Fragen schicken. Ich gebe natürlich keine Garantie für Veröffentlichungen oder Lösungen. Themen:
1. Verhindern von ServerError wegen fehlender Kompabilität
von Windows
ProblemSie haben Probleme bei der Entwicklung Ihrer Programme unter Windows, weil bestimmte Funktionen unter Windows(NT 2000 95) nicht zur Verfügung stehen LösungBinden Sie die problematischen Funktionen in eine Testabfrage des Betriebssystems ein. Die Funktion wird nur ausgeführt, wenn Windows nicht das Betriebssystem ist. Beispiel PHP:
if ( !preg_match( "/win/i" , PHP_OS ) )
{
# hier den Betriebssystemabhängigen Befehl eingeben:
virtual("blabla.php");
}
Beispiel Perl:
unless ($^O =~ m/win/i)
{
# Beispiel:
flock(FILE,8) or die("Konnte Filelocking nicht durchführen");
}
2. Sichere Perlscripts entwickeln und möglichst viele
Fehlermeldungen verständlich abfangen.
ProblemSie möchten Perl Programme entwickeln aber vertun sich oft mit falschen Variablen, Aufrufen und Server Error 500 mit dem Sie nie etwas anfangen können. LösungNutzen Sie folgenden Anfangscode in Ihren Programmen. "use strict" bewirkt, dass sie alle Variablen "my $variable" festlegen. Das CGI Modul (Standard haben alle Server installiert, die Perl besitzen) sendet alle Fehler an den Browser, also an Sie zurück. Meistens erhalten Sie so ziemlich brauchbare Angaben zum Fehler. Beispiel Perl:#!/usr/bin/perl -w # © Dein Name # Alle Rechte Vorbehalten use CGI qw(:standard) ; use CGI::Carp qw(fatalsToBrowser); use strict; my $variable_1; my(@array,$wert); 3. Sie wollen verhindern, dass jemand Ihr Layout durch
zu lange Wortlängen bei Formulareingaben durcheinander bringt
ProblemIn ein Formular geben manche Zeitgenossen aus purer Lust unendlich lange Zeichenfolgen ein, nur um Ihr Layout zu zerstören. LösungErsetzen Sie zu lange Worte in der Formularvariablen Lösung Perl:
# Alle was in der Variable über 30 Zeichen hinausgeht wird gelöscht:
$formularvariable =~ s/\w{30,}//gm ;
4. Sie wollen eine Kommaseperierte Datendatei (daten.csv)
nach mehreren Feldern sortieren
ProblemSie wollen eine Datendatei, die durch Trennzeichen getrennt ist nicht nur nach dem ersten Feld sortieren. Zudem enthält die Datei Felder mit Buchstaben und mit Zahlen (z.B. Datumsfeld) LösungSortieren Sie einfach mehrere Felder und definieren für jedes Feld die
Sortieregel. 10;aa;tt;d; 02;bb;zz;a; 02;cc;tt;o: 05;aa;kk;u; 06;aa;gg;r; 06;aa;dd;s; 06;aa;ee;t; Lösung Perl:
# Datendatei öffnen:
open(FILE, "./src/test.csv") or die ("Konnte nicht öffnen");
unless ($^O =~ m/win/i)
{
flock(FILE,2);
}
my @lines = <FILE>;
my @sortiert_array = map { $_->[0] } # die ganze Zeile
sort {
$b->[1] <=> $a->[1] # Feld 1 numerisch (<=>)
||
$a->[2] cmp $b->[2] # Feld 2 alphabetisch (cmp)
||
$a->[3] cmp $b->[3] # Feld 3 numerisch (<=>)
}
map { [ $_, (split /;/)[0,1,2] ] } # Feld 0,1,2 Trenner: ';'
@lines ;
print "<h1>";
foreach my $zeile(@sortiert_array)
{
#@lines1 = split(";", $zeile);
print $zeile . "<br>";
}
close(FILE);
print "</h1>";
5. Bei der Darstellung mit Frames, werden die Frames
versehentlich doppelt geladen, weil manche links fehlerhaft sind
ProblemTeilweise wird Ihr Startframe doppelt geladen,.d.h Links in Navigationselementen haben kein target=_top Element. LösungTesten Sie mit Javascript die Anzahl der Frames, in denen der aufgerufene Startframe liegt. Dieser muss dann dem Wert=0 entsprechen. Falls dies zu einem Fehler führt, wird das Fenster mit dem Startframedokument neu geladen. Lösung Javascript:
<script language="JavaScript">
<!--
if (parent.frames.length != 0){
parent.location.replace("index_frame.php");
}
//-->
</script>
6. Der neue Netscape 6.1 stellt Layer nicht ordentlich
dar und hat zahlreiche Bugs, die eine Darstellung Ihrer Seite verhindern.
ProblemDer neue Netscape 6.1 stellt Layer nicht ordentlich dar und hat zahlreiche Bugs, die eine Darstellung Ihrer Seite verhindern. Navigationslayer, die verschoben und ausgeblendet werden funktionieren nicht. LösungWarnen Sie den User, falls der Netscape Browser verwendet wird. Lösung Javascript:
<script language="JavaScript">
<!--
var suche = RegExp("Gecko/20010726", "i");
var ergebnis = suche.exec(navigator.userAgent);
if (ergebnis != null){
// in eine Zeile:
alert("Sie nutzen leider Netscape in der Version 6.1
vom 26.7.2001. Diese Version enthält viele Bugs
und kann DHTML nicht richtig darstellen,
bitte nutzen Sie eine anderen Browser oder
aktzeptieren Sie, dass Sie
nicht alle Inhalte richtig erhalten. DANKE!");
}
//-->
</script>
Mit dem Urteil vom 12. Mai 1998 hat das Landgericht Hamburg entschieden, daß man durch die Ausbringung eines Links die Inhalte der gelinkten Seite ggf. mit zu verantworten hat. Dies kann - so das LG - nur dadurch verhindert werden, daß man sich ausdrücklich von diesen Inhalten distanziert. Ich habe auf verschiedenen Seiten dieser Homepage Links zu anderen Seiten im Internet gelegt. Für all diese Links gilt: Ich möchte ausdrücklich betonen, daß ich keinerlei Einfluß auf die Gestaltung und die Inhalte der gelinkten Seiten habe. Deshalb distanziere ich mich hiermit ausdrücklich von allen Inhalten aller gelinkten Seiten auf dieser Homepage und mache mich ihrer Inhalte nicht zueigen. Diese Erklärung gilt für alle auf meiner Homepage ausgebrachten Links.
„Musikerwelt.de und WebAdmin24.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu Amazon.de Werbekostenerstattung verdient werden kann.“
|