<?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>Marginally Clever &#187; session</title>
	<atom:link href="http://www.marginallyclever.com/tag/session/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marginallyclever.com</link>
	<description>DIY Robotics, automation, tools, manufacturing, and everything related</description>
	<lastBuildDate>Sun, 05 Feb 2012 22:32:31 +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>PHP login handling tutorial &#8211; sessions &amp; cookies included</title>
		<link>http://www.marginallyclever.com/2009/06/php-login-handling-tutorial-sessions-cookies-included/</link>
		<comments>http://www.marginallyclever.com/2009/06/php-login-handling-tutorial-sessions-cookies-included/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 18:06:03 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.marginallyclever.com/?p=41</guid>
		<description><![CDATA[I see a lot of people trying to write code to authenticate users logging into a PHP website.  This is some code I cobbled together in december of 2008 and it has worked problem free since then.]]></description>
			<content:encoded><![CDATA[<p>I see a lot of people trying to write code to authenticate users logging into a PHP website.  This is some code I cobbled together in december of 2008 and it has worked problem free since then.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// I've already sanitized all GET, POST, and COOKIE data at this point.</span>
<span style="color: #000000; font-weight: bold;">function</span> check_login<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$DB</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000088;">$login_justnow</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// if the user isn't logged in and they're POSTing a login request, process it</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'user/id'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'login'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$name</span><span style="color: #339933;">=</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'login_name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>  <span style="color: #000088;">$remember_me</span><span style="color: #339933;">=</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'remember_me'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>?<span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$pass</span><span style="color: #339933;">=</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'login_pass'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$user_id</span><span style="color: #339933;">=</span><span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>QueryXY<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT id FROM `users` WHERE name='<span style="color: #006699; font-weight: bold;">$name</span>' AND pass='<span style="color: #006699; font-weight: bold;">$pass</span>' AND confirmed='1' LIMIT 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      account_login<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #339933;">,</span><span style="color: #000088;">$remember_me</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$login_justnow</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$name</span><span style="color: #339933;">=</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/given_name&quot;</span><span style="color: #009900;">&#41;</span>?<span style="color: #0000ff;">', '</span><span style="color: #339933;">.</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/given_name&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
      add_notice<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Welcome<span style="color: #006699; font-weight: bold;">$name</span>!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      add_error<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Login failed.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      account_logout<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// if the user isn't logged in but has a COOKIE, process it</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/id&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_COOKIE</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;remember_me&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #339933;">,</span><span style="color: #000088;">$cookie_code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">=@</span><span style="color: #990000;">unserialize</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_COOKIE</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;remember_me&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cookie_code</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$cookie</span><span style="color: #339933;">=</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cookie_code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$result</span><span style="color: #339933;">=</span><span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>QueryArray<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM `users` WHERE id='<span style="color: #006699; font-weight: bold;">$user_id</span>' AND cookie='<span style="color: #006699; font-weight: bold;">$cookie</span>' AND confirmed='1' LIMIT 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        account_login<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$login_justnow</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$name</span><span style="color: #339933;">=</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/given_name&quot;</span><span style="color: #009900;">&#41;</span>?<span style="color: #0000ff;">', '</span><span style="color: #339933;">.</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/given_name&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
        add_notice<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Welcome<span style="color: #006699; font-weight: bold;">$name</span>!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// if the user's session says they're logged in, process it</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/id&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #000088;">$login_justnow</span><span style="color: #339933;">===</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$user_id</span><span style="color: #339933;">=</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/id&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$cookie</span><span style="color: #339933;">=</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/cookie&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$ip</span><span style="color: #339933;">=</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/ip&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$session</span><span style="color: #339933;">=</span><span style="color: #990000;">session_id</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$query</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;SELECT * FROM `users` WHERE id='<span style="color: #006699; font-weight: bold;">$user_id</span>' AND ip='<span style="color: #006699; font-weight: bold;">$ip</span>' AND session='<span style="color: #006699; font-weight: bold;">$session</span>' AND cookie='<span style="color: #006699; font-weight: bold;">$cookie</span>' AND confirmed='1' LIMIT 1&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$result</span><span style="color: #339933;">=</span><span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>DoQuery<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>NumRows<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      account_login<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      add_error<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Session security failed.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      account_logout<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>EndQuery<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// check if the user actually has rights to this part of the site - your implementation may vary</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> account_login<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #339933;">,</span><span style="color: #000088;">$remember_me</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$DB</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>user_is_logged_in<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// update cookie</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$remember_me</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$cookie_code</span><span style="color: #339933;">=</span>generate_random_string<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$cookie_str</span><span style="color: #339933;">=</span><span style="color: #990000;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cookie_code</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'remember_me'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cookie_str</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">60</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">60</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">24</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">30</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    add_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/cookie&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$cookie_code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    remove_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/cookie&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// update session security</span>
  <span style="color: #000088;">$ip</span><span style="color: #339933;">=</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$session</span><span style="color: #339933;">=</span><span style="color: #990000;">session_id</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$cookie_code</span><span style="color: #339933;">=</span>get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/cookie&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$cookie</span><span style="color: #339933;">=</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cookie_code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>DoQuery<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE `users` SET last_on=NOW(), session='<span style="color: #006699; font-weight: bold;">$session</span>'&quot;</span>
    <span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cookie_code</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span>?<span style="color: #0000ff;">&quot;, cookie='&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$cookie</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;, ip='<span style="color: #006699; font-weight: bold;">$ip</span>' WHERE id='<span style="color: #006699; font-weight: bold;">$user_id</span>' LIMIT 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// update session info</span>
  <span style="color: #000088;">$result</span><span style="color: #339933;">=</span><span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>DoQuery<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM `users` WHERE id='<span style="color: #006699; font-weight: bold;">$user_id</span>' LIMIT 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$row</span><span style="color: #339933;">=</span><span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>FetchAssoc<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    add_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$k</span><span style="color: #339933;">,</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000088;">$DB</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>EndQuery<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// check if any other part of your system needs to know about a user logging in.</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> user_is_logged_in<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">return</span> get_session<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user/id&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> generate_random_string<span style="color: #009900;">&#40;</span><span style="color: #000088;">$length</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">32</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$random</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #990000;">srand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>double<span style="color: #009900;">&#41;</span><span style="color: #990000;">microtime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$char_list</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$char_list</span><span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;abcdefghijklmnopqrstuvwxyz&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$char_list</span><span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;1234567890&quot;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #000088;">$length</span><span style="color: #339933;">;++</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$random</span><span style="color: #339933;">.=</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$char_list</span><span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$char_list</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
 <span style="color: #b1b100;">return</span> <span style="color: #000088;">$random</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.marginallyclever.com/2009/06/php-login-handling-tutorial-sessions-cookies-included/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

