<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>
<channel>
     

<itunes:subtitle>CBlog</itunes:subtitle>
<itunes:author>CBlog</itunes:author>
<itunes:summary></itunes:summary>
<itunes:image href="http://blog.cboltz.de/itunes.jpg" />
<itunes:category text="Technology" />                
                
    <title>CBlog - PHP</title>
    <link>http://blog.cboltz.de/</link>
    <description></description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.6.2 - http://www.s9y.org/</generator>
    <pubDate>Mon, 19 Apr 2010 04:10:03 GMT</pubDate>

    <image>
        <url>http://blog.cboltz.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: CBlog - PHP - </title>
        <link>http://blog.cboltz.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>MultiBoilerplate: Vorlagen pro Namespace</title>
    <link>http://blog.cboltz.de/archives/55-MultiBoilerplate-Vorlagen-pro-Namespace.html</link>
            <category>english</category>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/55-MultiBoilerplate-Vorlagen-pro-Namespace.html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=55</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=55</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    &lt;p&gt;Die Mediawiki-Extension &lt;a target=&quot;_blank&quot; href=&quot;http://www.mediawiki.org/wiki/Extension:MultiBoilerplate&quot;&gt;MultiBoilerplate&lt;/a&gt; ermöglicht es, beim Anlegen einer Seite eine oder mehrere Vorlagen zur Auswahl anzubieten. Das ist schonmal gut. Noch besser ist es allerdings, wenn die Vorlagen-Liste je nach Namespace eingestellt werden kann - eine Vorlage für eine neue Seite ist z. B. nicht als Vorlage für eine Hilfeseite  geeignet.&lt;/p&gt; 
&lt;p&gt;Die Lösung ist ein kleiner Patch, den ich für MultiBoilerplate geschrieben habe. Dieser ist im &lt;a target=&quot;_blank&quot; href=&quot;https://bugzilla.wikimedia.org/show_bug.cgi?id=22759&quot;&gt;Mediawiki Bugtracker&lt;/a&gt; verfügbar (und wird hoffentlich in der nächsten MultiBoilerplate-Version aufgenommen ;-) Der Patch enthält auch eine Beschreibung der nötigen Config-Optionen.&lt;br /&gt;&lt;/p&gt; 
&lt;p style=&quot;color: #00cc00;&quot;&gt;The Mediawiki-Extension &lt;a target=&quot;_blank&quot; href=&quot;http://www.mediawiki.org/wiki/Extension:MultiBoilerplate&quot;&gt;MultiBoilerplate&lt;/a&gt; allows to offer one or more boilerplates when creating a new page. That&#039;s quite good. It&#039;s even better to offer different boilerplates for each namespace - for example, a boilerplate for a new page is not necessarily a good boilerplate for a help page.&lt;/p&gt; 
&lt;p style=&quot;color: #00cc00;&quot;&gt;The solution is a small patch I wrote for MultiBoilerplate. You can download it from the &lt;a target=&quot;_blank&quot; href=&quot;https://bugzilla.wikimedia.org/show_bug.cgi?id=22759&quot;&gt;Mediawiki Bugtracker&lt;/a&gt; (and will hopefully be included in the next version of MultiBoilerplate ;-) The patch includes a description of the necessary config options.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 18 Apr 2010 19:02:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/55-guid.html</guid>
    <category>mediawiki</category>
<category>multiboilerplate</category>

</item>
<item>
    <title>Prosit Neujahr!</title>
    <link>http://blog.cboltz.de/archives/54-Prosit-Neujahr!.html</link>
            <category>english</category>
            <category>Linux</category>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/54-Prosit-Neujahr!.html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=54</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=54</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    &lt;p&gt;Prosit Neujahr und alles Gute für 2010! Dieser Artikel enthält einiges, das ich schon 2009 bloggen wollte, und außerdem eine kleine Neujahrsüberraschung von SpamAssassin ;-)&lt;/p&gt; 
