<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Thu, 24 May 2012 11:33:44 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Ibuildings techPortal: DPC Radio: Clean PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/17718</guid>
      <link>http://www.phpdeveloper.org/news/17718</link>
      <description><![CDATA[<p>
On the Ibuildings techPortal today they've published the latest in their DPC Radio podcast series, sessions as recorded at the 2011 edition of the <a href="http://phpconference.nl">Dutch PHP Conference</a>. In <a href="http://techportal.ibuildings.com/2012/03/22/dpc-radio-clean-php/">this latest episode</a> <i>Sebastian Bergmann</i> talks about "Clean PHP".
</p>
<blockquote>
Even bad code can function. But if code isn't clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn't have to be that way. In this session you will learn how you can offset your technical debt with clean code that is readable and testable as well as reusable.
</blockquote>
<p>
You can listen to this latest session either using the <a href="http://techportal.ibuildings.com/2012/03/22/dpc-radio-clean-php/">in-page player</a> or by <a href="http://dpcradio.s3.amazonaws.com/2011_003.mp3">downloading the mp3 directly</a>. The slides (for a similar version of the presentation) can be found <a href="http://www.slideshare.net/sebastian_bergmann/clean-php-confoo-2011">on Slideshare</a>.
</p>]]></description>
      <pubDate>Thu, 22 Mar 2012 14:37:05 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Ibuildings techPortal: DPC Radio: Implementing OAuth]]></title>
      <guid>http://www.phpdeveloper.org/news/17520</guid>
      <link>http://www.phpdeveloper.org/news/17520</link>
      <description><![CDATA[<p>
On the Ibuildings techPortal today they've posted the latest in their DPC Radio series of podcasts as recorded at last year's <a href="http://phpconference.nl">Dutch PHP Conference</a>. In <a href="http://techportal.ibuildings.com/2012/02/08/dpc-radio-implementing-oauth/">this new episode</a> they share <i>Lorna Mitchell</i>'s talk "Implementing OAuth".
</p>
<blockquote>
With Twitter moving its API to OAuth the idea of using tokens rather than passwords for authentication went mainstream. Many explanations of OAuth make it seem complicated whereas in reality the "OAuth Dance" is a series of simple steps executed in sequence. This talk covers consuming and providing OAuth services, includes implementation examples, and is recommended for all technical leads, architects, and integration specialists.
</blockquote>
<p>
You can listen to this latest episode either via <a href="http://techportal.ibuildings.com/2012/02/08/dpc-radio-implementing-oauth/">the in-page player</a> or by <a href="http://dpcradio.s3.amazonaws.com/2011_010.mp3">downloading the mp3</a>. You can follow along with the presentation in <a href="http://www.slideshare.net/lornajane/oauth-7990565">her slides</a>.
</p>]]></description>
      <pubDate>Wed, 08 Feb 2012 14:20:29 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Paul Reinheimer's Blog: Cookies don't replace Sessions]]></title>
      <guid>http://www.phpdeveloper.org/news/17438</guid>
      <link>http://www.phpdeveloper.org/news/17438</link>
      <description><![CDATA[<p>
In a new post to his blog <i>Paul Reinheimer</i> talks about <a href="http://blog.preinheimer.com/index.php?/archives/373-Cookies-dont-replace-Sessions.html">replacing sessions with cookies</a> and some of the (security) pitfalls that can come with it.
</p>
<blockquote>
I've seen several instances where people have demonstrated the ease with which encrypted cookies can replace sessions within PHP. Michael Nitschinger <a href="http://nitschinger.at/Session-Encryption-with-Lithium">wrote a piece</a> recently demonstrating the switch with Lithium, while CodeIgniter does this <a href="http://codeigniter.com/user_guide/libraries/sessions.html">by default</a> (optionally encrypting). The problem is that while replacing sessions with cookies works, it introduces a few risks not present with native session support, and these risks tend to be under documented.
</blockquote>
<p>
He gives an illustration of an attacker who sits between Amazon and one of their warehouses. Despite encrypting their order details, all it would take is the attacker to grab an order and copy it and resend (a "replay attack"). He's created <a href="http://betting-example.orchestra.io/">an example application</a> to illustrate the point (<a href="https://github.com/preinheimer/Betting-Example">source on github</a>). The attacker doesn't even have to know what the encrypted information contains - they only have to replicate it.
</p>]]></description>
      <pubDate>Tue, 24 Jan 2012 09:26:20 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Michael Nitschinger's Blog: Session Encryption with Lithium]]></title>
      <guid>http://www.phpdeveloper.org/news/17427</guid>
      <link>http://www.phpdeveloper.org/news/17427</link>
      <description><![CDATA[<p>
<i>Michael Nitschinger</i> has a new post for the <a href="http://lithify.me/">Lithium framework</a> users out there - a quick tutorial about <a href="http://nitschinger.at/Session-Encryption-with-Lithium">encrypting your session information</a> with the new built in "Encrypt" strategy feature.
</p>
<blockquote>
If you check out the master branch, you can use the new Encrypt strategy to encrypt your session data automatically. This means that you can read and write session data in cleartext and they will be encrypted on the fly before getting stored (in a cookie, for example). 
</blockquote>
<p>
You'll need the <a href="http://php.net/manual/en/book.mcrypt.php">mcrypt extension</a> installed for it to work correctly, but it makes storing the encrypted version of your data more or less automatic. Just set up your Session configuration to use it as a strategy and any time you call a "read" or "write" the hard work is handled for you. For those more interests in what's "under the hood" he goes on to talk about how the strategy works, what cipher it uses by default, how to change it and the default string to use in hashing. 
</p>]]></description>
      <pubDate>Fri, 20 Jan 2012 12:09:08 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Community News: Videos of PHP North West 2011 Sessions Published]]></title>
      <guid>http://www.phpdeveloper.org/news/17339</guid>
      <link>http://www.phpdeveloper.org/news/17339</link>
      <description><![CDATA[<p>
As <a href="http://twitter.com/#!/phpnw11/status/153984437422526465">mentioned</a> by the PHPNW twitter account, the videos for almost all of the sessions in this year's <a href="http://conference.phpnw.org.uk">PHP North West</a> conference <a href="https://bitly.com/bundles/phpcodemonkey/2">have been posted</a>.
</p>
<p>Sessions so far include:</p>
<ul>
<li><i>Ian Barber</i>'s keynote <a href="http://bitly.com/vNLQ5e?r=bb">How to Stand on the Shoulders of Giants</a>
<li><i>Sebastian Bergmann</i>'s <a href="http://bitly.com/ryQY2P?r=bb">PHP Tester's Toolbox</a>
<li><i>Scott MacVicar</i>'s <a href="http://bitly.com/uJEPli?r=bb">Scaling Your Development Team</a>
<li><i>Alistair Stead</i>'s <a href="http://bitly.com/vFbpOG?r=bb">Varnish your PHP application, make it fly!</a>
<li><i>Jacopo Romei</i>'s <a href="http://bitly.com/ug55lA?r=bb">Many To Many - No Man Is An Island</a>
<li><i>Volker Dusch</i>'s <a href="http://bitly.com/tiOdvD?r=bb">Stop Wasting Time By Applying Clean Code Principles</a>
</ul>
<p>
You can find the full list in <a href="https://bitly.com/bundles/phpcodemonkey/2">this link bundle</a> complete with author bios, links to the videos and a summary of each session.
</p>]]></description>
      <pubDate>Tue, 03 Jan 2012 12:44:58 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Writing Custom Session Handlers]]></title>
      <guid>http://www.phpdeveloper.org/news/17319</guid>
      <link>http://www.phpdeveloper.org/news/17319</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's a new post showing you how to <a href="http://phpmaster.com/writing-custom-session-handlers/">write custom session handlers</a> - in their case, a database-based option that can span across multiple servers/services.
