<?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/"
   >
<channel>
    <title>ads' corner - PHP</title>
    <link>http://andreas.scherbaum.la/blog/</link>
    <description>a place to store my stuff</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.3 - http://www.s9y.org/</generator>
    <pubDate>Wed, 22 Oct 2008 14:23:17 GMT</pubDate>

    <image>
        <url>http://andreas.scherbaum.la/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: ads' corner - PHP - a place to store my stuff</title>
        <link>http://andreas.scherbaum.la/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>xPyrus community framework released by UniHelp e.V.</title>
    <link>http://andreas.scherbaum.la/blog/archives/458-xPyrus-community-framework-released-by-UniHelp-e.V..html</link>
            <category>Magdeburg</category>
            <category>PHP</category>
            <category>PostgreSQL News</category>
            <category>UniHelp</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/458-xPyrus-community-framework-released-by-UniHelp-e.V..html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=458</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=458</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;UniHelp e.V. - a registered student association in Magdeburg/Germany - announces the release of xPyrus, a framework for operating communities and document sharing platforms.&lt;br /&gt;&lt;br /&gt;The framework is based on PHP 5 and PostgreSQL and has been running the students&#039; community UniHelp.de (a platform for exchanging study-related documents and connecting students) in Magdeburg since 2002.&lt;br /&gt;&lt;br /&gt;The entire framework is released under the GNU Affero General Public License v3 at &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=6339&amp;amp;entry_id=458&quot; title=&quot;http://www.xpyrus.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.xpyrus.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;http://www.xpyrus.org&lt;/a&gt;. A unix-based server is required for installation and use of all features, however, a hosting service can be provided by UniHelp e.V. on request, especially for student organizations.&lt;br /&gt;&lt;br /&gt;The press release can be found at:&lt;br /&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=6340&amp;amp;entry_id=458&quot; title=&quot;http://magdeburg.unihelp.de/blog/orgas/2_UniHelp%20e.V./archives/151&quot;  onmouseover=&quot;window.status=&#039;http://magdeburg.unihelp.de/blog/orgas/2_UniHelp%20e.V./archives/151&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;UniHelp Blogs - Press release&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Further information can be found at:&lt;br /&gt;- Homepage of the framework: &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=6339&amp;amp;entry_id=458&quot; title=&quot;http://www.xpyrus.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.xpyrus.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;http://www.xpyrus.org&lt;/a&gt;&lt;br /&gt;- Reference application: &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=6341&amp;amp;entry_id=458&quot; title=&quot;http://magdeburg.unihelp.de/&quot;  onmouseover=&quot;window.status=&#039;http://magdeburg.unihelp.de/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;http://magdeburg.unihelp.de&lt;/a&gt;&lt;br /&gt;- Homepage of the publisher: &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=6342&amp;amp;entry_id=458&quot; title=&quot;http://magdeburg.unihelp.de/imprint&quot;  onmouseover=&quot;window.status=&#039;http://magdeburg.unihelp.de/imprint&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;http://magdeburg.unihelp.de/imprint&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 09 Oct 2008 23:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/458-guid.html</guid>
    <category>Magdeburg</category>
<category>PHP</category>
<category>PostgreSQL</category>
<category>UniHelp e.V.</category>
<category>Verein</category>
<category>Verlinktes</category>
<category>xPyrus</category>

</item>
<item>
    <title>Manage Serendipity installations with Spartacus</title>
    <link>http://andreas.scherbaum.la/blog/archives/441-Manage-Serendipity-installations-with-Spartacus.html</link>
            <category>PHP</category>
            <category>S9y</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/441-Manage-Serendipity-installations-with-Spartacus.html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=441</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=441</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;p&gt;I have to manage some Serendipity (s9y) installations. Only one of them is my personal blog, the others are customer installations, all on different servers. Apart from new serendipity versions there&#039;s also the problem with updated plugins. How can one know about available updates without opening each blog in a browser window, open administration, select &amp;quot;Configure Plugins&amp;quot; and check for new sidebar and event plugins?&lt;/p&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/archives/441-Manage-Serendipity-installations-with-Spartacus.html#extended&quot;&gt;Continue reading &quot;Manage Serendipity installations with Spartacus&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 13 Sep 2008 17:59:20 +0200</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/441-guid.html</guid>
    <category>PHP</category>