&lt;p style=&quot;color: #00cc00;&quot;&gt;Happy New Year! This article contains some things I wanted to blog about in 2009 already, and a little new year surprise from SpamAssassin ;-)&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; &lt;a href=&quot;http://sourceforge.net/projects/postfixadmin&quot; target=&quot;_blank&quot;&gt;PostfixAdmin&lt;/a&gt; 2.3 wurde im Oktober 2009 releast, RPMs gibt es natürlich im &lt;a href=&quot;http://download.opensuse.org/repositories/home:/cboltz/&quot; target=&quot;_blank&quot;&gt;openSUSE Build Service&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://sourceforge.net/projects/postfixadmin&quot;&gt;PostfixAdmin&lt;/a&gt;&lt;span style=&quot;color: #00cc00;&quot;&gt; 2.3 was released in october 2009, RPMs are available in the &lt;/span&gt;&lt;a href=&quot;http://download.opensuse.org/repositories/home:/cboltz/&quot;&gt;openSUSE Build Service&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;Postfixadmin 2.4 (oder 3.0?) wird Smarty für die Templates verwenden&lt;br /&gt;&lt;span style=&quot;color: #00cc00;&quot;&gt;PostfixAdmin 2.4 (or 3.0?) will use smarty for the templates&lt;/span&gt;&lt;/li&gt; 
&lt;li&gt;PostfixAdmin 2.3.1 (alle Bugfixes seit dem 2.3-Release, aber ohne Smarty) ist in Arbeit&lt;br /&gt;&lt;span style=&quot;color: #00cc00;&quot;&gt;PostfixAdmin 2.3.1 (with all bugfixes since 2.3 release, but without smarty) is under development&lt;/span&gt;&lt;/li&gt; 
&lt;li&gt;openSUSE 11.2 wurde im November 2009 releast, und auch gleich von uns (Jan, Jan-Simon und mir) auf der Open Source Expo in Karlsruhe präsentiert&lt;br /&gt;&lt;span style=&quot;color: #00cc00;&quot;&gt;openSUSE 11.2 was released in november 2009, and presented by us (Jan, Jan-Simon and me) at the Open Source Expo in Karlsruhe&lt;/span&gt;&lt;/li&gt; 
&lt;li&gt;und die Neujahrsüberraschung von SpamAssassin: 2010 bekommt jede Mail erstmal 3.188 Punkte... - &lt;a href=&quot;https://bugzilla.novell.com/show_bug.cgi?id=567852&quot;&gt;Bugreport&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;color: #00cc00;&quot;&gt;and the new year surprise from SpamAssassin: every mail in 2010 gets 3.188 points... - &lt;/span&gt;&lt;a href=&quot;https://bugzilla.novell.com/show_bug.cgi?id=567852&quot; target=&quot;_blank&quot;&gt;Bugreport&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Fri, 01 Jan 2010 16:30:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/54-guid.html</guid>
    <category>bug</category>
<category>linux</category>
<category>opensuse</category>
<category>postfixadmin</category>
<category>server</category>
<category>spam</category>

</item>
<item>
    <title>th_mailformplus und Attachments</title>
    <link>http://blog.cboltz.de/archives/52-th_mailformplus-und-Attachments.html</link>
            <category>english</category>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/52-th_mailformplus-und-Attachments.html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=52</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=52</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    &lt;p&gt;Auf der Typo3-Website eines Kunden verwende ich th_mailformplus für ein Webformular mit Dateiupload. Funktioniert auch soweit, allerdings wurde die hochgeladene Datei (trotz entsprechender Konfiguration des Formulars) nicht an die Maill angehängt.&lt;/p&gt; 
