<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cakebaker &#187; tutorial</title>
	<atom:link href="http://cakebaker.42dh.com/tags/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://cakebaker.42dh.com</link>
	<description>baking cakes with CakePHP</description>
	<lastBuildDate>Tue, 20 Dec 2011 15:29:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Building a DVD catalog application with CakePHP</title>
		<link>http://cakebaker.42dh.com/2008/09/07/building-a-dvd-catalog-application-with-cakephp/</link>
		<comments>http://cakebaker.42dh.com/2008/09/07/building-a-dvd-catalog-application-with-cakephp/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 09:31:27 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/?p=789</guid>
		<description><![CDATA[Back in April of this year, James Fairhurst started a series in his blog about creating a DVD catalog application with CakePHP 1.2. The series consists of 12 parts and ended this week. Here are all parts, they are best read one after the other: Part 1: Setup of CakePHP and creation of the tables [...]]]></description>
			<content:encoded><![CDATA[<p>Back in April of this year, <a href="http://www.jamesfairhurst.co.uk">James Fairhurst</a> started a series in his blog about creating a DVD catalog application with CakePHP 1.2. The series consists of 12 parts and ended this week. Here are all parts, they are best read one after the other:</p>
<ul>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_1">Part 1</a>: Setup of CakePHP and creation of the tables and the corresponding models</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_2">Part 2</a>: Creating the first controller and the corresponding views</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_3">Part 3</a>: Creating two more controllers with the respective views</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_4">Part 4</a>: File upload and introduction of <a href="http://jquery.com/">jQuery</a></li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_5">Part 5</a>: Working with a HABTM association</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_6">Part 6</a>: Adding authentication to the application</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_7">Part 7</a>: Graphical design of the application</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_8">Part 8</a>: Realizing the design with HTML and CSS</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_9">Part 9</a>: Introduction to layouts and elements</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_10">Part 10</a>: Defining the start page</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_11">Part 11</a>: Using requestAction()</li>
<li><a href="http://www.jamesfairhurst.co.uk/posts/view/full_cakephp_application_part_12">Part 12</a>: Finishing the application</li>
</ul>
<p>The final result can be seen at <a href="http://cakecatalog.jamesfairhurst.co.uk/">http://cakecatalog.jamesfairhurst.co.uk/</a>.</p>
<p>The series is ideal for a rainy Sunday like today, as it requires quite some time to follow it ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2008/09/07/building-a-dvd-catalog-application-with-cakephp/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Building a Facebook application with CakePHP</title>
		<link>http://cakebaker.42dh.com/2007/10/22/building-a-facebook-application-with-cakephp/</link>
		<comments>http://cakebaker.42dh.com/2007/10/22/building-a-facebook-application-with-cakephp/#comments</comments>
		<pubDate>Mon, 22 Oct 2007 08:12:33 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/10/22/building-a-facebook-application-with-cakephp/</guid>
		<description><![CDATA[On the Facebook Developer blog Matt Huggins published a tutorial which explains the steps you have to perform to build your first Facebook application with CakePHP. Thanks to that tutorial it should be rather easy to build such an application (I haven&#8217;t tried it myself yet). PS: It seems as if today two new versions [...]]]></description>
			<content:encoded><![CDATA[<p>On the <a href="http://facebook-developer.net/">Facebook Developer</a> blog Matt Huggins published a <a href="http://facebook-developer.net/2007/10/18/building-your-first-facebook-application-with-cakephp/">tutorial</a> which explains the steps you have to perform to build your first <a href="http://www.facebook.com">Facebook</a> application with CakePHP. Thanks to that tutorial it should be rather easy to build such an application (I haven&#8217;t tried it myself yet).</p>
<p>PS: It seems as if today two new versions of CakePHP get released. It is already announced on the <a href="http://cakephp.org">CakePHP website</a>, <del>but the files are not yet available</del> the files are now available for download on <a href="http://cakeforge.org/projects/cakephp/">CakeForge</a>. Instead of the long awaited beta release of CakePHP 1.2 it is &#8220;only&#8221; a pre-beta release.</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/10/22/building-a-facebook-application-with-cakephp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Blog tutorial for CakePHP 1.2</title>
		<link>http://cakebaker.42dh.com/2007/10/03/blog-tutorial-for-cakephp-12/</link>
		<comments>http://cakebaker.42dh.com/2007/10/03/blog-tutorial-for-cakephp-12/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 07:08:12 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/10/03/blog-tutorial-for-cakephp-12/</guid>
		<description><![CDATA[The blog tutorial from the manual is probably the tutorial most use resp. used to make their first steps with CakePHP. Unfortunately, it doesn&#8217;t work with CakePHP 1.2, if you follow the tutorial you will get notices and warnings. Not really a nice welcome :&#124; Ahsan wrote some time ago an article in which he [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://manual.cakephp.org/appendix/blog_tutorial">blog tutorial</a> from the manual is probably the tutorial most use resp. used to make their first steps with CakePHP. Unfortunately, it doesn&#8217;t work with CakePHP 1.2, if you follow the tutorial you will get notices and warnings. Not really a nice welcome :|</p>
<p>Ahsan wrote some time ago an <a href="http://ahsanity.wordpress.com/2007/08/31/making-the-blog-tutorial-run-on-cakephp-12">article</a> in which he explains how you can make the blog tutorial work with Cake 1.2. It is not a tutorial on its own, it is more a complement to the tutorial in the manual.</p>
<p>Yesterday, Thomas Diehl has published in his <a href="http://blog.dievolution.net/">blog</a> a &#8220;Blog tutorial for CakePHP 1.2&#8243; trilogy (in german). In the <a href="http://blog.dievolution.net/cakephp/cakephp-12-blog-tutorial-teil-1">first part</a> he introduces some CakePHP basics. <a href="http://blog.dievolution.net/cakephp/cakephp-12-blog-tutorial-teil-2/">Part two</a> is very similar to the blog tutorial from the manual. And in the <a href="http://blog.dievolution.net/cakephp/cakephp-12-blog-tutorial-teil-3/">third part</a> he extends the rudimentary blog by adding comments and writing a helper. It is a good start for german-speaking newbies who want to begin directly with CakePHP 1.2.</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/10/03/blog-tutorial-for-cakephp-12/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Criki &#8211; the creation of a wiki with CakePHP, Part 5</title>
		<link>http://cakebaker.42dh.com/2007/04/11/criki-the-creation-of-a-wiki-with-cakephp-part-5/</link>
		<comments>http://cakebaker.42dh.com/2007/04/11/criki-the-creation-of-a-wiki-with-cakephp-part-5/#comments</comments>
		<pubDate>Wed, 11 Apr 2007 06:37:03 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/04/11/criki-the-creation-of-a-wiki-with-cakephp-part-5/</guid>
		<description><![CDATA[On IBM&#8217;s developerWorks the fifth and last part in the series &#8220;Create an interactive production wiki using PHP&#8221; has been published. In this part some blog functionality is added to the wiki: This tutorial deals with creating an open blog for Criki. You have built the basic wiki features, and you have added task management [...]]]></description>
			<content:encoded><![CDATA[<p>On IBM&#8217;s developerWorks the fifth and last part in the series &#8220;Create an interactive production wiki using PHP&#8221; has been published. In this part some blog functionality is added to the wiki:</p>
<blockquote><p>
This tutorial deals with creating an open blog for Criki. You have built the basic wiki features, and you have added task management for your users. An open blog is another valuable feature that will allow your users a place to hold public discussions. Topics include:<br />
- What is meant by &#8220;open blog&#8221;<br />
- Blog workflow design<br />
- Building out the blog database table<br />
- Basic blog features
</p></blockquote>
<p>You can read the tutorial <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki5/index.html">online</a> (registration required) or as a <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki5/os-php-wiki5-a4.pdf">PDF</a>.</p>
<p>Previous parts:<br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki1/os-php-wiki1-a4.pdf">Part 1</a><br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki2/os-php-wiki2-a4.pdf">Part 2</a><br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki3/os-php-wiki3-a4.pdf">Part 3</a><br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki4/os-php-wiki4-a4.pdf">Part 4</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/04/11/criki-the-creation-of-a-wiki-with-cakephp-part-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criki &#8211; the creation of a wiki with CakePHP, Part 4</title>
		<link>http://cakebaker.42dh.com/2007/04/04/criki-the-creation-of-a-wiki-with-cakephp-part-4/</link>
		<comments>http://cakebaker.42dh.com/2007/04/04/criki-the-creation-of-a-wiki-with-cakephp-part-4/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 08:36:05 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/04/04/criki-the-creation-of-a-wiki-with-cakephp-part-4/</guid>
		<description><![CDATA[On IBM&#8217;s developerWorks part 4 of the series &#8220;Create an interactive production wiki using PHP&#8221; has been published: This tutorial deals mainly with task management. Criki (your new wiki engine) has all the basic wiki features you need, but it still lacks those features that will make it useful as a tool to assist in [...]]]></description>
			<content:encoded><![CDATA[<p>On IBM&#8217;s developerWorks part 4 of the series &#8220;Create an interactive production wiki using PHP&#8221; has been published:</p>
<blockquote><p>
This tutorial deals mainly with task management. Criki (your new wiki engine) has all the basic wiki features you need, but it still lacks those features that will make it useful as a tool to assist in production. When it comes to production, task management stands at the top of the needed features list.</p>
<p>Covered topics include:<br />
- Tasks workflow design<br />
- Building out the tasks database table<br />
- Basic task management features
</p></blockquote>
<p>You can read it <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki4/index.html">online</a> (free registration required), or <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki4/os-php-wiki4-a4.pdf">download</a> as PDF.</p>
<p>Previous parts:<br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki1/os-php-wiki1-a4.pdf">Part 1</a><br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki2/os-php-wiki2-a4.pdf">Part 2</a><br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki3/os-php-wiki3-a4.pdf">Part 3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/04/04/criki-the-creation-of-a-wiki-with-cakephp-part-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Criki &#8211; the creation of a wiki with CakePHP, Part 3</title>
		<link>http://cakebaker.42dh.com/2007/03/21/criki-the-creation-of-a-wiki-with-cakephp-part-3/</link>
		<comments>http://cakebaker.42dh.com/2007/03/21/criki-the-creation-of-a-wiki-with-cakephp-part-3/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 10:15:00 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/03/21/criki-the-creation-of-a-wiki-with-cakephp-part-3/</guid>
		<description><![CDATA[On IBM&#8217;s developerWorks the third part of the series &#8220;Create an interactive production wiki with PHP&#8221; has been published. This part deals with file uploads and access control (no, it doesn&#8217;t cover ACL). Read the article online (registration needed) or download it as a PDF. Previous parts: Part 1 as PDF Part 2 as PDF [...]]]></description>
			<content:encoded><![CDATA[<p>On IBM&#8217;s developerWorks the third part of the series &#8220;Create an interactive production wiki with PHP&#8221; has been published. This part deals with file uploads and access control (no, it doesn&#8217;t cover ACL). </p>
<p>Read the <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki3/index.html">article</a> online (registration needed) or download it as a <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki3/os-php-wiki3-a4.pdf">PDF</a>.</p>
<p>Previous parts:<br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki1/os-php-wiki1-a4.pdf">Part 1 as PDF</a><br />
<a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki2/os-php-wiki2-a4.pdf">Part 2 as PDF</a></p>
<p>PS1: CraZyLeGs&#8217; blog has a new virtual home: <a href="http://www.devmoz.com/blog">http://www.devmoz.com/blog</a>.<br />
Ps2: I did a little redesign on my blog and switched back to a two-column layout. I hope it is now I bit less cluttered ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/03/21/criki-the-creation-of-a-wiki-with-cakephp-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criki &#8211; the creation of a wiki with CakePHP, Part 2</title>
		<link>http://cakebaker.42dh.com/2007/03/07/criki-the-creation-of-a-wiki-with-cakephp-part-2/</link>
		<comments>http://cakebaker.42dh.com/2007/03/07/criki-the-creation-of-a-wiki-with-cakephp-part-2/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 09:01:34 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/03/07/criki-the-creation-of-a-wiki-with-cakephp-part-2/</guid>
		<description><![CDATA[On IBM&#8217;s developerWorks the second part of the series &#8220;Create an interactive production wiki using PHP&#8221; has been published. It deals with user registration and custom markup rendering. I am not so happy with this part. First, it uses functions of the HTML helper which are deprecated since version 0.9.2 of CakePHP, like passwordTag() and [...]]]></description>
			<content:encoded><![CDATA[<p>On IBM&#8217;s developerWorks the second part of the series &#8220;Create an interactive production wiki using PHP&#8221; has been published. It deals with user registration and custom markup rendering. </p>
<p>I am not so happy with this part. First, it uses functions of the HTML helper which are deprecated since version 0.9.2 of CakePHP, like passwordTag() and submitTag() (you should use password() resp. submit() instead). And second, I think the rendering of the markup shouldn&#8217;t be done in the controller. It should be done in a component or a helper (depends on whether you look at it as business logic or presentation logic). The advantages: </p>
<ul>
<li>the code would be easier to test</li>
<li>the controller would be easier to read</li>
<li>the markup rendering could be reused</li>
</ul>
<p>Anyway, here the links to the article: <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki2/index.html">article</a> (registration needed), <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki2/os-php-wiki2-a4.pdf">PDF</a></p>
<p><a href="http://cakebaker.42dh.com/2007/02/14/criki-the-creation-of-a-wiki-with-cakephp-part-1/">Part 1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/03/07/criki-the-creation-of-a-wiki-with-cakephp-part-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Criki &#8211; the creation of a wiki with CakePHP, Part 1</title>
		<link>http://cakebaker.42dh.com/2007/02/14/criki-the-creation-of-a-wiki-with-cakephp-part-1/</link>
		<comments>http://cakebaker.42dh.com/2007/02/14/criki-the-creation-of-a-wiki-with-cakephp-part-1/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 18:11:23 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/02/14/criki-the-creation-of-a-wiki-with-cakephp-part-1/</guid>
		<description><![CDATA[IBM&#8217;s developerWorks has started a new series called &#8220;Create an interactive production wiki using PHP&#8221; (requires a free registration) where they will explain the creation of a wiki with CakePHP. There will be five parts in this series: Part 1 of this series will draw the big picture. You will determine how you want the [...]]]></description>
			<content:encoded><![CDATA[<p>IBM&#8217;s developerWorks has started a new series called <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki1/index.html">&#8220;Create an interactive production wiki using PHP&#8221;</a> (requires a free registration) where they will explain the creation of a wiki with CakePHP. There will be five parts in this series:</p>
<ul>
<li>Part 1 of this series will draw the big picture. You will determine how you want the application to look, flow, work, and behave. You&#8217;ll design the database and rough-out some scaffolding.</li>
<li>Part 2 focuses on the primary wiki development, including defining the markup, tracking changes, and file uploads. </li>
<li>In Part 3, you define some users and groups, as well as a way to control access to certain aspects of individual Wiki pages and uploaded files.</li>
<li>Part 4 deals with a Calendaring and Milestones feature to track tasks, to-dos, and progress against set goals. </li>
<li>And in Part 5, you put together an open blog to allow discussion of production topics and concerns. </li>
</ul>
<p>As the previous series it is worth to read.</p>
<p>Update 2007-02-16: Part 1 is now also available as a <a href="https://www6.software.ibm.com/developerworks/education/os-php-wiki1/os-php-wiki1-a4.pdf">PDF</a>. Thanks to Duane O&#8217;Brien.</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/02/14/criki-the-creation-of-a-wiki-with-cakephp-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CakePHP and OpenID</title>
		<link>http://cakebaker.42dh.com/2007/01/11/cakephp-and-openid/</link>
		<comments>http://cakebaker.42dh.com/2007/01/11/cakephp-and-openid/#comments</comments>
		<pubDate>Thu, 11 Jan 2007 16:53:11 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/01/11/cakephp-and-openid/</guid>
		<description><![CDATA[This article is outdated, there is a newer tutorial! You probably heard about OpenID, the open, decentralized, free framework for user-centric digital identity. It allows you to authenticate with just your URI and a password for all services which support OpenID. The integration of OpenID into your (CakePHP) application is rather simple, and I wrote [...]]]></description>
			<content:encoded><![CDATA[<h1 style="color: red; font-size: 2em;">This article is outdated, there is a <a href="http://cakebaker.42dh.com/2008/02/06/new-version-of-the-openid-component/">newer tutorial</a>!</h1>
<p>You probably heard about <a href="http://openid.net/">OpenID</a>, the open, decentralized, free framework for user-centric digital identity. It allows you to authenticate with just your URI and a password for all services which support OpenID. </p>
<p>The integration of OpenID into your (CakePHP) application is rather simple, and I wrote an OpenID component to make it even easier. Here the installation steps:</p>
<ul>
<li><del><a href="http://www.openidenabled.com/openid/libraries/php">Download</a> the PHP OpenID library (thanks to poLK for pointing me to this library)</del> (the necessary files are now bundled with the component)</li>
<li><a href="http://cakebaker.42dh.com/downloads">Get</a> the OpenID component and place it in app/controllers/components</li>
<li>Put the folders &#8220;Auth&#8221; and &#8220;Services&#8221; from the zip to one of your vendors folders</li>
<li>If you don&#8217;t have the <a href="http://ch2.php.net/manual/en/ref.gmp.php">GMP</a> or <a href="http://ch2.php.net/manual/en/ref.bc.php">BCmath</a> extension installed resp. enabled you have to add define(&#8216;Auth_OpenID_NO_MATH_SUPPORT&#8217;, true); to Auth/OpenID/Consumer.php</li>
</ul>
<p>Ok, when this is done, we can start with coding. </p>
<p>As usual when using a component we have to add it to the components array in our controller:</p>
<pre>
var $components = array('Openid');
</pre>
<p>Now we can implement our login action. It will perform three tasks: 1) Showing the login form where the user has to provide his/her OpenID URI, 2) Processing the login form and starting the authentication process, and 3) Processing the response of the OpenID server (see <a href="http://www.openidenabled.com/openid/openid-protocol">&#8220;OpenID protocol&#8221;</a> for a high-level description of the protocol). So the skeleton of our login action looks like:</p>
<pre>
function login() {
    if (!empty($this-&gt;data)) {
       // handle form submission
    } else {
        if (count($_GET) &gt; 1) {
            // process response from OpenID server
        }
    }
}
</pre>
<p>Step 1 is obvious, so I will move directly to step 2: Processing the login form and starting the authentication process. The authenticate function expects three parameters: the OpenID URI, the URL to which the OpenID server will redirect after the authentication process, and a trust root. I am not sure what this &#8220;trust root&#8221; is, up to now I didn&#8217;t found a good explanation. If you know one, please let me know&#8230;</p>
<pre>
if ($this-&gt;User-&gt;create($this-&gt;data) &#038;&#038; $this-&gt;User-&gt;validates()) {
    $this-&gt;Openid-&gt;authenticate($this-&gt;data['User']['openid'], 'http://'.$_SERVER['SERVER_NAME'].'/users/login', 'http://'.$_SERVER['SERVER_NAME']);
}
</pre>
<p>The last step is to verify whether the authentication process was successful. If that is the case you usually set some session variables and redirect to a secured page. </p>
<pre>
$response = $this-&gt;Openid-&gt;getResponse();

if ($response-&gt;status == Auth_OpenID_SUCCESS) {
    // successfully authenticated
}
</pre>
<p>Ok, that&#8217;s it. Here the entire action:</p>
<pre>
function login() {
    if (!empty($this-&gt;data)) {
        if ($this-&gt;User-&gt;create($this-&gt;data) &#038;&#038; $this-&gt;User-&gt;validates()) {
            $this-&gt;Openid-&gt;authenticate($this-&gt;data['User']['openid'], 'http://'.$_SERVER['SERVER_NAME'].'/users/login', 'http://'.$_SERVER['SERVER_NAME']);
        }
    } else {
        if (count($_GET) &gt; 1) {
            $response = $this-&gt;Openid-&gt;getResponse();

            if ($response-&gt;status == Auth_OpenID_SUCCESS) {
                // successfully authenticated
            }
        }
    }
}
</pre>
<p>To test this action you need a valid OpenID, which you can get for example at <a href="https://www.myopenid.com/">MyOpenID</a>.</p>
<p>Personally, I am switching to OpenID as it looks pretty cool and I can get rid of quite some code.</p>
<p>Anyway, have fun with OpenID :)</p>
<p>Update 2007-03-02: Installation instructions modified as now the necessary vendor files are bundled with the component.</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/01/11/cakephp-and-openid/feed/</wfw:commentRss>
		<slash:comments>64</slash:comments>
		</item>
		<item>
		<title>Cook up websites fast with CakePHP, part 4</title>
		<link>http://cakebaker.42dh.com/2007/01/10/cook-up-websites-fast-with-cakephp-part-4/</link>
		<comments>http://cakebaker.42dh.com/2007/01/10/cook-up-websites-fast-with-cakephp-part-4/#comments</comments>
		<pubDate>Wed, 10 Jan 2007 07:57:57 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/01/10/cook-up-websites-fast-with-cakephp-part-4/</guid>
		<description><![CDATA[The next part in the series &#8220;Cook up websites fast with CakePHP&#8221; on IBM&#8217;s developerWorks has been published. This part covers session handling and the RequestHandler component: There are multiple ways of saving session data using CakePHP&#8217;s Session component, and each method has its advantages. In this tutorial, you&#8217;ll learn how to use the Session [...]]]></description>
			<content:encoded><![CDATA[<p>The next part in the series &#8220;Cook up websites fast with CakePHP&#8221; on IBM&#8217;s developerWorks has been published. This part covers session handling and the RequestHandler component: </p>
<blockquote><p>
There are multiple ways of saving session data using CakePHP&#8217;s Session component, and each method has its advantages. In this tutorial, you&#8217;ll learn how to use the Session component by incorporating all three ways into your application, so you&#8217;ll be able to pick the best one that works for you. You&#8217;ll also learn how to use the Request Handler component to aid you in your handling of various HTTP requests, including requests from mobile browsers, or requests containing XML or HTML content.
</p></blockquote>
<p>Read the full <a href="http://www-128.ibm.com/developerworks/edu/os-dw-os-php-cake4.html">tutorial</a> online (registration required), or download the <a href="https://www6.software.ibm.com/developerworks/education/os-php-cake4/os-php-cake4-a4.pdf">PDF</a>.</p>
<p>Thanks to ryan for notifying me that part 4 is available.</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/01/10/cook-up-websites-fast-with-cakephp-part-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

