<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2" -->
<rss version="2.0">
    <channel>
        <title>Lowyat.NET: Latest topics by Diligent Sloth</title>
        <description></description>
        <link>http://forum.lowyat.net/</link>
        <lastBuildDate>Sun, 28 Jun 2026 20:05:11 +0800</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <item>
            <title>RSS Feeds</title>
            <link>http://forum.lowyat.net/topic/460067</link>
            <description>Perhaps beside the post number, can include the name of poster and time.&lt;br /&gt;&lt;br /&gt;I&amp;#39;m using this to keep track of my posts and well, I don&amp;#39;t really remember if its 550 or 551 or 549 since I last checked &lt;!--emo&amp;:P--&gt;&lt;img src='http://static.lowyat.net/style_emoticons/default/tongue.gif' border='0' style='vertical-align:middle' alt='tongue.gif' /&gt;&lt;!--endemo--&gt;</description>
            <author>Diligent Sloth</author>
            <category>Feedback and Helpdesk</category>
            <pubDate>Mon, 21 May 2007 03:09:40 +0800</pubDate>
        </item>
        <item>
            <title>VPN Services</title>
            <link>http://forum.lowyat.net/topic/453320</link>
            <description>As some of your probably know, I run a small VPN service here in Lowyat but I do have plans to expand outwards.  However as a single person with only so much resources and time, I can do only do so much, so now I&amp;#39;m looking for someone who shares the vision of launching a VPN service that can rival secureix.com.&lt;br /&gt;&lt;br /&gt;Preferably, I&amp;#39;d like someone with at least some technical knowledge, I&amp;#39;m prepared to teach how to setup servers, mantainence etc, but note that this is I am &lt;b&gt;not&lt;/b&gt; a job provider.  I&amp;#39;d like to go for 50/50 sharing or something around those lines.   Also, I&amp;#39;d prefer someone who&amp;#39;s dedicated towards this, not just &amp;#39;I try for awhile lah&amp;#39; kind of attitude.&lt;br /&gt;&lt;br /&gt;There are quite a number of improvements on my current VPN that I will like to implement but I won&amp;#39;t mention them here for fear of &amp;#39;spies&amp;#39;. &lt;br /&gt;&lt;br /&gt;Interested parties may contact me via&lt;br /&gt;&lt;b&gt;PM&lt;br /&gt;MSN: darrell@joycedarrell.com &lt;br /&gt;Email: dsvpns@gmail.com&lt;br /&gt;Handphone: 0168687880&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;</description>
            <author>Diligent Sloth</author>
            <category>Finance, Business and Investment House</category>
            <pubDate>Mon, 07 May 2007 16:02:06 +0800</pubDate>
        </item>
        <item>
            <title>Could we have a swf tag?</title>
            <link>http://forum.lowyat.net/topic/448368</link>
            <description>As per topic, we have IMG / Youtube tag, could we have a SWF tag as well?</description>
            <author>Diligent Sloth</author>
            <category>Feedback and Helpdesk</category>
            <pubDate>Thu, 26 Apr 2007 23:06:30 +0800</pubDate>
        </item>
        <item>
            <title>HtPasswd class</title>
            <link>http://forum.lowyat.net/topic/445374</link>
            <description>Need this to work with some htpasswd files, was too lazy to do any &amp;#39;real&amp;#39; protection so here it is&lt;br /&gt;&lt;br /&gt;htpasswd.class.php&lt;br /&gt;&lt;!--c1--&gt;&lt;div class='codetop'&gt;CODE&lt;/div&gt;&lt;div class='codemain'&gt;&lt;!--ec1--&gt;&lt;br /&gt;&lt;br /&gt;class htpasswd{&lt;br /&gt; &amp;nbsp; public &amp;#036;users;&lt;br /&gt; &amp;nbsp; public &amp;#036;error;&lt;br /&gt; &amp;nbsp; private &amp;#036;_path; &amp;nbsp; &lt;br /&gt;&lt;br /&gt; &amp;nbsp; function htpasswd&amp;#40;&amp;#036;file=false&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;&amp;#33;&amp;#036;file&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; die&amp;#40;&amp;#39;Please specify a file&amp;#33;&amp;#39;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}else{ &amp;nbsp; &lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //configure&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;this-&amp;#62;_path = &amp;#036;file;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;this-&amp;#62;users = &amp;#39;&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //load database&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if&amp;#40;file_exists&amp;#40;&amp;#036;file&amp;#41;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;data = array&amp;#40;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;fcontents = file&amp;#40;&amp;#036;file&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while&amp;#40;list&amp;#40;&amp;#036;line_num, &amp;#036;line&amp;#41; = each&amp;#40;&amp;#036;fcontents&amp;#41;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;user = explode&amp;#40;&amp;#39;&amp;#58;&amp;#39;,&amp;#036;line&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //&amp;#036;user = &amp;#036;arraydata&amp;#91;0&amp;#93;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;data&amp;#91;&amp;#036;user&amp;#91;0&amp;#93;&amp;#93; = rtrim&amp;#40;&amp;#036;user&amp;#91;1&amp;#93;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;this-&amp;#62;users = &amp;#036;data;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; }&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt; &amp;nbsp; function create&amp;#40;&amp;#036;user, &amp;#036;passwd, &amp;#036;update=false&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;this-&amp;#62;error = &amp;#39;&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;isset&amp;#40;&amp;#036;this-&amp;#62;users&amp;#91;&amp;#036;user&amp;#93;&amp;#41; &amp;amp;&amp;amp; &amp;#33;&amp;#036;update&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;this-&amp;#62;error = &amp;#39;User &amp;#60;strong&amp;#62;&amp;#39;.&amp;#036;user.&amp;#39;&amp;#60;/strong&amp;#62; exists&amp;#33; To update the user set the update parameter to true.&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;this-&amp;#62;users&amp;#91;&amp;#036;user&amp;#93; = &amp;#036;this-&amp;#62;non_salted_sha1&amp;#40;&amp;#036;passwd&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;&lt;br /&gt; &amp;nbsp; }&lt;br /&gt; &amp;nbsp; &lt;br /&gt; &amp;nbsp; function remove&amp;#40;&amp;#036;user&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;this-&amp;#62;error = &amp;#39;&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;isset&amp;#40;&amp;#036;this-&amp;#62;users&amp;#91;&amp;#036;user&amp;#93;&amp;#41;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unset&amp;#40;&amp;#036;this-&amp;#62;users&amp;#91;&amp;#036;user&amp;#93;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}else{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;this-&amp;#62;error = &amp;#39;User &amp;#60;strong&amp;#62;&amp;#39;.&amp;#036;user.&amp;#39;&amp;#60;/strong&amp;#62; does not exist&amp;#33;&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; }&lt;br /&gt; &amp;nbsp; &lt;br /&gt; &amp;nbsp; function users&amp;#40;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;this-&amp;#62;error = &amp;#39;&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;rval = Array&amp;#40;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;is_array&amp;#40;&amp;#036;this-&amp;#62;users&amp;#41;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach&amp;#40;array_keys&amp;#40;&amp;#036;this-&amp;#62;users&amp;#41; as &amp;#036;uid&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;rval&amp;#91;count&amp;#40;&amp;#036;rval&amp;#41;&amp;#93; = &amp;#036;uid;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;#036;rval;&lt;br /&gt; &amp;nbsp; }&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt; &amp;nbsp; function validate&amp;#40;&amp;#036;user, &amp;#036;pass&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;this-&amp;#62;error = &amp;#39;&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;&amp;#33;isset&amp;#40;&amp;#036;this-&amp;#62;users&amp;#91;&amp;#036;user&amp;#93;&amp;#41;&amp;#41; return False;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;crypted = &amp;#036;this-&amp;#62;users&amp;#91;&amp;#036;user&amp;#93;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;substr&amp;#40;&amp;#036;crypted, 0, 6&amp;#41; == &amp;#34;{SSHA}&amp;#34;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;ohash = base64_decode&amp;#40;substr&amp;#40;&amp;#036;crypted, 6&amp;#41;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return substr&amp;#40;&amp;#036;ohash, 0, 20&amp;#41; == pack&amp;#40;&amp;#34;H*&amp;#34;, sha1&amp;#40;&amp;#036;pass . substr&amp;#40;&amp;#036;ohash, 20&amp;#41;&amp;#41;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}elseif&amp;#40;substr&amp;#40;&amp;#036;crypted, 0, 5&amp;#41; == &amp;#34;{SHA}&amp;#34;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;#40;&amp;#036;this-&amp;#62;non_salted_sha1&amp;#40;&amp;#036;pass&amp;#41; == &amp;#036;crypted&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}else{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;#40;&amp;#036;pass == &amp;#036;crypted&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt; &amp;nbsp; function save&amp;#40;&amp;#036;file=false&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;fcontents = &amp;#34;&amp;#34;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;&amp;#036;file == false&amp;#41; &amp;#036;file = &amp;#036;this-&amp;#62;_path;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach&amp;#40;array_keys&amp;#40;&amp;#036;this-&amp;#62;users&amp;#41; as &amp;#036;user&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;fcontents .= &amp;#036;user.&amp;#34;&amp;#58;&amp;#34;.&amp;#036;this-&amp;#62;users&amp;#91;&amp;#036;user&amp;#93;.&amp;#34;&amp;#092;n&amp;#34;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;file_put_contents&amp;#40;&amp;#036;file, &amp;#036;fcontents&amp;#41;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;this-&amp;#62;error = &amp;#39;&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}else{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;this-&amp;#62;error = &amp;#39;Couln&amp;#092;&amp;#39;t save the file&amp;#33;&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; } &amp;nbsp; &lt;br /&gt;&lt;br /&gt; &amp;nbsp; //encryption functions&lt;br /&gt; &amp;nbsp; function rand_salt_crypt&amp;#40;&amp;#036;pass&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;salt = &amp;#34;&amp;#34;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;mt_srand&amp;#40;&amp;#40;double&amp;#41;microtime&amp;#40;&amp;#41;*1000000&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;for &amp;#40;&amp;#036;i=0; &amp;#036;i&amp;#60;CRYPT_SALT_LENGTH; &amp;#036;i++&amp;#41;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;salt .= substr&amp;#40;&amp;#34;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./&amp;#34;, mt_rand&amp;#40;&amp;#41; &amp;amp; 63, 1&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;#34;&amp;#036;apr1&amp;#036;&amp;#34;.crypt&amp;#40;&amp;#036;pass, &amp;#036;salt&amp;#41;;&lt;br /&gt; &amp;nbsp; }&lt;br /&gt; &amp;nbsp; &lt;br /&gt; &amp;nbsp; function rand_salt_sha1&amp;#40;&amp;#036;pass&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;mt_srand&amp;#40;&amp;#40;double&amp;#41;microtime&amp;#40;&amp;#41;*1000000&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;salt = pack&amp;#40;&amp;#34;CCCC&amp;#34;, mt_rand&amp;#40;&amp;#41;, mt_rand&amp;#40;&amp;#41;, mt_rand&amp;#40;&amp;#41;, mt_rand&amp;#40;&amp;#41;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;#34;{SSHA}&amp;#34;.base64_encode&amp;#40;pack&amp;#40;&amp;#34;H*&amp;#34;, sha1&amp;#40;&amp;#036;pass . &amp;#036;salt&amp;#41;&amp;#41; . &amp;#036;salt&amp;#41;;&lt;br /&gt; &amp;nbsp; }&lt;br /&gt; &amp;nbsp; &lt;br /&gt; &amp;nbsp; function non_salted_sha1&amp;#40;&amp;#036;pass&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;#34;{SHA}&amp;#34;.base64_encode&amp;#40;pack&amp;#40;&amp;#34;H*&amp;#34;, sha1&amp;#40;&amp;#036;pass&amp;#41;&amp;#41;&amp;#41;;&lt;br /&gt; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//php4 work around&lt;br /&gt;if&amp;#40;&amp;#33;function_exists&amp;#40;&amp;#39;file_put_contents&amp;#39;&amp;#41;&amp;#41;{&lt;br /&gt; &amp;nbsp; function file_put_contents&amp;#40;&amp;#036;filename, &amp;#036;content, &amp;#036;flags = null, &amp;#036;resource_context = null&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;is_array&amp;#40;&amp;#036;content&amp;#41;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;content = implode&amp;#40;&amp;#39;&amp;#39;, &amp;#036;content&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;&amp;#33;is_scalar&amp;#40;&amp;#036;content&amp;#41;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; trigger_error&amp;#40;&amp;#39;file_put_contents&amp;#40;&amp;#41; The 2nd parameter should be either a string or an array&amp;#39;, E_USER_WARNING&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;length = strlen&amp;#40;&amp;#036;content&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;mode = &amp;#40;&amp;#036;flags &amp;amp;FILE_APPEND&amp;#41; ? &amp;#39;a&amp;#39; &amp;#58; &amp;#39;w&amp;#39;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;use_inc_path = &amp;#40;&amp;#036;flags &amp;amp;FILE_USE_INCLUDE_PATH&amp;#41; ? true &amp;#58; false;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;&amp;#40;&amp;#036;fh = @fopen&amp;#40;&amp;#036;filename, &amp;#036;mode, &amp;#036;use_inc_path&amp;#41;&amp;#41; === false&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; trigger_error&amp;#40;&amp;#39;file_put_contents&amp;#40;&amp;#41; failed to open stream&amp;#58; Permission denied&amp;#39;, E_USER_WARNING&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#036;bytes = 0;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;&amp;#40;&amp;#036;bytes = @fwrite&amp;#40;&amp;#036;fh, &amp;#036;content&amp;#41;&amp;#41; === false&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;errormsg = sprintf&amp;#40;&amp;#39;file_put_contents&amp;#40;&amp;#41; Failed to write %d bytes to %s&amp;#39;,&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;length,&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;filename&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; trigger_error&amp;#40;&amp;#036;errormsg, E_USER_WARNING&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;@fclose&amp;#40;&amp;#036;fh&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;#40;&amp;#036;bytes &amp;#33;= &amp;#036;length&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;errormsg = sprintf&amp;#40;&amp;#39;file_put_contents&amp;#40;&amp;#41; Only %d of %d bytes written, possibly out of free disk space.&amp;#39;,&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;bytes,&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#036;length&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; trigger_error&amp;#40;&amp;#036;errormsg, E_USER_WARNING&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;#036;bytes;&lt;br /&gt; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;?&amp;#62;&lt;br /&gt;&lt;!--c2--&gt;&lt;/div&gt;&lt;!--ec2--&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;!--c1--&gt;&lt;div class='codetop'&gt;CODE&lt;/div&gt;&lt;div class='codemain'&gt;&lt;!--ec1--&gt;&lt;br /&gt;require&amp;#40;&amp;#39;htpasswd.class.php&amp;#39;&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;#036;htpwm= new htpasswd&amp;#40;&amp;#39;.htpasswd&amp;#39;&amp;#41;;&lt;br /&gt;&amp;#036;htpwm-&amp;#62;create&amp;#40;&amp;#39;test&amp;#39;, &amp;#39;pass&amp;#39;&amp;#41;;&lt;br /&gt;&amp;#036;htpwm-&amp;#62;save&amp;#40;&amp;#41;;&lt;br /&gt;&lt;br /&gt;//Create User&amp;#58;&lt;br /&gt;&amp;#036;htpwm-&amp;#62;create&amp;#40;&amp;#34;user&amp;#34;, &amp;#34;pass&amp;#34;&amp;#41;;&lt;br /&gt;&amp;#036;htpwm-&amp;#62;save&amp;#40;&amp;#41;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Update User&amp;#58;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#036;htpwm = new htpasswd&amp;#40;./.htpasswd&amp;#41;;&lt;br /&gt;&amp;#036;htpwm-&amp;#62;remove&amp;#40;&amp;#39;user&amp;#39;&amp;#41;;&lt;br /&gt;&amp;#036;htpwm-&amp;#62;create&amp;#40;&amp;#39;new_user&amp;#39;, &amp;#39;password&amp;#39;&amp;#41;;&lt;br /&gt;&amp;#036;htpwm-&amp;#62;save&amp;#40;&amp;#41;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Validate User&amp;#58;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#036;htpwm = new htpasswd&amp;#40;./.htpasswd&amp;#41;;&lt;br /&gt;if&amp;#40;&amp;#036;htpwm-&amp;#62;validate&amp;#40;&amp;#39;user&amp;#39;, &amp;#39;pass&amp;#39;&amp;#41;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; echo &amp;#39;Welcome&amp;#39;;&lt;br /&gt;}else{&lt;br /&gt; &amp;nbsp; &amp;nbsp; echo &amp;#39;Get Lost&amp;#39;;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Functions&amp;#58;&lt;br /&gt;create&amp;#40;&amp;#39;MyUser&amp;#39;, &amp;#39;Pass&amp;#39;&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#58; create MyUser with password Pass. &amp;#40;true/false&amp;#41;&lt;br /&gt;remove&amp;#40;&amp;#39;MyUser&amp;#39;&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#58; remove MyUser. &amp;#40;true/false&amp;#41;&lt;br /&gt;validate&amp;#40;&amp;#39;MyUser&amp;#39;, &amp;#39;Pass&amp;#39;&amp;#41; &amp;nbsp; &amp;nbsp;&amp;#58; will validate the user. &amp;#40;true/false&amp;#41;&lt;br /&gt;users&amp;#40;&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#58; return and array with the usernames.&lt;br /&gt;save&amp;#40;&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;#58; save the password file. &amp;#40;true/false&amp;#41;&lt;br /&gt;save&amp;#40;&amp;#39;/server/www/.htpasswd&amp;#39;&amp;#41; &amp;#58; save the password file to /server/www/.htpasswd. &amp;#40;true/false&amp;#41;&lt;br /&gt;&lt;br /&gt;Error Handling&amp;#58;&lt;br /&gt;when a function returns false you can get more information via&lt;br /&gt;echo &amp;#036;pwmanager-&amp;#62;error;&lt;br /&gt;*/&lt;br /&gt;&lt;!--c2--&gt;&lt;/div&gt;&lt;!--ec2--&gt;</description>
            <author>Diligent Sloth</author>
            <category>Codemasters</category>
            <pubDate>Sat, 21 Apr 2007 00:19:12 +0800</pubDate>
        </item>
        <item>
            <title>Opening a company Sdn Bhd</title>
            <link>http://forum.lowyat.net/topic/438517</link>
            <description>Hi, I&amp;#39;d like to know if anyone here has any experience setting up a sdn berhad and/or partnership.  &lt;br /&gt;&lt;br /&gt;What are the procedures / cost involved, any help given would be very much appreciated.</description>
            <author>Diligent Sloth</author>
            <category>Finance, Business and Investment House</category>
            <pubDate>Sat, 07 Apr 2007 17:29:28 +0800</pubDate>
        </item>
        <item>
            <title>My weirdest customer ever</title>
            <link>http://forum.lowyat.net/topic/422652</link>
            <description>Took me quite some time to understand what he meant&lt;br /&gt;&lt;!--c1--&gt;&lt;div class='codetop'&gt;CODE&lt;/div&gt;&lt;div class='codemain'&gt;&lt;!--ec1--&gt;&lt;br /&gt;&amp;#40;2&amp;#58;19 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; hi &lt;br /&gt;&amp;#40;2&amp;#58;19 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; this is &lt;br /&gt;&amp;#40;2&amp;#58;19 PM&amp;#41; Private&amp;#58; HEy &lt;br /&gt;&amp;#40;2&amp;#58;19 PM&amp;#41; Private&amp;#58; i want VPN use &lt;br /&gt;&amp;#40;2&amp;#58;19 PM&amp;#41; Private&amp;#58; pls &lt;br /&gt;&amp;#40;2&amp;#58;20 PM&amp;#41; Private&amp;#58; becouse i want to download torrents &lt;br /&gt;&amp;#40;2&amp;#58;20 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; no more free trials available tho &lt;br /&gt;&amp;#40;2&amp;#58;20 PM&amp;#41; Private&amp;#58; i have post lowyat why u not pm &lt;br /&gt;&amp;#40;2&amp;#58;21 PM&amp;#41; Private&amp;#58; i want that &lt;br /&gt;&amp;#40;2&amp;#58;21 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; which package would you like &lt;br /&gt;&amp;#40;2&amp;#58;21 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; 3 or 30 days &lt;br /&gt;&amp;#40;2&amp;#58;21 PM&amp;#41; Private&amp;#58; i not Pay &lt;br /&gt;&amp;#40;2&amp;#58;21 PM&amp;#41; Private&amp;#58; i dont paymeny &lt;br /&gt;&amp;#40;2&amp;#58;22 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; Oh.. &lt;br /&gt;&amp;#40;2&amp;#58;22 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; no more free accounts &lt;br /&gt;&amp;#40;2&amp;#58;22 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; sorry &lt;br /&gt;&amp;#40;2&amp;#58;22 PM&amp;#41; Private&amp;#58; &amp;nbsp;&lt;br /&gt;&amp;#40;2&amp;#58;22 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; free trial users all given out quite early already &lt;br /&gt;&amp;#40;2&amp;#58;22 PM&amp;#41; Private&amp;#58; Why &amp;nbsp;&lt;br /&gt;&amp;#40;2&amp;#58;23 PM&amp;#41; Private&amp;#58; i want pls 5hours left free i want testing &lt;br /&gt;&amp;#40;2&amp;#58;23 PM&amp;#41; Private&amp;#58; 1 account &lt;br /&gt;&amp;#40;2&amp;#58;24 PM&amp;#41; Private&amp;#58; Just 5 hours free account &lt;br /&gt;&amp;#40;2&amp;#58;24 PM&amp;#41; Private&amp;#58; Tmnut streamyx &lt;br /&gt;&amp;#40;2&amp;#58;24 PM&amp;#41; Private&amp;#58; i download speed now 4kb/sec &lt;br /&gt;&amp;#40;2&amp;#58;25 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; Sorry &lt;br /&gt;&amp;#40;2&amp;#58;25 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; can&amp;#39;t help you le bro &lt;br /&gt;&amp;#40;2&amp;#58;26 PM&amp;#41; Private&amp;#58; I need payment &lt;br /&gt;&amp;#40;2&amp;#58;26 PM&amp;#41; Private&amp;#58; Duit Rugi &lt;br /&gt;&amp;#40;2&amp;#58;27 PM&amp;#41; Private&amp;#58; streamyx rm88 vpn RM30 total = 118 wow weste mony &lt;br /&gt;&amp;#40;2&amp;#58;28 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; &amp;nbsp;&lt;br /&gt;&amp;#40;2&amp;#58;29 PM&amp;#41; Private&amp;#58; i need payment VPN ? &lt;br /&gt;&amp;#40;2&amp;#58;30 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; Yes you need to pay for it &lt;br /&gt;&amp;#40;2&amp;#58;30 PM&amp;#41; Private&amp;#58; &amp;nbsp;no mony &lt;br /&gt;&amp;#40;2&amp;#58;30 PM&amp;#41; Private&amp;#58; Duit Rugi &lt;br /&gt;&amp;#40;2&amp;#58;30 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; then don&amp;#39;t use vpn lor &lt;br /&gt;&amp;#40;2&amp;#58;30 PM&amp;#41; Sloth &amp;nbsp;Joyce&amp;#58; It costs money for me to set it up also &lt;br /&gt;&amp;#40;2&amp;#58;30 PM&amp;#41; Private&amp;#58; hmm &lt;br /&gt;&amp;#40;2&amp;#58;31 PM&amp;#41; Private&amp;#58; not free trial &lt;br /&gt;&amp;#40;2&amp;#58;31 PM&amp;#41; Private&amp;#58; &amp;nbsp;&lt;br /&gt;&amp;#40;2&amp;#58;33 PM&amp;#41; Private&amp;#58; ok no problem &lt;br /&gt;&amp;#40;2&amp;#58;33 PM&amp;#41; Private&amp;#58; bye &lt;br /&gt;&lt;br /&gt;&lt;!--c2--&gt;&lt;/div&gt;&lt;!--ec2--&gt;</description>
            <author>Diligent Sloth</author>
            <category>Jokes Heaven</category>
            <pubDate>Tue, 06 Mar 2007 18:44:58 +0800</pubDate>
        </item>
        <item>
            <title>[WTA] Genuine or not</title>
            <link>http://forum.lowyat.net/topic/420996</link>
            <description>Hi, this morning received inquiries from a guy interested in my VPN service and he said he was interested in the 6 month package for RM150.&lt;br /&gt;&lt;br /&gt;I told him to bank in before I would issue his account and he did and sent me the bank in slip.  My m2bu did not register any payment so he said he would cancel his mb2u transfer and send via RHB bank instead.&lt;br /&gt;&lt;br /&gt;My problem now is I don&amp;#39;t know if the slip is valid as I cannot see any transfer in my mb2u account(I have received 3 other payments this morning) and now I am suspecting the RHB transfer confirmation as well.&lt;br /&gt;&lt;br /&gt;Will the seniors of the forum kindly advise me on what to do?</description>
            <author>Diligent Sloth</author>
            <category>Dispute Resolution Corner</category>
            <pubDate>Sat, 03 Mar 2007 14:26:31 +0800</pubDate>
        </item>
        <item>
            <title>New VPN service</title>
            <link>http://forum.lowyat.net/topic/418365</link>
            <description>I&amp;#39;ve got relatively unlimited bandwidth but fairly limited disk space, so I&amp;#39;ll be offering a VPN connection for those interested. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;What I offer&lt;/b&gt;&lt;br /&gt;  - Anonymous access to the internet &lt;br /&gt;  - Encrypted traffic between server and client&lt;br /&gt;  - Option to route certain traffic only through VPN &lt;br /&gt;  - Unthrottled bandwidth (max connections to be considered&lt;br /&gt;  - Stable connection&lt;br /&gt;  - RM 1/day with the payment of 30 days subscription in advance which means RM 30/30 days (minimum).&lt;br /&gt;  - Stable connection&lt;br /&gt;  - Server is hosted in tmnet datacenter making it FAST (less hops compared to most other VPNs)&lt;br /&gt;  - Unmetered transfer (Will not limit you to 100GB a month, download as &lt;b&gt;much&lt;/b&gt; as you like&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='font-size:21pt;line-height:100%'&gt;Currently not accepting new signups&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Current Trial Users&lt;/b&gt;&lt;br /&gt;&lt;!--c1--&gt;&lt;div class='codetop'&gt;CODE&lt;/div&gt;&lt;div class='codemain'&gt;&lt;!--ec1--&gt;mavie21 &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;rockdaman &amp;nbsp; &amp;nbsp; &lt;br /&gt;dex&lt;br /&gt;Irishcoffee&lt;br /&gt;nizamhameed&lt;br /&gt;ramuk&lt;br /&gt;GOD-ZILLA&lt;br /&gt;aBs-&lt;br /&gt;driftmeister &lt;br /&gt;tentris&lt;br /&gt;&lt;!--c2--&gt;&lt;/div&gt;&lt;!--ec2--&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In process of changing to openVPN server, please be patient if your account has yet  to be created.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Any further problems, please don&amp;#39;t hestitate to call me at 0168687880 (available 24/7) or add me on msn, darrell@joycedarrell.com</description>
            <author>Diligent Sloth</author>
            <category>Networks and Broadband</category>
            <pubDate>Mon, 26 Feb 2007 14:34:10 +0800</pubDate>
        </item>
        <item>
            <title>TorrentFlux Server [BT Service]</title>
            <link>http://forum.lowyat.net/topic/418105</link>
            <description>Seems to be some decent feedback for the torrentflux thing so I&amp;#39;m wondering if anyone will actually subscribe for such a service... &lt;br /&gt;&lt;br /&gt;I&amp;#39;ll be offering 3 test accounts for 1 week to get some feedback on how it goes XD... &lt;br /&gt;&lt;br /&gt;&lt;b&gt;This is a BT service similar to torrent2ftp.  I.e. You set the torrent on MY server, and after it finishes downloading, you can download it via HTTP at FULL speed.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The first 3 people to post here AND PM me get an account to play around with..   Be aware that this is a fairly limited service since I only have around 23GB worth of hd space free left..   I&amp;#39;m currently running ONE download as following&lt;br /&gt;&lt;br /&gt;&lt;!--c1--&gt;&lt;div class='codetop'&gt;CODE&lt;/div&gt;&lt;div class='codemain'&gt;&lt;!--ec1--&gt;Current Download&amp;#58; &amp;nbsp;	677.50 kB/s&lt;br /&gt;Current Upload&amp;#58; &amp;nbsp;0.10 kB/s&lt;br /&gt;Free Space&amp;#58; &amp;nbsp;22.21 GB&lt;br /&gt;Server Load&amp;#58; &amp;nbsp;1.97&lt;!--c2--&gt;&lt;/div&gt;&lt;!--ec2--&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='font-size:14pt;line-height:100%'&gt;Temporarily Closed For Mantainence&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some kinks needs to be worked out, for some reason, its taking an excessive amount of bandwidth even though the transfer rate isn&amp;#39;t all that high =/</description>
            <author>Diligent Sloth</author>
            <category>Networks and Broadband</category>
            <pubDate>Sun, 25 Feb 2007 23:58:12 +0800</pubDate>
        </item>
        <item>
            <title>SOCKS server</title>
            <link>http://forum.lowyat.net/topic/413472</link>
            <description>Anyone know of any socks server that is relatively easy to setup and also allows for username specification?</description>
            <author>Diligent Sloth</author>
            <category>Linux &amp;amp; Open Source Software</category>
            <pubDate>Tue, 13 Feb 2007 18:34:35 +0800</pubDate>
        </item>
        <item>
            <title>OpenVPN / Tinc</title>
            <link>http://forum.lowyat.net/topic/413150</link>
            <description>I was wondering if anyone could guide/help me setup one of these on one of my unix boxes as I&amp;#39;d like to share my connection w/o using putty(ssh tunnel)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edit: My bad, was wondering why it didn&amp;#39;t work.  Turns out its a RHEL3 host, which does not have the tun drivers installed, and I can&amp;#39;t recompile the kernel &amp;gt;.&amp;lt; So that&amp;#39;s out for me&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyone have any other similar suggestions that do NOT require tun ?</description>
            <author>Diligent Sloth</author>
            <category>Linux &amp;amp; Open Source Software</category>
            <pubDate>Tue, 13 Feb 2007 03:10:30 +0800</pubDate>
        </item>
        <item>
            <title>Pirate King&amp;#33;</title>
            <link>http://forum.lowyat.net/topic/340370</link>
            <description>Anyone playing this game please post your IGN and job.. &lt;br /&gt;&lt;br /&gt;I&amp;#39;m currrently a lv 20 healer in desperate need of a party &lt;!--emo&amp;:P--&gt;&lt;img src='http://static.lowyat.net/style_emoticons/default/tongue.gif' border='0' style='vertical-align:middle' alt='tongue.gif' /&gt;&lt;!--endemo--&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;List of Players&lt;br /&gt;1. ih8u(herbalist) - lv20</description>
            <author>Diligent Sloth</author>
            <category>Gamers Hideout</category>
            <pubDate>Thu, 14 Sep 2006 08:10:17 +0800</pubDate>
        </item>
        <item>
            <title>dnsprobe[234]: dns query failed</title>
            <link>http://forum.lowyat.net/topic/338597</link>
            <description>only lately been getting this message, wondering if any other forumers are getting this message also</description>
            <author>Diligent Sloth</author>
            <category>Networks and Broadband</category>
            <pubDate>Sun, 10 Sep 2006 12:29:23 +0800</pubDate>
        </item>
        <item>
            <title>Winamp</title>
            <link>http://forum.lowyat.net/topic/338596</link>
            <description>Anyone else have this problem? &lt;br /&gt;&lt;br /&gt;I load winamp even if idle will take 50% CPU util, and won&amp;#39;t terminate from memory when i click the &amp;#39;x&amp;#39; to close it.&lt;br /&gt;&lt;br /&gt;I&amp;#39;m now using WMP so its not a HUGE issue but it is ANNOYING &lt;!--emo&amp;:)--&gt;&lt;img src='http://static.lowyat.net/style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /&gt;&lt;!--endemo--&gt;</description>
            <author>Diligent Sloth</author>
            <category>Technical Support</category>
            <pubDate>Sun, 10 Sep 2006 12:26:55 +0800</pubDate>
        </item>
        <item>
            <title>Securing GET requests</title>
            <link>http://forum.lowyat.net/topic/333408</link>
            <description>&lt;!--c1--&gt;&lt;div class='codetop'&gt;CODE&lt;/div&gt;&lt;div class='codemain'&gt;&lt;!--ec1--&gt;&amp;#60;?&lt;br /&gt;&lt;br /&gt;class secureURL&lt;br /&gt;{&lt;br /&gt;	var &amp;#036;gz;&lt;br /&gt;	var &amp;#036;password;&lt;br /&gt;	var &amp;#036;filter;&lt;br /&gt;	var &amp;#036;params;&lt;br /&gt;	function initialize&amp;#40;&amp;#036;password,&amp;#036;filter=null,&amp;#036;params=null,&amp;#036;gz=false,&amp;#036;auto_global=null&amp;#41;&lt;br /&gt;	{&lt;br /&gt; &amp;nbsp;global &amp;#036;secureURL;&lt;br /&gt; &amp;nbsp;&amp;#036;secureURL = new secureURL&amp;#40;&amp;#41;;&lt;br /&gt; &amp;nbsp;if &amp;#40;&amp;#036;filter &amp;#33;== null&amp;#41;&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp;	if &amp;#40;&amp;#33;is_array&amp;#40;&amp;#036;filter&amp;#41;&amp;#41; &amp;#036;filter = array&amp;#40;&amp;#036;filter&amp;#41;;&lt;br /&gt; &amp;nbsp;	foreach &amp;#40;&amp;#036;filter as &amp;#036;key =&amp;#62; &amp;#036;var&amp;#41;&lt;br /&gt; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp;&amp;#036;filter&amp;#91;&amp;#036;key&amp;#93; = strtolower&amp;#40;&amp;#036;var&amp;#41;;&lt;br /&gt; &amp;nbsp;	}&lt;br /&gt; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;if &amp;#40;&amp;#33;is_array&amp;#40;&amp;#036;params&amp;#41;&amp;#41; &amp;#036;params = array&amp;#40;&amp;#41;;&lt;br /&gt; &amp;nbsp;&amp;#036;secureURL-&amp;#62;gz = &amp;#036;gz;&lt;br /&gt; &amp;nbsp;&amp;#036;secureURL-&amp;#62;password = &amp;#036;password;&lt;br /&gt; &amp;nbsp;&amp;#036;secureURL-&amp;#62;params = &amp;#036;params;&lt;br /&gt; &amp;nbsp;&amp;#036;secureURL-&amp;#62;filter = &amp;#036;filter;&lt;br /&gt; &amp;nbsp;ob_start&amp;#40;&amp;#39;secureURL_output&amp;#39;&amp;#41;;&lt;br /&gt; &amp;nbsp;if &amp;#40;@&amp;#036;_GET&amp;#91;&amp;#39;crypt&amp;#39;&amp;#93; &amp;amp;&amp;amp; @&amp;#036;_GET&amp;#91;&amp;#39;hash&amp;#39;&amp;#93;&amp;#41;&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp;	&amp;#036;_GET&amp;#91;&amp;#39;crypt&amp;#39;&amp;#93; = secureURL&amp;#58;&amp;#58;decrypt&amp;#40;&amp;#036;_GET&amp;#91;&amp;#39;crypt&amp;#39;&amp;#93;&amp;#41;;&lt;br /&gt; &amp;nbsp;	if &amp;#40;secureURL&amp;#58;&amp;#58;hash&amp;#40;&amp;#036;_GET&amp;#91;&amp;#39;crypt&amp;#39;&amp;#93;&amp;#41; &amp;#33;= @&amp;#036;_GET&amp;#91;&amp;#39;hash&amp;#39;&amp;#93;&amp;#41;&lt;br /&gt; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp;&amp;#036;_GET = array&amp;#40;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp;return;&lt;br /&gt; &amp;nbsp;	}&lt;br /&gt; &amp;nbsp;	&amp;#036;_GET&amp;#91;&amp;#39;crypt&amp;#39;&amp;#93; = html_entity_decode&amp;#40;&amp;#036;_GET&amp;#91;&amp;#39;crypt&amp;#39;&amp;#93; , ENT_QUOTES&amp;#41;;&lt;br /&gt; &amp;nbsp;	parse_str&amp;#40;&amp;#036;_GET&amp;#91;&amp;#39;crypt&amp;#39;&amp;#93; , &amp;#036;_GET&amp;#41;;&lt;br /&gt; &amp;nbsp;	if &amp;#40;&amp;#036;auto_global === null&amp;#41; &amp;#036;auto_global = &amp;#40;ini_get&amp;#40;&amp;#34;register_globals&amp;#34;&amp;#41;&amp;#41;;&lt;br /&gt; &amp;nbsp;	if &amp;#40;&amp;#036;auto_global&amp;#41;&lt;br /&gt; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp;foreach &amp;#40;&amp;#036;_GET as &amp;#036;key =&amp;#62; &amp;#036;var&amp;#41;&lt;br /&gt; &amp;nbsp; &amp;nbsp;{&lt;br /&gt; &amp;nbsp; &amp;nbsp;	&amp;#036;GLOBALS&amp;#91;&amp;#036;key&amp;#93; = &amp;#036;var;&lt;br /&gt; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;	}&lt;br /&gt; &amp;nbsp;}&lt;br /&gt;	}&lt;br /&gt;	function crypt&amp;#40;&amp;#036;string&amp;#41;&lt;br /&gt;	{&lt;br /&gt; &amp;nbsp;global &amp;#036;secureURL;&lt;br /&gt; &amp;nbsp;&amp;#036;password = &amp;#036;secureURL-&amp;#62;password;&lt;br /&gt; &amp;nbsp;&amp;#036;i = 0;&amp;#036;j = 0;&lt;br /&gt; &amp;nbsp;for &amp;#40;&amp;#036;i = 0;&amp;#036;i &amp;#60; strlen&amp;#40;&amp;#036;string&amp;#41;;&amp;#036;i++&amp;#41;&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp;	&amp;#036;string&amp;#91;&amp;#036;i&amp;#93; = chr&amp;#40;ord&amp;#40;&amp;#036;string&amp;#91;&amp;#036;i&amp;#93;&amp;#41; ^ ord&amp;#40;&amp;#036;password&amp;#91;&amp;#036;j&amp;#93;&amp;#41;&amp;#41;;&lt;br /&gt; &amp;nbsp;	&amp;#036;j++;&lt;br /&gt; &amp;nbsp;	if &amp;#40;&amp;#036;j &amp;#62;= strlen&amp;#40;&amp;#036;password&amp;#41;&amp;#41; &amp;#036;j = 0;&lt;br /&gt; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;#036;string = base64_encode&amp;#40;&amp;#036;string&amp;#41;;&lt;br /&gt; &amp;nbsp;return &amp;#036;string;&lt;br /&gt;	}&lt;br /&gt;	function decrypt&amp;#40;&amp;#036;string&amp;#41;&lt;br /&gt;	{&lt;br /&gt; &amp;nbsp;global &amp;#036;secureURL;&lt;br /&gt; &amp;nbsp;&amp;#036;string = base64_decode&amp;#40;&amp;#036;string&amp;#41;;&lt;br /&gt; &amp;nbsp;&amp;#036;password = &amp;#036;secureURL-&amp;#62;password;&lt;br /&gt; &amp;nbsp;&amp;#036;i = 0;&amp;#036;j = 0;&lt;br /&gt; &amp;nbsp;for &amp;#40;&amp;#036;i = 0;&amp;#036;i &amp;#60; strlen&amp;#40;&amp;#036;string&amp;#41;;&amp;#036;i++&amp;#41;&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp;	&amp;#036;string&amp;#91;&amp;#036;i&amp;#93; = chr&amp;#40;ord&amp;#40;&amp;#036;string&amp;#91;&amp;#036;i&amp;#93;&amp;#41; ^ ord&amp;#40;&amp;#036;password&amp;#91;&amp;#036;j&amp;#93;&amp;#41;&amp;#41;;&lt;br /&gt; &amp;nbsp;	&amp;#036;j++;&lt;br /&gt; &amp;nbsp;	if &amp;#40;&amp;#036;j &amp;#62;= strlen&amp;#40;&amp;#036;password&amp;#41;&amp;#41; &amp;#036;j = 0;&lt;br /&gt; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;return &amp;#036;string;&lt;br /&gt;	}&lt;br /&gt;	function check_filter&amp;#40;&amp;#036;url&amp;#41;&lt;br /&gt;	{&lt;br /&gt; &amp;nbsp;global &amp;#036;secureURL;&lt;br /&gt; &amp;nbsp;if &amp;#40;&amp;#036;secureURL-&amp;#62;filter === null&amp;#41; return true;&lt;br /&gt; &amp;nbsp;&amp;#036;url = parse_url&amp;#40;&amp;#036;url&amp;#41;;&lt;br /&gt; &amp;nbsp;return in_array&amp;#40;&amp;#40;&amp;#036;url&amp;#91;&amp;#39;host&amp;#39;&amp;#93; ? &amp;#036;url&amp;#91;&amp;#39;host&amp;#39;&amp;#93; &amp;#58; &amp;#34;&amp;#34;&amp;#41; . &amp;#036;url&amp;#91;&amp;#39;path&amp;#39;&amp;#93; , &amp;#036;secureURL-&amp;#62;filter&amp;#41;;&lt;br /&gt;	}&lt;br /&gt;	function hash&amp;#40;&amp;#036;string&amp;#41;&lt;br /&gt;	{&lt;br /&gt; &amp;nbsp;return dechex&amp;#40;crc32&amp;#40;secureURL&amp;#58;&amp;#58;crypt&amp;#40; &amp;#40;string&amp;#41; crc32&amp;#40;&amp;#036;string&amp;#41;&amp;#41;&amp;#41;&amp;#41;;&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;function secureURL_output&amp;#40;&amp;#036;content&amp;#41;&lt;br /&gt;{&lt;br /&gt;	global &amp;#036;secureURL;&lt;br /&gt;	&amp;#036;content = preg_replace_callback&amp;#40;&amp;#34;/&amp;#40;href|src|action&amp;#41;=&amp;#40;&amp;#91;&amp;#092;&amp;#34;&amp;#39;&amp;#93;&amp;#41;&amp;#40;.*&amp;#41;&amp;#092;&amp;#092;2/Ui&amp;#34; , &amp;#39;secureURL_encode&amp;#39; , &amp;#036;content&amp;#41;;&lt;br /&gt;	&amp;#036;content = preg_replace_callback&amp;#40;&amp;#39;/&amp;#40;href|src|action&amp;#41;=&amp;#40;&amp;#91;^&amp;#34; &amp;#092;&amp;#39;&amp;#62;&amp;#93;*&amp;#41;/&amp;#39; , &amp;#39;secureURL_encode2&amp;#39; , &amp;#036;content&amp;#41;;&lt;br /&gt;	if &amp;#40;&amp;#036;secureURL-&amp;#62;gz &amp;amp;&amp;amp; function_exists&amp;#40;&amp;#41;&amp;#41;&lt;br /&gt;	{&lt;br /&gt; &amp;nbsp;&amp;#036;content = ob_gzhandler&amp;#40;&amp;#036;content&amp;#41;;&lt;br /&gt;	}&lt;br /&gt;	return &amp;#036;content;&lt;br /&gt;}&lt;br /&gt;function secureURL_encode2&amp;#40;&amp;#036;matches&amp;#41;&lt;br /&gt;{&lt;br /&gt;	global &amp;#036;secureURL;&lt;br /&gt;	&amp;#036;text = &amp;#036;matches&amp;#91;1&amp;#93; . &amp;#34;=&amp;#34;;&lt;br /&gt;	if &amp;#40;strpos&amp;#40;&amp;#036;matches&amp;#91;2&amp;#93; , &amp;#34;?&amp;#34;&amp;#41; &amp;#33;== false &amp;amp;&amp;amp; secureURL&amp;#58;&amp;#58;check_filter&amp;#40;&amp;#036;matches&amp;#91;2&amp;#93;&amp;#41;&amp;#41;&lt;br /&gt;	{&lt;br /&gt; &amp;nbsp;&amp;#036;query = substr&amp;#40;&amp;#036;matches&amp;#91;2&amp;#93;,strpos&amp;#40;&amp;#036;matches&amp;#91;2&amp;#93; , &amp;#34;?&amp;#34;&amp;#41; + 1&amp;#41;;&lt;br /&gt; &amp;nbsp;if &amp;#40;is_array&amp;#40;&amp;#036;secureURL-&amp;#62;params&amp;#41; &amp;amp;&amp;amp; count&amp;#40;&amp;#036;secureURL-&amp;#62;params&amp;#41;&amp;#41;&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp;	&amp;#036;params = array&amp;#40;&amp;#41;;&lt;br /&gt; &amp;nbsp;	parse_str&amp;#40;&amp;#036;query,&amp;#036;params&amp;#41;;&lt;br /&gt; &amp;nbsp;	&amp;#036;query2 = &amp;#39;&amp;#39;;&lt;br /&gt; &amp;nbsp;	foreach &amp;#40;&amp;#036;secureURL-&amp;#62;params as &amp;#036;key&amp;#41;&lt;br /&gt; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp;if &amp;#40;isset&amp;#40;&amp;#036;params&amp;#91;&amp;#036;key&amp;#93;&amp;#41;&amp;#41;&lt;br /&gt; &amp;nbsp; &amp;nbsp;{&lt;br /&gt; &amp;nbsp; &amp;nbsp;	&amp;#036;query2 .= &amp;#34;&amp;amp;&amp;#036;key=&amp;#34; . urlencode&amp;#40;&amp;#036;params&amp;#91;&amp;#036;key&amp;#93;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;	}&lt;br /&gt; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;#036;query = &amp;#34;hash=&amp;#34; . secureURL&amp;#58;&amp;#58;hash&amp;#40;&amp;#036;query&amp;#41; . &amp;#34;&amp;amp;crypt=&amp;#34; . secureURL&amp;#58;&amp;#58;crypt&amp;#40;&amp;#036;query&amp;#41;;&lt;br /&gt; &amp;nbsp;if &amp;#40;isset&amp;#40;&amp;#036;query2&amp;#41;&amp;#41; &amp;#036;query .= &amp;#036;query2;&lt;br /&gt; &amp;nbsp;&amp;#036;matches&amp;#91;2&amp;#93; = substr&amp;#40;&amp;#036;matches&amp;#91;2&amp;#93; , 0 , strpos&amp;#40;&amp;#036;matches&amp;#91;2&amp;#93; , &amp;#34;?&amp;#34;&amp;#41; + 1&amp;#41; . &amp;#036;query;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	&amp;#036;text .= &amp;#036;matches&amp;#91;2&amp;#93;;&lt;br /&gt;	return &amp;#036;text;&lt;br /&gt;}&lt;br /&gt;function secureURL_encode&amp;#40;&amp;#036;matches&amp;#41;&lt;br /&gt;{&lt;br /&gt;	global &amp;#036;secureURL;&lt;br /&gt;	&amp;#036;text = &amp;#036;matches&amp;#91;1&amp;#93; . &amp;#34;=&amp;#34; . &amp;#036;matches&amp;#91;2&amp;#93;;&lt;br /&gt;	if &amp;#40;strpos&amp;#40;&amp;#036;matches&amp;#91;3&amp;#93; , &amp;#34;?&amp;#34;&amp;#41; &amp;#33;== false &amp;amp;&amp;amp; secureURL&amp;#58;&amp;#58;check_filter&amp;#40;&amp;#036;matches&amp;#91;3&amp;#93;&amp;#41;&amp;#41;&lt;br /&gt;	{&lt;br /&gt; &amp;nbsp;&amp;#036;query = substr&amp;#40;&amp;#036;matches&amp;#91;3&amp;#93;,strpos&amp;#40;&amp;#036;matches&amp;#91;3&amp;#93; , &amp;#34;?&amp;#34;&amp;#41; + 1&amp;#41;;&lt;br /&gt; &amp;nbsp;if &amp;#40;is_array&amp;#40;&amp;#036;secureURL-&amp;#62;params&amp;#41; &amp;amp;&amp;amp; count&amp;#40;&amp;#036;secureURL-&amp;#62;params&amp;#41;&amp;#41;&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp;	&amp;#036;params = array&amp;#40;&amp;#41;;&lt;br /&gt; &amp;nbsp;	parse_str&amp;#40;&amp;#036;query,&amp;#036;params&amp;#41;;&lt;br /&gt; &amp;nbsp;	&amp;#036;query2 = &amp;#39;&amp;#39;;&lt;br /&gt; &amp;nbsp;	foreach &amp;#40;&amp;#036;secureURL-&amp;#62;params as &amp;#036;key&amp;#41;&lt;br /&gt; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp;if &amp;#40;isset&amp;#40;&amp;#036;params&amp;#91;&amp;#036;key&amp;#93;&amp;#41;&amp;#41;&lt;br /&gt; &amp;nbsp; &amp;nbsp;{&lt;br /&gt; &amp;nbsp; &amp;nbsp;	&amp;#036;query2 .= &amp;#34;&amp;amp;&amp;#036;key=&amp;#34; . urlencode&amp;#40;&amp;#036;params&amp;#91;&amp;#036;key&amp;#93;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;	}&lt;br /&gt; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;#036;query = &amp;#34;hash=&amp;#34; . secureURL&amp;#58;&amp;#58;hash&amp;#40;&amp;#036;query&amp;#41; . &amp;#34;&amp;amp;crypt=&amp;#34; . secureURL&amp;#58;&amp;#58;crypt&amp;#40;&amp;#036;query&amp;#41;;&lt;br /&gt; &amp;nbsp;if &amp;#40;isset&amp;#40;&amp;#036;query2&amp;#41;&amp;#41; &amp;#036;query .= &amp;#036;query2;&lt;br /&gt; &amp;nbsp;&amp;#036;matches&amp;#91;3&amp;#93; = substr&amp;#40;&amp;#036;matches&amp;#91;3&amp;#93; , 0 , strpos&amp;#40;&amp;#036;matches&amp;#91;3&amp;#93; , &amp;#34;?&amp;#34;&amp;#41; + 1&amp;#41; . &amp;#036;query;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	&amp;#036;text .= &amp;#036;matches&amp;#91;3&amp;#93; . &amp;#036;matches&amp;#91;2&amp;#93;;&lt;br /&gt;	return &amp;#036;text;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&amp;#62;&lt;!--c2--&gt;&lt;/div&gt;&lt;!--ec2--&gt;&lt;br /&gt;&lt;br /&gt;To use just include the class on every page you want &amp;#39;secured&amp;#39;&lt;br /&gt;&lt;!--c1--&gt;&lt;div class='codetop'&gt;CODE&lt;/div&gt;&lt;div class='codemain'&gt;&lt;!--ec1--&gt;&lt;br /&gt;require_once&amp;#40;&amp;#39;inc/secureURL.php&amp;#39;&amp;#41;;&lt;br /&gt;secureURL&amp;#58;&amp;#58;initialize&amp;#40;&amp;#39;somerandompassword&amp;#39;&amp;#41;;&lt;br /&gt;&lt;!--c2--&gt;&lt;/div&gt;&lt;!--ec2--&gt;&lt;br /&gt;&lt;br /&gt;Note: I did this a really really long time ago, and looking back, I&amp;#39;ve made quite a few mistakes in the code, but all in all, it *should* work &lt;!--emo&amp;:D--&gt;&lt;img src='http://static.lowyat.net/style_emoticons/default/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif' /&gt;&lt;!--endemo--&gt;</description>
            <author>Diligent Sloth</author>
            <category>Codemasters</category>
            <pubDate>Tue, 29 Aug 2006 13:21:18 +0800</pubDate>
        </item>
        <item>
            <title>Bread Crumb Naviation</title>
            <link>http://forum.lowyat.net/topic/332874</link>
            <description></description>
            <author>Diligent Sloth</author>
            <category>Codemasters</category>
            <pubDate>Mon, 28 Aug 2006 11:28:23 +0800</pubDate>
        </item>
    </channel>
</rss>