&lt;p&gt;Seit vorhin kenne ich den Grund: Der Mail-Funktion wird nur der Dateiname ohne Pfad angegeben, und dadurch findet die Funktion natürlich die Datei nicht und kann sie auch nicht anhängen :-(&amp;#160; Außerdem endet der Dateiname noch mit \n.&lt;/p&gt; 
&lt;p&gt; Ich habe eben einen kleinen &lt;a href=&quot;http://bugs.typo3.org/view.php?id=6593&quot; target=&quot;_blank&quot;&gt;Patch in den Typo3-Bugtracker&lt;/a&gt; hochgeladen, der den Pfad beim Dateinamen einfügt und das \n per trim() entsorgt. Und schon werden Mails mit Anhang verschickt :-)&lt;/p&gt; 
&lt;p style=&quot;color: #00cc00;&quot;&gt;I use th_mailformplus for a mailform with file upload on a customer&#039;s typo3 website. Works mostly, but the uploaded file was not attached to the mail (even if the mailform config was correct).&lt;/p&gt; 
&lt;p style=&quot;color: #00cc00;&quot;&gt;Since a short while ago I know the reason: The mail function is called with the filename without path, and therefore obviously can&#039;t find the file :-(&amp;#160; Besides that, the filename ends with \n.&lt;/p&gt; 
&lt;p&gt;&lt;span style=&quot;color: #00cc00;&quot;&gt;I just uploaded a &lt;a href=&quot;http://bugs.typo3.org/view.php?id=6593&quot; target=&quot;_blank&quot;&gt;small patch to the Typo3 bugtracker&lt;/a&gt; which inserts the path into the filename and removes the \n using trim(). Now mailformplus sends mails with attachments :-)&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 01 Jul 2009 23:00:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/52-guid.html</guid>
    <category>bug</category>
<category>typo3</category>

</item>
<item>
    <title>Paste Search</title>
    <link>http://blog.cboltz.de/archives/37-Paste-Search.html</link>
            <category>english</category>
            <category>Linux</category>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/37-Paste-Search.html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=37</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=37</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    
&lt;p&gt;Schöner Titel zum Mitraten, oder? ;-)&lt;/p&gt;&lt;p&gt;Paste Search ist ein unspektakuläres PHP-Script, das aber die Usability von Konqueror (und anderen Webbrowsen) enorm verbessert. Konkret geht es um das Verhalten beim &amp;quot;Mittelklicken&amp;quot; des Browserfensters, das normalerweise eine Google-Suche auslöst und nach dem Begriff in der Zwischenablage sucht. Dieses Standardverhalten ist schonmal gut, aber oft habe ich andere Ziele - beispielsweise ein Bugreport auf bugzilla.novell.com oder im SourceForge Tracker.&lt;/p&gt;&lt;p&gt;Die Lösung ist relativ einfach: Das folgende PHP-Script wird auf einen Webserver hochgeladen und als Standard-Suchmaschine im Browser eingetragen. Ab diesem Zeitpunkt wird bei Zahlen automatisch im Bugtracker gesucht (die Unterscheidung erfolgt anhand der Nummer - alles bis 500000 geht an bugzilla.novell.com, der Rest an SourceForge), bei Text mit Google.&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#006600&quot;&gt;Nice title to guess on, right? ;-)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#006600&quot;&gt;Paste Search is an unspectacular PHP script that greatly enhances the usability of Konqueror (and other web browsers). To be exact, it is about the behaviour when &amp;quot;middle-clicking&amp;quot; the browser window which usually starts a google search for the content of the clipboard. This default behaviour is not bad, but sometimes I have other targets - for example bugreports on bugzilla.novell.com or in the SourceForge trackers.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#006600&quot;&gt;The solution is quite simple: Upload the following PHP script to a  webserver and configure your browser to use it as default search engine. If you paste numbers to your browser now, it will go to the bugtracker automatically (the selection depends on the bug number - up to 500000 goes to bugzilla.novell.com, everything above to the SourceForge tracker). If you paste text, you will be redirected to Google.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&amp;lt;?php # cbPasteSearch.php&lt;br /&gt;if (empty($_GET[&#039;q&#039;])) {&lt;br /&gt;    echo &amp;quot;Please run me with ?q=searchterm&amp;quot;;&lt;br /&gt;} else {&lt;br /&gt;    $q = trim($_GET[&#039;q&#039;]);&lt;br /&gt;    if (preg_match(&amp;quot;/^[0-9]+$/&amp;quot;, $q)) { # numeric&lt;br /&gt;        if ($q &amp;lt; 500000) { # Novell bugzilla&lt;br /&gt;            header(&amp;quot;Location: https://bugzilla.novell.com/show_bug.cgi?id=$q&amp;quot;);&lt;br /&gt;        } else { # SF tracker&lt;br /&gt;            header(&amp;quot;Location: https://sourceforge.net/support/tracker.php?aid=$q&amp;quot;);&lt;br /&gt;        }&lt;br /&gt;    } else { # not numeric - ask Google&lt;br /&gt;            header(&amp;quot;Location: http://www.google.de/search?q=$q&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/pre&gt;&lt;p&gt;Natürlich kann man sich das Script nach Bedarf durch zusätzliche if-Abfragen anpassen. Vorschläge dazu nehme ich in den Kommentaren gern entgegen ;-) &lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#006600&quot;&gt;Of course you can customize the script as needed by adding additional if statements. Please add your ideas to the comment section ;-)&lt;/font&gt;&lt;br /&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 18 Apr 2008 19:34:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/37-guid.html</guid>
    <category>browser</category>
