Page 1 of 1

'Remember Me' feature with cookies

Posted: Thu Dec 11, 2003 6:48 pm
by munk
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 :P

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;
      }