Category Archives: Programmierung

PHP – Rohdaten eines Requests auslesen

In PHP ruft man normalerweise die übermittelten Daten via $_POST, $_GET oder $_REQUEST ab. Dies sind sogenannte Superglobale und kommen als Array daher.

Muss man nun allerdings Daten in Empfang nehmen, die nur über den Header erreichbar sind, z.B. die Daten werden direkt in die Request-Felder eingebettet. Normalerweise sieht ein Wert ja folgendermaßen aus: mykey=myvalue. Dieses wird dann auf $_POST['mykey'] abgebildet. Der Wert ist darin gespeichert. Soll nun, in dem Beispiel myvalue aus unerfindlichen Gründen direkt eingebunden werden, was nicht HTTP-konform ist, hat man ein Problem. Selbiges Problem hat man, wenn eigene Headerdaten gesetzt werden, allerdings ist die Lösung die gleiche.

Es gibt in PHP eine Fülle an Streams. Mithilfe des Inputstreams kann man den Datenverkehr roh (raw) abgreifen. Damit kann man dann die “versteckten” Daten wieder erlangen. Folgender Codeausschnitt soll dies veranschaulichen:

<?php
$fh = fopen('php://input', 'r');
if (!$fh) {
  echo "Error";
}
$xml = '';
while (!feof($fh)) {
  $data .= fgets($fh);
}
fclose($fh);
echo $data;
?>

Edit: Wie dolce unten anmerkt, gehts unter PHP5 so viel einfacher. Aber warum einfach, wenns auch kompliziert geht :)

Cheat Sheet Sammlungen

Damit man net immer auf s neue suchen muss, starte ich mal eine Sammlung von Cheat Sheet Sammlungen ;)

ezPublish, sendmail und das Leerzeichen

Extrem genervt fand ich gerade heraus, das in der Konfigurationsdatei site.ini bzw. in der Override Datei site.ini.append.php der Wert des Parameters

EmailSender= example@domain.com

mit einem Leerzeichen beginnen muss. Ansonsten verschickt ez Publish keine E-Mails über sendmail

Das ist nicht so sonderlich toll, da das imho der einzige Paramter in den Konfigurationsdateien ist, wo zwischen dem “=” und dem Wert ein Leerzeichen sein muss. Da es aus der default Datei site.ini nicht ersichtlich ist war, half nur ein debuggen der kernel Dateien. Dabei kam raus, daß folgende Zeile aus der Datei lib/ezutils/classes/ezsendmailtransport.php daran Schuld ist.

$sendmailOptions .= ' -f'. $emailSender;

Das ganze betrifft sowohl ez Publish 3 und ez Publish 4.

Weblinks
ez Publish
Mehr zum Thema ez Publish in unserem DokuWiki “CMS How To”

Alice – nein nicht das DSL Mädl ;-)

In der Kundenzeitschrift von Home of Hardware bin ich über einen Artikel über Alice gestolpert. Alice ist eine 3D Programmierumgebung die von der Carnegie Mellon University entwickelt wurde und als E-Learning Software für Schüler und Studenten eingesetzt wird. Werd mir das mal installieren und schaun was da so geht…

Nachtrag: Eigentlich wollt ich schon mal was damit ausprobieren, leider schiesst das Programm nach dem Start mein System ab (Ubuntu 7.10), was ich ja nicht sooo toll finde…

Weblinks
Alice.org
Learning to Program with Alice
YouTube – A Preview of Alice 3.0, Introductory Programming in 3D

Programmierer vs. Universum

Ein netter, von Wahrheit durchzogener, Spruch:

Programming today is a race between software engineers trying to build bigger and better idiot-proof programs and the universe trying to build bigger and better idiots. So far, the universe is winning!

So far so good…

Sortierung von Zeichensätze unter MySQL 4.1

Eine interessante Sache hab ich in den FAQs von hosteurope gefunden. Es beschreibt eine Möglichkeit utf-8 kodierte Zeichen bei der Abfrage richtig zu sortieren…

SELECT utf8_spalte FROM tabelle
ORDER BY CONVERT(utf8_spalte USING latin1) COLLATE latin1_german2_ci ASC

Weblink
MySQL 4.1 und Zeichensätze

Eclipse: Autocomplete bei PEAR-Komponenten

Ich wollte schon immer mehr mit PEAR machen, was an und für sich ja eine gute Sache ist, da man sich die Adminstration der einzelnen Pakete und deren Anwendung dadurch schön vereinfachen kann. Allerdings hatte ich das Problem, dass Autocomplete bzw. Intellisense bei den PEAR Paketen nicht ohne Weiteres funktioniert hat. In der PDT (PHP Development Toolkit) gibt es im PHP Explorer einen Knoten namens “Include Paths”, über den man einfach die Libraries und Ähnliches eintragen kann. Dann klappts auch mit dem Autocomplete.

In Bildern:
Context menu: Include Paths

Kontext Menü mit Option zum Setzen des “Include Path”.

Properties: Library

Eigenschaften der Include Pfade und Bibliotheken. Im Beispiel die eZ Components von eZ Systems AS.

Eclipse IDE: Autocomplete

Autocomplete in der IDE