<category>bug</category>
<category>linux</category>
<category>php</category>

</item>
<item>
    <title>Gästebuch-Spamfilter 2.0</title>
    <link>http://blog.cboltz.de/archives/20-Gaestebuch-Spamfilter-2.0.html</link>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/20-Gaestebuch-Spamfilter-2.0.html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=20</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    
Auch wenn das Aufkommen an Gästebuchspam aktuell zurückgeht (im April nur noch 1/5 dessen, was zwischen November und März monatlich an Spameinträgen reinkam), wird es Zeit, dass ich mal wieder ein Update meines &lt;a href=&quot;http://blog.cboltz.de/archives/5-Gerade-zum-richtigen-Zeitpunkt....html&quot;&gt;Gästebuch-Spamfilters&lt;/a&gt; veröffentliche.&lt;p&gt;Eine reine Filterung auf &amp;quot;&amp;lt;a href=...&amp;gt;&amp;quot; und &amp;quot;[url]&amp;quot; reicht leider nicht mehr aus, aber es gibt ja noch mehr Möglichkeiten. Aktueller Stand:&lt;/p&gt;&lt;pre&gt;preg_match_all(&amp;quot;@http://@&amp;quot;, $eintrag, $http_count_tmp);&lt;br /&gt;preg_match_all(&amp;quot;@%@&amp;quot;, $www, $prozent_count_tmp);&lt;br /&gt;if (&lt;br /&gt;    preg_match ( &amp;quot;/\[URL=.*\]|&amp;lt;a[^&amp;gt;]*href|^abc123$/i&amp;quot;, trim($eintrag))&lt;br /&gt;    || ( count($http_count_tmp[0]) &amp;gt; 3 )&lt;br /&gt;    || ( $leerfeld != &amp;quot;&amp;quot; )&lt;br /&gt;    || ( ( $name == $ort ) &amp;amp;&amp;amp; ( $name != &amp;quot;&amp;quot; ) )&lt;br /&gt;    || ( count($prozent_count_tmp[0]) &amp;gt; 10 )&lt;br /&gt;) {&lt;br /&gt;    echo &amp;quot;Verp*** dich, Spammer!&amp;quot;;&lt;br /&gt;    die;&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Gefiltert wird also auf folgende Kriterien:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;der Eintrag enthält &amp;quot;&amp;lt;a href=...&amp;gt;&amp;quot; oder &amp;quot;[url]&amp;quot;&lt;/li&gt;&lt;li&gt;lustigster Filter: der Eintrag lautet &amp;quot;abc123&amp;quot; - scheinbar lieben die Spammer solche Kurzeinträge ;-)&lt;/li&gt;&lt;li&gt;im Eintrag kommt mehr als dreimal &amp;quot;http://&amp;quot; vor&lt;/li&gt;&lt;li&gt;das Leerfeld (ein per CSS display:none ausgeblendetes Eingabefeld) wurde ausgefüllt&lt;/li&gt;&lt;li&gt;die Homepage mehr als 10 %-Zeichen enthält (gern verwendet bei &amp;quot;Fremdhosting&amp;quot; von Spam, aka unsichere, gecrackte Forensoftware u. ä.)&lt;/li&gt;&lt;li&gt;zwei Felder mit gleichem Eintrag&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Die aktuelle Trefferquote liegt sehr nahe an 100%. Insbesondere das Leerfeld hat mir in letzter Zeit gute Dienste geleistet, weil viele Spammer nur noch einen kurzen Text (englisch, italienisch oder in kaputtem deutsch) ohne Links eintragen.&lt;/p&gt;&lt;p&gt;&lt;b&gt;UPDATE 17.8.2007:&lt;/b&gt;&lt;br /&gt;Filter auf &amp;gt;10 Prozentzeichen und auf Felder mit gleichem Eintrag hinzugefügt (ist schon seit einiger Zeit im Gästebuch-Spamfilter enthalten - seitdem ist wieder Ruhe.)&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 06 May 2007 13:44:57 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/20-guid.html</guid>
    <category>php</category>
