image_pdfimage_print

Cannot modify header information

Bei der Umsetzung für ein CRM-Projekt erhielt ich die Fehlermeldung „Cannot modify header information – headers already sent by…“.
Die einschlägige Google-Suche brachte folgende Ergebnisse:

The problem? White space after the closing ?> PHP tag. You can have as many carriage returns as you like, but don’t try a space.

This error occurs if there is any output before calling header() function. The most common and mostly „invisible“ mistake is having whitespaces at the beginning or the end of one or more of your files. Make sure there are none before opening < ?php or after closing ?> tags.

Das war’s aber nicht, die Lösung war die UTF-Codierung des Quellcodes:

Another very common problem is extra whitespace at the *start* of php files – especially editors inserting invisibly UTF BOM bytes. If you want to make a maintenance tool, it would be good to check for this issue too.

In diesem Fall ist die PHP-Datei in UTF-8-Codierung abgepeichert und enthält ein “Byte Order Mark” (kurz: BOM). Das BOM-Steuerzeichen wird von PHP falsch erkannt, weshalb man für diese Datei “UTF-8 ohne BOM” als Kodierung wählen muss.

Danach funktioniert’s!

SQL mit CakePHP und der Bedingung NOT IN

$this->set('agents',$this->Contract->User->find('list',array(
			'fields' => array('User.id','User.username'),
			'conditions' => array(
						'User.active =' => '1',
						'NOT' => array(
							'User.username' => array('admin',$this->Auth->user('username'))
							))
			))
);

Which produces the following:

SELECT `User`.`id`, `User`.`username` FROM `users` AS `User` WHERE  `User`.`active` = 1 AND NOT (`User`.`username` IN ('admin', 'user'))

Quelle: http://cakebaker.42dh.com/2007/04/26/how-to-use-not-in-in-a-condition/

Ganz schön komfortabel aber auch tricky, wenn man diesen Weg nicht kennt 😉

Die Turbo-Backstube

In vielen Unternehmen werden Daten in manueller Form auf Papier oder in einfach strukturierten Excel-Tabellen erfasst und weiterverarbeitet. Eingabe- und Übertragungsfehler sind vorprogrammiert, doch der Einsatz einer Software-Anwendung erscheint auf den ersten Blick aufwendig und teuer. Insbesondere dann, wenn keine Standardanwendung zur Verfügung steht, die mit geringem Customizing-Aufwand und geringen Lizenzkosten genutzt werden kann. Dass dennoch eine Individuallösung innerhalb kurzer Zeit und mit begrenzten finanziellen und personellen Ressourcen umgesetzt werden kann, zeigt dieses Beispiel.

In einer Case Study beschreiben mein Kollege Thomas Recke und ich, wie mit CakePHP und MySQL ein Buchungssystem für 900 Mitarbeiter in nur sechs Wochen umgesetzt wurde. Der Artikel ist druckfrisch erschienen im Entwickler Magazin 5/2010 und steht wie gewohnt als Download zur Verfügung.