| jens.hatlak.de | Über mich | ||||
| Atari | PHP | CSV-Test | |||
| Dreamweaver Manual | Linux | iCalendar | |||
| Akronyme | Mozilla | ||||
| SciTE | |||||
| FASTA-Parser | |||||
| Ich spreche... | |||||
PHP 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.
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.
php.net/funktionsname), umfassendes deutsches Tutorial (DSP) verfügbarTja. 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.
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.
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. :-)
Mit meiner
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 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.
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
CascadeNav-Klasse. Die
Datei mit den Rubrikdaten gibt's auch im
Source.
Irgendwann war es mir zu lästig, ständig mein Alter auf
der Seite "Über mich" zu aktualisieren. Also habe ich mir
eine kleine
Funktion geschrieben, die
immer das richtige Alter ausgibt. :-)
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.
Der MIME Content-type "application/x-www-form-urlencoded" kodiert Formulardaten, z.B. bei der GET-Methode.
|
|
|
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");
30. Dezember 2007 |