<category>regex</category>
<category>spam</category>

</item>
<item>
    <title>Typo3 und $_POST</title>
    <link>http://blog.cboltz.de/archives/12-Typo3-und-_POST.html</link>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/12-Typo3-und-_POST.html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=12</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=12</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    
&lt;p&gt;Im Gästebuch der &lt;a target=&quot;_blank&quot; href=&quot;http://www.lj-rheinhessenpfalz.de&quot;&gt;Landjugend RheinhessenPfalz&lt;/a&gt; habe ich &lt;a href=&quot;http://blog.cboltz.de/archives/5-Gerade-zum-richtigen-Zeitpunkt....html&quot;&gt;ein paar Zeilen PHP-Code&lt;/a&gt; verwendet, um Gästebuch-Spam abzufangen. Das Funktionsprinzip war recht einfach: wenn der Eintrag nach Spam aussieht, setze &lt;font face=&quot;courier new,courier,monospace&quot;&gt;$_POST[&#039;firstname&#039;] = &amp;quot;&amp;quot;&lt;/font&gt;. Das Gästebuch hat dann den fehlenden Vornamen beklagt ;-) und den Eintrag zuverlässig abgewiesen.&lt;/p&gt;&lt;p&gt;Nach dem Update auf Typo3 4.0 funktioniert das so nicht mehr - scheinbar wird $_POST von Typo3 gecacht.&lt;/p&gt;&lt;p&gt;Der Einfachheit halber habe ich jetzt doch ve_guestbook gepatcht:&lt;/p&gt;&lt;pre&gt;--- pi1/class.tx_veguestbook_pi1.php_ORIG   2006-10-22 03:07:02.000000000 +0200&lt;br /&gt;+++ pi1/class.tx_veguestbook_pi1.php        2006-10-22 02:56:52.000000000 +0200&lt;br /&gt;@@ -947,6 +947,11 @@  function checkForm() {&lt;br /&gt;                        }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;+               if (!empty($this-&amp;gt;postvars[&#039;entry&#039;])) {&lt;br /&gt;+                       if (preg_match ( &amp;quot;/\[url=.*\]|&amp;lt;a[^&amp;gt;]*href/i&amp;quot;, $this-&amp;gt;postvars[&#039;entry&#039;]))&lt;br /&gt;+                           $error .= &amp;quot;&amp;lt;li&amp;gt;Bitte keinen Spam posten!&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;+               }&lt;br /&gt;+&lt;br /&gt;                if ($this-&amp;gt;config[&#039;email_validation&#039;] &amp;amp;&amp;amp; !empty($this-&amp;gt;postvars[&#039;email&#039;])) {&lt;br /&gt;&lt;br /&gt;                        if (t3lib_div::validEmail($this-&amp;gt;postvars[&#039;email&#039;]) == false) {&lt;/pre&gt;&lt;p&gt;Der Feature Request für eine offizielle &amp;quot;Eintrag Blacklist&amp;quot; Konfiguratonsoption in ve_guestbook, die ganz normal übers Typo3-Backend konfiguriert werden kann, ist übrigens auch schon beim Autor eingereicht ;-)&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;b&gt;UPDATE (17.11.2006)&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Der Fehler lag woanders - Typo3 4.0.2 cacht ve_guestbook zu aggressiv. &lt;/p&gt;&lt;p&gt;Das führte zum Einen dazu, dass mein Hack, $_POST zu verändern, nicht mehr funktioniert hat, und zum anderen dazu, dass keine neue Gästebucheinträge akzeptiert wurden - die Bestätigungsseite wurde gechacht und der Eintragen-Code im Gästebuch wurde deshalb nicht mehr ausgeführt :-(&lt;/p&gt;&lt;p&gt;Die Lösung: Die Seite komplett vom Cachen ausschließen (nicht wirklich empfehlenswert) oder im Typoscript &lt;font face=&quot;courier new,courier,monospace&quot;&gt;plugin.tx_veguestbook_pi1 = USER_INT&lt;/font&gt; eintragen. (&lt;a target=&quot;_blank&quot; href=&quot;http://www.typo3forum.de/index.php?id=13&amp;amp;action=list_post&amp;amp;tid=49736&amp;amp;page=2&quot;&gt;Quelle&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;Und schon kann man wieder $_POST missbrauchen ;-)&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 22 Oct 2006 22:29:30 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/12-guid.html</guid>
    <category>php</category>