</p>
<blockquote>
Sessions are a tool which helps the web programmer overcome the stateless nature of the internet. You can use them to build shopping carts, monitor visits to a website, and even track how a user navigates through your application. PHP's default session handling behavior can provide all you need in most cases, but there may be times when you want to expand the functionality and store session data differently. This article will show you how the default functionality works and then goes on to show you how override it to provide a custom solution.
</blockquote>
<p>
They introduce how sessions are stored normally (based on the save path) and what the serialized contents of it would look like. They show you how to take this, normally stored on the local file system, and change it to be written to a "session" table in a MySQL database (via <a href="http://php.net/pdo">PDO</a>). It includes reading, writing, updating and some garbage collection to clean out old values from the table.
</p>]]></description>
      <pubDate>Thu, 29 Dec 2011 09:41:25 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Community News: PHP North West Video - "How to Stand on the Shoulders of Giants"]]></title>
      <guid>http://www.phpdeveloper.org/news/17184</guid>
      <link>http://www.phpdeveloper.org/news/17184</link>
      <description><![CDATA[<p>
The PHP North West conference has posted a video from this year's event - the <a href="http://blip.tv/phpnw/phpnw11-keynote-ian-barber-how-to-stand-on-the-shoulders-of-giants-5777535">keynote from Ian Barber</a> of his "How to Stand on the Shoulders of Giants" session.
</p>
<blockquote>
<p>
As software engineers, we all have the potential to navigate the history of our industry, tease out the genius from what has come before, and build a platform for our own ideas. By doing so, we can see that little bit further and in turn provide the foundations for others to build on what we have done.
</p>
<p>
In this session we'll look at how the history of the web itself is rooted in sharing information and how modern giants like Google and Facebook are founded on what came before them, while being driven forwards by the ecosystems they helped build. We'll see how successful open source projects leverage the past, and how by following some simple principles we can make use of the information, projects and people around us to improve ourselves and our careers.
</p>
</blockquote>
<p>
You cab view other videos from the 2010 event on the <a href="http://blip.tv/phpnw">PHPNW video channel</a> on blip.tv.
</p>]]></description>
      <pubDate>Tue, 29 Nov 2011 14:55:50 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Johannes Schl&uuml;ter's Blog: High Performance PHP Session Storage on Scale]]></title>
      <guid>http://www.phpdeveloper.org/news/17147</guid>
      <link>http://www.phpdeveloper.org/news/17147</link>
      <description><![CDATA[<p>
In <a href="http://schlueters.de/blog/archives/164-High-Performance-PHP-Session-Storage-on-Scale.html">this new post</a> to his blog, <i>Johannes Schl&uuml;ter</i> looks at a high-performance solution to the usual storing PHP session information via a memcache frontend with a MySQL Cluster backend.
</p>
<blockquote>
Unfortunately even such a system [using MySQL and InnoDB tables] has limits and unfortunately replication is no good solution here to scale further as we will always need a master for writing the updated session data. By using replication we can take some load from it and we can configure a slave which can be promoted to master to keep session alive if the primary master machine fails but at some point in time we need another solution ... but, happy news, again: One doesn't have to look far as MySQL cluster will be happy to help. MySQL Cluster "is a high-availability, high-redundancy version of MySQL adapted for the distributed computing environment," as the <a href="http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster.html">MySQL documentation states</a>. 
</blockquote>
<p>
He describes the setup (after pointing to <a href="http://www.clusterdb.com/mysql-cluster/scalabale-persistent-ha-nosql-memcache-storage-using-mysql-cluster/">this post</a> about installing MySQL Cluster for memcache) and includes some sample code/SQL/ini settings you'll need to use to get PHP's <a href="http://us.php.net/manual/en/class.memcached.php">memcached</a> functionality to cooperate with it.
</p>
]]></description>
      <pubDate>Fri, 18 Nov 2011 10:13:25 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: PHP Sessions]]></title>
      <guid>http://www.phpdeveloper.org/news/17141</guid>
      <link>http://www.phpdeveloper.org/news/17141</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's a <a href="http://phpmaster.com/php-sessions/">new introductory tutorial</a> for those trying to figure out sessions in PHP. Sessions can be one of the most powerful tools at your disposal and handling them correctly can sometimes be a little tricky.