<category>S9y</category>
<category>Serendipity</category>
<category>lazy admin</category>

</item>
<item>
    <title>Stupid open_basedir handling in PHP</title>
    <link>http://andreas.scherbaum.la/blog/archives/358-Stupid-open_basedir-handling-in-PHP.html</link>
            <category>PHP</category>
            <category>Stupid</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/358-Stupid-open_basedir-handling-in-PHP.html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=358</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=358</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;p&gt;I have an application which has to run on different webservers (or to be more specific on servers with a different directory layout). On one server the php files are in /usr/home, the next one is using /www, the third one /var/www and last but not least my laptop has the files in my home directory which is below /home.&lt;/p&gt;&lt;p&gt;No problem - or?&lt;/p&gt;&lt;p&gt;Since we want a bit security, we have open_basedir activated. Now the script has to check if a specific directory exists. I added this directory name to the open_basedir settings on all webservers. But &lt;strong&gt;surprise&lt;/strong&gt; PHP tries to be intelligent. On servers where the specific directory does not exist, PHP removes the directory name from the open_basedir directory list (note: this cost another stat() call on startup).&lt;/p&gt;&lt;p&gt;You imagine what comes next? Now the is_dir() call on this server fails, because of an &amp;quot;open_basedir restriction in effect&amp;quot; error.&lt;/p&gt;&lt;p&gt;&lt;font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;*grrr*&lt;/p&gt;&lt;/font&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 29 Apr 2008 00:15:00 +0200</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/358-guid.html</guid>
    <category>PHP</category>
<category>stupid</category>

</item>
<item>
    <title>BOOLEAN datatype with PHP-compatible output</title>
    <link>http://andreas.scherbaum.la/blog/archives/302-BOOLEAN-datatype-with-PHP-compatible-output.html</link>
            <category>PHP</category>
            <category>PostgreSQL News</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/302-BOOLEAN-datatype-with-PHP-compatible-output.html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=302</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=302</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;p&gt;If you use pure PHP (no database abstraction layer) with PostgreSQL, you may run into the problem that your BOOLEAN columns are not recognized by PHP but the value is instead returned as a string. So any code like:&lt;/p&gt;&lt;p&gt;if (!$boolean)&lt;/p&gt;&lt;p&gt;always returns true because the &#039;t&#039; and &#039;f&#039; are just strings in PHP.&lt;/p&gt;&lt;p&gt;Other programming languages like Perl, Python or Java and even the newer PHP PDO don&#039;t have this problem so it&#039;s clearly a PHP issue ... but i don&#039;t expect this one to be fixed, because this may break a lot existing applications. The column type information is available in the &lt;a title=&quot;Query result information&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=5157&amp;amp;entry_id=302&quot;  onmouseover=&quot;window.status=&#039;http://www.postgresql.org/docs/current/interactive/libpq-exec.html#LIBPQ-EXEC-SELECT-INFO&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;query result information&lt;/a&gt; so normally this should not be a big problem.&lt;/p&gt;&lt;p&gt;How to resolve this problem? There are some possibilities, one simple way would be to just use a SMALLINT instead a BOOLEAN but with the disadvantage that you loose the boolean input values. Another way is to create a new BOOLEAN type and change the output to something PHP-compatible. This new type is binary compatible with the existing BOOLEAN type so casts in either way are not a problem.&lt;/p&gt;&lt;p&gt;Note: i &lt;a title=&quot;pgsql-hackers posting&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=5158&amp;amp;entry_id=302&quot;  onmouseover=&quot;window.status=&#039;http://archives.postgresql.org/pgsql-hackers/2007-12/msg00891.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;asked around&lt;/a&gt;, but it seems, there is no easy solution which does &lt;strong&gt;not&lt;/strong&gt; require updates in the PHP or SQL code. Any workaround like explicit casts to integer are error-prone and you cannot easily find out, because your application will work, but in a wrong way.&lt;/p&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/archives/302-BOOLEAN-datatype-with-PHP-compatible-output.html#extended&quot;&gt;Continue reading &quot;BOOLEAN datatype with PHP-compatible output&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 07 Jan 2008 12:43:31 +0100</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/302-guid.html</guid>
    <category>PHP</category>