<category>spam</category>
<category>typo3</category>

</item>
<item>
    <title>Single Sign-on in phpMyAdmin aus einer anderen PHP-Session II</title>
    <link>http://blog.cboltz.de/archives/11-Single-Sign-on-in-phpMyAdmin-aus-einer-anderen-PHP-Session-II.html</link>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/11-Single-Sign-on-in-phpMyAdmin-aus-einer-anderen-PHP-Session-II.html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=11</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=11</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    
&lt;p&gt;In &lt;a href=&quot;http://blog.cboltz.de/archives/7-Single-Sign-on-in-phpMyAdmin-aus-einer-anderen-PHP-Session.html&quot; target=&quot;_blank&quot;&gt;Single Sign-on in phpMyAdmin aus einer anderen PHP-Session&lt;/a&gt; habe ich erklärt, wie man mit einer bestehenden Session passwortlos zu phpMyAdmin kommt und einen entsprechden Hack für die config.inc.php gezeigt.&lt;/p&gt;&lt;p&gt;Inzwischen wurde phpMyAdmin 2.9.0-rc1 releast, in dem ein neues Authentifizierungsmoduls &amp;quot;signon&amp;quot;, basierend auf meinem Hack, enthalten ist. Zu konfigurieren ist das Ganze über ein paar Variablen in der config.inc.php:&lt;/p&gt;&lt;pre&gt;$cfg[&#039;Servers&#039;][$i][&#039;auth_type&#039;]     = &#039;signon&#039;;&lt;br /&gt;$cfg[&#039;Servers&#039;][$i][&#039;SignonURL&#039;]     = &#039;/login.php&#039;;&lt;br /&gt;$cfg[&#039;Servers&#039;][$i][&#039;LogoutURL&#039;]     = &#039;/logout.php&#039;;&lt;br /&gt;$cfg[&#039;Servers&#039;][$i][&#039;SignonSession&#039;] = &#039;PHPSESSID&#039;;&lt;/pre&gt;&lt;p&gt;
Die MySQL-Logindaten müssen natürlich in der Session hinterlegt werden. Gegenüber meinem ursprünglichen Code haben sich die Variablennamen leicht verändert. Die Session wird mit folgendem Code befüllt:&lt;/p&gt;&lt;pre&gt;$_SESSION[&#039;PMA_single_signon_user&#039;] = &amp;quot;username&amp;quot;;&lt;br /&gt;$_SESSION[&#039;PMA_single_signon_password&#039;] = &amp;quot;password&amp;quot;;&lt;br /&gt;if (!isset($_SESSION[&#039;PMA_single_signon_token&#039;])) {&lt;br /&gt;    $_SESSION[&#039;PMA_single_signon_token&#039;] = md5(uniqid(rand(), true));&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Kleine Stolperfalle: PMA_single_signon_user und PMA_single_signon_password werden beim Logout aus phpMyAdmin gelöscht. /logout.php sollte also wirklich sofort den Logout machen. Wenn man eine Abfrage &amp;quot;wirklich ausloggen?&amp;quot; hat und der User &amp;quot;nein!&amp;quot; antwortet, wird man trotzdem von phpMyAdmin ausgesperrt (oder muss PMA_single_signon_* nochmal neu setzen). Ja, ich habe das reklamiert, der phpMyAdmin-Entwickler wollte das aber nicht ändern.&lt;/p&gt;&lt;p&gt;Übrigens: PMA_single_signon_token benötigt man immer dann, wenn man direkt auf eine Unterseite von phpMyAdmin verlinken will (z. B. um einen Datensatz direkt zu bearbeiten). Im Link zu phpMyAdmin muss der Wert dann im ?token= Parameter angegeben werden.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 10 Sep 2006 21:34:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/11-guid.html</guid>
    <category>login</category>
<category>php</category>
<category>phpmyadmin</category>

</item>
<item>
    <title>Single Sign-on in phpMyAdmin aus einer anderen PHP-Session</title>
    <link>http://blog.cboltz.de/archives/7-Single-Sign-on-in-phpMyAdmin-aus-einer-anderen-PHP-Session.html</link>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/7-Single-Sign-on-in-phpMyAdmin-aus-einer-anderen-PHP-Session.html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=7</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    
&lt;p&gt;Ich habe eine Seite mit selbstgestricktem Login auf Basis von PHP-Sessions. Jetzt will ich phpMyAdmin einbinden, ohne dass man sich nochmal darin einloggen muss - schließlich sind die Leute ja schon auf meiner Seite eingeloggt.&lt;/p&gt;&lt;p&gt;Sowas schreit förmlich nach Single Sign-On. Schönes Buzzword, allerdings findet Google für phpMyAdmin recht wenig zu diesem Thema.&lt;/p&gt;&lt;p&gt;Nach einigem Trial&amp;amp;Error sowie einem Nachmittag in #phpmyadmin habe ich eine Lösung geschrieben, die nur eine Ergänzung der config.inc.php braucht, ansonsten nicht in phpMyAdmin eingreift und nichtmal das normale Login stört - ich kann also dieselbe phpMyAdmin-Instanz für Single Sign-On und Cookie-basiertes Login verwenden.&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.cboltz.de/archives/7-Single-Sign-on-in-phpMyAdmin-aus-einer-anderen-PHP-Session.html#extended&quot;&gt;&quot;Single Sign-on in phpMyAdmin aus einer anderen PHP-Session&quot; vollständig lesen&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 30 Jul 2006 18:50:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/7-guid.html</guid>
    <category>login</category>
<category>php</category>
<category>phpmyadmin</category>

</item>
<item>
    <title>Gerade zum richtigen Zeitpunkt...</title>
    <link>http://blog.cboltz.de/archives/5-Gerade-zum-richtigen-Zeitpunkt....html</link>
            <category>PHP</category>
    
    <comments>http://blog.cboltz.de/archives/5-Gerade-zum-richtigen-Zeitpunkt....html#comments</comments>
    <wfw:comment>http://blog.cboltz.de/wfwcomment.php?cid=5</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cboltz.de/rss.php?version=2.0&amp;type=comments&amp;cid=5</wfw:commentRss>
    

    <author>nospam@example.com (Christian Boltz)</author>
    <content:encoded>
    
&lt;p&gt;Vor ein paar Tagen habe ich einen Spamfilter ins Gästebuch von &lt;a target=&quot;_blank&quot; href=&quot;http://www.Landjugend-Insheim.de&quot;&gt;Landjugend-Insheim.de&lt;/a&gt; eingebaut, nachdem eine Handvoll Spameinträge aufgeschlagen war.&lt;/p&gt;Weil das Gästebuch nur Plain Text-Einträge erlaubt, ist das Funktionsprinzip einfach: ich kann auf &lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;a href=...&amp;gt;&lt;/font&gt; und &lt;font face=&quot;courier new,courier,monospace&quot;&gt;[url=...]&lt;/font&gt;filtern. Die Spammer sind immer so nett, diese Tags in reichlicher Anzahl in ihre Einträge zu packen ;-)&lt;p&gt;Technisch gesehen sieht das so aus:&lt;/p&gt;&lt;pre&gt;&amp;lt;?php&lt;br /&gt;if ( preg_match ( &amp;quot;/\[URL=.*\]|&amp;lt;a[^&amp;gt;]*href/i&amp;quot;, $eintrag)) {&lt;br /&gt;    echo &amp;quot;Verp*** dich, Spammer!&amp;quot;;&lt;br /&gt;    die;&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/pre&gt;&lt;p&gt;Naja, die echte Fehlermeldung ist etwas freundlicher - es könnte ja auch mal jemand einen &amp;quot;guten&amp;quot; Eintrag schreiben und auf aktiviertes HTML hoffen. Der bekommt dann natürlich nach Entfernen der Links eine zweite Chance.&lt;/p&gt;&lt;p&gt;Gestern und heute hat mir dieser Filter reichlich Arbeit gespart - innerhalb von 36 Stunden hat er mir 170 Spameinträge vom Hals gehalten...&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 09 Jul 2006 13:01:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.cboltz.de/archives/5-guid.html</guid>
    <category>landjugend</category>
<category>php</category>
<category>regex</category>
<category>spam</category>

</item>

</channel>
</rss>