<?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>Thomas Falkner &#187; webdev</title>
	<atom:link href="http://blog.thomas-falkner.de/tag/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thomas-falkner.de</link>
	<description>Marginalien zu  Linux, Webdesign und Softwareentwicklung</description>
	<lastBuildDate>Sun, 24 Apr 2011 12:11:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>OpenGeoDB PLZ einem Ort zuordnen</title>
		<link>http://blog.thomas-falkner.de/2010/11/15/opengeodb-plz-einem-ort-zuordnen/</link>
		<comments>http://blog.thomas-falkner.de/2010/11/15/opengeodb-plz-einem-ort-zuordnen/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 20:34:27 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[opengeodb]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=279</guid>
		<description><![CDATA[SELECT plz.loc_id, plz.text_val, ort.text_val FROM `geodb_textdata` AS plz RIGHT JOIN (SELECT loc_id, text_val, text_type FROM `geodb_textdata` WHERE text_type = 500100000) AS ort ON plz.loc_id = ort.loc_id WHERE plz.text_type = 500300000]]></description>
			<content:encoded><![CDATA[<pre name="code" class="mysql">
SELECT plz.loc_id,
       plz.text_val,
       ort.text_val
FROM `geodb_textdata` AS plz
RIGHT JOIN
  (SELECT loc_id, text_val, text_type
   FROM `geodb_textdata`
   WHERE text_type = 500100000) AS ort ON plz.loc_id = ort.loc_id
WHERE plz.text_type = 500300000
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2010/11/15/opengeodb-plz-einem-ort-zuordnen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML-Eingaben in eigenen Joomla Komponenten gestatten</title>
		<link>http://blog.thomas-falkner.de/2010/07/12/joomla-html-komponenten/</link>
		<comments>http://blog.thomas-falkner.de/2010/07/12/joomla-html-komponenten/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 16:14:10 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=268</guid>
		<description><![CDATA[Die Methode JRequest::get filtert per default HTML- und PHP-Code aus den Request. M&#246;chte man beispielsweise ein HTML-Eingabefeld in der eigenen Komponente nutzen, l&#228;sst sich dies &#252;ber die MethodeJRequest::getVar mit dem Parameter JREQUEST_ALLOWRAW erreichen. Zum Beispiel so: $description = JRequest::getVar('description','','post','string', JREQUEST_ALLOWRAW);]]></description>
			<content:encoded><![CDATA[<p>Die Methode <tt>JRequest::get</tt> filtert per default HTML- und PHP-Code aus den Request. M&#246;chte man beispielsweise ein HTML-Eingabefeld in der eigenen Komponente nutzen, l&#228;sst sich dies &#252;ber die <tt>MethodeJRequest::getVar</tt> mit dem Parameter <tt>JREQUEST_ALLOWRAW</tt> erreichen.</p>
<p>Zum Beispiel so:</p>
<p><code> $description = JRequest::getVar('description','','post','string', JREQUEST_ALLOWRAW);</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2010/07/12/joomla-html-komponenten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit Apache Hotlinking und Bilderklau unterbinden</title>
		<link>http://blog.thomas-falkner.de/2009/08/31/mit-apache-hotlinking-und-bilderklau-unterbinden/</link>
		<comments>http://blog.thomas-falkner.de/2009/08/31/mit-apache-hotlinking-und-bilderklau-unterbinden/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 09:14:42 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=248</guid>
		<description><![CDATA[Als Webmaster freut man sich &#252;ber eingehende Links, denn schlie&#223;lich steigt damit die Linkpopularit&#228;t. Werden jedoch einzelne Inhalte wie beispielsweise Bilder in Foren direkt per Link eingebunden, k&#246;nnen sich daraus erhebliche Probleme ergeben: Ist das Forum stark frequentiert und das eingebundene Foto relativ gro&#223;, kann der so generierte Traffic schnell bedrohliche Ausma&#223;e annehmen. Keine Chance [...]]]></description>
			<content:encoded><![CDATA[<p>Als Webmaster freut man sich &#252;ber eingehende Links, denn schlie&#223;lich steigt damit die Linkpopularit&#228;t. Werden jedoch einzelne Inhalte wie beispielsweise Bilder in Foren direkt per Link eingebunden, k&#246;nnen sich daraus erhebliche Probleme ergeben: Ist das Forum stark frequentiert und das eingebundene Foto relativ gro&#223;, kann der so generierte Traffic schnell bedrohliche Ausma&#223;e annehmen. </p>
<h2>Keine Chance f&#252;r Trafficdiebe</h2>
<p>W&#228;re es nicht elegant Trafficdieben das Handwerk zu legen, indem wir Ihnen statt dem verlinkten Bild eine andere Datei unterschieben? Statt des gew&#252;nschten Fotos k&#246;nntest du den Contentdieb auf diese Weise unfreiwillig ein Werbebanner f&#252;r deine eigene Website einbinden lassen.</p>
<p><img src="http://blog.thomas-falkner.de/wp-content/uploads/2009/08/stoppt_contentdiebe.png" alt="stoppt_contentdiebe" title="stoppt_contentdiebe" width="450" height="50" class="alignnone size-full wp-image-255" /></p>
<p>Voraussetzung f&#252;r die beschriebene Technik ist ein Apache Webserver mit dem Modul mod_rewrite. Der Code kann entweder &#252;ber .htacess oder direkt &#252;ber die Apache-Konfigurationsdatei eingebunden werden.<br />
Ersetze einfach <tt>domain.tld</tt> gegen die Domain deiner Website und <tt>stoppt_contentdiebe.png</tt> gegen den Namen der Grafik, die du Contentdieben unterschieben m&#246;chtest. </p>
<p><code><br />
<filesmatch "\.(gif|jpg|png)$"><br />
      RewriteEngine on<br />
      RewriteCond %{HTTP_REFERER} !^$<br />
      RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld [NC]<br />
      RewriteCond %{REQUEST_FILENAME} !stoppt_contentdiebe.png$<br />
      RewriteRule .*\.(gif|jpg|png)$ http://domain.tld/images/stoppt_contentdiebe.png [R]<br />
</filesmatch><br />
</code></p>
<h2>Erkl&#228;rung zum Script</h2>
<p>Zun&#228;chst pr&#252;fen wir anhand der Direktive filesmatch die Dateiendung gegen einen einfachen regul&#228;ren Ausdrucks:</p>
<p><code><filesmatch "\.(gif|jpg|png)$"></filesmatch></code></p>
<p>Damit erfassen wir alle aufgerufenen Dateien, die die Dateiendung .gif, .jpg  oder .png tragen. Selbstverst&#228;ndlich lie&#223;e sich der Ausdruck um viele weitere Dateiendungen erweitern, deren direkte Verlinkung wir unterbinden m&#246;chten.</p>
<p>Im n&#228;chsten Schritt schalten wir die RewriteEngine an. Die RewriteEngine erlaubt es uns mittels <tt>RewriteCond</tt> verschiedene Parameter des HTTP-Request gegen regul&#228;re Ausdr&#252;cke zu pr&#252;fen und bei Entsprechung die aufgerufene URL zu manipulieren.</p>
<p>Grunds&#228;tzlich m&#252;ssen wir &#252;berpr&#252;fen, von welcher Domain aus das Bild verlinkt wurde. Dazu lesen wir den Parameter HTTP_REFERER aus. HTTP_REFERER gibt den Referrer, also die auf einen Link verweisende Domain an. </p>
<p>Getreu dem Motto &#8220;Was nicht erlaubt ist, ist verboten&#8221; k&#246;nnen wir zwei Bedingungen f&#252;r ein legitimes Verlinken der Fotos formulieren.</p>
<ol>
<li>Wenn kein Referrer angegeben ist. Das ist der Fall, wenn beispielsweise durch einen Proxy gel&#246;scht oder die URL direkt aufgerufen wurde.</li>
<li>Wenn der Referrer unserer eigenen Domain entspricht.</li>
</ol>
<p>Wir k&#246;nnen demnach folgende Bedienungen formulieren:</p>
<p>Der Referrer ist leer:<br />
<code><br />
      RewriteCond %{HTTP_REFERER} !^$<br />
</code></p>
<p>Der Referrer entspricht unserer eigenen Domain, wobei domain.tld gegen die Domain deiner Website zu ersetzen ist:<br />
<code><br />
       RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld [NC]<br />
</code></p>
<p>Damit die RewriteEngine sich nicht in einer endlosen Schleife verf&#228;ngt, die letztlich mit einem Internal-Server-Error quittiert w&#252;rde, m&#252;ssen wir f&#252;r das dem Trafficdieben unterzuschiebende Bild eine Ausnahme formulieren:</p>
<p><code>RewriteCond %{REQUEST_FILENAME} !stoppt_contentdiebe.png$</code></p>
<p>Sind alle Bedingungen erf&#252;llt, greift folgende Regel, mit der wir alle fremdverlinkten Bilder gegen unseren Hinweis ersetzen. </p>
<p><code>RewriteRule .*\.(gif|jpg|png)$ http://domain.tld/stoppt_contentdiebe.png [R]</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2009/08/31/mit-apache-hotlinking-und-bilderklau-unterbinden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Niedliches Mozilla Maskottchen</title>
		<link>http://blog.thomas-falkner.de/2007/03/23/niedliches-mozilla-maskottchen/</link>
		<comments>http://blog.thomas-falkner.de/2007/03/23/niedliches-mozilla-maskottchen/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 12:28:42 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/03/23/niedliches-mozilla-maskottchen/</guid>
		<description><![CDATA[Es hei&#223;t Kit, ist ist so s&#252;&#223; und es soll f&#252;r die Einhaltung offener Webstandards sorgen: Das neue Maskottchen des Mozilla Developer Centers. Schon beinah widerlich, dieses manipulative Emotionalisieren. Nein, ich werde es mir weder auf den Desktop tapezieren, noch als Kuscheltier, Tasse oder Krawatte kaufen. Trotzdem hoffe ich, dass die traurig blickenden Kulleraugen das [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://developer.mozilla.org/devnews/' rel='attachment wp-att-102' title='Kit, das Maskottchen des Mozilla Developer Centers.'><img src='http://blog.thomas-falkner.de/wp-content/uploads/2007/03/firefoxlogo.jpg' alt='Kit, das Maskottchen des Mozilla Developer Centers.' /></a></p>
<p>Es hei&#223;t Kit, ist ist so s&#252;&#223; und es soll f&#252;r die Einhaltung offener Webstandards sorgen: Das neue <a href="http://developer.mozilla.org/devnews/index.php/2007/03/22/his-name-is-kit-developer-kit/">Maskottchen</a> des Mozilla Developer Centers. Schon beinah widerlich, dieses manipulative Emotionalisieren. Nein, ich werde es mir weder auf den <a href="http://developer.mozilla.org/en/docs/Promote_MDC">Desktop</a> tapezieren, noch als Kuscheltier, Tasse oder Krawatte kaufen.<br />
Trotzdem hoffe ich, dass die traurig blickenden Kulleraugen das Herz jener erweichen m&#246;gen, die glauben der Internet Explorer sei die Referenz. Blickt in diese Kulleraugen und fragt euch, ob es nett ist Webseiten zu gestalten, die auf propriet&#228;ren Technologien fu&#223;en und dem Benutzer vorschreiben einen bestimmten Browser zu installieren. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/03/23/niedliches-mozilla-maskottchen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