<category>PostgreSQL</category>

</item>
<item>
    <title>UBERWACH plugin for serendipity</title>
    <link>http://andreas.scherbaum.la/blog/archives/260-UBERWACH-plugin-for-serendipity.html</link>
            <category>Externes</category>
            <category>PHP</category>
            <category>S9y</category>
            <category>Software</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/260-UBERWACH-plugin-for-serendipity.html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=260</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=260</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;p&gt;Maybe you already noted the small surveillance camera in the menu list on the right side. Hopefully the icon is green, that would be good for you. If it&#039;s red your request comes from an ip-address known for being allocated by a german ministry or political party. Thats nice to know, isn&#039;t it?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;More details about the icon and the project behind can be found at &lt;a target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=4960&amp;amp;entry_id=260&quot; title=&quot;http://www.uberwach.de/&quot;  onmouseover=&quot;window.status=&#039;http://www.uberwach.de/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://www.uberwach.de/&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;If you are running a &lt;a title=&quot;Serendipity blog software&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=4961&amp;amp;entry_id=260&quot;  onmouseover=&quot;window.status=&#039;http://www.s9y.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Serendipity&lt;/a&gt; blog and want to show this icon, i wrote a small plugin. You can get it from: &lt;a title=&quot;Projects page for Andreas Scherbaum&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=4962&amp;amp;entry_id=260&quot;  onmouseover=&quot;window.status=&#039;http://base.wars-nicht.de/projects/serendipity/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://base.wars-nicht.de/projects/serendipity/&lt;/a&gt;. Unpack the zip archive, copy the contained directory into your blog plugin directory and check the &amp;quot;Configure plugins&amp;quot; link in the admin menu. The new plugin should be available in the list for the sidebar plugins. Have fun!&lt;/p&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 04 Nov 2007 16:05:05 +0100</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/260-guid.html</guid>
    <category>PHP</category>
<category>S9y</category>
<category>Serendipity</category>
<category>UBERWACH</category>

</item>
<item>
    <title>PHP and version numbers</title>
    <link>http://andreas.scherbaum.la/blog/archives/70-PHP-and-version-numbers.html</link>
            <category>PHP</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/70-PHP-and-version-numbers.html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=70</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=70</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;I just updated my local mirror of different documentations so i always have docs at hand, even if i&#039;m working offline. So i went to the php.net website and then to the docs. Now try to find out, for which versions documentation is available ...&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;The only vaguely available clue is the date the documentation was built. There is no information, which versions are included and which not. Also no link pointing to older docs, not even for the 5.x releases. You have to use the &amp;quot;one size fits all&amp;quot; archive. Oh, thats really great work ...&lt;/font&gt;&lt;/p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 26 Dec 2006 02:04:48 +0100</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/70-guid.html</guid>
    <category>PHP</category>

