Note that there are some explanatory texts on larger screens.

plurals
  1. POPHP - User gets logged in automatically
    primarykey
    data
    text
    <p>I have a very strange issue. If someone logs in to my page, and then log out, that person gets automatically logged in again when visiting the login page. According to my cookie extension for Google Chrome, the cookie containing user information is gone while logged out.</p> <p>This is the code in my login page:</p> <pre><code>&lt;?php if (isset($_GET['do'])) { if ($_GET['do']==='success') { echo '&lt;p&gt;'.LOGIN_SUCCESS.'&lt;/p&gt;'; } } else { if ($login&gt;0) { echo '&lt;p&gt;'.LOGIN_ERR_ONE.'&lt;/p&gt;'; //This error is triggered when a user visits the login page and gets automatically logged in. Don't know why though. } else { echo '&lt;h2&gt;'.LOGIN_HEADER.'&lt;/h2&gt;'; if ($_POST['name'] || $_POST['pass']) { if ($_POST['name'] &amp;&amp; $_POST['pass']) { $query=mysql_fetch_array(mysql_query(sprintf("SELECT * FROM users WHERE name='%s'", mysql_real_escape_string($_POST['name'])))); if ($query) { if ($query['password']===getPassHash($_POST['pass'], $query['hash'])) { if ($query['rank']===0) { echo '&lt;p&gt;'.LOGIN_ERR_FOUR.'&lt;/p&gt;'; } else { if ($_POST['time']==='1') { $time=30; } else { $time=1; } echo '&lt;script type="text/javascript"&gt;setCookie(\'eresig_user\', \''.$_POST['name'].':'.getPassHash($_POST['pass'], $query['hash']).':'.$time.'\', '.$time.', \'login\')&lt;/script&gt;'; } } else { echo '&lt;p&gt;'.LOGIN_ERR_THREE.'&lt;/p&gt;'; } } else { echo '&lt;p&gt;'.LOGIN_ERR_THREE.'&lt;/p&gt;'; } } else { echo '&lt;p&gt;'.LOGIN_ERR_TWO.'&lt;/p&gt;'; } } ?&gt; &lt;form action="&lt;?=$adr?&gt;login" method="post"&gt; &lt;table class="form"&gt; &lt;tr&gt; &lt;td class="left"&gt;&lt;?=LOGIN_FORM_ONE?&gt;&lt;/td&gt; &lt;td class="right"&gt;&lt;input type="text" name="name" class="reg_input" /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="left"&gt;&lt;?=LOGIN_FORM_TWO?&gt;&lt;/td&gt; &lt;td class="right"&gt;&lt;input type="password" name="pass" class="reg_input" /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="left"&gt;&lt;?=LOGIN_FORM_THREE?&gt;*&lt;/td&gt; &lt;td class="right"&gt;&lt;input type="checkbox" value="1" name="time" /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;input type="submit" value="&lt;?=SUBMIT_FORM?&gt;" /&gt; &lt;/form&gt; &lt;p&gt;* &lt;em&gt;&lt;?=LOGIN_FORM_TIP?&gt;&lt;/em&gt;&lt;/p&gt; &lt;?php } } ?&gt; </code></pre> <p>And this is the code that checks if someone is logged in:</p> <pre><code>if (isset($_COOKIE['eresig_user'])) { list($user, $pass, $m)=explode(':', $_COOKIE['eresig_user']); $rows=mysql_fetch_array(mysql_query(sprintf("SELECT * FROM users WHERE name='%s'", mysql_real_escape_string($user)))); if ($rows) { if ($rows['password']===$pass) { setcookie('eresig_user', $_COOKIE['eresig_user'], time()+(3600*24*$m)); if ($rows['rank']&gt;0) { $login=$rows['rank']; } else { $login=0; setcookie('eresig_user', '', time()-(3600*24)); die('&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;script type="text/javascript"&gt;function redirectPage() { window.location="'.$adr.'"; }&lt;/script&gt;&lt;style type="text/css"&gt;body{background:#fff;color:#000;font:0.85em sans-serif;}&lt;/style&gt;&lt;/head&gt;&lt;body onload="setTimeout(\'redirectPage()\', 2500)"&gt;&lt;p&gt;You are banned!&lt;br /&gt;You will shortly be redirected&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;'); } } else { $login=0; setcookie('eresig_user', '', time()-(3600*24)); } } else { $login=0; setcookie('eresig_user', '', time()-(3600*24)); } } else { $login=0; } </code></pre> <p>And I use this JavaScript to set/remove the actual cookie:</p> <pre><code>&lt;script type="text/javascript"&gt; function setCookie(c_name, value, days, page) { if (days==0) { var date=new Date(); date.setDate(date.getDate() - 31); var c_value=escape(value) + ((days==null) ? "" : "; expires="+date.toUTCString()); } else { var date=new Date(); date.setDate(date.getDate() + days); var c_value=escape(value) + ((days==null) ? "" : "; expires="+date.toUTCString()); } document.cookie=c_name + "=" + c_value; if (page!=0) { window.location='&lt;?=$adr?&gt;'+page+'/success'; } } &lt;/script&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload