'Remember Me' feature with cookies

Random stuff about serendipity. Discussion, Questions, Paraphernalia.
Post Reply
munk
Regular
Posts: 15
Joined: Tue Dec 09, 2003 6:25 pm
Contact:

'Remember Me' feature with cookies

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