<?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>Fri, 24 May 2013 03:18:32 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Gonzalo Ayuso: Google App Engine, PHP and Silex. Setting up a Login Provider]]></title>
      <guid>http://www.phpdeveloper.org/news/19612</guid>
      <link>http://www.phpdeveloper.org/news/19612</link>
      <description><![CDATA[<p>
<i>Gonzalo Ayuso</i> has a new post to his site today showing how to use the recently released PHP support for the Google App Engine along with Silex to <a href="http://gonzalo123.com/2013/05/20/google-app-engine-php-and-silex-setting-up-a-login-provider/">create a login provider</a>.
</p>
<blockquote>
Last week Google <a href="http://googlecloudplatform.blogspot.com.es/2013/05/ushering-in-next-generation-of.html">announced</a> the PHP support for Google App Engine (GAE). PHPStorm, the great IDE for PHP development, also <a href="http://blog.jetbrains.com/phpstorm/2013/05/support-for-google-app-engine-php-in-phpstorm/">announced</a> support for Google App Engine PHP. Because of that now is time to hack a little bit with this new toy. [...] To build a simple Silex application over Google App Engine is pretty straightforward (more info <a href="https://developers.google.com/appengine/downloads?hl=en#Google_App_Engine_SDK_for_PHP">here</a>). Because of that we're going to go a little further. We are going to use the log-in framework provided by GAE to log-in with our Goggle account within our Silex application. In fact we can use the standard OAuth authentication process but Google provides a simple <a href="https://developers.google.com/appengine/docs/php/users/loginurls">way</a> to use our gmail account.
</blockquote>
<p>
He includes the code showing what the end result will look like as well as what's needed for the "LoginProvider" class. He also creates an "Auth" class where most of the work is done - creating the login URL, redirecting the user and checking to see if the user is logged in. He's made a screencast of the full process so you can <a href="http://www.youtube.com/watch?feature=player_embedded&v=hkW-xiSYiak">see the authentication flow</a> as its happening.
</p>
Link: http://gonzalo123.com/2013/05/20/google-app-engine-php-and-silex-setting-up-a-login-provider]]></description>
      <pubDate>Tue, 21 May 2013 10:41:07 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Simplifying Test Data Generation with Faker]]></title>
      <guid>http://www.phpdeveloper.org/news/19203</guid>
      <link>http://www.phpdeveloper.org/news/19203</link>
      <description><![CDATA[<p>
In a new post to PHPMaster.com today, <i>Rakhitha Nimesh</i> <a href="http://phpmaster.com/simplifying-test-data-generation-with-faker/">takes a look at Faker</a>, a tool that can be used to generate random test case data as a part of your workflow.
</p>
<blockquote>
Testing is an iterative part of the development process that we carry out to ensure the quality of our code. A large portion of this entails writing test cases and testing each unit of our application using random test data. Actual data for our application comes in when we release it to production, but during the development process we need fake data similar to real data for testing purposes. The popular open source library Faker provides us with the ability to generate different data suitable for a wide range of scenarios.
</blockquote>
<p>
Faker uses built-in data providers like "Person", "Company", "DateTime" and "UserAgent" to give you randomized output from the data sets you define. Code is included showing how to create the provider in your objects, extending the correct provider and making a request for a property. A real-world example is also included about testing an email marketing engine for address, title, name and content. There's also a little bit added at the end showing how you can increase the randomness of the results returned by "seeding" the Faker engine.
</p>]]></description>
      <pubDate>Tue, 19 Feb 2013 12:09:02 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Oracle.com: Oracle Invests in Leading Platform-as-a-Service Company Engine Yard]]></title>
      <guid>http://www.phpdeveloper.org/news/18747</guid>
      <link>http://www.phpdeveloper.org/news/18747</link>
      <description><![CDATA[<p>
According to a <a href="http://www.oracle.com/us/corporate/press/1873187">new press release</a> on the Oracle.com site today, they've announced the company's investment in the popular PaaS provider (and big sponsor of several PHP conferences, events and the community) <a href="http://www.engineyard.com">Engine Yard</a>. From the official press release:
</p>
<blockquote>
Oracle announced today that it has made a strategic minority investment in Engine Yard, a leading cloud development platform that supports Ruby, PHP and Node.js, popular web development languages. [...] In conjunction with this investment, Oracle and Engine Yard expect to work closely together to provide cloud application developers with a greater choice of development and deployment options. The two companies are expected to connect their respective PaaS offerings to enable more rapid development of applications in a secure, reliable and scalable environment.
</blockquote>
<p>
No word yet on how this will integrate with <a href="http://www.oracle.com/us/solutions/cloud/overview/index.html">Oracle's own cloud solutions</a> but it should be interesting to see what comes out of it. Congratulations to the Engine Yard folks on the investment!
</p>]]></description>
      <pubDate>Wed, 14 Nov 2012 12:19:35 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Fortrabbit.com: Cloudscapes - Comparing PHP Cloud Hosting Platforms]]></title>
      <guid>http://www.phpdeveloper.org/news/18215</guid>
      <link>http://www.phpdeveloper.org/news/18215</link>
      <description><![CDATA[<p>
On the Fortrabbit.com blog there's a new post that does a <a href="http://blog.fortrabbit.com/comparing-cloud-hosting-platforms/">quick overview and comparison</a> of 11 of the more popular cloud-based hosting platforms out there that are PHP friendly.
</p>
<blockquote>
We are currently building yet another PHP Cloud Platform ourselves. Of course we looked around to see what the others are up to. This is my (Franks) personal point of view of the current market situation showcasing my favorite services. I try not to judge, neither i will compare features nor prices.
</blockquote>
<p>Services on his list include:</p>
<ul>
<li><a href="http://heroku.com/">Heroku</a>
<li><a href="http://appfog.com/">phpFog/appFog</a>
<li><a href="http://pagodabox.com/">PagodaBox</a>
<li><a href="http://cloudcontrol.com/">CloudControl</a>
<li><a href="http://engineyard.com/">EngineYard</a>
</ul>]]></description>
      <pubDate>Wed, 11 Jul 2012 11:27:07 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Hasin Hayder's Blog: Developing PHP applications in the cloud with free cloud hosting providers]]></title>
      <guid>http://www.phpdeveloper.org/news/17035</guid>
      <link>http://www.phpdeveloper.org/news/17035</link>
      <description><![CDATA[<p>
<i>Hasin Hayder</i> has <a href="http://hasin.wordpress.com/2011/10/21/developing-php-applications-in-the-cloud-with-these-free-cloud-hosting-providers/">put together a list of cloud hosting providers</a> that are already set and ready to go for PHP applications. His list highlights a few of the <a href="http://en.wikipedia.org/wiki/Freemium">free</a> ones.
</p>
<blockquote>
I will be focusing on some of these free cloud hosting options available out there. One thing to note before you proceed - these free cloud hosting options are very good to develop and test your applications (in dev+staging environment) and it may not be wise to deploy the production version of your application with any free plan (Except Amazon AWS's free tier, its production ready).
</blockquote>
<p>
He has four different services on his list, ranging anywhere from small to industrial strength, depending on your needs:
</p>
<ul>
<li><a href="http://aws.amazon.com/">Amazon's AWS</a>
<li><a href="http://phpfog.com/">PHPFog</a>
<li><a href="http://www.phpcloud.com/">PHPCloud</a> (from Zend)
<li><a href="http://heroku.com/">Heroku</a> (traditionally Ruby, now supports PHP too)
</ul>]]></description>
      <pubDate>Tue, 25 Oct 2011 09:42:33 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Lorna Mitchell' Blog: PHP OAuth Provider: Access Tokens]]></title>
      <guid>http://www.phpdeveloper.org/news/16788</guid>
      <link>http://www.phpdeveloper.org/news/16788</link>
      <description><![CDATA[<p>
<i>Lorna Mitchell</i> has posted the latest in her look at OAuth in PHP to her blog today, an <a href="http://www.lornajane.net/posts/2011/php-oauth-provider-access-tokens">introduction to access tokens</a> - generating and handling them in your application.
</p>
<blockquote>
I've been working with <a href="http://oauth.net/">OAuth</a>, as a provider and consumer, and there isn't a lot of documentation around it for PHP at the moment so I thought I'd share my experience in this series of articles. [...] This entry follows on from the ones about the <a href="http://www.lornajane.net/posts/2011/PHP-OAuth-Provider-Initial-Requirements">initial requirements</a>, <a href="http://www.lornajane.net/posts/2011/PHP-OAuth-Provider-Request-Tokens">how to how to handle request tokens</a>, and <a href="http://www.lornajane.net/posts/2011/php-oauth-provider-authenticate-user">authenticating users</a>.
</blockquote>
<p>
In this latest post, she talks about the three different types of tokens - consumer, request and verififier - and how to use them to locate a user in your app's users. Her code validates the request token and verifier against the database and, if successful, inserts the rest of the token information for the user.
</p>]]></description>
      <pubDate>Tue, 30 Aug 2011 08:28:04 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Stas Malyshev's Blog: ZF Oauth Provider]]></title>
      <guid>http://www.phpdeveloper.org/news/16783</guid>
      <link>http://www.phpdeveloper.org/news/16783</link>
      <description><![CDATA[<p>
In a new post <i>Stas Malyshev</i> has <a href="http://php100.wordpress.com/2011/08/28/zf-oauth-provider/">shared some code for an OAuth provider</a> he's written up to work specifically with <a href="http://framework.zend.com">Zend Framework</a> applications. 
</p>
<blockquote>
Zend Framework has pretty good <a href="http://en.wikipedia.org/wiki/OAuth">OAuth</a> <a href="http://framework.zend.com/manual/en/zend.oauth.introduction.html">consumer implementation</a>. However, it has <a href="http://stackoverflow.com/questions/4061435/zend-framework-oauth-provider">no support</a> for implementing OAuth provider, and it turns out that there aren't many <a href="http://stackoverflow.com/questions/6086454/pure-php-oauth-provider">other libraries</a> for it. Most examples out there base on <a href="http://php.net/oauth">PECL oauth extension</a>, which works just fine, with one caveat - you have to have this PECL extension installed, while ZF implementation does not require that. So I went ahead and wrote <a href="https://github.com/smalyshev/Zend_OAuth_Provider">some code that allows to easily add OAuth provider to your ZF-based or ZF-using application</a>. That should make writing OAuth provider easier.
</blockquote>
<p>
His code just fleshes out the server portion of the provider, not all of the token generation and key handling it'll need on the backend - that'll still be the job of your scripts. You can find the library over on github in his <a href="https://github.com/smalyshev/Zend_OAuth_Provider">Zend_OAuth_Provider</a> repository.
</p>]]></description>
      <pubDate>Mon, 29 Aug 2011 10:41:18 -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[Lorna Mitchell's Blog: PHP OAuth Provider: Request Tokens]]></title>
      <guid>http://www.phpdeveloper.org/news/16365</guid>
      <link>http://www.phpdeveloper.org/news/16365</link>
      <description><![CDATA[<p>
In the next of her series looking at OAuth in PHP, <i>Lorna Mitchell</i> has posted <a href="http://www.lornajane.net/posts/2011/PHP-OAuth-Provider-Request-Tokens">a look at request tokens</a> and how to hand them out via your application.
</p>
<blockquote>
The consumer requests a request token (see my <a href="http://www.lornajane.net/posts/2010/Authenticating-with-OAuth-from-PHP">earlier post about consuming OAuth</a>), and as a provider, we need to handle that request. In my example, I chose to pass the variables as GET parameters, but you could adapt this to handle POST variables or information contained in HTTP headers.
</blockquote>
<p>
She includes the code (using the functionality of the <a href="http://pecl.php.net/oauth">pecl_oauth extension</a>) to provide a token and the three functions you'll need to define to get things working - the consumerHandler, the tokenHandler and timestampNonceHandler. She also includes a sample database table structure for storing the OAuth information for a user.
</p>]]></description>
      <pubDate>Fri, 20 May 2011 08:39:17 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Lorna Mitchell's Blog: PHP OAuth Provider: Initial Requirements]]></title>
      <guid>http://www.phpdeveloper.org/news/16319</guid>
      <link>http://www.phpdeveloper.org/news/16319</link>
      <description><![CDATA[<p>
<i>Lorna Mitchell</i> has a quick post related to some of the OAuth work she's done on both sides, consumer and provider. <a href="http://www.lornajane.net/posts/2011/PHP-OAuth-Provider-Initial-Requirements">This latest post</a> relates to the OAuth pages and endpoints that are needed as a part of the authentication process.
</p>
<blockquote>
This article uses the <a href="http://pecl.php.net/oauth">pecl_oauth extension</a> and builds on <a href="http://toys.lerdorf.com/archives/55-Writing-an-OAuth-Provider-Service.html">Rasmus' OAuth Provider</a> post. [...] OAuth has a little more baggage with it than just passing a username and password to an API. 
</blockquote>
<p>
She lists the five things you'll need for your service and talks a bit about the registration process and how the consumer key/consumer secret keys are generated. There's no strict definition on them, so her example uses a combination of <a href="http://php.net/sha1">sha1</a>, <a href="http://php.net/mt_rand">mt_rand</a> and <a href="http://php.net/substr">substr</a> to get the job done. She also includes a sample "consumers" table for your reference.
</p>]]></description>
      <pubDate>Tue, 10 May 2011 10:04:59 -0500</pubDate>
    </item>
  </channel>
</rss>
