<?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 18:52:19 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[PHPMaster.com: Building a Domain Model - An Introduction to Persistence Agnosticism]]></title>
      <guid>http://www.phpdeveloper.org/news/17591</guid>
      <link>http://www.phpdeveloper.org/news/17591</link>
      <description><![CDATA[<p>
On PHPMaster.com there's <a href="http://phpmaster.com/building-a-domain-model/">a recent tutorial</a> introducing the concept of a "domain model" and showing how to create them in PHP (manually, not inside of any ORM or database solution).
</p>
<blockquote>
First off, creating a rich Domain Model, where multiple domain objects with well-defined constraints and rules interact, can be a daunting task. Second, not only is it necessary to define from top to bottom the model itself, but it's also necessary to implement from scratch or reuse a mapping layer in order to move data back and forward between the persistence layer and the model in question. 
</blockquote>
<p>
They include an example of a set of domain models tat relate to one another - a blog setup with posts, comments and users. They show how to create the AbstractEntity to handle a bit of the magic behind the scenes, an example "Post" and "Comment" models and how they can be put to work creating some posts and appending comments. A little bit of markup is included to output the results.
</p>]]></description>
      <pubDate>Mon, 27 Feb 2012 12:58:00 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Zend PHP Certification Blog: PHP Sorting Functions]]></title>
      <guid>http://www.phpdeveloper.org/news/17288</guid>
      <link>http://www.phpdeveloper.org/news/17288</link>
      <description><![CDATA[<p>
On the "Zend PHP Certification" blog (study notes), there's <a href="http://zend-php-certification.com/2011/12/20/php-sorting-functions/>a recent post</a> getting into the details of some of the sorting functions in PHP (like <a href="http://php.net/sort">sort</a> and <a href="http://php.net/natsort">natsort</a>).
</p>
<blockquote>
In all the countless hours I've spent with php, I've maybe used three or four of these sorting functions. I really had no idea that there is a total of eleven functions used for sorting arrays. Anyway, I'm betting that it may be useful to have these memorized before I take the Zend PHP Certification Exam so here is a brief overview of each one.
</blockquote>
<p>
He talks about the various flags that can be used in the sorting (for regular, numeric, string and locale-based string handling) and the parameters to call for normal sorting, "natural" sorting, reverse key sorting and others. You can find specifics on these array sorting methods <a href="http://www.php.net/manual/en/array.sorting.php">in the PHP manual</a>.
</p>]]></description>
      <pubDate>Wed, 21 Dec 2011 11:39:06 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPBuilder.com: Talking to GitHub with PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/17197</guid>
      <link>http://www.phpdeveloper.org/news/17197</link>
      <description><![CDATA[<p>
PHPBuilder.com has a new tutorial posted about <a href="http://www.phpbuilder.com/columns/github/github-api-php_11-29-2011.php3">interfacing with GitHub in PHP</a>, using their API to hook into and pull down information about users and repositories.
</p>
<blockquote>
The <a href="http://git-scm.com/">Git</a>-based project hosting service <a href="http://www.github.com/">GitHub</a> is certainly the belle of today's technology ball, having attracted more than 1 million registered users and amassed more than 2 million hosted projects in less than three years. [...] <a href="http://github-high-scores.heroku.com/">GitHub High Scores</a> and <a href="http://github-badges.heroku.com/">GitHub Badges</a> are two examples of third-party services created using the GitHub API, which is capable of carrying out any task you might wish to perform via GitHub.com. With it you can create, edit and search repositories, learn more about fellow GitHub users, and manage repository issues.
</blockquote>
<p>
<i>Jason</i> shows how to use the <a href="http://github.com/ornicar/php-github-api">php-github-api library</a> to connect to the API, search repository information, get user details, finding their repositories and accessing restricted resources (things only available for the authenticated user like updating your account or working with your own repositories).
</p>]]></description>
      <pubDate>Thu, 01 Dec 2011 11:28:40 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Reddit.com: Which MVC framework has the best documentation and user community?]]></title>
      <guid>http://www.phpdeveloper.org/news/16995</guid>
      <link>http://www.phpdeveloper.org/news/16995</link>
      <description><![CDATA[<p>
On Reddit.com there's a new post that asks the question, "<a href="http://www.reddit.com/r/PHP/comments/lb25r/which_mvc_framework_has_the_best_documentation/">which framework has the best documentation and community</a>?" 
</p>
<blockquote>
About to dive into MVC and wondering which one has the most wealth in terms of documentation/code comments as well as a decent community.
</blockquote>
<p>Suggestions in the comments include both old and new options including:</p>
<ul>
<li><a href="http://symfony-project.org">Symfony</a>
<li><a href="http://codeigniter.com">CodeIgniter</a>
<li><a href="http://framework.zend.com">Zend Framework</a>
<li><a href="http://yiiframework.com">Yii</a>
</ul>]]></description>
      <pubDate>Fri, 14 Oct 2011 10:17:22 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Project: Warden: A user database authorization package for FuelPHP]]></title>
      <guid>http://www.phpdeveloper.org/news/16929</guid>
      <link>http://www.phpdeveloper.org/news/16929</link>
      <description><![CDATA[<p>
<a href="http://fuelphp.com">Fuel framework</a> users have another option when it comes to user authentication management in their applications. <i>Ando</i> has released <a href="http://dre1080.github.com/warden/">Warden</a>, a package that manages logins, password hashing and user ACLs.
</p>
<blockquote>
Warden is a user database authorization package for the FuelPHP framework that aims to fast track development by handling the work load of uthenticating user's. Built for performance, it comes with a ready-to-use user model and database install script.
</blockquote>
<p>
The package uses <a href="http://php.net/bcrypt">bcrypt</a> for password hashing and also provides features for forgotten passwords, password resets and "remember me" functionality. Installation is as simple as adding it to your "always_load" package list and setting up a few configuration options. Sample code for its features is included. You can get the latest version <a href="https://github.com/dre1080/warden">directly from github</a>.
</p>]]></description>
      <pubDate>Thu, 29 Sep 2011 12:19:41 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Liip Blog: 2-Step Verification with Google Authenticator and PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/16795</guid>
      <link>http://www.phpdeveloper.org/news/16795</link>
      <description><![CDATA[<p>
On the Liip blog there's <a href="http://blog.liip.ch/archive/2011/08/29/2-step-verification-with-google-authenticator-and-php.html">a recent post</a> talking about a tool Google offers to help you authenticate your users, a one-time passcode generator called <a href="http://code.google.com/p/google-authenticator/">Google Authenticator</a>. The post talks about a PHP port of the same idea.
</p>
<blockquote>
The main point about 2-step verification is that something else than your computer provides that token. If it's on your computer and that one gets stolen (or hacked into), it won't help much for the additional security. That's why you need a second device for those tokens. Some banks do that with SMS/Text Messages (Facebook, too), other give you special devices for that (eg. RSA keys) and the last group does it with your smartphone.
</blockquote>
<p>
At the request of a client, they created a tool that did just this, but for PHP. As a result, they created the <a href="https://github.com/chregu/GoogleAuthenticator.php">GoogleAuthenticator</a> library that makes it easy to implement in your application. There's even <a href="https://github.com/chregu/GoogleAuthenticator.php/tree/master/web">an example</a> of it in use. For more information about the Google Authenticator tool, see <a href="http://code.google.com/p/google-authenticator/">this page on Google Code</a>.
</p>]]></description>
      <pubDate>Wed, 31 Aug 2011 09:53:05 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[StackOverflow.com: The Definitive Guide To Forms based Website Authentication]]></title>
      <guid>http://www.phpdeveloper.org/news/16713</guid>
      <link>http://www.phpdeveloper.org/news/16713</link>
      <description><![CDATA[<p>
If you haven't seen it yet, there's a post over on StackOverflow that's been growing over the past few days about <a href="http://stackoverflow.com/questions/549/the-definitive-guide-to-forms-based-website-authentication">form-based authentication in websites</a>. The author wants to make a definitive resource for people to use when making good, secure user authentication systems.
</p>
<blockquote>
Please help us create the definitive resource for this topic. We believe that stackoverflow should not just be a resource for very specific technical questions, but also for general guidelines on how to solve variations on common problems. "Form Based Authentication For Websites" should be a fine topic for such an experiment.
</blockquote>
<p>
They want to include topics like logins, storing passwords, "forgot password" security, OpenID, browser autocompletion, password strength, email validation and more. They already laid out eight different sections with summaries including:
</p>
<ul>
<li>How To Remain Logged In - The Infamous "Remember Me" Checkbox
<li>Using Secret Questions
<li>Checking Password Strength
<li>Much More - Or: Preventing Rapid-Fire Login Attempts
<li>Two-Factor Authentication and Authentication Providers
</ul>
<p>
There's some <a href="http://stackoverflow.com/questions/549/the-definitive-guide-to-forms-based-website-authentication">good feedback from other users</a> with other suggestions and links to external resources that could shed some more light on the topic.
</p>]]></description>
      <pubDate>Fri, 12 Aug 2011 12:13:35 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Devshed: Simple and Secure PHP Login Script]]></title>
      <guid>http://www.phpdeveloper.org/news/16645</guid>
      <link>http://www.phpdeveloper.org/news/16645</link>
      <description><![CDATA[<p>
In <a href="http://www.devshed.com/c/a/PHP/Creating-a-Secure-PHP-Login-Script-59941/">this new tutorial</a> on DevShed, they walk you through the creation of a secure login script that uses sha256 encryption, a captcha to prevent automated signups, XSS attack protection and several other features.
</p>
<blockquote>
Recent advancements in PHP offer the developer a variety of tools to improve the security of login systems. [...] This programming tutorial will teach you how to create a simple, yet secure login script utilizing PHP using MySQL and bracing for XSS attack prevention.
</blockquote>
<p>
Other features include no persistent logins, preventing direct file access, an idle timeout on the user session, protection against session fixation and anti-brute force measures. Full (procedural) code is provided as well as screenshots from phpMyAdmin showing the database table structure. You can grab the code for the project <a href="http://www.php-developer.org/php-secure-authentication-of-user-logins/">here</a>.
</p>]]></description>
      <pubDate>Thu, 28 Jul 2011 09:57:39 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Lorna Mitchell's Blog: PHP OAuth Provider: Authenticate User]]></title>
      <guid>http://www.phpdeveloper.org/news/16405</guid>
      <link>http://www.phpdeveloper.org/news/16405</link>
      <description><![CDATA[<p>
<i>Lorna Mitchell</i> has posted the next part in her series looking at working with OAuth in PHP, showing how to <a href="http://www.lornajane.net/posts/2011/PHP-OAuth-Provider-Authenticate-User">authenticate the user</a> making the connection to your OAuth-enabled web service.
</p>
<blockquote>
This phase is probably the most familiar to us as developers, as it's simply a login form. The consumer will send the user to us at the URL we provided in the request token, and the user will have the request token key as a parameter. The access control on this page will look the same as on the rest of the website; if the user has a session already then the page is displayed, otherwise they must be logged in to see it.
</blockquote>
<p>
She talks about verifying the authentication token passed in (from the value already generated and put into a database table), the grant/deny process and the information to update in her sample table when the user falls into the "granted" side of things. She also briefly mentions the optional callback that can be passed to a service like this and how to handle its value.
</p>]]></description>
      <pubDate>Tue, 31 May 2011 10:43:27 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPBuilder.com: Tracking User Activity in PHP with Cookies and Sessions]]></title>
      <guid>http://www.phpdeveloper.org/news/16380</guid>
      <link>http://www.phpdeveloper.org/news/16380</link>
      <description><![CDATA[<>
On PHPBuilder.com today there's a new tutorial from <i>Leidago Noabeb</i> showing how you can track your website's users with the help of <a href="http://www.phpbuilder.com/columns/tracking-cookies-sessions/Leidago_Noabeb05242011.php3">sessions and cookies</a>, the handling for which are already included in PHP.
</p>
<blockquote>
So, why can't you maintain state with HTTP? The main reason is because HTTP is a stateless protocol, meaning that it has no built-in way of maintaining state between transactions. For example, when a user requests one page followed by another, HTTP does not provide a way for us to tell which user made the second request. In this article we will look at what maintaining state in PHP applications entails.
</blockquote>
<p>
They introduce cookies and how they can be used to store information about the user's session on their client for a certain amount of time. This makes it much simpler for the cross-page or cross-session details to persist. There's a bit of code showing how to set and get a cookie and how to do the same with a session.
</p>]]></description>
      <pubDate>Wed, 25 May 2011 08:53:42 -0500</pubDate>
    </item>
  </channel>
</rss>

