<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Codecandies &#187; php</title>
	<atom:link href="http://codecandies.de/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://codecandies.de</link>
	<description>Das Weblog von Nico Brünjes.</description>
	<lastBuildDate>Wed, 08 Feb 2012 11:20:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>XSS (Cross Site Scripting) Prevention Cheat Sheet</title>
		<link>http://codecandies.de/2009/01/26/xss-cross-site-scripting-prevention-cheat-sheet/</link>
		<comments>http://codecandies.de/2009/01/26/xss-cross-site-scripting-prevention-cheat-sheet/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 16:56:09 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmierung]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=1798</guid>
		<description><![CDATA[This article provides a simple positive model for preventing XSS using output escaping/encoding properly. While there are a huge number…]]></description>
			<content:encoded><![CDATA[<p><q>This article provides a simple positive model for preventing XSS using output escaping/encoding properly. While there are a huge number of XSS attack vectors, following a few simple rules can completely defend against this serious attack.</q></p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2009/01/26/xss-cross-site-scripting-prevention-cheat-sheet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress functions.php</title>
		<link>http://codecandies.de/2008/11/12/wordpress-functionsphp/</link>
		<comments>http://codecandies.de/2008/11/12/wordpress-functionsphp/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 08:17:46 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=1441</guid>
		<description><![CDATA[Nette Sammlung von PHP-Funktionen die gut in der WP functions.php passen, und hier gleich noch mehr davon.]]></description>
			<content:encoded><![CDATA[<p>Nette <a href="http://www.mattvarone.com/wordpress/functionsphp-wordpress-themes/">Sammlung von PHP-Funktionen</a> die gut in der WP functions.php passen, und <a href="http://www.mattvarone.com/wordpress/useful-functions-for-wordpress/">hier gleich noch mehr davon</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2008/11/12/wordpress-functionsphp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Protecting Your Cookies: HttpOnly</title>
		<link>http://codecandies.de/2008/08/29/protecting-your-cookies-httponly/</link>
		<comments>http://codecandies.de/2008/08/29/protecting-your-cookies-httponly/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 07:20:18 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=965</guid>
		<description><![CDATA[If you develop web applications, or you know anyone who develops web applications, make sure they know about HttpOnly cookies.]]></description>
			<content:encoded><![CDATA[<p><q>If you develop web applications, or you know anyone who develops web applications, make sure they know about <strong>HttpOnly cookies</strong>.</q></p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2008/08/29/protecting-your-cookies-httponly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conditional-CSS</title>
		<link>http://codecandies.de/2008/08/11/conditional-css/</link>
		<comments>http://codecandies.de/2008/08/11/conditional-css/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 14:42:11 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=849</guid>
		<description><![CDATA[Conditional-CSS allows you to write maintainable CSS with conditional logic to target specific CSS statements at both individual browsers and…]]></description>
			<content:encoded><![CDATA[<p><q><a href="http://www.conditional-css.com/">Conditional-CSS</a> allows you to write maintainable CSS with conditional logic to target specific CSS statements at both individual browsers and groups of browsers.</q>, [<a href="http://ajaxian.com/archives/conditional-css-inline-browser-specific-css">via</a>].</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2008/08/11/conditional-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP zu Javascript?</title>
		<link>http://codecandies.de/2008/03/02/php-zu-javascript/</link>
		<comments>http://codecandies.de/2008/03/02/php-zu-javascript/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 14:06:25 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Postings]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://codecandies.de/2008/03/02/php-zu-javascript/</guid>
		<description><![CDATA[Ich bin mir jetzt nicht so sicher, ob man die komplette Bibliothek php.js wirklich verwenden sollte, aber immer wenn man…]]></description>
			<content:encoded><![CDATA[<p>Ich bin mir jetzt nicht so sicher, ob man die komplette Bibliothek <a href="http://kevin.vanzonneveld.net/techblog/article/phpjs_licensing/">php.js</a> wirklich verwenden sollte, aber immer wenn man bei der Javascriptprogrammierung denkt: <em>in PHP w&#252;sst ich jetzt, wie ich&#8217;s tun w&#252;rde…</em>, dann ist das PHP zu Javascript Projekt vielleicht das Richtige… [<a href="http://www.dzone.com/links/rss/timesaving_javascript_library.html">via</a>]</p>
<p>Nein, doch besser nicht. ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2008/03/02/php-zu-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Community powered by Drupal</title>
		<link>http://codecandies.de/2007/10/23/community-powered-by-drupal/</link>
		<comments>http://codecandies.de/2007/10/23/community-powered-by-drupal/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 07:19:36 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[drupal]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmierung]]></category>
		<category><![CDATA[projekte]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://codecandies.de/2007/10/23/community-powered-by-drupal/</guid>
		<description><![CDATA[Nach einigen turbolenten Wochen ist seit gestern die neue Kommentarcommunity der Zeit: kommentare.zeit.de online. Im Mai bereits hatten wir das…]]></description>
			<content:encoded><![CDATA[<p>Nach einigen turbolenten Wochen ist seit gestern die <em>neue</em> Kommentarcommunity der Zeit: <a href="http://kommentare.zeit.de">kommentare.zeit.de</a> online. Im Mai bereits hatten wir das Kommentarsystem mit <a href="http://drupal.org">Drupal</a> umgesetzt – nun wurden in einem zweiten gro&#223;en Schritt die ersten Communityfunktionalit&#228;ten, zusammen mit entsprechendem Design und Layout umgesetzt.</p>
<p>Wir haben mit Drupal (deutschspr. Seite: <a href="http://drupalcenter.de">drupalcenter.de</a>) inzwischen sehr gute Erfahrungen gesammelt und es mit Hilfe von <em>open-source</em> Modulen aus der Drupalcommunity und Selbstgeschriebenem (haupts&#228;chlich gebaut von unseren Partnern bei <a href="http://erdfisch.de/">Erdfisch</a>) die n&#228;chste Ausbaustufe unserer Community umgesetzt und die Basis f&#252;r eine modulare Weiterentwicklung gelegt. Dabei handelt es sich diesmal weniger um die ber&#252;hmt be<ins>r</ins>&#252;chtigte Betaversion einer Community, sondern eher um Phase 1.</p>
<p><img src="http://codecandies.de/wp-content/uploads/iw/ZZ028A9217.jpg" width="438" alt="Screenshot" /></p>
<p>Die Kommentarcommunity hat sich dabei vom reinen Kommentarsystem f&#252;r ZEIT-Artikel zu einer PLattform f&#252;r lesende, nachrichteninteressierte und schreibende Besucher entwickelt. Mitglieder der Community k&#246;nnen – wie gehabt – ZEIT-Artikel kommentieren, aber auch selbst Beitr&#228;ge verfassen. Jedes Mitglied hat ein – je nach Wunsch mehr oder weniger – ausf&#252;hrliches Profil, mit <em>Avatar</em>, sprich Nutzerbild, das an jedem Artikel und Kommentar angezeigt wird. &#220;ber das interne Nachrichtensystem k&#246;nnen die Mitglieder Nachrichten aneinander verschicken.</p>
<p>Ein Aktivit&#228;tsindex und ein ausgekl&#252;geltes Bewertungssystem sollen helfen, die Perlen im »river <em>of text</em>« der Community zu finden, durch den Import aus der Vorl&#228;uferversion befinden sich immerhin bereits jetzt rund 177.000 Benutzer und ca. 80.000 Kommentare im System, es kommt praktisch min&#252;tlich neuer Content dazu. Auf einer F&#252;nfpunkteskala k&#246;nnen Beitr&#228;ge, wie auch Kommentare bewertet werden. Die Bewertung eigener Artikel pr&#228;gen den Bewertungsindex eines Nutzers, der in seinem Profil als durchschnittliche Bewertung abgebildet wird. Ebenfalls k&#246;nnen sp&#228;ter (wenn die entsprechende Menge entsprechenden Contents zusammengekommen sind) beispielsweise die bestbewerteten Nutzer f&#252;r ein bestimmtes Thema errechnet werden. Mit Hilfe dieser Techniken soll sich die Community ihre Experten f&#252;r bestimmte Themen selbst bewerten/errechnen: traditionell wird das Kommentarsystem der ZEIT ja von vielerlei Experten genutzt, durch die verschiedenen Indizes wird man diese Experten nun auch finden k&#246;nnen.</p>
<p>Einhergehend damit wurde ein dreistufiges Stichwortsystem eingef&#252;hrt: es vereint die sehr grobe Ressorteinteilung, wie sie auf den Seiten von <a href="http://www.zeit.de/index">ZEIT online</a> genutzt wird, mit den aktuellen ZEIT online Tags und durch die Nutzer frei w&#228;hlbare Stichworte. So soll eine Navigation anhand von Themen gef&#246;rdert werden.</p>
<p>Gleichzeitig mit diesen funktionalen &#196;nderungen, wurde ein neues, leichteres Design umgesetzt. Die viel, hei&#223; und agressiv diskutierten Gr&#252;nt&#246;ne wurde, bis auf die neue Sidebar in »Waldmeister« weitgehend zur&#252;ckgedr&#228;ngt…</p>
<p style="font-size:9px">Zur Klarstellung: der Autor arbeitet bei ZEIT online – dies ist also durchaus wonach es klingt: Werbung.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2007/10/23/community-powered-by-drupal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ende einer &#196;ra</title>
		<link>http://codecandies.de/2007/07/15/ende-einer-aera/</link>
		<comments>http://codecandies.de/2007/07/15/ende-einer-aera/#comments</comments>
		<pubDate>Sun, 15 Jul 2007 18:41:02 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://codecandies.de/2007/07/15/ende-einer-aera/</guid>
		<description><![CDATA[Meine erste Programmiersprache wird ab heute zu Grabe getragen.*) Today it is exactly three years ago since PHP 5 has…]]></description>
			<content:encoded><![CDATA[<p>Meine erste Programmiersprache wird ab heute zu Grabe getragen.<sup>*)</sup></p>
<blockquote cite="http://www.php.net/index.php#2007-07-13-1"><p> Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stable &#038; production-ready and as PHP 6 is on the way, PHP 4 will be discontinued.</p>
<p>The PHP development team hereby announces that support for PHP 4 will continue until the end of this year only. After 2007-12-31 there will be no more releases of PHP 4.4. We will continue to make critical security fixes available on a case-by-case basis until 2008-08-08. Please use the rest of this year to make your application suitable to run on PHP 5.</p>
 <p class="citesource"><cite><a href="http://www.php.net/index.php#2007-07-13-1">www.php.net</a></cite></p></blockquote>
<p>Wird auch Zeit sozusagen, denn obwohl PHP6 schon in der Entwicklung ist, hat sich PHP5 gelinde gesagt noch nicht durchgesetzt. Vieles wartet noch auf Portierung und PHP4 ist noch ziemlich verbreitet, auf den Servern, wie auch in den K&#246;pfen.</p>
<p><sup>*)</sup> OK, nicht meine Erste, irgendwann hab ich ja auch mal <em>Turbo Pascal</em> gelernt. Aber das z&#228;hlt nicht, das einzige was ich dort in einem Schuljahr (das muss so um 1987/88 gewesen sein) gelernt habe war das <a href="http://de.wikipedia.org/wiki/Bubblesort" title="Wikipedia">Bubblesort</a>-Verfahren.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2007/07/15/ende-einer-aera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auf der Suche nach: PHP/MVC</title>
		<link>http://codecandies.de/2007/05/21/auf-der-suche-nach-phpmvc/</link>
		<comments>http://codecandies.de/2007/05/21/auf-der-suche-nach-phpmvc/#comments</comments>
		<pubDate>Mon, 21 May 2007 07:19:29 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programmierung]]></category>

		<guid isPermaLink="false">http://codecandies.de/2007/05/21/auf-der-suche-nach-phpmvc/</guid>
		<description><![CDATA[Beim MBR ist man auf der Suche nach dem perfekten PHP Application Framework und gemeinsam stellen wir alle fest: das…]]></description>
			<content:encoded><![CDATA[<p>Beim <a href="http://masterbootrecord.de/blog/">MBR</a> ist man <a href="http://masterbootrecord.de/blog/Auf-der-Suche-nach-dem-perfekten-PHP-Application-Framework/Auf-der-Suche-nach-dem-perfekten-PHP-Application-Framework_2007-05-16_169.html">auf der Suche nach dem perfekten PHP Application Framework</a> und gemeinsam stellen wir alle fest: das Angebot ist lang aber nicht -weilig. Freundlicherweise sind dort mehr Frameworks gelistet, als man kennen muss, ein hervorragender Ausgangspunkt f&#252;r Tests, allemal. Man k&#246;nnte aber auch einfach das Framework mit dem albernsten Namen w&#228;hlen: in die engere Auswahl geh&#246;ren dann wohl »Blue Shoes« (wg. Sinnlosigkeit), »Medusa« (Mythologie ok, aber Medusa?) und »Qcodo« (sinnlosr webzwonullr Name). In der Liste fehlt nat&#252;rlich das Zend Framework – also bei den ernstgemeinten Frameworks, nicht bei den albernen Namen.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2007/05/21/auf-der-suche-nach-phpmvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework Tutorial</title>
		<link>http://codecandies.de/2007/03/29/zend-framework-tutorial/</link>
		<comments>http://codecandies.de/2007/03/29/zend-framework-tutorial/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 20:19:24 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programmierung]]></category>

		<guid isPermaLink="false">http://codecandies.de/2007/03/29/zend-framework-tutorial/</guid>
		<description><![CDATA[Ralf Eggert arbeitet in seinem Weblog an einem sehr umfangreichen Zend Framework Tutorial. 11 von 17 Kapiteln sind schon fertig,…]]></description>
			<content:encoded><![CDATA[<p><img src="http://codecandies.de/wp-content/uploads/iw/ZZ5135AF6F.jpg" width="206" height="47" alt=""/ style="float:left;margin-right:10px;padding-top:3px">Ralf Eggert arbeitet in seinem <a href="http://www.ralfeggert.de/">Weblog</a> an einem sehr umfangreichen <a href="http://www.ralfeggert.de/zend-framework-tutorial/">Zend Framework Tutorial</a>. 11 von 17 Kapiteln sind schon fertig, da kann man sich mal schon ans Lesen machen, w&#228;hrend die letzten Kapitel nachgeliefert werden. &#220;ber das Tutorial hinweg wird eine komplette Anwendung entwickelt, was ich f&#252;r einen guten Weg des Einstiegs halte: so kommt am Ende wenigstens etwas dabei heraus. Das Tutorial umfasst folgende Themen:</p>
<ol>
<li>Einf&#252;hrung und Anforderungen</li>
<li>Systemaufbau mit Bootstrap Datei und der Zend Basisklasse</li>
<li>MVC Design Pattern und Zend_Controller</li>
<li>MVC Design Pattern und Zend_Db</li>
<li>MVC Design Pattern und Zend_View</li>
<li>MVC Design Pattern und Formularverarbeitung</li>
<li>MVC Design Pattern f&#252;r weitere Controller</li>
<li>Konfiguration mit Zend_Config</li>
<li>Benutzereingaben filtern mit Zend_Filter_Input</li>
<li>Sinnvoll cachen mit Zend_Cache</li>
<li>N&#252;tzliche Komponenten Zend_Log und Zend_Mail</li>
<li>Trackbacks und Pingbacks mit Zend_Http_Client</li>
<li>Drucken mit Zend_Pdf</li>
<li>Suchen mit Zend_Search</li>
<li>Mashup mit Zend_Service_Amazon und Zend_Service_Flickr</li>
<li>Exkurs mit Smarty Template Engine</li>
<li>Exkurs mit ez Components und ezcTemplate</li>
</ol>
<p>Das <a href="http://framework.zend.com/" hreflang="en-us">Zend-Framework</a> ist ein <abbr title="Model View Controller">MVC</abbr>- und Webapplication-Framework, von (na?) <a href="http://www.zend.com/de/">Zend</a> (schon wieder…).</p>

]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2007/03/29/zend-framework-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Securitytips f&#252;r PHP</title>
		<link>http://codecandies.de/2007/03/15/10-securitytips-fuer-php/</link>
		<comments>http://codecandies.de/2007/03/15/10-securitytips-fuer-php/#comments</comments>
		<pubDate>Thu, 15 Mar 2007 08:18:54 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programmierung]]></category>

		<guid isPermaLink="false">http://codecandies.de/2007/03/15/10-securitytips-fuer-php/</guid>
		<description><![CDATA[Zehn wunderbare Security-Tips pr&#228;sentiert die Firma ZEND dem geneigten PHP-Programmierer. Wer jetzt mit Codebeispielen rechnet wundert sich. Es handelt sich…]]></description>
			<content:encoded><![CDATA[<p><a href="http://devzone.zend.com/public/view/tag/Security_Tips">Zehn wunderbare Security-Tips pr&#228;sentiert die Firma ZEND dem geneigten PHP-Programmierer</a>. <del>Wer jetzt mit Codebeispielen rechnet wundert sich</del>. Es handelt sich vielmehr um 10 einigerma&#223;en abstrakte Dinge, die man sich beim PHP coden einfach merken sollte <ins>(siehe Update weiter unten)</ins>. Ein Bespiel: Tip Nr. 1…</p>
<blockquote cite="http://devzone.zend.com/public/view/tag/Security_Tips"><p>Looking for the security silver bullet? I’ve got bad news for you, there isn’t one. Security take an ongoing effort and a lot of little things instead of one big one.</p>
 <p class="citesource"><cite><a href="http://devzone.zend.com/public/view/tag/Security_Tips">devzone.zend.com</a></cite></p></blockquote>
<p>[Via: <a href="http://www.script-artists.de/2007/03/sicherheitstipps.html">Script Artists</a>. BTW: cooler Header.]</p>
<p><ins>Wie <a href="http://codecandies.de/2007/03/15/10-securitytips-fuer-php/#comment-105">e-sven richtig anmerkt</a>, gehen die Tipps &#252;ber den oben genannten abstrakten Einleitungssatz hinaus, nachdem man auf die &#220;berschrift klickt. *ggg Da bin ich reingefallen. Es funktioniert leider nicht immer, sich morgens vor der Zugfahrt die Sachen in den Browser zu laden und dann im Zug (ohne Netz) anzusehen und auch noch dar&#252;ber zu bloggen. Sorry for that. ;) Insofern ist die Seite aber nat&#252;rlich noch viel mehr wert… also: <strong>bookmarken</strong>!</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2007/03/15/10-securitytips-fuer-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>phpinfo() considered harmful</title>
		<link>http://codecandies.de/2007/03/05/phpinfo-considered-harmful/</link>
		<comments>http://codecandies.de/2007/03/05/phpinfo-considered-harmful/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 09:00:32 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[considered harmful]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmierung]]></category>

		<guid isPermaLink="false">http://codecandies.de/2007/03/05/phpinfo-considered-harmful/</guid>
		<description><![CDATA[Rein instinktiv fand ich es immer ein wenig seltsam, eine Infodatei ins Root zu legen, die nur phpinfo() aufruft. Und…]]></description>
			<content:encoded><![CDATA[<p>Rein instinktiv fand ich es immer ein wenig seltsam, eine Infodatei ins Root zu legen, die nur <code>phpinfo()</code> aufruft. Und tats&#228;chlich, darin versteckt sich eine <abbr title="CrossSiteScripting">XSS</abbr>-Anf&#228;lligkeit, wie <a href="http://www.php-security.org/MOPB/MOPB-08-2007.html">MonthOfThePHPBug No. 8</a> belegt. Der Bug war schoneinmal gefunden und erschlagen, wurde aber f&#252;r bestimmte PHP-Versionen »reintroduced«. Man sollte das mit frei zug&#228;nglichen Infos einfach komplett lassen.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2007/03/05/phpinfo-considered-harmful/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encoding — irgendetwas geht immer schief</title>
		<link>http://codecandies.de/2007/01/26/encoding-irgendetwas-geht-immer-schief/</link>
		<comments>http://codecandies.de/2007/01/26/encoding-irgendetwas-geht-immer-schief/#comments</comments>
		<pubDate>Fri, 26 Jan 2007 09:41:55 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://codecandies.de/2007/01/26/encoding-irgendetwas-geht-immer-schief/</guid>
		<description><![CDATA[Character Encoding ist so eins der Dinge, die bei einem Webprojekt leicht schief gehen k&#246;nnen, vor allem wenn man in…]]></description>
			<content:encoded><![CDATA[<p><em>Character Encoding</em> ist so eins der Dinge, die bei einem Webprojekt leicht schief gehen k&#246;nnen, vor allem wenn man in einer heterogenen Umgebung arbeiten muss, also beispielsweise eine gro&#223;e Website aus etlichen verschiedenen Quellen, von unterschiedlichen Servern, aus verschiedenen <em>Codejahrhunderten</em> zusammen zu stricken hat. Nat&#252;rlich k&#246;nnte, m&#252;sste, sollte immer alles <code>UTF-8</code> codiert sein: aber die Realit&#228;t sieht leider anders aus. Denn selbst wenn man es schafft, alle Codequellen und Server abzustimmen, irgendwann kommt immer ein Benutzer mit der nordkoeranischen Version des Acrobat Readers 1.0 und hat mal eben daraus Text in ein Webformular gepastet…</p>
<p>Tommy Olsson bringt nun auf <a href="http://www.sitepoint.com/article/guide-web-character-encoding">Sitepoint: The Definitive Guide to Web Character Encoding</a>, ein hehres Ziel, will ich meinen. Und tats&#228;chlich, der Artikel birgt wundersch&#246;ne Erkl&#228;rungen: was ist das eigentlich »Character Encoding«, was passiert da, wie und wo stellt man es richtig ein und was passiert dann. Auf die Unw&#228;gbarkeiten des geplagten Integrationsentwicklers kann man da nur schwer eingehen, das sehe ich ein, also, wer von »Character Encoding« noch keinen Schimmer hat, unbedingt lesen.</p>
<p>F&#252;r die anderen ein paar Hinweise (teilweise auch siehe im genannten Artikel) geb&#252;ndelt: <strong>Stellen an denen es mit dem Character Encoding gerne schief l&#228;uft:</strong></p>
<ul>
<li><em>Der Eintrag im HTML ist falsch oder fehlerhaft.</em> Eigentlich immer die erste Stelle, wo man bei einer Webseite nachschauen sollte. <code>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;</code> soll da im Header stehen. Man beachte auch, dass <strong>content</strong> den ganzen String, samt Semikolon enth&#228;lt, also hier: <code>text/html; charset=utf-8</code>.</li>
<li>Ausserdem &#252;berschreibt der <strong>HTTP-Header</strong> des Servers (oder aus einem Programm) zwingend den Meta-Tag des Dokumentes. Also muss in der Apache-Konfiguration <code>AddDefaultCharset UTF-8</code> gesetzt sein. Ist es so, aber es kommt trotzdem M&#252;ll, kann auch bspw. ein PHP-Programm den Header neu gesetzt haben. Man suche nach Stellen wie: <code>header('Content-Type: application/xhtml+xml; charset=ISO-8859-1');</code> und, ach ja: in der <strong>php.ini</strong> gibt&#8217;s auch noch ein oder zwei Stellen, wo man mal nach <code>default_charset</code> diggen sollte.</li>
<li>Arbeitet man mit einen Javascript-Framework wie <a href="http://dojotoolkit.org/">Dojo</a>, kann man &#252;ber Parameter bestimmen, in welchem Encoding Daten an den Server geschickt werden. Da haben wir aber teilweise richtige Schwierigkeiten bekommen, die wir auch nicht aufl&#246;sen konnten – was so ein typisches Problembeispiel ist. Die Programmierer der Javascript- genauso wie der PHP-Seite behaupteten allesamt, dass ausschlie&#223;lich mit UTF-8 gearbeitet w&#252;rde, obwohl trotzdem M&#252;ll in der DB landete. Schlussendlich hat man sich auf einen Dojo-Bug geeinigt und serverseitig das Problem aufgefangen…</li>
<li>…was man aber eigentlich nicht tun sollte, denn: es ist im Grunde immer besser, wenn die Daten schon richtig ankommen, im Grunde ist dabei das Encoding egal, wenn es richtig ausgewiesen ist. Richtig bl&#246;d wird&#8217;s nur, wenn encodierte Daten nochmals encodiert werden. Das sieht zwar lustig aus…</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2007/01/26/encoding-irgendetwas-geht-immer-schief/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

