

// Añadir la hoja de estilos
document.write('<link rel="stylesheet" type="text/css" media="screen" href="http://sourcecookbook.com/css/geshi.css" />');


// ESCRIBIR EL CÓDIGO HTML:

document.write('<div id="scbRecipe-60">');

document.write('<p style="font-family: arial, sans-serif; margin: 0 0 0 0; font-size: 13px; color: #696969; background: #fff; padding: 4px;"><strong><a href="http://sourcecookbook.com/es/recipes/60/janrain-s-php-openid-library-fixed-for-php-5-3-and-how-i-did-it">Janrain&#039;s PHP OpenID library fixed for PHP 5.3 (and how I did it)</a></strong> by miguelSantirso</p>');
	document.write('<p>First things first. Here you can <strong><a href=\"http://miguelsantirso.es/wp-content/uploads/2009/10/PHP-OpenID-PHP5_3.zip\">download my version of Janrain\'s PHP OpenId library</a></strong>, fixed for PHP 5.3.</p>'+'\n');
	document.write(''+'\n');
	document.write('<p>Now, I will explain what I did to make it work.</p>'+'\n');
	document.write(''+'\n');
	document.write('<p>I found the first hints to solve the problem in this <a href=\"http://trac.openidenabled.com/trac/ticket/337\">ticket at the library\'s trac</a>. More precisely, the second comment in which someone suggested to fix one of the first errors by modifying the <code>Auth_OpenID_detectMathLibrary</code> (File: Auth/BigMath.php Line: 365). The new function looks like this:</p>'+'\n');
	document.write(''+'\n');
	document.write('<div class=\"php ulSyntaxHighlighter\" style=\"font-family:monospace;\"><div class=\"head\">PHP</div><ol><li class=\"li1\"><div class=\"de1\"><span class=\"kw2\">function</span> Auth_OpenID_detectMathLibrary<span class=\"br0\">&#40;</span><span class=\"re0\">$exts</span><span class=\"br0\">&#41;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\"><span class=\"br0\">&#123;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; <span class=\"re0\">$loaded</span> <span class=\"sy0\">=</span> <span class=\"kw4\">false</span><span class=\"sy0\">;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp;</div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp;<span class=\"co1\">// &gt; This if is the only modification to the function &lt;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp;<span class=\"kw1\">if</span> <span class=\"br0\">&#40;</span> <span class=\"sy0\">!</span> <a href=\"http://www.php.net/function_exists\"><span class=\"kw3\">function_exists</span></a><span class=\"br0\">&#40;</span> <span class=\"st_h\">\'dl\'</span> <span class=\"br0\">&#41;</span> <span class=\"br0\">&#41;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; <span class=\"br0\">&#123;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return</span> <span class=\"kw4\">false</span><span class=\"sy0\">;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; <span class=\"br0\">&#125;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp;</div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; <span class=\"kw1\">foreach</span> <span class=\"br0\">&#40;</span><span class=\"re0\">$exts</span> <span class=\"kw1\">as</span> <span class=\"re0\">$extension</span><span class=\"br0\">&#41;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; <span class=\"br0\">&#123;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; <span class=\"co1\">// See if the extension specified is already loaded.</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if</span> <span class=\"br0\">&#40;</span><span class=\"re0\">$extension</span><span class=\"br0\">&#91;</span><span class=\"st_h\">\'extension\'</span><span class=\"br0\">&#93;</span> <span class=\"sy0\">&amp;&amp;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http://www.php.net/extension_loaded\"><span class=\"kw3\">extension_loaded</span></a><span class=\"br0\">&#40;</span><span class=\"re0\">$extension</span><span class=\"br0\">&#91;</span><span class=\"st_h\">\'extension\'</span><span class=\"br0\">&#93;</span><span class=\"br0\">&#41;</span><span class=\"br0\">&#41;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$loaded</span> <span class=\"sy0\">=</span> <span class=\"kw4\">true</span><span class=\"sy0\">;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp;</div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">// Try to load dynamic modules.</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if</span> <span class=\"br0\">&#40;</span><span class=\"sy0\">!</span><span class=\"re0\">$loaded</span><span class=\"br0\">&#41;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">foreach</span> <span class=\"br0\">&#40;</span><span class=\"re0\">$extension</span><span class=\"br0\">&#91;</span><span class=\"st_h\">\'modules\'</span><span class=\"br0\">&#93;</span> <span class=\"kw1\">as</span> <span class=\"re0\">$module</span><span class=\"br0\">&#41;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if</span> <span class=\"br0\">&#40;</span><span class=\"sy0\">@</span><a href=\"http://www.php.net/dl\"><span class=\"kw3\">dl</span></a><span class=\"br0\">&#40;</span><span class=\"re0\">$module</span> <span class=\"sy0\">.</span> <span class=\"st0\">&quot;.&quot;</span> <span class=\"sy0\">.</span> PHP_SHLIB_SUFFIX<span class=\"br0\">&#41;</span><span class=\"br0\">&#41;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$loaded</span> <span class=\"sy0\">=</span> <span class=\"kw4\">true</span><span class=\"sy0\">;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break</span><span class=\"sy0\">;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp;</div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">// If the load succeeded, supply an instance of</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">// Auth_OpenID_MathWrapper which wraps the specified</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">// module\'s functionality.</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if</span> <span class=\"br0\">&#40;</span><span class=\"re0\">$loaded</span><span class=\"br0\">&#41;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return</span> <span class=\"re0\">$extension</span><span class=\"sy0\">;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; <span class=\"br0\">&#125;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\">&nbsp;</div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp; &nbsp; <span class=\"kw1\">return</span> <span class=\"kw4\">false</span><span class=\"sy0\">;</span></div></li>'+'\n');
	document.write('<li class=\"li1\"><div class=\"de1\"><span class=\"br0\">&#125;</span></div></li>'+'\n');
	document.write('<li class=\"li2\"><div class=\"de2\">&nbsp;</div></li>'+'\n');
	document.write('</ol></div>'+'\n');
	document.write(''+'\n');
	document.write('<p>&shy;</p>'+'\n');
	document.write(''+'\n');
	document.write('<p>After modifying that function the library seemed to work better, but I kept getting a lot of warnings and errors. To fix them I removed all the pass-by-reference elements (as suggested <a href=\"http://stackoverflow.com/questions/1245741/openid-in-php-5-3/1482175#1482175\">here</a>) and added the <code>static</code> keyword to all the static functions. After doing this with a lot of patience, I finally got it working even using Google as vendor.</p>'+'\n');
	document.write(''+'\n');
	document.write('<p>You can do this yourself, but you will probably prefer just to <a href=\"http://miguelsantirso.es/wp-content/uploads/2009/10/PHP-OpenID-PHP5_3.zip\">download my code</a> and keep it if it works for you.</p>'+'\n');
	document.write(''+'\n');

document.write('<p style="font-family: arial, sans-serif; margin: 0; text-align: right; font-size: 13px; color: #696969; background: #fff; padding: 4px;"><strong>Syntax highlighting powered by <a href="http://sourcecookbook.com">The Source CookBook</a></strong></p>');
document.write('</div>');

