diff logintets/login.phps @ 0:477258d09353 boosterpack

[svn r1] initial import
author robert
date Sun, 30 Aug 2009 02:19:26 -0400
parents
children
line wrap: on
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/logintets/login.phps	Sun Aug 30 02:19:26 2009 -0400
     1.3 @@ -0,0 +1,4 @@
     1.4 +<code><font color="#000000">
     1.5 +<font color="#0000BB">&lt;?php
     1.6 </font><font color="#FF8000">/***********************
     1.7 Makes&nbsp;use&nbsp;of&nbsp;two&nbsp;MySQL&nbsp;tables.
     1.8 
     1.9 users:
    1.10 CREATE&nbsp;TABLE&nbsp;`users`&nbsp;(
    1.11 &nbsp;&nbsp;`id`&nbsp;int(11)&nbsp;NOT&nbsp;NULL&nbsp;auto_increment,
    1.12 &nbsp;&nbsp;`username`&nbsp;varchar(20)&nbsp;default&nbsp;NULL,
    1.13 &nbsp;&nbsp;`password`&nbsp;varchar(40)&nbsp;default&nbsp;NULL,
    1.14 &nbsp;&nbsp;`fullname`&nbsp;varchar(30)&nbsp;default&nbsp;NULL,
    1.15 &nbsp;&nbsp;PRIMARY&nbsp;KEY&nbsp;&nbsp;(`id`)
    1.16 )&nbsp;TYPE=MyISAM
    1.17 
    1.18 seeds:
    1.19 CREATE&nbsp;TABLE&nbsp;`seeds`&nbsp;(
    1.20 &nbsp;&nbsp;`id`&nbsp;int(11)&nbsp;NOT&nbsp;NULL&nbsp;auto_increment,
    1.21 &nbsp;&nbsp;`seed`&nbsp;timestamp(14)&nbsp;NOT&nbsp;NULL,
    1.22 &nbsp;&nbsp;PRIMARY&nbsp;KEY&nbsp;&nbsp;(`id`)
    1.23 )&nbsp;TYPE=MyISAM
    1.24 
    1.25 */
    1.26 
    1.27 //&nbsp;connect&nbsp;to&nbsp;mysql
    1.28 </font><font color="#0000BB">$mysql&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">mysql_connect</font><font color="#007700">(</font><font color="#DD0000">'localhost'</font><font color="#007700">,</font><font color="#DD0000">'###USERNAME###'</font><font color="#007700">,</font><font color="#DD0000">'###PASSWORD###'</font><font color="#007700">);
    1.29 
    1.30 </font><font color="#FF8000">//&nbsp;fail&nbsp;on&nbsp;database&nbsp;errors
    1.31 </font><font color="#007700">if&nbsp;(!</font><font color="#0000BB">$mysql</font><font color="#007700">)&nbsp;{
    1.32 &nbsp;&nbsp;&nbsp;&nbsp;die(</font><font color="#DD0000">'false|Could&nbsp;not&nbsp;connect&nbsp;to&nbsp;MySQL'</font><font color="#007700">);
    1.33 }
    1.34 
    1.35 </font><font color="#FF8000">//&nbsp;connect&nbsp;to&nbsp;the&nbsp;database
    1.36 </font><font color="#0000BB">mysql_select_db</font><font color="#007700">(</font><font color="#DD0000">'jamesdam_ajaxlogin'</font><font color="#007700">,&nbsp;</font><font color="#0000BB">$mysql</font><font color="#007700">);
    1.37 
    1.38 </font><font color="#FF8000">//&nbsp;one&nbsp;task&nbsp;of&nbsp;the&nbsp;server&nbsp;is&nbsp;to&nbsp;provide&nbsp;random&nbsp;values&nbsp;to&nbsp;hash&nbsp;with
    1.39 </font><font color="#007700">if&nbsp;(</font><font color="#0000BB">$_GET</font><font color="#007700">[</font><font color="#DD0000">'task'</font><font color="#007700">]==</font><font color="#DD0000">'getseed'</font><font color="#007700">)
    1.40 {
    1.41 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">mysql_query</font><font color="#007700">(</font><font color="#DD0000">'INSERT&nbsp;INTO&nbsp;seeds&nbsp;VALUES()'</font><font color="#007700">);&nbsp;</font><font color="#FF8000">//&nbsp;insert&nbsp;a&nbsp;new&nbsp;row&nbsp;with&nbsp;default&nbsp;values
    1.42 &nbsp;&nbsp;&nbsp;&nbsp;
    1.43 &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;get&nbsp;the&nbsp;values&nbsp;from&nbsp;the&nbsp;row&nbsp;back
    1.44 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$result&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">mysql_query</font><font color="#007700">(</font><font color="#DD0000">'SELECT&nbsp;id,&nbsp;seed&nbsp;FROM&nbsp;seeds&nbsp;ORDER&nbsp;BY&nbsp;id&nbsp;DESC&nbsp;LIMIT&nbsp;1'</font><font color="#007700">);
    1.45 
    1.46 &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</font><font color="#0000BB">$result</font><font color="#007700">)&nbsp;{&nbsp;</font><font color="#FF8000">//&nbsp;fail&nbsp;on&nbsp;error
    1.47 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">die(</font><font color="#DD0000">'false|'</font><font color="#007700">.</font><font color="#0000BB">mysql_error</font><font color="#007700">());
    1.48 &nbsp;&nbsp;&nbsp;&nbsp;}
    1.49 
    1.50 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$row&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">mysql_fetch_assoc</font><font color="#007700">(</font><font color="#0000BB">$result</font><font color="#007700">);&nbsp;</font><font color="#FF8000">//&nbsp;only&nbsp;one&nbsp;row&nbsp;so&nbsp;take&nbsp;the&nbsp;first&nbsp;row
    1.51 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">echo(</font><font color="#0000BB">$row</font><font color="#007700">[</font><font color="#DD0000">'id'</font><font color="#007700">].</font><font color="#DD0000">'|'</font><font color="#007700">.</font><font color="#0000BB">$row</font><font color="#007700">[</font><font color="#DD0000">'seed'</font><font color="#007700">]);&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;write&nbsp;back&nbsp;the&nbsp;data&nbsp;in&nbsp;form&nbsp;id|random_value
    1.52 </font><font color="#007700">}
    1.53 
    1.54 </font><font color="#FF8000">//&nbsp;the&nbsp;other&nbsp;task&nbsp;of&nbsp;the&nbsp;server&nbsp;is&nbsp;to&nbsp;check&nbsp;a&nbsp;username/password&nbsp;combination
    1.55 
    1.56 </font><font color="#007700">else&nbsp;if&nbsp;(</font><font color="#0000BB">$_GET</font><font color="#007700">[</font><font color="#DD0000">'task'</font><font color="#007700">]==</font><font color="#DD0000">'checklogin'</font><font color="#007700">)&nbsp;{
    1.57 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;formulate&nbsp;query&nbsp;for&nbsp;username&nbsp;&nbsp;&nbsp;&nbsp;
    1.58 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$sql&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#DD0000">'SELECT&nbsp;*&nbsp;FROM&nbsp;users&nbsp;WHERE&nbsp;username&nbsp;=&nbsp;\''&nbsp;</font><font color="#007700">.&nbsp;</font><font color="#0000BB">mysql_real_escape_string</font><font color="#007700">(</font><font color="#0000BB">$_GET</font><font color="#007700">[</font><font color="#DD0000">'username'</font><font color="#007700">])&nbsp;.&nbsp;</font><font color="#DD0000">'\''</font><font color="#007700">;
    1.59 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$result&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">mysql_query</font><font color="#007700">(</font><font color="#0000BB">$sql</font><font color="#007700">);
    1.60 &nbsp;&nbsp;&nbsp;&nbsp;
    1.61 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;fail&nbsp;on&nbsp;sql&nbsp;failure
    1.62 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">if&nbsp;(!</font><font color="#0000BB">$result</font><font color="#007700">)&nbsp;&nbsp;{
    1.63 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(</font><font color="#DD0000">'false|Could&nbsp;not&nbsp;connect&nbsp;to&nbsp;login&nbsp;database.&nbsp;&nbsp;Please&nbsp;try&nbsp;again'</font><font color="#007700">);
    1.64 &nbsp;&nbsp;&nbsp;&nbsp;}
    1.65 &nbsp;&nbsp;&nbsp;&nbsp;
    1.66 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;get&nbsp;the&nbsp;first&nbsp;user&nbsp;with&nbsp;username&nbsp;in&nbsp;the&nbsp;table&nbsp;(should&nbsp;only&nbsp;be&nbsp;one)
    1.67 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$user_row&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">mysql_fetch_assoc</font><font color="#007700">(</font><font color="#0000BB">$result</font><font color="#007700">);
    1.68 
    1.69 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;if&nbsp;there&nbsp;isn't&nbsp;one
    1.70 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">if&nbsp;(!</font><font color="#0000BB">$user_row</font><font color="#007700">)
    1.71 &nbsp;&nbsp;&nbsp;&nbsp;{
    1.72 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;then&nbsp;the&nbsp;username&nbsp;doesn't&nbsp;exist,&nbsp;but&nbsp;don't&nbsp;let&nbsp;the&nbsp;user&nbsp;know&nbsp;that&nbsp;this&nbsp;is&nbsp;the&nbsp;problem
    1.73 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;rather&nbsp;inform&nbsp;them&nbsp;more&nbsp;vaguely&nbsp;that&nbsp;the&nbsp;combination&nbsp;is&nbsp;incorrect;&nbsp;prevents&nbsp;someone&nbsp;from
    1.74 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;fishing&nbsp;for&nbsp;valid&nbsp;usernames
    1.75 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">die(</font><font color="#DD0000">'false|Invalid&nbsp;username&nbsp;and&nbsp;password&nbsp;combination.'</font><font color="#007700">);
    1.76 &nbsp;&nbsp;&nbsp;&nbsp;}
    1.77 &nbsp;&nbsp;&nbsp;&nbsp;
    1.78 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;formulate&nbsp;query&nbsp;for&nbsp;random&nbsp;timestamp&nbsp;for&nbsp;given&nbsp;id
    1.79 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$sql&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#DD0000">'SELECT&nbsp;*&nbsp;FROM&nbsp;seeds&nbsp;WHERE&nbsp;id='&nbsp;</font><font color="#007700">.&nbsp;(int)</font><font color="#0000BB">$_GET</font><font color="#007700">[</font><font color="#DD0000">'id'</font><font color="#007700">];
    1.80 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$result&nbsp;</font><font color="#007700">=&nbsp;&nbsp;</font><font color="#0000BB">mysql_query</font><font color="#007700">(</font><font color="#0000BB">$sql</font><font color="#007700">);
    1.81 
    1.82 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;die&nbsp;if&nbsp;no&nbsp;value&nbsp;for&nbsp;given&nbsp;id
    1.83 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">if&nbsp;(!</font><font color="#0000BB">$result</font><font color="#007700">)&nbsp;{
    1.84 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(</font><font color="#DD0000">'false|Unknown&nbsp;error&nbsp;(hacking&nbsp;attempt).'</font><font color="#007700">);
    1.85 &nbsp;&nbsp;&nbsp;&nbsp;}
    1.86 
    1.87 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;get&nbsp;the&nbsp;first&nbsp;(only)&nbsp;seed
    1.88 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$seed_row&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">mysql_fetch_assoc</font><font color="#007700">(</font><font color="#0000BB">$result</font><font color="#007700">);
    1.89 &nbsp;&nbsp;&nbsp;&nbsp;
    1.90 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;fail&nbsp;if&nbsp;no&nbsp;row
    1.91 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">if&nbsp;(!</font><font color="#0000BB">$seed_row</font><font color="#007700">)&nbsp;{
    1.92 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(</font><font color="#DD0000">'false|Unknown&nbsp;error&nbsp;(hacking&nbsp;attempt).'</font><font color="#007700">);
    1.93 &nbsp;&nbsp;&nbsp;&nbsp;}
    1.94 &nbsp;&nbsp;&nbsp;&nbsp;
    1.95 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;if&nbsp;the&nbsp;md5&nbsp;hashes&nbsp;are&nbsp;equal&nbsp;to&nbsp;those&nbsp;generated&nbsp;by&nbsp;the&nbsp;clientside&nbsp;js
    1.96 &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">if&nbsp;(</font><font color="#0000BB">md5</font><font color="#007700">(</font><font color="#0000BB">$user_row</font><font color="#007700">[</font><font color="#DD0000">'password'</font><font color="#007700">]&nbsp;.&nbsp;</font><font color="#0000BB">$seed_row</font><font color="#007700">[</font><font color="#DD0000">'seed'</font><font color="#007700">])&nbsp;==&nbsp;</font><font color="#0000BB">$_GET</font><font color="#007700">[</font><font color="#DD0000">'hash'</font><font color="#007700">])&nbsp;{
    1.97 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;logged&nbsp;in
    1.98 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">echo(</font><font color="#DD0000">'true|'&nbsp;</font><font color="#007700">.&nbsp;&nbsp;</font><font color="#0000BB">$user_row</font><font color="#007700">[</font><font color="#DD0000">'fullname'</font><font color="#007700">]);
    1.99 
   1.100 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;now&nbsp;remove&nbsp;the&nbsp;random&nbsp;key&nbsp;that&nbsp;was&nbsp;made&nbsp;for&nbsp;this&nbsp;request
   1.101 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">mysql_query</font><font color="#007700">(</font><font color="#DD0000">'DELETE&nbsp;FROM&nbsp;s&nbsp;WHERE&nbsp;id='&nbsp;</font><font color="#007700">.&nbsp;(int)</font><font color="#0000BB">$_GET</font><font color="#007700">[</font><font color="#DD0000">'id'</font><font color="#007700">]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   1.102 &nbsp;&nbsp;&nbsp;&nbsp;}
   1.103 &nbsp;&nbsp;&nbsp;&nbsp;else
   1.104 &nbsp;&nbsp;&nbsp;&nbsp;{
   1.105 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;not&nbsp;logged&nbsp;in..&nbsp;incorrect&nbsp;password
   1.106 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">die(</font><font color="#DD0000">'false|Invalid&nbsp;username&nbsp;and&nbsp;password&nbsp;combination.'</font><font color="#007700">);
   1.107 &nbsp;&nbsp;&nbsp;&nbsp;}
   1.108 }
   1.109 </font><font color="#0000BB">?&gt;</font>
   1.110 +</font>
   1.111 +</code>
   1.112 \ No newline at end of file