</p>
<blockquote>
$_SESSION is a special array used to store information across the page requests a user makes during his visit to your website or web application. The most fundamental way to explain what a sessions is like is to imagine the following scenario: You are working with an application. You open it, make some changes, and then you close it. That is a session in it's simplest form.
</blockquote>
<p>
They start with a basic "how to use them" example of setting a username value to the current session and pulling the value back out. They also show the use of the <a href="http://php.net/session_unset">session_unset</a> and <a href="http://php.net/session_destroy">session_destroy</a> methods for ending the session. Some security tips are mentioned too - timeouts, regenerating the session ID, destroying them correctly and using a more permanent storage option (by default, they store on the local disk).
</p>]]></description>
      <pubDate>Thu, 17 Nov 2011 10:19:08 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Robert Basic's Blog: Benchmarking pages behind a login with ab]]></title>
      <guid>http://www.phpdeveloper.org/news/17124</guid>
      <link>http://www.phpdeveloper.org/news/17124</link>
      <description><![CDATA[<p>
<i>Robert Basic</i> has a recent post showing you how to use the "cookie jar" functionality included with Apache's "ab" benchmarking tool to <a href="http://robertbasic.com/blog/benchmarking-pages-behind-a-login-with-ab/">get behind your PHP-based login</a> with a simple curl and grep combo.
</p>
<blockquote>
Tonight I decided to relax a bit and what better way of relaxing is there for a geek then to do some bash scripting?! So for fun and no profit I decided to try and benchmark pages with <a href="http://httpd.apache.org/docs/2.0/programs/ab.html">ab, Apache HTTP server benchmarking tool</a>, which are behind a login. Turns out, it's pretty easy after reading some man pages.
</blockquote>
<p>
He includes an example of the format of the "cookie jar" and the shell script he used to grab the PHP session ID from it and inject it into the "ab" call. The <a href="https://github.com/robertbasic/blog-examples/tree/master/ab-login">script is on github</a>.
</p>]]></description>
      <pubDate>Mon, 14 Nov 2011 10:12:05 -0600</pubDate>
    </item>
  </channel>
</rss>

