'Remember Me' feature with cookies
Posted: Thu Dec 11, 2003 6:48 pm
I've just added a 'remember me' feature to my s9y install which appears to work well. The affected files are admin.php, entries.php and functions.inc.php. The diffs (from 0.3 stable) are below. Hope it's useful for someone
Code: Select all
*** serendipity_admin.php Tue Sep 30 22:21:59 2003
--- /web/serendipity_cookies/serendipity_admin.php Thu Dec 11 17:34:22 2003
***************
*** 2,7 ****
--- 2,15 ----
session_start();
define('IN_installer', true);
include('serendipity_config.inc.php');
+
+ // Check if user logging out, remove cookies first:
+ if($serendipity['GET']['adminModule']==="logout") {
+ // remove cookies:
+ $time=time()-3600;
+ setcookie('serendipityUser', '', $time);
+ setcookie('serendipityPass', '', $time);
+ }
?>
<html>
<head>
Code: Select all
*** serendipity_entries.php Thu Sep 18 13:58:14 2003
--- /web/serendipity_cookies/serendipity_entries.php Thu Dec 11 17:35:01 2003
***************
*** 7,12 ****
--- 7,22 ----
$_SESSION['serendipityAuthedUser'] = true;
}
+ // Check auth here so we can send out cookies:
+ serendipity_userLoggedIn();
+
+ // Check if user logging out, remove cookies first:
+ if($serendipity['GET']['adminModule']==="logout") {
+ // remove cookies:
+ $time=time()-3600;
+ setcookie('serendipityUser', '', $time);
+ setcookie('serendipityPass', '', $time);
+ }
?>
<html>
<head>
***************
*** 39,45 ****
<table id="mainpane">
<tr id="content" valign="top">
<?php
! if ( !serendipity_userLoggedIn() ) {
serendipity_printLogin();
} else {
?>
--- 49,55 ----
<table id="mainpane">
<tr id="content" valign="top">
<?php
! if( !$_SESSION['serendipityAuthedUser']){
serendipity_printLogin();
} else {
?>
Code: Select all
*** serendipity_functions.inc.php Wed Oct 1 16:50:51 2003
--- /web/serendipity_cookies/serendipity_functions.inc.php Thu Dec 11 17:37:27 2003
***************
*** 30,35 ****
--- 30,37 ----
<input type="text" name="serendipity[user]" value="<?php echo USERNAME; ?>" onfocus="value='';" />
<input type="password" name="serendipity[pass]" value="<?php echo PASSWORD ?>" onfocus="value='';" />
<input type="submit" name="submit" value="&" />
+ <br/>
+ Remember me: <input type="checkbox" name="serendipity[remember]"/>
</form>
</div>
<?php
***************
*** 2074,2080 ****
return true;
}
! $password = md5($password);
$query = "SELECT DISTINCT
email, authorid
--- 2076,2088 ----
return true;
}
! // Check if cookies are present and correct:
! if(isset($_COOKIE['serendipityUser']) && isset($_COOKIE['serendipityPass'])){
! $username=$_COOKIE['serendipityUser'];
! $password=$_COOKIE['serendipityPass'];
! } else {
! $password = md5($password);
! }
$query = "SELECT DISTINCT
email, authorid
***************
*** 2093,2098 ****
--- 2101,2113 ----
$_SESSION['serendipityUser'] = $serendipity['serendipityUser'] = $username;
$_SESSION['serendipityEmail'] = $serendipity['serendipityEmail'] = $row['email'];
$_SESSION['serendipityAuthorid'] = $serendipity['authorid'] = $row['authorid'];
+
+ // if 'remember me checkbox set, set cookies:
+ if(isset($serendipity['POST']['remember'])){
+ $time=time()+60*60*24*365;
+ setcookie('serendipityUser', $username, $time);
+ setcookie('serendipityPass', $password, $time);
+ }
return true;
}