<?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>PHP Log &#187; Allgemeines</title>
	<atom:link href="http://www.php-log.de/programmierer/allgemeines/feed" rel="self" type="application/rss+xml" />
	<link>http://www.php-log.de</link>
	<description>Eine feine Sammlung nützlicher PHP Notizen</description>
	<lastBuildDate>Mon, 20 Sep 2010 00:22:05 +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>Vertrag bei eplus kündigen.</title>
		<link>http://www.php-log.de/526/allgemeines/vertrag-bei-eplus-kundigen</link>
		<comments>http://www.php-log.de/526/allgemeines/vertrag-bei-eplus-kundigen#comments</comments>
		<pubDate>Mon, 29 Mar 2010 05:30:08 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=526</guid>
		<description><![CDATA[Wer einen Vertrag mit der&#8230;äh&#8230;Telefongesellschaft eplus kündigen möchte, tut dies in jedem Fall am besten per Einschreiben mit Rückschein.Mehr gibt aus meiner Sicht zu diesem Unternehmen nicht zu sagen.]]></description>
			<content:encoded><![CDATA[<p>Wer einen Vertrag mit der&#8230;äh&#8230;Telefongesellschaft eplus kündigen möchte, tut dies in jedem Fall am besten per Einschreiben mit Rückschein.<span id="more-526"></span>Mehr gibt aus meiner Sicht zu diesem Unternehmen nicht zu sagen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/526/allgemeines/vertrag-bei-eplus-kundigen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Explorer 8 macht Ajax Probleme</title>
		<link>http://www.php-log.de/446/allgemeines/internet-explorer-8-macht-ajax-probleme</link>
		<comments>http://www.php-log.de/446/allgemeines/internet-explorer-8-macht-ajax-probleme#comments</comments>
		<pubDate>Sat, 29 Aug 2009 02:36:34 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[AJAX]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=446</guid>
		<description><![CDATA[Auf einer Anwendung, die auf einem IIS läuft und CakePHP als Framework nutzt, weigert sich der IE 8 Änderungen via Ajax zu speichern. Und warum? Na wegen dem Cache, wenn der Browserverlauf auf &#8216;Automatisch&#8217; steht fragt diese Krücke gar nicht erst beim Server nach. Ich wusste mir aufgrund gebotener Eile, nicht anders zu Helfen, als [...]]]></description>
			<content:encoded><![CDATA[<p>Auf einer Anwendung, die auf einem IIS läuft und CakePHP als Framework nutzt, weigert sich der IE 8 Änderungen via Ajax zu speichern. Und warum? Na wegen dem Cache, wenn der Browserverlauf auf &#8216;Automatisch&#8217; steht fragt diese Krücke gar nicht erst beim Server nach.<span id="more-446"></span></p>
<p>Ich wusste mir aufgrund gebotener Eile, nicht anders zu Helfen, als meine Ajax Requests um einen Timestamp zu erweitern.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">function</span> getTimeStamp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> t <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> ms <span style="color: #339933;">=</span> t.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">'/t:'</span> <span style="color: #339933;">+</span> ms<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Nicht besonders elegant aber es hat geholfen. Kein Wunder wenn der Browser sich seine Vormachtsstellung verspielt. <a href="http://getclicky.com/global-marketshare-statistics" target="_blank">Bin gespannt wann der unter 50% geht <img src='http://www.php-log.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </a></p>
<p><strong>Update</strong></p>
<p>Hier ein Beispiel aus der Praxis:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">function</span> bulk_update<span style="color: #009900;">&#40;</span>operation<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> url <span style="color: #339933;">=</span> <span style="color: #3366CC;">'/admin/acls/operation/1'</span> <span style="color: #339933;">+</span> getTimeStamp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
			method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
		  	onSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>transport<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #006600; font-style: italic;">// Tu was</span>
		  	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
			onFailure<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>transport<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                               <span style="color: #006600; font-style: italic;">// Fürs Protokoll</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
			onLoading<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>transport<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #006600; font-style: italic;">// warte...</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/446/allgemeines/internet-explorer-8-macht-ajax-probleme/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CakePHP &#8211; Pagination in Verbindung mit Containable</title>
		<link>http://www.php-log.de/392/allgemeines/cakephp-pagination-in-verbindung-mit-containable</link>
		<comments>http://www.php-log.de/392/allgemeines/cakephp-pagination-in-verbindung-mit-containable#comments</comments>
		<pubDate>Wed, 29 Jul 2009 19:00:36 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Containable]]></category>
		<category><![CDATA[Pagination]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=392</guid>
		<description><![CDATA[Das Behaviour Containable ist eines der Highlights bei der Arbeit mit CakePHP, erlaubt doch es quasi wahlfreien Zugriff auf verknüpfte Datensätze. Häufig benötigt man die Dienste von Containable in Kombination mit einer Pagination. Das ist im Handbuch auch ganz gut dokumentiert. Ich möchte hier aber auf eine Besonderheit in der Notation aufmerksam machen, und zwar [...]]]></description>
			<content:encoded><![CDATA[<p>Das Behaviour Containable ist eines der Highlights bei der Arbeit mit CakePHP, erlaubt doch es quasi wahlfreien Zugriff auf verknüpfte Datensätze. <span id="more-392"></span></p>
<p>Häufig benötigt man die Dienste von Containable in Kombination mit einer Pagination. Das ist im Handbuch auch ganz gut <a href="http://book.cakephp.org/de/view/474/Containable">dokumentiert</a>. Ich möchte hier aber auf eine Besonderheit in der Notation aufmerksam machen, und zwar die Verknüpfung mittels Punktnotation. Folgendes Codefragment aus der Praxis soll dass verdeutlichen.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> revenues<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Revenue.user_id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user_id</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Revenue.status'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'pending'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">paginate</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'conditions'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$conditions</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'contain'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Client.User'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// &lt;-- Hier liegt die Magie</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$revenues</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">paginate</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Revenue'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Durch die &#8216;contain&#8217; Zeile erhalten wir ein Array von folgender Struktur:</p>
<pre>
Array
(
    [0] => Array
        (
            [Revenue] => Array
                (
                    [id] => 10
                    [status] => pending
                     ...
                    [updated] => 2009-07-29 20:19:27
                    [created] => 2009-07-29 20:19:27
                )
            [Client] => Array
                (
                    [id] => 17
                    [user_id] => 15
                     ...
// Der verknüpfte Datensatz wird von Containable eingesetzt
                    [User] => Array
                        (
                            [id] => 15
                            [name] => Hans
                            ...
                        )
                )
        )
)
</pre>
<p>Ohne die contain Zeile bekämen wir dieses Array, es fehlt der User:</p>
<pre>
Array
(
    [0] => Array
        (
            [Revenue] => Array
                (
                    [id] => 10
                    [status] => pending
                     ...
                    [updated] => 2009-07-29 20:19:27
                    [created] => 2009-07-29 20:19:27
                )
            [Client] => Array
                (
                    [id] => 17
                    [user_id] => 15
                )
        )
)
</pre>
<p><strong>Update</strong><br />
Wichtig: Wer mit Containable arbeitet sollte unbedingt darauf achten das Feld &#8216;recursion&#8217; aus seinem $conditions Array zu löschen. Andernfalls gibt es Probleme mit tiefen Rekursionen im Kontext von Containable</p>
]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/392/allgemeines/cakephp-pagination-in-verbindung-mit-containable/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML mit PHP verarbeiten</title>
		<link>http://www.php-log.de/376/allgemeines/xml-mit-php-verarbeiten</link>
		<comments>http://www.php-log.de/376/allgemeines/xml-mit-php-verarbeiten#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:48:04 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=376</guid>
		<description><![CDATA[Wer mit PHP einen XML Input verarbeiten will hat grundsätzlich verschiedene Möglichlichkeiten. Jeder muss für sich entscheiden welche Methode für sein Vorhaben das richtige ist. Es gibt nur einen kleinen Stolperstein, auf den ich an dieser Stelle hinweisen möchte. Wer sich für den XMLReader entscheidet sollte sich klarmachen, das es Probleme mit dem Encoding geben [...]]]></description>
			<content:encoded><![CDATA[<p>Wer mit PHP einen XML Input verarbeiten will hat grundsätzlich verschiedene Möglichlichkeiten. Jeder muss für sich entscheiden welche Methode für sein Vorhaben das richtige ist. Es gibt nur einen kleinen Stolperstein, auf den ich an dieser Stelle hinweisen möchte.<span id="more-376"></span></p>
<p>Wer sich für den <a href="http://de2.php.net/manual/de/book.xmlreader.php" target="_blank">XMLReader</a> entscheidet sollte sich klarmachen, das es Probleme mit dem Encoding geben kann. Mir ist es nicht gelungen eine UTF-8 kodierte Datei mit einigen Sonderzeichen wie z.B. dem ™ richtig einzulesen, geschweige mit Hilfe von iconv nach ISO-8859-1 zu konvertieren.</p>
<p>Abhilfe schaffte letzendlich der Umstieg nach <a href="http://de2.php.net/manual/de/book.dom.php">DOM</a>, die hier eingelesenen Sonderzeichen bleiben erhalten. Was allerdings nicht heisst das ich das ™ nach ISO konvertieren konnte. iconv weigert sich hier einfach. Letzendlich bleibt mir nur das Projekt komplett nach UTF-8 zu konvertieren. Klar UTF-8 ist immer der bessere Weg, aber man es nicht immer in der Hand&#8230;</p>
<p>Wenn jemand  eine Lösung für dass Problem mit den Sonderzeichen und der Konvertierung mit Hilfe von iconv hat, freue ich mich auf jeden HInweis und Kommentar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/376/allgemeines/xml-mit-php-verarbeiten/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bilder Galerie mit Javascript</title>
		<link>http://www.php-log.de/287/allgemeines/bild-galerie-mit-javascript</link>
		<comments>http://www.php-log.de/287/allgemeines/bild-galerie-mit-javascript#comments</comments>
		<pubDate>Thu, 14 May 2009 08:52:48 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[AJAX]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=287</guid>
		<description><![CDATA[Image-Galerien mit Javascript sind mittlerweile ziemlich populär und laufen den Flash-Gallerien den Rang ab. Hier eine kleine Auswahl von Galerien die ich einsetze, oder zumindest erwäge Sie mal auszuprobieren. Es handelt sich jeweils um reine Javascript Galerien die keinerlei serverseitige Scripte benötigen. Imago &#8211; An Ajax Image Gallery Basierend auf mootools liegt diese Galerie zur [...]]]></description>
			<content:encoded><![CDATA[<p>Image-Galerien mit Javascript sind mittlerweile ziemlich populär und laufen den Flash-Gallerien den Rang ab. Hier eine kleine Auswahl von Galerien die ich einsetze, oder zumindest erwäge Sie mal auszuprobieren. Es handelt sich jeweils um reine Javascript Galerien die keinerlei serverseitige Scripte benötigen.</p>
<p><span id="more-287"></span></p>
<h2><a href="http://imago.codeboje.de/" target="_blank">Imago &#8211; An Ajax Image Gallery</a></h2>
<p><img class="alignright size-medium wp-image-290" title="screenshot imago" src="http://www.php-log.de/wp-content/uploads/2009/05/screenshot_imago-300x160.png" alt="screenshot imago" width="300" height="160" /> Basierend auf mootools liegt diese Galerie zur Zeit in der Version 0.7 vor. Die Demo sieht ansprechend aus und funktioniert soweit ersichtleich einwandfrei. Die Anbindung ist ein wenig befremdlich, denn es wird per Ajax eine XML Datei in einem bestimmten Format geladen, was bei dynamischen Galerien immer ein wenig mehr Aufwand in der Implementierung bedeutet. Es gibt keine gängige Lizenz wie LGPL, sondern nur ein Terms of Use  Statement dass für einige Verwirrung sorgt. Eine Einschränkung ist z.B. dass die Galerie nicht mit Content Management Systemen vertrieben werden darf.</p>
<h2><a href="http://labs.adobe.com/technologies/spry/demos/gallery/index.html" target="_self">Spry &#8211; Gallery</a></h2>
<p><img class="alignright size-medium wp-image-295" title="Spry Gallery" src="http://www.php-log.de/wp-content/uploads/2009/05/spry-gallery-300x172.png" alt="Spry Gallery" width="300" height="172" /> Aus dem Hause Adobe kommt das umfangreiche &#8220;Spry framework for Ajax&#8221;, dessen Bildergalerie schon recht sexy ist. Auch diese Galerie arbeitet mit XML Dateien&#8230; bedauerlicherweise. Ob das XML auch als String übergeben werden kann, lässt sich so auf die Schnelle nicht herausfinden. Spry steht unter der BDS Lizenz und ist damit meiner Einschätzung nach für alle Einsatzzwecke geeignet.</p>
<h2><a href="http://www.lokeshdhakar.com/projects/lightbox2/" target="_blank">Lightbox 2</a></h2>
<p><img class="alignright size-medium wp-image-298" title="Lightbox 2" src="http://www.php-log.de/wp-content/uploads/2009/05/lightbox-2-300x134.png" alt="Lightbox 2" width="300" height="0" /> Der Klassiker. Einfachste Einbindung, Einfache Bedienung für den Benutzer, weitverbreitet und gut getestet. Eigentlich ideal, aber auch ein wenig ausgetreten. So ziemlich jeder hat dieses Gallery schon irgendwo mal gesehen. Lightbox 2 steht unter der <a href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 License</a>, damit sollte auch diese Software überall ohne Probleme einsetzbar sein.</p>
<h2><a href="http://www.puidokas.com/portfolio/frogjs/" target="_blank">FrogJS Javascript Gallery</a></h2>
<p><img class="alignright size-medium wp-image-302" title="frogjs" src="http://www.php-log.de/wp-content/uploads/2009/05/frogjs-300x130.png" alt="frogjs" width="300" height="130" /> Eine recht erfrischende Variante ist die FrogJS Javascript Gallery. Wie bei der Lightbox, ist auch hier die Einbindung ein Kinderspiel und jeder Benutzer der jemals die Coverflow Funktion von z.B. iTunes gesehen hat kommt damit zurecht. Im  Hintergrund werkeln hier Prototype und Scriptacolous. Die Lizenz ist auch hier wieder die <a href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 License</a>.</p>
<h2><a href="http://www.gcmingati.net/wordpress/wp-content/lab/jquery/imagestrip/imageslide-plugin.html" target="_blank">slideViewer </a></h2>
<p><img class="alignright size-medium wp-image-307" title="jquery-slideviewer-11" src="http://www.php-log.de/wp-content/uploads/2009/05/jquery-slideviewer-11-300x192.png" alt="jquery-slideviewer-11" width="300" height="192" /> Dieses feine jQuery Plugin bietet viel Effekt mit wenig Code. Sicherlich eine gute Wahl wenn es darum geht viele Bilder auf wenig Raum darzustellen. Die Einbindung schient hier ebenfalls sehr simpel zu sein. Der Slideeffekt lässt sich in verschiedenen Varianten einrichten. Leider konnte ich keine Lizenzhinweise finden, im Zweifel besser noch mal beim Author nachfragen.</p>
<h2><a title="JonDesign's (Javascript) SmoothGallery 2.0: Improved Mootools Mojo for Images" href="http://smoothgallery.jondesign.net/what/">JonDesign&#8217;s SmoothGallery</a></h2>
<p><img class="alignright size-medium wp-image-310" title="smoothgallery" src="http://www.php-log.de/wp-content/uploads/2009/05/smoothgallery-300x196.png" alt="smoothgallery" width="300" height="196" /> Diese Galerie wirkt sehr modern und gut gestylt. Nicht jede Funktion ist für den Benutzer gleich ersichtlich, aber meiner Meinung nach ist der Einsatz vertretbar.  Auch hier kommen die Mootools zum Einsatz. Die Einbinung ist nicht sooo einfach wie z.B. bei der Lightbox, aber es ist auch nicht so aufwändig, als dass es einen Programmierer abschrecken könnte. Einziger Wermutstropfen ist die Lizenz, die Galerie steht unter der <a href="http://www.fsf.org/licensing/licenses/gpl.html" target="_self">GPL</a> und ist damit nicht uneingeschränkt und für jeden Zweck einsetzbar.</p>
<h2><a href="http://imageflow.finnrudolph.de/" target="_blank">ImageFlow</a></h2>
<p><img class="alignright size-medium wp-image-313" title="imageflow" src="http://www.php-log.de/wp-content/uploads/2009/05/imageflow-300x161.png" alt="imageflow" width="300" height="161" /> Diese Gallery ist angelehnt an die Coverflow Funktion die ich von meinem MacBook kenne, Windows User kennen das wahrscheinlch am ehesten von iTunes. Die Einbindung sieht auf den ersten Blick recht einfach aus es gibt aber viele Möglichkeiten die Galerie anzupassen. Für die Reflektionen wird ein PHP Script genutzt, es kann aber auch ohne Reflektionen betrieben werden. Für die Integration in ein MVC Framework müssen minimale Anpassungen an den Pfaden vorgenommen werden. Die Lizenz ist die <a href="http://creativecommons.org/licenses/by-nc/3.0/">Creative Commons Attribution-Noncommercial 3.0 Unported License</a>, das heisst man muss für Kommerzielle Nutzung zahlen, aber damit habe ich kein Problem. Soweit ich das Überblicken kann ist der aktuelle Preis 20 USD.</p>
<h2><a href="http://jquery.com/demo/thickbox/" target="_blank">ThickBox <span>3.1</span></a></h2>
<p><img class="alignright size-medium wp-image-315" title="thickbox-31" src="http://www.php-log.de/wp-content/uploads/2009/05/thickbox-31-300x85.png" alt="thickbox-31" width="300" height="85" /> Basierend auf jQuery kommt ThickBox mit einer einfachen einzubinden API und bietet neben der Galerie gleich noch weitere nützliche Funktionen wie modale Dialoge und einiges mehr. Die Funktion der Gallery erinnert an die Lightbox, wirkt aber ein klein wenig moderner. Mit der <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT License</a> gibt es meiner Ansicht nach keine Hürden für einen Einbindung.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/287/allgemeines/bild-galerie-mit-javascript/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mod_Rewrite über eine Datei</title>
		<link>http://www.php-log.de/165/allgemeines/mod_rewrite-uber-eine-datei</link>
		<comments>http://www.php-log.de/165/allgemeines/mod_rewrite-uber-eine-datei#comments</comments>
		<pubDate>Wed, 11 Feb 2009 04:24:46 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[mod_rewrite]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=165</guid>
		<description><![CDATA[Eigentlich jedes Framework dass das MVC Konzept abbildet, schickt jeden Request der am Webserver aufschlägt über eine zentrale Datei. Meist ist das die index.php die sich im Webroot befindet. Dies wird mit Hilfe des (gefürchteten) Apache Moduls &#8220;Mod Rewrite&#8221; realisiert und da &#8220;Mod Rewrite&#8221; lediglich ein Regelwerk vorgibt, und es dazu noch Reguläre Ausdrücke unterstützt, [...]]]></description>
			<content:encoded><![CDATA[<p>Eigentlich jedes Framework dass das MVC Konzept abbildet, schickt jeden Request der am Webserver aufschlägt über eine zentrale Datei. Meist ist das die index.php die sich im Webroot befindet. Dies wird mit Hilfe des (gefürchteten) Apache Moduls &#8220;Mod Rewrite&#8221; realisiert und da &#8220;Mod Rewrite&#8221; lediglich ein Regelwerk vorgibt, und es dazu noch Reguläre Ausdrücke unterstützt, gibt es gibt verschiedene Ansätze wie das erreicht werden kann. Ich möchte hier den Ansatz zeigen der meiner Meinung nach der flexibelste ist.<span id="more-165"></span></p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">    <span style="color: #00007f;">RewriteEngine</span> <span style="color: #0000ff;">On</span>
    <span style="color: #00007f;">RewriteCond</span> %{REQUEST_FILENAME} !-d
    <span style="color: #00007f;">RewriteCond</span> %{REQUEST_FILENAME} !-f
    <span style="color: #00007f;">RewriteRule</span> ^(.*)$ index.php?url=$1 [QSA,L]</pre></div></div>

<p>Die Regel <strong>RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]</strong> besagt: &#8220;Schicke einfach jeden Request auf die index.php&#8221;. Die erste Rewrite Condition <strong>RewriteCond %{REQUEST_FILENAME} !-d</strong> aber sagt: &#8220;Gilt aber nicht wenn das Verzeichnis tatsächlich existiert&#8221;. Die zweite Rewrite Condition <strong>RewriteCond %{REQUEST_FILENAME} !-f</strong> fügt noch hinzu: &#8220;Und auch nicht wenn die Datei tatsächlich existiert&#8221;. Somit werden also alle &#8220;virtuellen&#8221; Requests auf die index.php geleitet, aber vorhandene Resourcen wie Bilder, CSS, JavaScript-Dateien etc. werden nicht über das Framework geschickt.</p>
<blockquote><p>Andere Ansätze funktionieren natürlich auch, aber bei diesem Ansatz ist es sehr einfach externe Scripte, die nicht zum Framework gehören, einzubinden. Im besten Fall legt man Sie einfach im Webroot ab.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/165/allgemeines/mod_rewrite-uber-eine-datei/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

