jens.hatlak.de / Über mich    
Atari   PHP / CSV-Test  
Dreamweaver Manual   Linux   iCalendar  
Akronyme   Mozilla    
  SciTE    
  FASTA-Parser    
  Ich spreche...    

 

PHP Hypertext Preprocessor

PHP4PHP ist - meiner Meinung nach - die schönste (Programmier-)Sprache überhaupt. An dieser Frage entzünden sich leicht hitzige Diskussionen mit Fans anderer Sprachen, z.B. der Python-Fraktion. Ich möchte auf dieser Seite ein paar Argumente für und wider PHP sowie Verweise auf eigene Projekte und ein gutes Tutorial geben.

Pro und contra

PHP hat einige Vorteile, die das Programmieren einfacher machen. Die folgende Liste ist natürlich nur eine Auswahl und nicht nur deshalb recht subjektiv, sondern auch, weil mancher die genannten Vorteile vielleicht als gar nicht so vorteilhaft bezeichnen würde.

Vorteile

Nachteile

Was? Die Pro-Liste ist ja viel länger als die Contra-Liste!

Tja. Zum einen ist es wie gesagt sehr subjektiv, schließlich bin ich zugegebenermaßen ein Fan dieser Sprache. Andererseits bin ich aber wirklich nicht auf mehr Argumente dagegen (ausgenommen den nicht bewertbaren Geschmack) gekommen. Wenn du noch etwas ganz Wichtiges für die eine oder andere Liste hast, dann lass es mich wissen.

Das will ich auch lernen!

Habe ich dein Interesse geweckt? Dann habe ich genau das richtige für dich: Das DSP. Dieses Tutorial, geschrieben von Christoph Reeg und meiner Wenigkeit, beschreibt den kompletten Weg des Laien von der Datenbanktheorie über der Datenbank-Abfragesprache SQL bis hin zu den Grundlagen in PHP. Am Ende geht es sogar um Feinheiten wie Objektorientierung (theoretisch und praktisch in PHP) und XML.

In eigener Sache

Die im Folgenden genannten Klassen und PHP-Skripte stelle ich unter die LGPL. Ich möchte auch ausdrücklich darauf hinweisen, dass ich diese Skripte v.a. für den Eigengebrauch programmiert habe und nicht vorhabe anderer Leute Wünsche zu implementieren. Wer natürlich Fehler findet oder einfach einzubauende, sinnvolle Erweiterungen fertig hat, kann mir gerne eine Mail schreiben. :-)

CSV-Klasse

Mit meiner Source! CSV-Klasse kann man auf einfache Weise die Daten aus einer CSV-Datei einlesen oder vorhandene Daten ausgeben lassen (HTTP-Download). Mit einer eigenen oder einer vorgegebenen CSV-Datei kann man diese auch online testen (Source! Source der Testdatei).

Update: Ab sofort kommt die Klasse auch mit Trennzeichen zurecht, die innerhalb eines Feldes vorkommen. Der entsprechende Escape-Code stammt von der PHP-Kommentarseite zur Funktion explode(). Außerdem habe ich nun endlich die zwei Methoden eingebaut, die Simon Bichler mir bereits Ende 2004 geschickt hat (besser spät als nie...): multiSort() erlaubt das Sortieren nach mehreren Feldern und mittels verschiedener Vergleichsarten. select() hingegen filtert all jene Zeilen aus dem internen Datenarray heraus, die nicht den angegebenen Vergleichskriterien entsprechen.

Cascading Navigation-Klasse

Die Navigation am oberen Rand dieser Seite und der meisten anderen meiner Homepage wird vollautomatisch erstellt - mit Hilfe von, wer mag es glauben, PHP - genauer: Der Source! CascadeNav-Klasse. Die Datei mit den Rubrikdaten gibt's auch im Source! Source.

getAge-Funktion

Irgendwann war es mir zu lästig, ständig mein Alter auf der Seite "Über mich" zu aktualisieren. Also habe ich mir eine kleine Source! Funktion geschrieben, die immer das richtige Alter ausgibt. :-)

Resumable Download

Eine Downloadfunktion zu schreiben ist nicht schwer, eine gute aber sehr. Eine gute Downloadfunktion sollte nicht nur zuverlässig den Dateinamen vorgeben (wozu eine Browserweiche nötig ist), die Größe des Downloads per Content-Length-Header bereit stellen und mit großen Dateien zurecht kommen (readfile hat Probleme damit), sondern optimalerweise auch gleich das Wiederaufnehmen eines Downloads (Resume) ermöglichen.

Ich gebe zu, dass die hier bereit gestellte Implementierung zu großen Teilen nicht von mir selbst stammt, aber das steht ja im Include Resumable Download mit drin.

 

Allgemeines

Das urlencoded-Format

Der MIME Content-type "application/x-www-form-urlencoded" kodiert Formulardaten, z.B. bei der GET-Methode.

Zeichen Code
Leerzeichen +
! %21
" %22
# %23
$ %24
% %25
& %26
' %27
( %28
) %29
* *
+ %2B
, %2C
- -
. .
Zeichen Code
/ %2F
: %3A
; %3B
< %3C
= %3D
> %3E
? %3F
@ @
[ %5B
\ %5C
] %5D
^ %5E
_ _
` %60
Zeichen Code
{ %7B
| %7C
} %7D
~ %7E
ä %E4
ö %F6
ü %FC
Ä %C4
Ö %D6
Ü %DC
ß %DF

 

IE no-cache

Laut Microsoft Knowledge Base interpretiert der IE ab Version 5 keine META-Tags mehr, die die Cache-Control betreffen. Einzige Abhilfe sei das Setzen von bestimmten HTTP-Headern. Erfolg brachte folgende Kombination von Headerangaben per PHP (aus dem KB-Artikel, dem PHP-Manual und eigenen Überlegungen):

header("Expires: -1");
header("Pragma: no-cache");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0");

 

Valid HTML 4.0!
Jens Hatlak
30. Dezember 2007