</item>
<item>
    <title>Wenn ein Consultant programmiert ...</title>
    <link>http://andreas.scherbaum.la/blog/archives/36-Wenn-ein-Consultant-programmiert-....html</link>
            <category>PHP</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/36-Wenn-ein-Consultant-programmiert-....html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=36</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=36</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;So etwas kommt dabei heraus, wenn ein Consultant sich am programmieren versucht:&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p&gt;----- cut -----&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p /&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;function ValidateLink($link) {&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;...&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;// später:&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$url=call_user_func(&amp;quot;ValidateLink&amp;quot;,$url);&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p&gt;----- cut -----&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;Das man selbstdefinierte Funktionen auch ohne Umwege aufrufen kann, ist bis in diese Ebene noch nicht durchgedrungen, oder? Von solchen Konstrukten fanden sich (neben anderen Abscheulichkeiten) Hunderte Stellen im Code.&lt;/font&gt;&lt;/p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 07 Nov 2006 01:11:11 +0100</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/36-guid.html</guid>
    <category>PHP</category>

</item>
<item>
    <title>PHP und assoziative Arrays</title>
    <link>http://andreas.scherbaum.la/blog/archives/32-PHP-und-assoziative-Arrays.html</link>
            <category>PHP</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/32-PHP-und-assoziative-Arrays.html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=32</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=32</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;Und wieder ein Grund zum Lästern: Es ist ja nicht so, das in PHP ein Array gleich einem Array behandelt wird, zumindest nicht, wenn das Array in der Session gespeichert wird. In diesem Fall muss sich der Key des Arrays an die Vorgaben für Variablennamen halten ... ansonsten wird das Array kommentarlos gelöscht, sobald das Script abgearbeitet ist. Wohlgemerkt, zur Laufzeit kann man auf jeden beliebigen Key zugreifen, die Daten werden erst beim Speichern gelöscht.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;Warum? Eine weitere Krankheit aus der Zeit, als beliebige Daten noch global in den Namensraum eingeblendet wurden.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;Es ist wohl an der Zeit, damit mal aufzuräumen oder das ganze zumindest konfigurierbar zu gestalten.&lt;/font&gt;&lt;/p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 15 Oct 2006 11:15:10 +0200</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/32-guid.html</guid>
    <category>PHP</category>

</item>
<item>
    <title>Rasmus Lerdorf is praising PHP ...</title>
    <link>http://andreas.scherbaum.la/blog/archives/26-Rasmus-Lerdorf-is-praising-PHP-....html</link>
            <category>PHP</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/26-Rasmus-Lerdorf-is-praising-PHP-....html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=26</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=26</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Rasmus Lerdorf, the creator of PHP, tells us (&lt;a title=&quot;Rasmus Lerdorf at php|works&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=81&amp;amp;entry_id=26&quot;  onmouseover=&quot;window.status=&#039;http://www.internetnews.com/dev-news/article.php/3631831&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;here&lt;/span&gt;&lt;/a&gt;), that the web is broken and &amp;quot;we&amp;quot; had damaged it. But there would be PHP, which can fix all the issues. Ok, let&#039;s see, what Rasmus has to tell us.&lt;/font&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&amp;quot;You don&#039;t know that you have to filter user input&amp;quot; ... ohm, which programming language was it, who made the user input from web available in the global namespace without further action? Which programming language was it, who triggered myriads of bugs in any kind of webapplication because of this &amp;quot;feature&amp;quot; in the past, the present and even in the &lt;a title=&quot;security hole in mambo through register_globals is off&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=82&amp;amp;entry_id=26&quot;  onmouseover=&quot;window.status=&#039;http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2005-11/0535.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;future &lt;/a&gt;although the register_globals option is disabled in recent php versions? It is clear, that no beginner knows about filtering of user input, if PHP makes any input available without further checking.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&amp;quot;The Web is pretty much broken, we can all go home now&amp;quot; ... oh, and who broke the web? Which programming language cannot accept points in variable names in the web input and instead does rewrite every point to a underscore? No way and no intention to fix such a horrible behaviour in current releases. Look &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=83&amp;amp;entry_id=26&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/manual/en/language.variables.external.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot; title=&quot;Points and underscores in variable names&quot;&gt;here&lt;/a&gt; for more details, the part about &amp;quot;Dots in incoming variable names&amp;quot;. Surely this happened because of the ugly register_globals &amp;quot;feature&amp;quot;, but variables like $_REQUEST are a good place to hold the original input name.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&amp;quot;PHP5 includes all manner of functionality to help developers filter requests, to&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;help prevent the broken Web.&amp;quot; ... so it took 5 major releases and 11 years to create a software with adequate functionality? Beside this, the documentation part about &amp;quot;&lt;a title=&quot;User Submitted Data in PHP&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=84&amp;amp;entry_id=26&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/manual/en/security.variables.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;User Submitted Data&lt;/a&gt;&amp;quot; in the security section does ask you (the developer) 5 questions about the security of your program, but there is no further explanation, how PHP may help you to secure your application. No links, almost no comments, nothing. You have to go and learn the answers somewhere else.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&amp;quot;If you can fit your problem into what MySQL can handle it&#039;s very fast,&amp;quot; Lerdorf said. &amp;quot;You can gain quite a bit of performance.&amp;quot; ... of course, if i need a filesystem with a more structured access method than fopen/fread/fwrite/fclose, Mysql comes into my mind. If i need a real SQL database which stores my critical business data, than a standard Mysql is not an answer. If Rasmus talks about performance, he surely does not mean performance and integrity of your data. Or could you tell my, why PHP does &lt;a title=&quot;PHP does not support transactions&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=85&amp;amp;entry_id=26&quot;  onmouseover=&quot;window.status=&#039;http://andreas.scherbaum.la/blog/archives/22-PHP-does-not-need-Transactions.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;not even support transactions&lt;/a&gt; in the feature-rich set of database functions?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;If you switch from the standard (My)Isam tables to tables with transactions (like Innodb) to gain some safety for your data, then your performance advantage is gone and the timing results are comparable with the Postgresql database which is blamed here by Rasmus. But of course, full &lt;a title=&quot;ACID&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=86&amp;amp;entry_id=26&quot;  onmouseover=&quot;window.status=&#039;http://en.wikipedia.org/wiki/ACID&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ACID&lt;/a&gt; support is available in the latter.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;I could continue speaking about the problems PHP brought to the web, the security holes PHP brought to the average developer and administrator, the uneloquent approaches PHP brought with quick and dirty solutions and the excuses Rasmus brought to defend real problems out there, but the list could run almost endless.&lt;/font&gt;&lt;/p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 15 Sep 2006 20:58:19 +0200</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/26-guid.html</guid>
    <category>PHP</category>

</item>
<item>
    <title>PHP does not need Transactions</title>
    <link>http://andreas.scherbaum.la/blog/archives/22-PHP-does-not-need-Transactions.html</link>
            <category>PHP</category>
    
    <comments>http://andreas.scherbaum.la/blog/archives/22-PHP-does-not-need-Transactions.html#comments</comments>
    <wfw:comment>http://andreas.scherbaum.la/blog/wfwcomment.php?cid=22</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://andreas.scherbaum.la/blog/rss.php?version=2.0&amp;type=comments&amp;cid=22</wfw:commentRss>
    

    <author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas &#039;ads&#039; Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas &#039;ads&#039; Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;break&quot;&gt;
&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;Just stumbled about a curiosity: there are 82 functions in the current &lt;a title=&quot;PHP documentation for PostgreSQL&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=68&amp;amp;entry_id=22&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/manual/en/ref.pgsql.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PostgreSQL&lt;/a&gt; part of &lt;a title=&quot;PHP: Hypertext Preprocessor&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=69&amp;amp;entry_id=22&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP&lt;/a&gt;. Functions like &lt;a title=&quot;pg_select()&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=70&amp;amp;entry_id=22&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/manual/en/function.pg-select.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pg_select()&lt;/a&gt;, which takes from you the burden of writing a &amp;quot;SELECT ... FROM tablename&amp;quot; or &lt;a title=&quot;pg_delete()&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=71&amp;amp;entry_id=22&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/manual/en/function.pg-delete.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pg_delete&lt;/a&gt;(), &lt;a title=&quot;pg_insert()&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=72&amp;amp;entry_id=22&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/manual/en/function.pg-insert.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pg_insert()&lt;/a&gt; and &lt;a title=&quot;pg_update()&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=73&amp;amp;entry_id=22&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/manual/en/function.pg-update.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pg_update()&lt;/a&gt; which all does, what do you expect: select, delete, insert or update and make the error checking. There are even 7 different functions for getting your results back into PHP.&lt;/font&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;But there is no function for starting, committing or rolling back a &lt;a title=&quot;Transactions in a database&quot; target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=74&amp;amp;entry_id=22&quot;  onmouseover=&quot;window.status=&#039;http://en.wikipedia.org/wiki/Database_transaction&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;transaction&lt;/a&gt;. It seems, the message about the usefulness of transaction has yet not reached the PHP developers. Not that i&#039;m surprised, the standard PHP/MySQL user seems to have no need for transactions ...&lt;/font&gt;&lt;/p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 10 Sep 2006 19:15:06 +0200</pubDate>
    <guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/22-guid.html</guid>
    <category>Bugs</category>
<category>MySQL</category>
<category>PHP</category>
<category>PostgreSQL</category>
<category>Transactions</category>
<category>Transaktionen</category>

</item>

</channel>
</rss>
