D’oh Moment

Man merkt immer wieder, dass man nie auslernt. Selbst, wenn man seit Jahren mit einer Programmiersprache arbeitet. So wie bei PHP. Vor Kurzem habe ich folgendes erfahren:

Ein Skript wird mit den PHP-Tags eingeleitet:

<?php

Aber das abschließende

?>

ist nicht nötig. :P

In welchen Fällen kann das nützlich sein? Es gibt oft Probleme, dass sich in PHP-Dateien ein Whitespace hinter dem abschließenden Tag einschleicht. Dies führt dazu, dass es einen “Headers already sent”-Fehler gibt. Lasst ihr das weg, so vermeidet ihr diesen - schwer zu findenden - Fehler.

Gibt es bei euch auch ein paar nette “D’oh”-Momente?

Creating a blog app in platform PT pt 1 ;)

Now I am going to show you how to create a simple blog app in platform PT.

Den ganzen Beitrag lesen

platform PT on assembla.com

I signed up with assembla.com a while ago. It was particularly, because I liked the trac environment. I discovered trac some time ago, when I played with MaNGOS.

Anyhow: Here is the platform PT trac environment and the assembla.com project page.

Installation

Now I am going to show you how to install platform PT. Since the framework was intended to be used in our own environments in the first place, it does not have a fancy installation routine (yet).

What you will need to run platform PT:

Den ganzen Beitrag lesen

respice platform PT

Tonight I am going to start introducing platform PT. This PHP framework is the result of some years of work, trying to get a strong base for all our future applications. It turned out to be more a learning process, than a straight path…

With the same spirit I will start collecting bits and pieces of information. Anything, which crosses my mind, when I think about platform PT. I hope I will find the time soon to write a manual for platform PT.

Den ganzen Beitrag lesen

DOM und Namespaces

Notiz an mich selbst…

Derzeit arbeite ich hauptsächlich mit der DOM-Implementierung von PHP. Nun habe ich erstmals auch externe XML-Dateien eingelesen und verarbeitet (das gibt einen kleinen RSS-Reader).

Dabei entstand ein Problem, das ich zunächst einmal lange nicht nachvollziehen konnte:

<?php
$doc = DOMDocument::loadXML($str);
$x = new DOMXPath($doc);
$channel = $x->query('channel', $doc->documentElement);
echo $channel->length;
?>

Ergab immer 0. Dabei existierte der Node. Nach einigen Versuchen entdeckte ich, dass der Rootnode ein Namespace definiert hatte.


Ahhhh… ok.

<?php
$x->registerNamespace('default', $doc->documentElement->namespaceURI);
$channel = $x->query('default:channel', $doc->documentElement);
?>

1. Ahhh, gut.

IE zum Absturz bringen

Ist auf jeden Fall bei mir so. Ich hatte einen kleinen Fehler in meinem HTTP-Header:

<?php
header('Content-type:text/html;encoding=utf-8');
?>

anstatt “charset=utf-8″.
Rufe ich diese Seite mit AJAX auf, so bleibt der IE hängen.

Update: Ich habe mal eine kleine Datei geschrieben. Bei mir funktioniert es jedes Mal. 99% CPU, Tschüß… poc.tar.gz

Update2: Auch IE7 ist davon betroffen…

Regexp für E-Mail Adressen

Was für eine RegExpression verwendet ihr zum checken einer E-Mail Adresse?
Meine letzte, ziemlich einfache:

<?php

return preg_match ('%^(.+)@(.{2,})\.(.{2,4})$%i', $email);

?>

Schnipsel

Eine Sammlung von schönen Codeschnipseln und weiteren, interessanten Arbeitshilfen (php::bar sollte man eigentlich kennen ;) ): http://phpbar.de/hilfen/faq/index.php?ch=snippets

Wie nutze ich die crypt()-Funktion

Nach dem Beitrag beim M-E-X Blog, und nachdem ich gemerkt habe, dass pastebin.com die Codes auch wieder löscht, poste ich hier nochmals den Beispielcode.

<?php

function random ($len)
{
  $times = ($len % 40) + 1;
  $random = '';
  for ($i = 0; $i < $times; $i++)
  {
    mt_srand((double)microtime()*1000000);
    $r = mt_rand();
    $random .= sha1(uniqid($r,TRUE));
  }
  return substr ($random, 0, $len);
}

// salt holen
if (CRYPT_BLOWFISH) {
  $salt = '$2$' . random (13);
} else if (CRYPT_MD5) {
  $salt = '$1$' . random (9);
} else if (CRYPT_EXT_DES) {
  $salt = random(9);
} else {
  $salt = random (2);
}
$pass = 'geheim';
$pass_zum_speichern_in_datenbank = crypt ($pass, $salt);

// die Überprüfung
$pass_eingegeben_von_benutzer = 'geheim';
$pass_geholt_aus_datenbank = $pass_zum_speichern_in_datenbank;
if ($pass_geholt_aus_datenbank == crypt ($pass_eingegeben_von_benutzer, $pass_geholt_aus_datenbank)) {
  echo 'Passwort korrekt';
} else {
  echo 'Passwort inkorrekt';
}

?>

Nächste Einträge →