<?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/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>bueltge.de [by:ltge.de] &#187; Script</title>
	<atom:link href="http://bueltge.de/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Tue, 22 May 2012 20:02:25 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Erweiterung der Kommentarfunktion</title>
		<link>http://bueltge.de/erweiterung-der-kommentarfunktion/862/</link>
		<comments>http://bueltge.de/erweiterung-der-kommentarfunktion/862/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 13:16:05 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Kommentar]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=862</guid>
		<description><![CDATA[Ab jetzt ist die Kommentarfunktion ein wenig mächtiger uns soll euch den Zugriff auf Textstellen und -passagen erleichtern. Aufmerksame Leser haben vielleicht die <a href="http://bueltge.de/148-freie-icons/860/#commenthelp">Hinweise zu den Kommentaren</a> schon gelesen und die Funktion genutzt? Ich habe seit geraumer Zeit eine Möglichkeit integriert, die es euch erlaubt sich auf bestimmte Texte aus dem Artikel zu beziehen, ohne großen Mehraufwand. Um die Funktion zu nutzen müsst ihr lediglich im Artikel den Text formatieren, daraufhin erscheint ein Button mit dem Text &#8222;<em>Antworten</em>&#8220;. Beim Klick auf diesen Button wird der markierte Text direkt in die Textbox eures Kommentars übernommen und ihr könnt wie gewohnt euren Kommentar dazu schreiben. Der übernommene Text wird dabei als Zitat ausgezeichnet.]]></description>
			<content:encoded><![CDATA[<p>Ab jetzt ist die Kommentarfunktion ein wenig mächtiger uns soll euch den Zugriff auf Textstellen und -passagen erleichtern.<br />
Aufmerksame Leser haben vielleicht die <a href="#commenthelp">Hinweise zu den Kommentaren</a> schon gelesen und die Funktion genutzt? Ich habe seit geraumer Zeit eine Möglichkeit integriert, die es euch erlaubt sich auf bestimmte Texte aus dem Artikel zu beziehen, ohne großen Mehraufwand. Um die Funktion zu nutzen müsst ihr lediglich im Artikel den Text markieren, daraufhin erscheint ein Button mit dem Text &#8222;<em>Antworten</em>&#8220;. Beim Klick auf diesen Button wird der markierte Text direkt in die Textbox eures Kommentars übernommen und ihr könnt wie gewohnt euren Kommentar dazu schreiben. Der übernommene Text wird dabei als Zitat ausgezeichnet.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/commentreply.png" alt="Screenshot Bezug auf Textstellen im Artikel" /><br />
<span id="more-862"></span><br />
Ich wünsche mir, dass damit die Fragen für mich klarer werden und die Nutzung einfacher wird. Ebenso kann es natürlich genutzt werden um sich auf spezielle Bereiche oder auch nur Wörter zu beziehen, sei es wegen einer Diskussion, Korrektur oder einfach nur Rechtschreibfehler. Ich würde mich freuen, wenn ich ein Feedback bekomme, ob die Funktion sinnvoll erscheint und wie das Handling ist.</p>
<h4>Hinweise</h4>
<p>Die Möglichkeit besteht nur, wenn mein Blog mit aktivem JavaScript besucht wird. Ich habe es unter diversen Browsern getestet und bisher keine Fehler entdeckt, lediglich Unterschiede in der Darstellung, die aber nur auf Grund des entsprechenden Stylesheets zu erwarten waren.</p>
<h3>Die Technik</h3>
<p>Der eine oder andere möchte vielleicht mehr dazu wissen und die gleiche Möglichkeit involvieren, daher hier in einigen wenigen Worten, wo das ganze her ist und wie man es integriert.</p>
<p>Das JavaScript um diese Möglichkeit anzubieten wurde von <a href="http://donttrustthisguy.com/">Jim Jeffers</a> mit Hilfe von jQuery erstellt. Da ich hier auch im Blog jQuery für diverse Umsetzungen nutze, wollte ich gern diesen Mehrwert ebenso hinterlegen. Natürlich muss das Framework <a href="http://jquery.com/">jQuery</a> vorhanden sein, minimal Version 1.2.6. Ist dieses eingebunden, so muss man lediglich das <a href="http://github.com/jimjeffers/encouraged-commentary/tree/master">Script</a> von Jim hinterlegen und den Bereich,  der die Funktion haben soll mit einer entsprechenden Klasse ausstatten. Im Standard ist das die Klasse <code>quotable</code>.</p>
<p><strong>Hinweis:</strong> Wenn ihr WordPress ab Version 2.7 einsetzt und den Template Tag <code>post_class()</code> nutzt, dann muss diese Funktion lediglich um die Klasse erweitert werden, ein Beispiel:</p>
<pre><code><div &lt;?php post_class('quotable'); ?&gt; id="content"></pre>
<p><a href="http://www.texto.de/texto/wp-27-neuer-template-tag-post-class/">Monika</a> hat zu dem neuen Tag schon ein wenig mehr erklärt, so dass ich es mir hier erspare.</p>
<p>Beim <a href="http://github.com/jimjeffers/encouraged-commentary/tree/master">Download</a> des Beispiel liegt eine Demo und Doku bei, so dass es nicht problematisch sein sollte die Funktion zu nutzen.</p>
<p>Im Anschluss kann man noch den entstehenden Button ein wenig anpassen. Das Standardscript stellt dazu die ID <code>comment-respond</code> bereit.</p>
<p>Ich empfinde als Mehrwert und tolle Idee. Wer also ebenfalls mit jQuery unterwegs und ein wenig erweitern möchte, der kann sicher die 5 kByte verschmerzen und einen entsprechenden Mehrwert bieten.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/erweiterung-der-kommentarfunktion/862/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/erweiterung-der-kommentarfunktion/862/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/commentreply.png" />
		<media:content url="http://bueltge.de/wp-content/images/commentreply.png" medium="image">
			<media:title type="html">Screenshot Bezug auf Textstellen im Artikel</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Abfrage einer Script-Version in WordPress</title>
		<link>http://bueltge.de/abfrage-einer-script-version-in-wordpress/570/</link>
		<comments>http://bueltge.de/abfrage-einer-script-version-in-wordpress/570/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 08:23:36 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/abfrage-einer-script-version-in-wordpress/570/</guid>
		<description><![CDATA[Nicht selten werden Scripte innerhalb von Plugins und Themes verwendet. WordPress bringt im Standard eine ganze Reihe an Frameworks mit und warum diese also nicht einbetten, statt es extra im Plugin abzulegen und damit nicht selten verschiedene Versionen von Frameworks laden. Nicht unbedingt gut für die Funktion, geschweige denn für Performance und Ladegeschwindigkeit. Trotzdem ist [...]]]></description>
			<content:encoded><![CDATA[<p>Nicht selten werden Scripte innerhalb von Plugins und Themes verwendet. WordPress bringt im Standard eine ganze Reihe an Frameworks mit und warum diese also nicht einbetten, statt es extra im Plugin abzulegen und damit nicht selten verschiedene Versionen von Frameworks laden. Nicht unbedingt gut für die Funktion, geschweige denn für Performance und Ladegeschwindigkeit.</p>
<p>Trotzdem ist man manchmal von einer bestimmten Version eines Frameworks abhängig. Daher bietet es sich an, die Version des Scriptes abzufragen und alternativ das entsprechend erwünschte Script zu laden. Der folgende Syntax macht das am Beispiel Prototype.</p>
<pre><code>
// Ersetzt Prototype mit Version 1.6, wenn kleiner 1.6
if ( $wp_scripts->scripts['prototype']->ver < 1.6 ) {
	
	wp_deregister_script('prototype');
	wp_enqueue_script('prototype', '/wp-content/plugins/pluginpfad/prototype.js', NULL, 1.6);
}
</code></pre>
<p>Mehr zu den verwendeten Funktionen findet man in der <code>/wp-includes/script-loader.php</code>.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/abfrage-einer-script-version-in-wordpress/570/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/abfrage-einer-script-version-in-wordpress/570/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>JavaScript in HTML einbinden</title>
		<link>http://bueltge.de/javascript-in-html-einbinden/593/</link>
		<comments>http://bueltge.de/javascript-in-html-einbinden/593/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 13:26:43 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://bueltge.de/javascript-in-html-einbinden/593/</guid>
		<description><![CDATA[Das Einbinden von JavaScript in Webseiten ist kein neues Thema mehr, seit der Generation Web 2.0 aber kaum wegzudenken. Immer mehr Seiten bieten kleine Features an, die mit JS realisiert werden. Oft werden dabei die Funktionen in den Vordergrund gestellt und auch im Zeitaltern von DSL und anderen schnellen Datenverbindungen sollte die Webseitengeschwindigkeit nicht vergessen werden. Und in diesem Zusammenhang gibt es einige Überlegungen und Hinweise, welche ich in diesem Artikel auf Wunsch von Stephan erklären möchte.

Dabei kommt natürlich in erster Linie meine Meinung zum Tragen, welche vielleicht eine kleine Diskussion anstößt und wo man Feedback von Webworkern bekommt, die mehr im Thema stecken als ein Hobby-Webworker, wie ich es bin.]]></description>
			<content:encoded><![CDATA[<p>Das Einbinden von JavaScript in Webseiten ist kein neues Thema mehr, seit der Generation Web 2.0 aber kaum wegzudenken. Immer mehr Seiten bieten kleine Features an, die mit JS realisiert werden. Oft werden dabei die Funktionen in den Vordergrund gestellt und auch im Zeitaltern von DSL und anderen schnellen Datenverbindungen sollte die Webseitengeschwindigkeit nicht vergessen werden. Und in diesem Zusammenhang gibt es einige Überlegungen und Hinweise, welche ich in diesem Artikel auf Wunsch von <a href="http://bueltge.de/png-transparenz-im-ie-5-ie-6/592/#comment-164659">Stephan</a> erklären möchte.</p>
<p>Dabei kommt natürlich in erster Linie meine Meinung zum Tragen, welche vielleicht eine kleine Diskussion anstößt und wo man Feedback von Webworkern bekommt, die mehr im Thema stecken als ein Hobby-Webworker, wie ich es bin.<br />
<span id="more-593"></span></p>
<h3>Mögliche Formen</h3>
<p>Grundlegend kann man JavaScript in drei verschiedenen Formen unterbringen.</p>
<ul>
<li><code>head</code></li>
<li><code>body</code></li>
<li><code>body</code>-Tag</li>
</ul>
<p>In vielen aktuellen Projekten, werden JavaScript Frameworks eingesetzt, da sind besonders bekannt: <a href="http://bueltge.de/?s=prototype">Prototype</a> und <a href="http://bueltge.de/?s=jquery">jQuery</a>. Zu beiden habe ich im Blog schon einige Infos hinterlegt.</p>
<h3>Hintergrundüberlegungen und Realisierung</h3>
<p>Im Vorfeld sollte man überlegen:</p>
<ul>
<li>Ist das JavaScript unbedingt notwendig für den Besucher?</li>
<li>Kann ich den Inhalt auch ohne JavaScript konsumieren?</li>
<li>Ist die Größe des Scriptes gerechtfertigt?</li>
</ul>
<p>Im weiteren gilt es: JavaScript ist im optimalen Fall ausgelagert, in eine separate Datei, die dann im jeweiligen Abschnitt des HTML eingebunden wird. Der Zugriff auf die Datei sollte nur einmalig erfolgen.</p>
<p>Das Script gehört <strong>nur geladen</strong>, wenn man es auch <strong>benötigt</strong>! Gerade beim Einsatz von Plugins für WordPress sieht oft die vielfache Verwendung von JS-Frameworks, da sie per Hook eingebunden werden. Solche Sachen sind besser im Template des Themes aufgehoben und auch dann kann man mit <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-3/527/">Conditional Tags</a> (auf diese habe ich schon <a href="http://bueltge.de/?s=Conditional+Tags">mehrfach hingewiesen</a>!) sehr leicht abfragen, ob man das Script laden muss.</p>
<h4>Beispiel</h4>
<p>Vielfach wird JS genutzt, um eine <a href="http://bueltge.de/live-kommentarvorschau-mit-jquery-und-wordpress/541/">Live-Vorschau des Kommentars</a> zu ermöglichen. Dieses Script wird dann aber auch nur benötigt, wenn es die Möglichkeit von Kommentaren gibt, also in der Regel nur auf einem Beitrag oder einer Seite. Diese beiden sind unter WordPress leicht abzufragen.</p>
<pre><code>
&lt;?php if ( is_single() || is_page() ) { ?&gt;
	&lt;script src="&lt;?php bloginfo('template_directory'); ?&gt;/js/example_script.js" type="text/javascript"&gt;&lt;!--mce:0--&gt;&lt;/script&gt;
&lt;?php } ?&gt;
</code></pre>
<h3>Wohin mit dem Script</h3>
<p>Aus meiner persönlichen Sicht plädiere ich dafür, dass Scripte, die <strong>nicht unbedingt für den Leser notwendig</strong> sind, am <strong>Ende einer Seite</strong> geladen werden. Damit stelle ich sicher, dass der Besucher den Inhalt, für den er sich in der Regel am meisten interessiert, schnell bekommt. Die meisten Besucher kommen von Suchmaschinen, zumindest sehen das alle Statistiken so, die ich verfolge.</p>
<p>Ist das Script im <code>head</code> eingebunden, dann hat es den Vorteil, dass es beim Laden eingelesen wird und dann im Speicher bereit steht. Nachteilig ist, dass damit der Inhalt warten muss, bis das/ die Scripte geladen sind. Deshalb überlegen, ist es wirklich notwendig.</p>
<p>Im weiteren eine Forderung von mir: Ich möchte, dass Seiten auch ohne aktives JavaScript die Inhalte präsentieren und mir nicht ihren Inhalt verweigern. Mir ist klar, dass ist nicht bei allen Anwendungen möglich, aber für eine Vielzahl von Webseiten wäre es kein Problem, denn JS sind dort nur da, um Spielereien und Mehrwert der Seite zu realisieren.</p>
<h4>Beispiel Footer</h4>
<pre><code>

		&lt;?php if ( is_single() || is_page() ) { ?&gt;
		&lt;script src="&lt;?php bloginfo('template_url'); ?&gt;/js/example.js" type="text/javascript"&gt;&lt;!--mce:1--&gt;&lt;/script&gt;
		&lt;?php } ?&gt;

</code></pre>
<p>Alle notwendigen Scripte gehören ansonsten in den <code>head</code>. Allerdings auch diese sind ausgelagert und werden einmalig eingebunden.</p>
<h4>Beispiel <code>head</code></h4>
<pre><code>
	&lt;script src="&lt;?php bloginfo('template_url'); ?&gt;/js/example.js" type="text/javascript"&gt;&lt;!--mce:2--&gt;&lt;/script&gt;
	&lt;?php if ( is_single() ) { ?&gt;
		&lt;script src="&lt;?php bloginfo('template_url'); ?&gt;/js/example.js" type="text/javascript"&gt;&lt;!--mce:3--&gt;&lt;/script&gt;
	&lt;?php } ?&gt;
	&lt;script type="text/javascript"&gt;&lt;!--mce:4--&gt;&lt;/script&gt;

	&lt;?php wp_head(); ?&gt;
</code></pre>
<h3>Komprimieren</h3>
<p>Auch wenn man die JS-Dateien auslagert und zu einer Datei zusammen fasst, können sie noch eine beachtliche Größe erzielen. Daher kann man als Alternative noch die Komprimierung der Scripte versuchen. Dies ist im übrigen auch mit CSS- und HTML-Dateien möglich, aber das nur am Rande.</p>
<p>Schon das Entfernen von Kommentaren und Leerzeichen bringt Geschwindigkeit. Ebenfalls gilt das für die Verwendung von Variablennamen in PHP, je kürzer, desto schneller. Aber Achtung, ein gesundes Verhältnis sollte gewahrt bleiben, vor allem an Projekten, an den ständig gearbeitet wird. Denn gerade Eindeutigkeit, Übersichtlichkeit und Dokumentation können das Arbeiten enorm erleichtern.</p>
<p>Aber zurück zu JavaScript. Hier bietet sich die Komprimierung an, gerade bei Verwendung von Frameworks, auf die man keinen Einfluss nimmt. Die komprimierte Version wird in der Regel vom Anbieter schon mit angeboten und man muss lediglich diese Version einbinden.</p>
<p>Für das Komprimieren von JavaScript gibt es Online-Tools, die die Arbeit abnehmen und erleichtern. Zwei Beispiele sollen für die Vielzahl an Möglichkeiten genannt werden.</p>
<ol>
<li><a href="http://compressor.ebiene.de/">Compressor JS und CSS</a></li>
<li><a href="http://compressor.ebiene.de/">JavaScript Compressor</a></li>
</ol>
<p>Ein Hinweis, nach der Komprimierung testen - nicht immer ist das Ergebnis befriedigend.</p>
<p>Alternativ kann man die Dateien noch als gzip-komprimiertes File einbinden. Dazu muss mod_rewrite im Webserver aktiv sein und die <code>.htaccess</code> muss folgenden Inhalt haben. Der Syntax geht davon aus, dass die CSS-Datei direkt im Theme-Ordner liegt und die JavaScript-Dateien im Ordner <code>/js/</code>.</p>
<pre><code>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Accept-Encoding} .*gzip.*
RewriteRule ^js/(.*)\.js$ /js/$1.js.gz [L]
RewriteRule ^/(.*)\.css$ /$1.css.gz [L]
AddEncoding x-gzip text.gz
</code></pre>
<p>Dazu einen Linktipp auf einen schlüssigen und klaren Artikel zum Thema: <a href="http://www.alinki.com/de/blog/archives/27">gzip-komprimiertes Javascript und CSS effektiv ausliefern</a>.</p>
<h3>Fazit</h3>
<p>Ich hoffe, dass es verständlich und einleuchtend ist. Nichtsdestotrotz stellt der Artikel lediglich meinen Standpunkt dar. Für Feedback und Hinweise bin ich wie immer dankbar.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/javascript-in-html-einbinden/593/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/javascript-in-html-einbinden/593/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Performance analysieren (Plugin)</title>
		<link>http://bueltge.de/wordpress-performance-analysieren-plugin/558/</link>
		<comments>http://bueltge.de/wordpress-performance-analysieren-plugin/558/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 10:12:52 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/wordpress-performance-analysieren-plugin/558/</guid>
		<description><![CDATA[Die Performance von WordPress kann schnell und einfach mittels einiger Plugins verschlechtert werden. Dazu muss man kein Experte sein, mehr Funktionalität sorgt für mehr Last. Allerdings sorgt gerade die Einfachheit und offene Arbeitsweise von WordPress, die WordPress unter anderem so populär gemacht haben und ich sehr schätze, zu einem Problem - das Plugin muss nicht unbedingt von Profi-Entwicklern erstellt sein und die Optimierung des Syntax würde viel im Bereich Performance verbessern.

Nun aber zum eigentlichen Problem: <strong>wie findet man die Schwachstelle im Blog</strong>?]]></description>
			<content:encoded><![CDATA[<p>Die Performance von WordPress kann schnell und einfach mittels einiger Plugins verschlechtert werden. Dazu muss man kein Experte sein, mehr Funktionalität sorgt für mehr Last. Allerdings sorgt gerade die Einfachheit und offene Arbeitsweise von WordPress, die WordPress unter anderem so populär gemacht haben und ich sehr schätze, zu einem Problem - das Plugin muss nicht unbedingt von Profi-Entwicklern erstellt sein und die Optimierung des Syntax würde viel im Bereich Performance verbessern.</p>
<p>Nun aber zum eigentlichen Problem: <strong>wie findet man die Schwachstelle im Blog</strong>?<br />
<span id="more-558"></span><br />
Einerseits kann mittels weniger Tools die Performance analysieren, dazu dient mir beispielsweise das <a href="http://bueltge.de/firefox-add-on-firebug-fuer-webentwickler-ein-muss/294/">Add on Firebug</a> im Browser Firefox. Damit sind schnell große Scripte gefunden und Schwachstellen im Code. Dazu auch der Hinweis auf den Artikel &bdquo;<a href="http://bueltge.de/ladezeiten-bei-wordpress-templates-optimieren/320/">Ladezeiten bei WordPress-Templates optimieren</a>&ldquo;. Sinnvoll ist ebenfalls, die &bdquo;vielen&ldquo; Scripte, die einige Plugins mitbringen, nicht per <code>wp_head</code>, sondern in <code>wp_footer</code> anzusteuern. Damit bleibt der Aufbau nicht an den Scripten hängen, die eventuell nur Mehrwert bieten. Ab in den Footer mit derartigen Scripten.</p>
<p>Allerdings ist die Analyse via Deaktivieren/ Aktivieren aller Plugins nach und nach mühsam. Da wäre es doch sinnvoll, man sucht die einzelnen Queries ab und schaut auf welche Funktion sie verweisen.</p>
<p>WordPress bietet von Hause aus die Möglichkeit, dass man sich die Gesamtzahl der Queries ausgeben lassen kann, ebenso die benötigte Zeit. Mit folgendem Syntax, vorzugsweise in den Footer der Seite gelegt, ist dies schnell geschehen.</p>
<pre><code>&lt;?php echo $wpdb->num_queries; ?&gt;q, &lt;?php timer_stop(1); ?&gt;s</code></pre>
<p>Aber die Variable <code>$wpdb</code> bietet mehr, dazu schaut man in die <code>/wp-includes/wp-db.php</code>.</p>
<pre><code>
if (!defined('SAVEQUERIES'))
	define('SAVEQUERIES', false);

class wpdb {

	var $show_errors = true;
	var $num_queries = 0;
	var $last_query;
	var $col_info;
	var $queries;
	var $prefix = '';

	// Our tables
	var $posts;
	var $users;
	var $categories;
	var $post2cat;
	var $comments;
	var $links;
	var $options;
	var $postmeta;
	var $usermeta;
	var $terms;
	var $term_taxonomy;
	var $term_relationships;
	var $tables = array('users', 'usermeta', 'posts', 'categories', 'post2cat', 'comments', 'links', 'link2cat', 'options', 'postmeta', 'terms', 'term_taxonomy', 'term_relationships');
	var $charset;
	var $collate;
</code></pre>
<p>Dabei fällt die Konstante <code>SAVEQUERIES</code> auf, die im Standard nicht in der <code>wp-config.php</code> definiert ist. Setzt man diese Konstante auf <code>TRUE</code>, dann sind weitere Möglichkeiten offen.<br />
Aber auch darauf will ich nicht im Detail eingehen, denn es würde zu weit führen, wer Interesse hat, der findet in der besagten Datei eine ganze Reihe von Infos.</p>
<p>Mein Ziel war es nun aber, dass man nicht die Gesamtzahl der Queries im Blog als Ergebnis bekommt, sondern die einzelnen Abfragen inklusive ihrer auszuführenden Syntax, denn so kann ich das Problem explizit im Code finden.</p>
<p>Damit die Arbeit einfach und schnell an dem jeweiligen Blog von der Hand geht, habe ich die Funktion in ein Plugin ausgelagert und aktiviere es nur, wenn ich auch eine Analyse durchführen möchte. Außerdem wird die Analyse nur gestartet und das Ergebnis ausgeben, wenn man als Administrator eingeloggt ist.</p>
<p>Das Ergebnis kann das beispielsweise folgendermaßen aussehen.<br />
<a href="http://wordpress.org/extend/plugins/debug-queries/screenshot-1.png"><img class="centered" src="http://bueltge.de/wp-content/images/wp/debug_queries.png" alt="Screenshot Ergebnis WordPress Plugin Debug Queries" /></a></p>
<pre><code>
16. Time: 0.000431060791016
      Query: SELECT object_id, term_taxonomy_id FROM fb122_term_relationships INNER JOIN fb122_posts ON object_id = ID WHERE term_taxonomy_id IN (6,5,1) AND post_type = 'post' AND post_status = 'publish'
      Call from: wp-includes\taxonomy.php(2093): wpdb->get_results()

17. Time: 0.00243401527405
      Query: SELECT t.*, tt.* FROM fb122_terms AS t INNER JOIN fb122_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('link_category') AND tt.count > 0 ORDER BY t.name ASC
      Call from: wp-includes\taxonomy.php(777): wpdb->get_results()

18. Time: 0.00080418586731
      Query: SELECT * , IF (DATE_ADD(link_updated, INTERVAL 120 MINUTE) >= NOW(), 1,0) as recently_updated FROM fb122_links INNER JOIN fb122_term_relationships AS tr ON (fb122_links.link_id = tr.object_id) INNER JOIN fb122_term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id WHERE 1=1 AND link_visible = 'Y' AND ( tt.term_id = 2 ) AND taxonomy = 'link_category' ORDER BY link_name ASC
      Call from: wp-includes\bookmark.php(255): wpdb->get_results()

 * Total query time: 0.02111s for 18 queries.
 * Page generated in 0.36373s, 94.20% PHP, 5.80% MySQL
</code></pre>
<p>Für den Laien ist damit die Arbeit sicher nicht unbedingt angenehm, aber so finde ich die eigentlichen Probleme in der Datenbankabfrage und kann die jeweilige Abfrage in den Dateien suchen und eventuell verbessern bzw. deaktivieren. Das Plugin bedient noch einige mehr Informationen als das obige Tutorial, so dass es verständlicher wird und mehr Informationen liefert.</p>
<h3>Debug Queries (Plugin)</h3>
<p>Nach dem Aktivieren des Plugins werden die einzelnen Abfragen in den Footer der Seite geschrieben, als HTML-Kommentar, so dass man den Quelltext analysieren muss, um an die Werte zu kommen. Die Werte werden nur analysiert und ausgegeben, wenn man als Administrator im Blog eingeloggt ist.</p>
<h4>Anforderungen:</h4>
<p>Das Plugin benötigt WordPress Version 1.5 und wurde getestet bis Version 2.9-rare.</p>
<h4>Installation:</h4>
<ol>
<li>Die zip-Datei downloaden und entpacken</li>
<li>Kopiere die Datei in dein Plugin-Verzeichnis (<code>/wp-content/plugins/</code>)</li>
<li>Aktiviere das Plugin im Admin-Bereich deines Blogs</li>
</ol>
<h4>Download:</h4>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="" /><br />
<input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="frank@bueltge.de" /><input type="hidden" name="item_name" value="Spende bueltge.de" /><input type="hidden" name="no_shipping" value="1" /><input type="hidden" name="return" value="http://bueltge.de/" /><input type="hidden" name="cancel_return" value="http://bueltge.de/" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="tax" value="0" /><input type="hidden" name="bn" value="PP-DonationsBF" /><input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" /><br />
</form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.<br />
Möchtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.</p>
<p>
Download als zip-Datei:<br />
<a href="http://downloads.wordpress.org/plugin/debug-queries.zip" >downloads.wordpress.org/plugin/debug-queries.zip</a> - 2 kByte</p>
<h3 id="historie">Historie</h3>
<ul>
<li>0.1 - Idee und Umsetzung</li>
<li>0.2 - Erweiterung der Ausgabe (30/03/2009)</li>
<li>0.3 - Bugfix (31/03/2009)</li>
<li>0.4 - WP2.8 tauglich-neue Rechte, gekapselte Klasse, Ausgabe im Frontend, viel Code neu (18./04/2009)</li>
<li>0.4.1 - Bug für 2.7 korrigiert, CSS-Pfad; Hinweis ergänzt, wenn es verschiedene Ergebnisse der Queries gibt</li>
<li>0.5 - Erweiterung diverser Werte, PHP und mySQL Umfang und Hinweise (04/05/2009)</li>
<li>* - für weitere Änderungen bitte <a href="http://wordpress.org/extend/plugins/debug-queries/changelog/">Changelog</a> besuchen</li>
</ul>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-performance-analysieren-plugin/558/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-performance-analysieren-plugin/558/feed/</wfw:commentRss>
		<slash:comments>97</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/debug_queries.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/debug_queries.png" medium="image">
			<media:title type="html">Screenshot Ergebnis WordPress Plugin Debug Queries</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Web-Anwendungen und ihre größten Schwachstellen</title>
		<link>http://bueltge.de/web-anwendungen-und-ihre-groeszten-schwachstellen/535/</link>
		<comments>http://bueltge.de/web-anwendungen-und-ihre-groeszten-schwachstellen/535/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 00:17:51 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://bueltge.de/web-anwendungen-und-ihre-groeszten-schwachstellen/535/</guid>
		<description><![CDATA[Eine Liste mit Schwachstellen in Webanwendungen ohne Wertung der Reihenfolge. Viele Informationen beziehen sich auf die Aussagen des OWASP-Projektes. Dort sind auch mögliche Lösungen und Hintergründe in ausführlicher Form hinterlegt (Downloads). Cross Site Scripting (XSS) Die bekannteste und meiste genutzte Lücke im System - XSS. Wie, was und warum - dazu habe ich bereits einen [...]]]></description>
			<content:encoded><![CDATA[<p>Eine Liste mit Schwachstellen in Webanwendungen ohne Wertung der Reihenfolge. Viele Informationen beziehen sich auf die Aussagen des <a href="http://www.owasp.org/">OWASP-Projektes</a>. Dort sind auch mögliche Lösungen und Hintergründe in ausführlicher Form hinterlegt (<a href="http://www.owasp.org/index.php/OWASP_Guide_Project#OWASP_Guide_2.0_Downloads">Downloads</a>).<br />
<span id="more-535"></span></p>
<h3>Cross Site Scripting (XSS)</h3>
<p>Die bekannteste und meiste genutzte Lücke im System - XSS. Wie, was und warum - dazu habe ich bereits <a href="http://bueltge.de/cross-site-scripting-xss/477/">einen Artikel im Vorfeld</a> veröffentlicht.</p>
<p>Grundlegend heißt es, bösartige User hinterlegen Script im Browser des Anwenders und holen darüber benutzereigene Daten und können mit diesen Daten beispielsweise schadhaften Code injizieren. Die meisten Angriffe werden mittels JavaScript ausgeführt, daher auch die ehemalige Ablehnung von JavaScipt in einigen Bereichen. Grundlegend können aber XSS-Attacken mit jeder Script-Sprache ausgeführt werden, die der Browser unterstützt. Seit dem Thema Web 2.0 ist JavaScript in aller Munde und in vielen Anwendungen nicht mehr wegzudenken. Um so wichtiger das Wissen über die möglichen Schwachstellen und die damit verbundene Vorsorge. Gerade im AJAX-Umfeld ist XSS ein Problem.</p>
<p>Hierbei sehr interessant das <a href="http://ha.ckers.org/xss.html ">XSS-Cheat Sheet</a> (Auch im Download von OWASP zu finden)</p>
<h3>Cross Site Request Forgery (CSRF)</h3>
<p>Der Hacker greift den Client an und übernimmt die Kontrolle über den Browser. In der Regel passiert das nach dem Einloggen in eine Webappliaktion. Mit diesem Login kann der Hacker dann Anfragen an das System kreieren und nutzereigene Daten als Rückmeldung bekommen. In der Regel laufen derartige Aktione über Cookies-Sessions. Einzige Lösung ist das nicht Speichern durch den Browser von relevanten Daten.</p>
<h3>Offene URLs</h3>
<p>Eine ganze Reihe von Webseiten haben Anwendungen für kleine Bereiche laufen. Allerdings schützen sie die Verzeichnisse nicht und versierte User finden die URLs recht schnell und können so auf eventuell schützenswerte Daten zugreifen. Es findet also das klassische Erraten von Adressen statt, was man aber deswegen nicht als abwegig und nachlässig einstufen sollte. Prinzipiell sollte man den Anderen nicht unterschätzen, also lieber das Verzeichnis schützen und eine Zugangskontrolle implementieren.</p>
<h3>Ausführen von</h3>
<p>Kann die Applikation Nutzerdaten akzeptieren, dann kann prinzipiell auch schadhafter Code ausgeführt werden. Die meisten Probleme in diesem Umfeld sind mit der Sprache PHP bekannt. Anfällig ist aber jede Applikation oder Framework. Die Schwachstellen wird bezeichnet als Remote File Inclusion (RFI).</p>
<h3>Injection-Fehler</h3>
<p>Hierbei nutzen Hacker die Möglichkeit, dass Daten vom Anwender als Befehl oder Anfrage an einen Interpreter gesendet werden. Dabei werden die Befehle manipuliert und die Daten verändert. Man kann also jede Form von Daten für die Anwendung erstellen, lesen, ändern oder löschen. Das größte Problem in aktuellen Anwendungen sind die gelobten APIs. Diese könnten, wenn sie Lücken aufweisen dazu missbraucht werden. Klassisches Beispiel sind SQL-Injections.</p>
<h3>Objekt-Zugriff</h3>
<p>Unautorisierte Zugriffe via Direct Object References dienen dem Angreifer um auf Dateien, Verzeichnisse, Schlüssel oder direkt auf Datenbankeinträge zuzugreifen. Prinzipiell kann man, wenn man einen Schlüssel im System hat, auf die anderen Schlüssel schließen und verwenden. Ein klassisches Beispiel ist der Finanzmarkt: die Kontonummer des Nutzers referenziert ihn in allen Anwendungen und somit hat der Angreifer Kontonummer und kann damit weitere Daten abrufen. Eine indirekte Referenz kann helfen und macht die Zugriffe autonomer. Grundlegend sollten direkte Referenzen vermieden werden.</p>
<h3>Fehlerbehandlung</h3>
<p>Ausführliche und inhaltlich wertvolle Fehlerbeschreibungen eines Fehlers in der Webapplikation sind für Hacker ein Schlüssel. Mit diesen detailreichen Informationen können Bösewichte entsprechende Maßnahmen einleiten um das System für sich zu öffnen. Derartige Probleme lassen sich nur mit Hilfe von umfangreichen Tests finden. Auch dafür gibt es Tools mit entsprechenden Möglichkeiten. Außerdem gehört die Fehlerbehandlung im Live-Betrieb deaktiviert.</p>
<h3>Zugang via Session und Kommunikation</h3>
<p>Webapplikationen sind so gut wie immer mit einem Zugang geschützt, die Zugangsdaten gehören sicher gespeichert und der Zugang sollte immer per Protokoll SSL laufen. Ebenso speichert man Zugangsdaten nicht 1:1, sondern mit Hilfe eines Hash. Auch hier gilt es, Cookies sind nicht immer der Schlüssel zum Glück des Anwenders. Die Kommunikation zwischen verschiedenen Servern o.ä. gehört mittels Verschlüsselung oder Transport Layer Security realisiert.</p>
<h3>Offene Datenablage</h3>
<p>Die Datenablage ist bei relevanten Applikation schon heute in vielen Bereichen verschlüsselt. Die Daten selbst werden aber uncodiert gespeichert und die vorhandene Verschlüsselung ist oft unzureichend. Es gilt, dass möglichst starke und ausreichend getestet, besser standardisierte, Algorithmen genutzt werden. Einfache oder eigene Algorithmen entsprechen selten den nötigen Anforderungen.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/web-anwendungen-und-ihre-groeszten-schwachstellen/535/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/web-anwendungen-und-ihre-groeszten-schwachstellen/535/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>PHP Debugging und Profiling leicht gemacht</title>
		<link>http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/</link>
		<comments>http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/#comments</comments>
		<pubDate>Tue, 09 Oct 2007 21:27:01 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/</guid>
		<description><![CDATA[Die Entwicklung von Scripten mittels PHP bringt immer wieder Schwierigkeiten im Bereich der Fehlersuche. Editoren bzw. Entwicklungsumgebungen, die eine Debuggingfunktion mitbringen, sind teuer oder nicht unbedingt leicht zu konfigurieren. Seite geraumer Zeit arbeite ich dabei mit Xdebug, eine Erweiterung für PHP, mit der das Debuggen einfach und schnell von der Hand geht.

Damit die Konfiguration immer wieder zur Hand ist und schnell und logisch nachvollziehbar ist, erkläre ich einigen Schritten, wie man zu einer Entwicklungsumgebung mittels Xdebug kommt.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/phpconfig.gif" alt="PHP HowTo" /></p>
<p>Die Entwicklung von Scripten mittels PHP bringt immer wieder Schwierigkeiten im Bereich der Fehlersuche. Editoren bzw. Entwicklungsumgebungen, die eine Debuggingfunktion mitbringen, sind teuer oder nicht unbedingt leicht zu konfigurieren. Seite geraumer Zeit arbeite ich dabei mit <a href="http://www.xdebug.org/">Xdebug</a>, eine Erweiterung für PHP, mit der das Debuggen einfach und schnell von der Hand geht.</p>
<p>Damit die Konfiguration immer wieder zur Hand ist und schnell und logisch nachvollziehbar ist, erkläre ich  einigen Schritten, wie man zu einer Entwicklungsumgebung mittels <a href="http://www.xdebug.org/">Xdebug</a> kommt.<span id="more-520"></span> Als Voraussetzung dient dabei die Distribution von Apache, MySQL, PHP und Perl - <a href="http://www.apachefriends.org/de/xampp.html">XAMPP</a>, die beispielhaft unter dem Pfad <code>D:\xampp\</code> installiert ist.</p>
<p>Im ersten Schritt muss selbstverständlich ein Server laufen, dazu die Empfehlung für einfaches und unkompliziertes Aufsetzen eines Apache - <a href="http://www.apachefriends.org/de/xampp.html">XAMPP</a>. Sollte es Schwierigkeiten geben, es gibt eine Reihe von guten Tutorials zum Aufsetzen im Netz.</p>
<p>Nun soll aber die Umgebung um Xdebug erweitert werden. Dazu muss zuerst die aktuelle PHP-Version deines Apache festgestellt werden. Dazu steht steht im XAMPP-Paket schon eine Datei bereit, die den nötigen Syntax <code>phpinfo();</code> enthält und die Informationen ausgibt. Rufe im Browser die Adresse <code>http://localhost/xampp/phpinfo.php</code> auf. Nun sollte die laufende PHP-Version im Browser ausgeben werden, inklusive einiger weiterer Informationen.</p>
<p>Mit Hilfe dieser Information können wir nun die entsprechende Version von Xdebug holen. Dazu die <a href="http://pecl4win.php.net/ext.php/php_xdebug.dll">Downloadseite</a> besuchen und die entsprechende Datei downloaden.</p>
<p>Die Datei <code>xdebug.dll</code> kopieren wir nun in <code>D:\xampp\php\ext\</code>, Laufwerkpfad an eure lokale XAMPP-Installation anpassen.</p>
<p>Im weiteren muss die Datei <code>php.ini</code> bearbeitet werden, zu finden in <code>D:\xampp\apache\bin\</code>. Dazu die Datei in eurem Editor öffnen und folgenden Zeilen hinzufügen.</p>
<p>Als erstes muss der Pfad zur Datei definiert werden.<br />
<code>zend_extension_ts="D:\xampp\php\ext\php_xdebug.dll"</code></p>
<p>Achtet darauf, dass es keine andere Definition für das Merkmal <em>zend_extension_ts</em> gibt. Denn sonst wird der Apache nicht gestartet werden. Die Zeilen können prinzipiell überall in der Datei stehen, ich lege Erweiterungen immer an das Ende um die Übersicht zu waren.</p>
<p>Die folgenden Parameter dienen der Konfiguration von Xdebug. Ein ; dient zum Auskommentieren von Zeilen oder Kommentaren.</p>
<pre><code>
[xdebug]
xdebug.auto_trace = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.default_enable = 1
xdebug.extended_info = 1
xdebug.show_local_vars = 0
xdebug.show_mem_delta = 1
xdebug.trace_format = 1
xdebug.trace_options = 0
xdebug.trace_output_dir ="D:\xampp\tmp"

; Remote
xdebug.remote_enable=1
xdebug.remote_mode="req"
xdebug.remote_host=127.0.0.1
xdebug.remote_port=17869
xdebug.idekey=

; Mode 1
xdebug.remote_handler="gdb"
xdebug.auto_profile = 1
xdebug.auto_profile_mode = 2
xdebug.output_dir = "D:\xampp\tmp"

; Mode 2
xdebug.remote_handler="DBGp"
; Stop profiling process
;xdebug.profiler_enable = 0
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "D:\xampp\tmp"
xdebug.profiler_output_name = "debug.out"

xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD
</code></pre>
<p>Wird das Merkmal <em>xdebug.profiler_enable</em> auf 0 gesetzt, dann ist das Profiling deaktiviert. Die Datei, die beim Profiling entsteht kann schnell recht groß werden, so dass ein Profiling nicht immer gewünscht ist. Um Xdebug zu nutzen, muss das Merkmal den Wert <em>1</em> bekommen.</p>
<p>Sollte euer Apache im Vorfeld schon gelaufen sein, so muss er nun neu gestartet werden. Um die Installation von Xdebug zu überprüfen, ruft ihr wieder die phpinfo auf: <code>http://localhost/xampp/phpinfo.php</code>. Dort sollte nach dem ersten Abschnitt die Information zu Version von Xdebug stehen.</p>
<p><img class="centered instant" src="http://bueltge.de/wp-content/images/xdebug/phpinfo.jpg" alt="Xdebug phpinfo" /></p>
<p>Auf Grund der Definition in der <code>php.ini</code>, wird eine Datei in <code>D:\xampp\tmp</code> erzeugt und mit Inhalt gefüllt - <em>cachegrind.out.*</em>.</p>
<p>Um diesen Inhalt komfortabel und benutzerfreundlich auszulesen und zu nutzen, empfiehlt sich die Verwendung einer weiteren Applikation - <a href="http://sourceforge.net/projects/wincachegrind/">WinCacheGrid</a>, allerdings nur für Windows verfügbar.</p>
<p><a title="Klick für Zoom" href="http://bueltge.de/wp-content/images/xdebug/wincachegrid.jpg"><img class="centered" src="http://bueltge.de/wp-content/images/xdebug/wincachegrid-thumb.jpg" alt="WinCacheGrid" /></a></p>
<p>Mit dieser Software kann die Datei einfach und schnell ausgelesen werden. Ebenso stehen eine Reihe von Optionen zur Verfügung. In den Optionen definiert ihr den „Working Folder” - <code>D:\xampp\tmp</code> und schon steht die erstelle Datei zum Auslesen im unteren Frame des Programms bereit.</p>
<p>Das eigentliche Debugging läuft direkt in der Anwendung. im folgenden Screenshot habe ich eine Variable, welche nicht gesetzt wird und so folgende Anforderungen nicht erfüllt werden. Die Fehlermeldung leitet auf die entsprechende Zeile bzw. Funktion kann untersucht werden.</p>
<p><a title="Klick für Zoom" href="http://bueltge.de/wp-content/images/xdebug/xdebug.jpg"><img class="centered" src="http://bueltge.de/wp-content/images/xdebug/xdebug-thumb.jpg" alt="Xdebug Debuggen" /></a></p>
<div class="contentdiv">
<h4>Ein Tipp am Rande</h4>
<p>Um die PHP-Datei direkt im Editor auf Syntax-Fehler zu parsen, nutze ich die <code>php.exe</code> in <code>D:\xampp\php\</code>, die als Anwendung in meinen Editor UltraEdit eingebunden habe. Dazu habe lediglich ein neues Werkzeug definiert welches die aktuelle Datei, welche ich bearbeite, parst. Dazu wurde folgender Syntax hinterlegt: <em>D:\xampp\php\php.exe -l %f</em>.<br />
Aber auch dafür gibt es andere Lösungen, zum Beispiel <a href="http://www.jedit.org/">jEdit</a> mit Pluginerweiterung <a href="http://plugins.jedit.org/plugins/?PHPParser">PHPParser</a>.</div>
<p>Mit diesem kleinen aber spektakulärem Einsatz steht eine Umgebung bereit, mit der eine recht umfangreiche Fehleranalyse möglich ist, ohne großen Aufwand und Kosten. Vielleicht hat ja der eine oder andere einen netten Tipp zu Xdebug und PHP  -ich freue mich auf Kommentare.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/phpconfig.gif" />
		<media:content url="http://bueltge.de/wp-content/images/phpconfig.gif" medium="image">
			<media:title type="html">PHP HowTo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/xdebug/phpinfo.jpg" medium="image">
			<media:title type="html">Xdebug phpinfo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/xdebug/wincachegrid-thumb.jpg" medium="image">
			<media:title type="html">WinCacheGrid</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/xdebug/xdebug-thumb.jpg" medium="image">
			<media:title type="html">Xdebug Debuggen</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP - Inhalte auf anderen Seiten nutzen</title>
		<link>http://bueltge.de/wp-inhalte-auf-anderen-seiten-nutzen/227/</link>
		<comments>http://bueltge.de/wp-inhalte-auf-anderen-seiten-nutzen/227/#comments</comments>
		<pubDate>Fri, 25 Aug 2006 09:29:03 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/?p=227</guid>
		<description><![CDATA[Immer wieder kommt es zur der Frage, wie kann ich Inhalte aus WordPress auf anderen Seiten nutzen, also außerhalb von WP. Dazu habe ich vor langer Zeit mal ein kleines Script - siehe <a href="http://www.bueltge.de/wk-blogs-auf-anderen-seiten-nutzen/45/">WK - Blogs auf anderen Seiten nutzen</a> - veröffentlicht, mit welchem dies über das Auslesen der Feeds möglich ist. Trotzdem bekommen ich noch immer viele Fragen dazu und ich erläutere das ganze hier nochmal an einem Beispiel.]]></description>
			<content:encoded><![CDATA[<p>Immer wieder kommt es zur der Frage, wie kann ich Inhalte aus WordPress auf anderen Seiten nutzen, also außerhalb von WP. Dazu habe ich vor langer Zeit mal ein kleines Script - siehe &#8222;<a href="http://bueltge.de/wk-blogs-auf-anderen-seiten-nutzen/45/">WK - Blogs auf anderen Seiten nutzen</a>&#8220; - veröffentlicht, mit welchem dies über das Auslesen der Feeds möglich ist. Trotzdem bekommen ich noch immer viele Fragen dazu und ich erläutere das ganze hier nochmal an einem Beispiel.<br />
Das Beispiel kann man sich <a href="http://bueltge.de/test/xmlimport.php" title="zum Demo">anschauen</a> und <a href="http://bueltge.de/test/xmlimport.txt" title="zum Download">downloaden</a>. Für das Design sorgt CSS, welches ich hier nicht eingebunden habe, da es rein um die Funktion geht. Das solltet ihr dann noch anpassen.</p>
<h3>Demo:</h3>
<p>Das Demo dindet ihr hier:  <a href="http://bueltge.de/test/xmlimport.php">bueltge.de/test/xmlimport.php</a></p>
<h3>Coding:</h3>
<p>Im folgenden der Code der externen Seite. Dazu ist eigentlich nur zu sagen, dass ich im ersten php-Abschnitt den Feed nach RSS 1.0-Standard lade, das ist bei WP die wp-rss.php im root-Verzeichnis und im zweiten Abschnitt lade ich den Atom-Feed, das ist die wp-atom.php im root-Verzeichnis von WordPress.</p>
<pre><code>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
      &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;de&quot; lang=&quot;de&quot; id=&quot;xmlreader&quot;  &gt;
&lt;head&gt;
  &lt;meta http-equiv=&quot;content-type&quot; content=&quot;application/xhtml+xml;charset=utf-8&quot; /&gt;
  &lt;meta http-equiv=&quot;Content-Script-Type&quot; content=&quot;text/javascript&quot; /&gt;
  &lt;meta http-equiv=&quot;imagetoolbar&quot; content=&quot;no&quot; /&gt;
  
  &lt;meta name=&quot;author&quot; content=&quot;Frank Bueltge&quot; /&gt;
  &lt;meta name=&quot;publisher&quot; content=&quot;bueltge.de&quot; /&gt;
  &lt;meta name=&quot;copyright&quot; content=&quot;Frank Bueltge - http://bueltge.de&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;WordPress, WP, RSS, Feed, RSSFeed&quot; /&gt;
  &lt;meta name=&quot;Diese zeigt, wei man den RSSFeed nutzen kann, um die Inhalte auf anderen Seiten darzustellen.&quot; /&gt;
  &lt;meta name=&quot;page-topic&quot; content=&quot;Gastronomie&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;all&quot; /&gt;

  &lt;title&gt;Beitr&amp;auml;ge au&amp;szlig;erhalb von WordPress&lt;/title&gt;

  &lt;style type=&quot;text/css&quot; title=&quot;currentStyle&quot; media=&quot;screen&quot; &gt;@import &quot;style.css&quot;;&lt;/style&gt;
  &lt;link rel=&quot;Shortcut Icon&quot; type=&quot;image/x-icon&quot; href=&quot;favicon.ico&quot; /&gt;
  
&lt;/head&gt; 
&lt;body&gt;
  &lt;h2&gt;RSS Import 1.0&lt;/h2&gt;
  &lt;p&gt;Hier wird der Feed nach Standard 1.0 von WordPress (wp-rss.php) importiert, die letzten 5 Beitr&amp;auml;ge&lt;/p&gt;
  &lt;p&gt;Diese Seite mit dem Beispiel downloaden: &lt;a href=&quot;xmlimport.phps&quot;&gt;Download Datei .phps&lt;/a&gt;&lt;/p&gt;
  &lt;div style=&quot;margin: 2em; padding: 1em; background: #DDD&quot;&gt;
	  &lt;?php
	  # Script: XML-Reader
	  # Copyright: y0y.de, erweitert: bueltge.de
	  
	  # Hier editieren
	  $url = &quot;http://bueltge.de/wp-rss.php&quot;; //URL zum XML-Feed
	  $number = 5; //Anzahl der angezeigten News
	  
	  # Ab hier nichts mehr &Atilde;&curren;ndern
	  
	  # code
	  $file_content = @file_get_contents($url);
	  
	  #Items auslesen
	  $items = preg_match_all(&quot;/&lt;item[ ]?.*&gt;(.*)&lt;\/item&gt;/Uis&quot;, $file_content, $array_items);
	  $array_items = $array_items[1];
	  if(!empty($array_items)) { //Nur wenn es Items gibt, soll auch was angezeigt werden
	  if ($number&gt;sizeof($array_items)) $number=sizeof($array_items);
	      for($n=0;$n&lt;$number;$n++) { //Nur die angegebene Anzahl der News soll angezeigt werden
	      preg_match(&quot;/&lt;link&gt;(.*)&lt;\/link&gt;/Uis&quot;, $array_items[$n], $array_link); //URLs auslesen
	      preg_match(&quot;/&lt;title&gt;(.*)&lt;\/title&gt;/Uis&quot;, $array_items[$n], $array_title); //Titel auslesen
	      preg_match(&quot;/&lt;description&gt;(.*)&lt;\/description&gt;/Uis&quot;, $array_items[$n], $array_description); //Beschreibung auslesen
	  
	  # Ab hier wird ausgegeben
	     echo &quot;&lt;h3&gt;$array_title[1]&lt;/h3&gt;&quot;; //Titel darstellen
	     echo &quot;$array_description[1]&quot;; //Ausgabe der Beschreibung
	     echo &quot;&lt;a href=\&quot;$array_link[1]\&quot; title=\&quot;Click f&amp;uuml;r mehr Informationen\&quot;&gt; mehr&lt;/a&gt;&quot;; //Link
	     }
	  }
	  ?&gt;
  &lt;/div&gt;
  &lt;hr /&gt;
  &lt;h2&gt;RSS Import Atom&lt;/h2&gt;
  &lt;p&gt;Hier wird der Feed nach Standard Atom von WordPress (wp-atom.php) importiert, die letzten 2 Beitr&amp;auml;ge&lt;/p&gt;
  &lt;p&gt;Diese Seite mit dem Beispiel downloaden: &lt;a href=&quot;xmlimport.phps&quot;&gt;Download Datei .phps&lt;/a&gt;&lt;/p&gt;
  &lt;div style=&quot;margin: 2em; padding: 1em; background: #DDD&quot;&gt;
    &lt;?php
    # Script: XML-Reader
    # Copyright: y0y.de, erweitert: bueltge.de
    
    # Hier editieren
    $url = &quot;http://bueltge.de/wp-atom.php&quot;; //URL zum XML-Feed
    $number = 2; //Anzahl der angezeigten News
    
    # Ab hier nichts mehr &Atilde;&curren;ndern
    
    # code
    $file_content = @file_get_contents($url);
    
    #Items auslesen
    $items = preg_match_all(&quot;/&lt;entry[ ]?.*&gt;(.*)&lt;\/entry&gt;/Uis&quot;, $file_content, $array_items);
    $array_items = $array_items[1];
    if(!empty($array_items)) { //Nur wenn es Items gibt, soll auch was angezeigt werden
    if ($number&gt;sizeof($array_items)) $number=sizeof($array_items);
        for($n=0;$n&lt;$number;$n++) { //Nur die angegebene Anzahl der News soll angezeigt werden
        preg_match(&quot;/&lt;id&gt;(.*)&lt;\/id&gt;/Uis&quot;, $array_items[$n], $array_link); //URLs auslesen
        preg_match(&quot;/&lt;title type=\&quot;html\&quot;&gt;(.*)&lt;\/title&gt;/Uis&quot;, $array_items[$n], $array_title); //Titel auslesen
        preg_match(&quot;/&lt;content type=\&quot;xhtml\&quot;&gt;(.*)&lt;\/content&gt;/Uis&quot;, $array_items[$n], $array_description); //Beschreibung auslesen
    
    # Ab hier wird ausgegeben
       echo &quot;Anm. der Titel: &lt;h3&gt;$array_title[1]&lt;/h3&gt;&quot;; //Titel darstellen
       echo &quot;Anm. Titel mit Link: &lt;a href=\&quot;$array_link[1]\&quot; title=\&quot;zur Seite\&quot;&gt;&lt;h3&gt;$array_title[1]&lt;/h3&gt;&lt;/a&gt;&quot;; //Titel mit Link
       echo &quot;$array_description[1]&quot;; //Ausgabe der Beschreibung
       echo &quot;&lt;a href=\&quot;$array_link[1]\&quot; title=\&quot;Click f&amp;uuml;r mehr Informationen\&quot;&gt; mehr&lt;/a&gt;&quot;; //Link
       }
    }
    ?&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h3>Download:</h3>
<p>Download als txt-Datei: <a href="http://bueltge.de/test/xmlimport.txt">xmlimport.txt</a> - 4 KByte<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-inhalte-auf-anderen-seiten-nutzen/227/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-inhalte-auf-anderen-seiten-nutzen/227/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Bookmarks im Web verwalten</title>
		<link>http://bueltge.de/bookmarks-im-web-verwalten/216/</link>
		<comments>http://bueltge.de/bookmarks-im-web-verwalten/216/#comments</comments>
		<pubDate>Tue, 08 Aug 2006 13:37:10 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Bookmark]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/?p=216</guid>
		<description><![CDATA[Arbeiten an mehreren Rechnern, an verschiedenen Standorten - das führt zwangsläufig dazu, dass man nicht immer seine Lieblingslesezeichen dabei hat. Dafür gibt es eine Menge an Service in den Weiten des WWW - z.B. del.icio.us oder google. 
Nun will sich nicht jeder User auf einen fremden Anbieter und deren Software verlassen. Ich habe dazu Abhilfe gefunden - <a href="http://sitebar.org/">SiteBar</a>.]]></description>
			<content:encoded><![CDATA[<p>Arbeiten an mehreren Rechnern, an verschiedenen Standorten - das führt zwangsläufig dazu, dass man nicht immer seine Lieblingslesezeichen dabei hat. Dafür gibt es eine Menge an Service in den Weiten des WWW - z.B. del.icio.us oder google.<br />
Nun will sich nicht jeder User auf einen fremden Anbieter und deren Software verlassen. Ich habe dazu Abhilfe gefunden - <a href="http://sitebar.org/">SiteBar</a>. Grundsätzlich arbeitet <a href="http://sitebar.org/">SiteBar</a> nach den selben Prinzipien wie andere Bookmarkservices, allerdings gibt es einen kleinen aber feinen Unterschied. <a href="http://sitebar.org/">SideBar</a> bietet sein Script zum <a href="http://sitebar.org/downloads.php">kostenlosen Download</a> an und damit kann es auf jedem Host mit php und mySQL installiert werden. Außerdem ist das Script OpenSource.<br />
Das ist schnell und einfach erledigt und die Daten können einfach und übersichtlich verwaltet werden. Ein Installationsroutine ist dabei und kein Eingriff in eine Datei notwendig.<br />
Es können mehrere User verwaltet werden, aber auch der Nutzen für einen Nutzer ist immens und man hat seine Favoriten schnell und überall zur Hand.</p>
<p>Die Verwaltung ist denkbar einfach und die Oberfläche ist mehrsprachig, so das man sich schnell zu Hause fühlt. Am einfachsten ist Bedienung wohl für Windows-User, da fast alles über die rechte Maustaste gesteuert wird. In einem Kontextmenü finden sich alle Möglichkeiten.<br />
Ein Import und Exportfunktion steht ebenso zur Verfügung wie viele Konfigurationseinstellungen. Für die Liebhaber von Design lässt sich das ganze mit verschiedenen Themes anpassen, bzw. kann auch ein eigens erstellt werden.<br />
Beim Übernehmen eines Links werden sämtliche Zusatzdaten automatisch übernommen, z.B. Favicon und Beschreibung.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/sidebar_org.png" alt="Screenshot SideBar" /></p>
<p>Ein weiteres Plus gibt es für alle Firefox-Nutzer, die mit einigen Plugins das Nutzen des Skriptes noch erleichtert bekommen.</p>
<table id="tab" border="0" summary="FF Tips fuer SideBar">
<tr>
<th>FF-Tipp</th>
<th>Beschreibung</th>
</tr>
<tr class="second">
<td><a href="https://addons.mozilla.org/addon.php?id=1545">SiteBar Client</a></td>
<td>Spezielle Erweiterung für die SiteBar.<br />
Erlaubt das Öffnen aller Lesezeichen eines Verzeichnisses als Tabs und andere nützliche Features. Um die Funktionen über die Toolbar verwenden zu können, lassen sich die SiteBar Icons über das Menü View/Toolbar/Customize zur Toolbar hinzufügen. [<a href="http://sitebarsidebar.mozdev.org/">Project-Seite</a>]</td>
</tr>
<tr>
<td><a href="http://sitebar.org/xpi/BookmarksSynchronizer.xpi">Bookmarks Synchronizer</a></td>
<td>Um Zwei-Weg-Synchronisation mit Firefox zu benutzen, installieren Sie die Lesezeichen Synchronisierer Erweiterung. Gehen Sie auf "Benutzer Einstellungen -> XBELSync Einstellungen", um mehr Informationen zum Einrichten der Synchronisation zu bekommen.</td>
</tr>
</table>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/bookmarks-im-web-verwalten/216/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/bookmarks-im-web-verwalten/216/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/sidebar_org.png" />
		<media:content url="http://bueltge.de/wp-content/images/sidebar_org.png" medium="image">
			<media:title type="html">Screenshot SideBar</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP - Script zur Zeichensatzconvertierung</title>
		<link>http://bueltge.de/wp-script-zur-zeichensatzconvertierung/137/</link>
		<comments>http://bueltge.de/wp-script-zur-zeichensatzconvertierung/137/#comments</comments>
		<pubDate>Thu, 02 Feb 2006 17:53:04 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ISO]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/wp-script-zur-zeichensatzconvertierung/137/</guid>
		<description><![CDATA[Diese Script sollte man sich merken, sicher wird es der eine oder andere noch benötigen. Denn damit läßt sich das Blog ohne Darstellungsprobleme in die gewünschte Konvertierung überführen - <a href="http://m.tacker.org/blog/64.script-to-convert-wordpress-content-encoding.html">Script to convert Wordpress content encoding</a> . Das es damit Probleme gibt, kann man des öfteren im <a href="http://forum.wordpress.de">WordPress-Forum</a> nach lesen. Empfohlen wird auch weiterhin UFT-8, der Zeichensatz, der alle Zeichen beinhaltet.]]></description>
			<content:encoded><![CDATA[<p>Diese Script sollte man sich merken, sicher wird es der eine oder andere noch benötigen. Denn damit läßt sich das Blog ohne Darstellungsprobleme in die gewünschte Konvertierung überführen - <a href="http://m.tacker.org/blog/64.script-to-convert-wordpress-content-encoding.html">Script to convert WordPress - content encoding</a> . Das es damit Probleme gibt, kann man des öfteren im <a href="http://forum.wordpress-deutschland.org/">WordPress-Forum</a> nach lesen. Empfohlen wird auch weiterhin UFT-8, der Zeichensatz, der alle Zeichen beinhaltet.</p>
<h3>Anwendung:</h3>
<p>Die php-Datei in den Ordner /wp-content/ kopieren und über den Browser starten. Natürlich die Sicherheitskopie vorher ziehen, z.B. mit phpMyAdmin - <a href="http://bueltge.de/wp-datenbank-backup-mit-phpmyadmin/97/">Beschreibung gibts hier</a>.</p>
<p>Die Konvertierung ist in Zeile 53 hinterlegt:</p>
<pre><code>
/**
* @var string Target encoding
/*
$new_encoding = 'UTF-8';
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-script-zur-zeichensatzconvertierung/137/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-script-zur-zeichensatzconvertierung/137/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP - Javascript in Beiträge/ Posts einbinden</title>
		<link>http://bueltge.de/wp-javascript-in-beitraege-posts-einbinden/104/</link>
		<comments>http://bueltge.de/wp-javascript-in-beitraege-posts-einbinden/104/#comments</comments>
		<pubDate>Thu, 15 Dec 2005 11:16:48 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Beitrag]]></category>
		<category><![CDATA[Funktion]]></category>
		<category><![CDATA[Header]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Post]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/?p=104</guid>
		<description><![CDATA[Wenn in Beiträgen, unter WordPress, Scripte benötigt werden, so kann man diese nicht direkt in den Post legen. Diese werden im Header nicht ausgeführt. Nun will man aber nicht jedes Script im Header haben, da es ansonsten in jeder WP-Seite und jedem WP-Beitrag erscheint. Einige Scripte werden nur auf bestimmten Seiten oder Beiträgen benötigt. Mit [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src='/wp-content/images///wp_js.png' alt='WordPress+JavaScript' />Wenn in Beiträgen, unter WordPress, Scripte benötigt werden, so kann man diese nicht direkt in den Post legen. Diese werden im Header nicht ausgeführt. Nun will man aber nicht jedes Script im Header haben, da es ansonsten in jeder WP-Seite und jedem WP-Beitrag erscheint. Einige Scripte werden nur auf bestimmten Seiten oder Beiträgen benötigt.<br />
Mit folgender Methode können aber Scripte in den Posts verwendet werden.</p>

<p>Als erstes muss das Script in eine Datei (name.js) geschrieben werden. Diese Datei muss nun per FTP abgelegt werden, bzw. mit der Upload-Funktion in der Admin-Oberfläche von WP. Die Funktion wird also ausgelagert.</p>
 
<p><strong>Info:</strong> Das folgende Script dient dazu, Plugins automatisch in Firefox zu integrieren und dient mir hier als Beispiel. Nähere Infos dazu hatte ich vor einiger Zeit <a href="http://bueltge.de/wp-suchplugin-fuer-mozilla-firefox/38/">hier beschrieben</a>.</p>

<h4>externes Script:</h4>
<pre><code>
function addEngine(name,ext,cat)
{
  if ((typeof window.sidebar == "object") &#038;& (typeof
  window.sidebar.addSearchEngine == "function"))
  {
    window.sidebar.addSearchEngine(
      "http://bueltge.de/wp-content/download/wp/"+name+".src",
      "http://bueltge.de/wp-content/download/wp/"+name+"."+ext,
      name,
      cat );
  }
  else
  {
    errorMsg(name,ext,cat);
  }
}
</code></pre>

<p>Das ausgelagerte Script muss nun wieder in den Beitrag geladen werden.
Im Beitrag wird das ganze dann folgender maßen eingebunden.</p>
<h4>im Post:</h4>
<pre><code>
&lt;script type=&quot;text/javascript&quot; src=&quot;/ordner/addengine.js&quot;&gt;&lt;/script&gt;

&lt;a href=&quot;javascript:addEngine('search_bueltge_blog','gif',
'bueltge.de Blog')&quot;&gt;Test_JS_Link&lt;/a&gt;
</code></pre>

<p>Hier ist der Link um das Beipiel-Script "SuchPlugin für Firefox" zu starten.</p>
<script type="text/javascript" src="http://bueltge.de/wp-content/js/addengine.js"></script>
<a href="javascript:addEngine('search_bueltge_blog','gif','bueltge.de Blog')">Test_JS_Link</a><hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-javascript-in-beitraege-posts-einbinden/104/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-javascript-in-beitraege-posts-einbinden/104/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images///wp_js.png" />
		<media:content url="http://bueltge.de/wp-content/images///wp_js.png" medium="image">
			<media:title type="html">WordPress+JavaScript</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WK - Google Sitemap</title>
		<link>http://bueltge.de/wk-google-sitemap/81/</link>
		<comments>http://bueltge.de/wk-google-sitemap/81/#comments</comments>
		<pubDate>Fri, 04 Nov 2005 09:38:03 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Sitemap]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/wk-google-sitemap/81/</guid>
		<description><![CDATA[Google Sitemaps sind nützlich - das ist hinreichend bekannt und Sven Przepiorka erklärt beispielhaft an seiner Bildergalerie wie nützlich das ganze wirklich ist. Darauf Bezug nehmend möchte ich auf eine php-Script aufmerksam machen, welches diese Sitemap automatisch und komfortabel für die eigene Website erledigt - phpSitemapNG. Mit Hilfe dieses Tools muss man die xml-Datei (hier [...]]]></description>
			<content:encoded><![CDATA[<p><q>Google Sitemaps sind nützlich</q> - das ist hinreichend bekannt und Sven Przepiorka erklärt beispielhaft an seiner Bildergalerie wie nützlich das ganze wirklich ist.</p>
<p>Darauf Bezug nehmend möchte ich auf eine php-Script aufmerksam machen, welches diese Sitemap automatisch und komfortabel für die eigene Website erledigt - <a href="http://enarion.net/tools/phpsitemapng/">phpSitemapNG</a>. Mit Hilfe dieses Tools muss man die <a href="http://kvfl.com/sitemap.xml">xml-Datei (hier </a>ein Beispiel von meiner Kletterseite <a href="http://www.kvfl.com">KVFL.com</a>) nicht händisch pflegen und Google wird immer auf dem neusten Stand gehalten. Man landet also kurze Zeit später auf dem Index von Google und bekommt so wieder neue Besucher. Das Warten auf eine Indizierung durch Google entfällt.</p>
<p>Das Script läßt sich recht einfach installieren und ist schnell in die eigene Seite eingebunden. Duch die eingebundene Setup-Oberfläche können Änderungen (Ordner und Seiten die nicht berücksichtigt werden sollen, Priorität der Beitrage / Seiten, Frequenz der Indizierung, etc.) einfach und schnell durchgeführt werden.</p>
<p>Bei WordPress, wie ich es hier benutze, kann man das ganze durch ein <a href="http://bueltge.de/wp-sitemapview-plugin/63/">Plugin </a>erzielen.</p>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wk-google-sitemap/81/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wk-google-sitemap/81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP - eMail Postfach auslesen</title>
		<link>http://bueltge.de/wp-email-postfach-auslesen/25/</link>
		<comments>http://bueltge.de/wp-email-postfach-auslesen/25/#comments</comments>
		<pubDate>Thu, 28 Jul 2005 12:14:35 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[eMail]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/wp-email-postfach-auslesen/25/</guid>
		<description><![CDATA[Oft ist es so, dass man nur mal schnell schauen will, ob neue Mails eingegangen sind. Für alle die, die nicht nonstop an ihrem konfigurierten Rechner sitzen, beschreibe ich mal, wie ich das mit Hilfe von WordPress erledige. In dem Fall ist es notwendig ein Plugin zu installieren, mit dem man php auf den Seiten [...]]]></description>
			<content:encoded><![CDATA[<p>Oft ist es so, dass man nur mal schnell schauen will, ob neue Mails eingegangen sind. Für alle die, die nicht nonstop an ihrem konfigurierten Rechner sitzen, beschreibe ich mal, wie ich das mit Hilfe von WordPress erledige.<br />
In dem Fall ist es notwendig ein Plugin zu installieren, mit dem man php auf den Seiten ausführen kann. Dafür eignet sich zum Beispiel: <a href="http://priyadi.net/archives/2005/03/02/wordpress-php-exec-plugin/">PHP-EXEC</a> von <a href="http://priyadi.net/">Priyadi Iman Nurcahyo</a>.<br />
Dadurch ist es möglich php-Code auf den Seiten von WordPress auszuführen. Das folgende Script muss dann zwischen die beiden Tags &lsaquo;phpcode&rsaquo;&lsaquo;/phpcode&rsaquo;.</p>
<p>Das ganze sieht dann je nach Template folgendermaßen aus. </p>
<blockquote><p>
<strong>Verbindung zu domain-Mail-Postfach hergestellt!</strong></p>
<p><strong>Nachrichten im Posteingang: name@domain.de</strong></p>
<p>   1. N 1)28-Jul-2005 Elena Dorte Gestaltung und Logo Reloo (12598 chars)<br />
      n<br />
   2. N 2)21-Jul-2004 Test Mail (123 chars)<br />
      n
</p></blockquote>
<p>Natürlich kann das ganze bearbeitet werden. Wer eine der gängigen  Templates nutzt, sollte allerdings einen kleinen Tag im style.css hinzufügen. Da Themes von WordPress den Inhalt zwischen dem Loop oft in Blocksatz darstellen, sind die Mails auseinandergezogen. Daher diese kleine Änderung im Styesheet. </p>
<pre><code>
.post ul {
	text-align: left;
	}
</code></pre>
<p>Es bietet sich natürlich an, hierfür eine passwortgeschützte Seite in WordPress zu erstellen.<br />
Das wars, nun werden alle Mails auf der neuen Seite gelistet. Besonders hilfreich ist das, wenn man mehrer Mailkonten hat und ab und zu einfach mal schauen will, ob es was neues gibt.<br />
Mehr Infos zum php-Code findet ihr bei <cite><a href="http://www.webmaster-resource.de/tricks/php/email-postfach-pop-imap-und-nntp-server-auslesen.php">webmaster-resource.de</a></cite></p>
<pre><code>
&lt;?php
/*
Name: eMail Postfach auslesen
Description: Basiert auf dem Script:&lt;a href="http://www.webmaster-resource.de/tricks/
 php/email-postfach-pop-imap-und-nntp-server-auslesen.php"&gt;webmaster-resource.de&lt;/a&gt;.
Author URI: http://bueltge.de/
*/

/*Hier konfigurieren !*/ 
$Mailbox = &quot;{pop.example.com/pop3:110}INBOX&quot;;
$Benutzername = &quot;name@example.com&quot;;
$Passwort = &quot;passwort&quot;;

$MailboxPointer = imap_open($Mailbox, $Benutzername, $Passwort);

if($MailboxPointer)
{
	echo&quot;&lt;p&gt;&lt;strong&gt;Verbindung zu &lt;a href=&quot;http://www.example.com/&quot;&gt;
		example.com-Mail-Postfach&lt;/a&gt; hergestellt!&lt;/strong&gt;&quot;;
	echo&quot;&lt;p&gt;
Nachrichten im Posteingang: &lt;strong&gt;name@example.com&lt;/strong&gt;&lt;/p&gt;&quot;;
	echo&quot;&lt;ul&gt;&quot;;
	$Headers = imap_headers($MailboxPointer);
	if($Headers!=false)
	{
		while(list($Schluessel, $Wert) = each($Headers))
		{
			echo&quot;&lt;li&gt;&quot;;
			echo$Wert.&quot;&lt;/li&gt;n&quot;;
		}
	}
	echo&quot;&lt;/ul&gt;&quot;;
	imap_close($MailboxPointer);
}
else
{
	echo&quot;Keine Verbindung zum &lt;a href=&quot;http://www.doman.de/&quot;&gt;
		example.com-Mail-Postfach&lt;/a&gt;!&quot;;
}

?&gt;
</code></pre>
<p>Download des Script: <a href="/wp-content/download/wp/mail.phps">mail.phps</a> - 1KByte<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-email-postfach-auslesen/25/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-email-postfach-auslesen/25/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
	</channel>
</rss>

