{"id":1490,"date":"2018-01-19T19:22:54","date_gmt":"2018-01-19T19:22:54","guid":{"rendered":"http:\/\/goofy-trucks.flywheelsites.com\/complete-secure-user-auth-library-page-2\/"},"modified":"2018-01-19T19:24:49","modified_gmt":"2018-01-19T19:24:49","slug":"complete-secure-user-auth-library-page-2","status":"publish","type":"post","link":"https:\/\/phpbuilder.com\/complete-secure-user-auth-library-page-2\/","title":{"rendered":"Complete, Secure User Auth Library Page 2"},"content":{"rendered":"<div class=\"phpbuilder-content\">\n<div class=\"phpbuilder-meta\">\n<div class=\"\">By Tim Perdue<\/div>\n<div class=\"\">on July 30, 2000<\/div>\n<\/p><\/div>\n<div id=\"overflow-content\">\n<div class=\"articlePara\">\nHere are the two critical functions in this library &#8211; the token creation and token verification functions.<br \/>\nDon&#8217;t worry &#8211; the rest of the library is included here as well.<\/div>\n<div class=\"articlePhpEx\">\n<font face=\"courier\"><code><span style=\"color: #000000\"><br \/>\n\u00a0<br \/>\n<br \/><span style=\"color: #0000BB\">&lt;?php<\/p>\n<p>$hidden_hash_var<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #DD0000\">'your_secret_password_here'<\/span><span style=\"color: #007700\">;<\/p>\n<p><\/span><span style=\"color: #0000BB\">$LOGGED_IN<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #0000BB\">false<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>unset(<\/span><span style=\"color: #0000BB\">$LOGGED_IN<\/span><span style=\"color: #007700\">);<\/p>\n<p>function\u00a0<\/span><span style=\"color: #0000BB\">user_isloggedin<\/span><span style=\"color: #007700\">()\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0global\u00a0<\/span><span style=\"color: #0000BB\">$user_name<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$id_hash<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$hidden_hash_var<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$LOGGED_IN<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">\/\/have\u00a0we\u00a0already\u00a0run\u00a0the\u00a0hash\u00a0checks?<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\/\/If\u00a0so,\u00a0return\u00a0the\u00a0pre-set,\u00a0trusted\u00a0var<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #007700\">if\u00a0(\u00a0isset(<\/span><span style=\"color: #0000BB\">$LOGGED_IN<\/span><span style=\"color: #007700\">)\u00a0)\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0<\/span><span style=\"color: #0000BB\">$LOGGED_IN<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0}<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">\/\/are\u00a0both\u00a0cookies\u00a0present?<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #007700\">if\u00a0(<\/span><span style=\"color: #0000BB\">$user_name\u00a0<\/span><span style=\"color: #007700\">&amp;&amp;\u00a0<\/span><span style=\"color: #0000BB\">$id_hash<\/span><span style=\"color: #007700\">)\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">\/*<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Create\u00a0a\u00a0hash\u00a0of\u00a0the\u00a0user\u00a0name\u00a0that\u00a0was\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0passed\u00a0in\u00a0from\u00a0the\u00a0cookie\u00a0as\u00a0well\u00a0as\u00a0the\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0trusted\u00a0hidden\u00a0variable<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0If\u00a0this\u00a0hash\u00a0matches\u00a0the\u00a0cookie\u00a0hash,<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0then\u00a0all\u00a0cookie\u00a0vars\u00a0must\u00a0be\u00a0correct\u00a0and<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0thus\u00a0trustable<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0*\/<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$hash<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #0000BB\">md5<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$user_name<\/span><span style=\"color: #007700\">.<\/span><span style=\"color: #0000BB\">$hidden_hash_var<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(<\/span><span style=\"color: #0000BB\">$hash\u00a0<\/span><span style=\"color: #007700\">==\u00a0<\/span><span style=\"color: #0000BB\">$id_hash<\/span><span style=\"color: #007700\">)\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">\/\/hashes\u00a0match\u00a0-\u00a0set\u00a0a\u00a0global\u00a0var\u00a0so\u00a0we\u00a0can\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/call\u00a0this\u00a0function\u00a0repeatedly\u00a0without\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/redoing\u00a0the\u00a0md5()'s<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$LOGGED_IN<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #0000BB\">true<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0<\/span><span style=\"color: #0000BB\">true<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">\/\/hash\u00a0didn't\u00a0match\u00a0-\u00a0must\u00a0be\u00a0a\u00a0hack\u00a0attempt?<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$LOGGED_IN<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #0000BB\">false<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0<\/span><span style=\"color: #0000BB\">false<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$LOGGED_IN<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #0000BB\">false<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0<\/span><span style=\"color: #0000BB\">false<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0}<br \/>\n<br \/>}<\/p>\n<p>function\u00a0<\/span><span style=\"color: #0000BB\">user_set_tokens<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$user_name_in<\/span><span style=\"color: #007700\">)\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">\/*<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0call\u00a0this\u00a0once\u00a0you\u00a0have\u00a0confirmed\u00a0user\u00a0name\u00a0and\u00a0password<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0are\u00a0correct\u00a0in\u00a0the\u00a0database<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0*\/<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #007700\">global\u00a0<\/span><span style=\"color: #0000BB\">$hidden_hash_var<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$user_name<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$id_hash<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0if\u00a0(!<\/span><span style=\"color: #0000BB\">$user_name_in<\/span><span style=\"color: #007700\">)\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$feedback\u00a0<\/span><span style=\"color: #007700\">.=\u00a0\u00a0<\/span><span style=\"color: #DD0000\">'\u00a0ERROR\u00a0-\u00a0User\u00a0Name\u00a0Missing\u00a0When\u00a0Setting\u00a0Tokens\u00a0'<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0<\/span><span style=\"color: #0000BB\">false<\/span><span style=\"color: #007700\">;<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0}<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$user_name<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #0000BB\">strtolower<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$user_name_in<\/span><span style=\"color: #007700\">);<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">\/\/create\u00a0a\u00a0hash\u00a0of\u00a0the\u00a0two\u00a0variables\u00a0we\u00a0know<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$id_hash<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">md5<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$user_name<\/span><span style=\"color: #007700\">.<\/span><span style=\"color: #0000BB\">$hidden_hash_var<\/span><span style=\"color: #007700\">);<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">\/\/set\u00a0cookies\u00a0for\u00a0one\u00a0month\u00a0-\u00a0set\u00a0to\u00a0any\u00a0amount\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\/\/or\u00a0use\u00a00\u00a0for\u00a0a\u00a0session\u00a0cookie<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">setcookie<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">'user_name'<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$user_name<\/span><span style=\"color: #007700\">,(<\/span><span style=\"color: #0000BB\">time<\/span><span style=\"color: #007700\">()+<\/span><span style=\"color: #0000BB\">2592000<\/span><span style=\"color: #007700\">),<\/span><span style=\"color: #DD0000\">'\/'<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #DD0000\">''<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">0<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">setcookie<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">'id_hash'<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$id_hash<\/span><span style=\"color: #007700\">,(<\/span><span style=\"color: #0000BB\">time<\/span><span style=\"color: #007700\">()+<\/span><span style=\"color: #0000BB\">2592000<\/span><span style=\"color: #007700\">),<\/span><span style=\"color: #DD0000\">'\/'<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #DD0000\">''<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">0<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>}<\/p>\n<p><\/span><span style=\"color: #0000BB\">?&gt;<br \/>\n<br \/><\/span><br \/>\n<\/span><br \/>\n<\/code><\/font><\/div>\n<\/div>\n<p><\/p>\n<div style=\"float: left; padding:15px; color:#17AAF3\">\n<div style=\"float:left; padding:2px;\"><a class=\"paginationPageLink\" href=\"tim20000505.html\">\u00ab Previous Page<\/a><\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"tim20000505.html\">1<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"background-color:#B6E5FC; font-size:16px; margin-top:1px; padding:1px 4px 1px 4px; color:#000; font-style:bold; float:left;\">2<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>By Tim Perdue on July 30, 2000 Here are the two critical functions in this library &#8211; the token creation and token verification functions. Don&#8217;t worry &#8211; the rest of the library is included here as well. \u00a0 &lt;?php $hidden_hash_var=&#8217;your_secret_password_here&#8217;; $LOGGED_IN=false; unset($LOGGED_IN); function\u00a0user_isloggedin()\u00a0{ \u00a0\u00a0\u00a0\u00a0global\u00a0$user_name,$id_hash,$hidden_hash_var,$LOGGED_IN; \u00a0\u00a0\u00a0\u00a0\/\/have\u00a0we\u00a0already\u00a0run\u00a0the\u00a0hash\u00a0checks? \u00a0\u00a0\u00a0\u00a0\/\/If\u00a0so,\u00a0return\u00a0the\u00a0pre-set,\u00a0trusted\u00a0var \u00a0\u00a0\u00a0\u00a0if\u00a0(\u00a0isset($LOGGED_IN)\u00a0)\u00a0{ \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0$LOGGED_IN; \u00a0\u00a0\u00a0\u00a0} \u00a0\u00a0\u00a0\u00a0\/\/are\u00a0both\u00a0cookies\u00a0present?&#8230; <a href=\"https:\/\/phpbuilder.com\/complete-secure-user-auth-library-page-2\/\" class=\"readmore\"><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1490","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"_links":{"self":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1490","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/comments?post=1490"}],"version-history":[{"count":1,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1490\/revisions"}],"predecessor-version":[{"id":3336,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1490\/revisions\/3336"}],"wp:attachment":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/media?parent=1490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/categories?post=1490"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/tags?post=1490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}