<?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>brianp.de &#187; PHP</title>
	<atom:link href="http://brianp.de/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://brianp.de</link>
	<description>Wissen ist der erste Rohstoff, der sich bei Gebrauch vermehrt! - brandeins</description>
	<lastBuildDate>Mon, 06 Sep 2010 14:55:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Internationalisierung (I18n) mit CakePHP</title>
		<link>http://brianp.de/2009/10/26/internationalisierung-i18n-mit-cakephp/</link>
		<comments>http://brianp.de/2009/10/26/internationalisierung-i18n-mit-cakephp/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 22:54:59 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[I18n]]></category>
		<category><![CDATA[po]]></category>
		<category><![CDATA[pot]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=491</guid>
		<description><![CDATA[CakePHP nutzt zum Internationalisieren pot bzw. po Dateien. Die pot Datei enthält alle Texte die übersetzt werden müssen. Diese Datei wird (fast) automatisch von dem Framework erstellt. Dazu werden alle Ausgaben eingelesen und dann zusammengefasst. Es empfiehlt sich dabei, von Anfang an, alle Texte mit der eingebauten Funktion __&#40;string text&#41; auszugeben. Alle Ausgaben mit dieser [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cakephp.org/">CakePHP</a> nutzt zum Internationalisieren pot bzw. po Dateien. Die pot Datei enthält alle Texte die übersetzt werden müssen. Diese Datei wird (fast) automatisch von dem Framework erstellt. Dazu werden alle Ausgaben eingelesen und dann zusammengefasst. Es empfiehlt sich dabei, von Anfang an, alle Texte mit der eingebauten Funktion</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">__<span style="color: #009900;">&#40;</span>string text<span style="color: #009900;">&#41;</span></div></div>
<p>auszugeben. Alle Ausgaben mit dieser Funktion werden problemlos vom Framework erkannt, soweit habe ich es schon getestet. <img src='http://brianp.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Eine Ausgabe im Template sieht also so aus:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Please enter your name'</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Dabei empfiehlt es sich alle Texte im Template in Englisch zu halten, denn wenn CakePHP keine Übersetzung findet, verwendet es den Wert der ursprünglich übergeben wurde. Wird zum Beispiel eine deutsche Übersetzung gefunden, wird der Text natürlich in Deutsch ausgegeben &#8211; vorausgesetzt im Browser ist als Hauptsprache Deutsch eingestellt oder man hat es explizit im Code gesetzt. Das kann man mit folgender Code-Zeile erreichen:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Configure<span style="color: #339933;">::</span><span style="color: #004000;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Config.language'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'deu'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Also, wir geben also alle Ausgaben in Englisch und mit der oben beschriebenen Funktion aus, und können dann mit der CakePHP Console die pot Datei erstellen. Dazu ruft man das Programm unter
<pre>[CakePHP-ROOT]/cake/console/cake</pre>
<p> auf, mit dem Parameter <em>i18n</em>. Mehr Infos findet man auf der Dokumentationsseite von CakePHP (siehe unten).</p>
<p>Nachdem man mit der CakePHP Console die pot Datei erstellt hat, kann man diese mit z.B. mit dem Programm Poedit öffnen, übersetzen und als po speichern. Die po Datei muss <em>default</em> heißen und in den Ordner
<pre>[CakePHP-ROOT]/app/locale/deu/LC_MESSAGES</pre>
<p> gespeichert werden. <em>deu</em> steht natürlich für die jeweilige Sprache. Ein Link zu einer Seite mit allen andern Sprachcodes ist in der Linkliste am Seitenende.</p>
<p><u>Weitere Informationen:</u></p>
<ul>
<li>
		CakePHP:<br />
		<a href="http://cakephp.org/">http://cakephp.org/</a>
	</li>
<li>
		CakePHP I18n:<br />
		<a href="http://http://book.cakephp.org/view/161/Internationalization-Localization">http://book.cakephp.org/view/161/Internationalization-Localization</a>
	</li>
<li>
		ISO 639-2 Sprachcodes:<br />
		<a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">http://www.loc.gov/standards/iso639-2/php/code_list.php</a>
	</li>
<li>
		CakePHP Console:<br />
		<a href="http://book.cakephp.org/view/108/The-CakePHP-Console">http://book.cakephp.org/view/108/The-CakePHP-Console</a>
	</li>
<li>
		Poedit:<br />
		<a href="http://www.poedit.net/">http://www.poedit.net/</a>
	</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/10/26/internationalisierung-i18n-mit-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Sicherheit</title>
		<link>http://brianp.de/2009/03/26/php-sicherheit/</link>
		<comments>http://brianp.de/2009/03/26/php-sicherheit/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 18:33:16 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Cross-Site-Scripting]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[SQL-Injection]]></category>

		<guid isPermaLink="false">http://brianp.de/wordpress/?p=85</guid>
		<description><![CDATA[Ich habe dieses kleine Skript gebastelt, was die $_POST und $_GET Variablen absichert, das heißt alle &#8220;&#8221; durch &#8220;&#60;&#8221; bzw. &#8220;&#62;&#8221; ersetzt und mit der PHP-Funktion addslashes alle &#8221; und &#8216; terminiert. $_POST = array_map&#40;'terminateAll', $_POST&#41;; $_GET = array_map&#40;'terminateAll', $_GET&#41;; &#160; function terminateAll&#40;$v&#41; &#123; &#160; &#160; //&#38;lt; und &#38;gt; &#160; &#160; $v = str_replace&#40;'&#60;', '&#38;lt;', [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe dieses kleine Skript gebastelt, was die $_POST und $_GET Variablen absichert, das heißt alle &#8220;<" bzw. ">&#8221; durch &#8220;&lt;&#8221; bzw. &#8220;&gt;&#8221; ersetzt und mit der PHP-Funktion addslashes alle &#8221; und &#8216; terminiert.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$_POST</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array_map"><span style="color: #990000;">array_map</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'terminateAll'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$_GET</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array_map"><span style="color: #990000;">array_map</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'terminateAll'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
<span style="color: #000000; font-weight: bold;">function</span> terminateAll<span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">//&amp;lt; und &amp;gt;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$v</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/str_replace"><span style="color: #990000;">str_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&amp;lt;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$v</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/str_replace"><span style="color: #990000;">str_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&gt;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&amp;gt;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/get_magic_quotes_gpc"><span style="color: #990000;">get_magic_quotes_gpc</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$v</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/addslashes"><span style="color: #990000;">addslashes</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$v</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/03/26/php-sicherheit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eine HTML Form mit mehreren Buttons</title>
		<link>http://brianp.de/2008/07/19/eine-html-form-mit-mehreren-buttons/</link>
		<comments>http://brianp.de/2008/07/19/eine-html-form-mit-mehreren-buttons/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 15:12:06 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Button]]></category>
		<category><![CDATA[Form]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://brianp.de/wordpress/?p=4</guid>
		<description><![CDATA[Um in einer HTML-Form verschiedene Buttons unterscheiden zu können, gibt es mehrere Möglichkeiten. Die beste ist sicherlich allen Buttons einen gemeinsamen Name zu geben und dann den Value abzufragen. &#60;input name=&#34;button&#34; type=&#34;submit&#34; value=&#34;Login&#34; /&#62; &#60;input name=&#34;button&#34; type=&#34;submit&#34; value=&#34;Registrieren&#34; /&#62; In PHP würde die Abfrage lauten: if&#40;$_POST&#91;button&#93; == &#34;Login&#34;&#41; &#123; &#125; else if&#40;$_POST&#91;button&#93; == &#34;Registrieren&#34;&#41; &#123; [...]]]></description>
			<content:encoded><![CDATA[<p>Um in einer HTML-Form verschiedene Buttons unterscheiden zu können, gibt es mehrere Möglichkeiten. Die beste ist sicherlich allen Buttons einen gemeinsamen Name zu geben und dann den Value abzufragen.</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Login&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Registrieren&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></div></div>
<div>
<p>In PHP würde die Abfrage lauten:</p>
<div>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span>button<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;Login&quot;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span>button<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;Registrieren&quot;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2008/07/19/eine-html-form-mit-mehreren-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
