Thread: Having problems with user defined sessions using postgresql as my session manager

Having problems with user defined sessions using postgresql as my session manager

From
Richmond Dyes
Date:
I have written user defined session management library in php using postgresql as my session repository.  When I let
mysession timeout on my browser I get the below errors on my screen.<br /><br />    <b>Warning</b>: pg_query(): Query
failed:ERROR: duplicate key violates unique constraint "li_session_pkey" in
<b>/var/www/html/liberty/includes/session.php</b>on line <b>31</b><br /><br /><b>Fatal error</b>: Call to undefined
function:pg_error() in <b>/var/www/html/liberty/includes/session.php</b> on line <b>31</b><br /><br /><b>Warning</b>:
Unknown():A session is active. You cannot change the session module's ini settings at this time. in <b>Unknown</b> on
line<b>0<br /><br /> The problem is in the write function of my library. Here it is:<br /><br /> function
pg_session_write($sid,$val) {<br />     $life = get_cfg_var("session.gc_maxlifetime");<br />     $exp = time() +
$life;<br/>     $selQ = "SELECT sidid FROM li_session<br />     WHERE sidid = '$sid' AND exptime >". time();<br />
   $selR= pg_query($selQ)or die("It didn't work:". pg_error());<br />      if(pg_num_rows($selR)) {<br />        
$sesupQ="UPDATE li_session SET<br />         exptime = '$exp', vidval = '$val'<br />         WHERE<br />         sidid
='$sid' and exptime >". time();<br />         $sesupR=pg_query($sesupQ) or die("It didn't work:". pg_error());<br />
   } else {<br />      $sesinQ = "INSERT INTO li_session<br />     VALUES('$sid', '$val', '$exp')";<br />     $sesinR=
pg_query($sesinQ)or die("It didn't work:". pg_error());    <br />     }<br /> }<br /></b> 

Re: Having problems with user defined sessions using postgresql

From
Erik Jones
Date:
Ok,

1.  PHPs postgres lib doesn't have a pg_error() function.  You want
pg_last_error().
2.  Are you using the sid as li_session's primary key?  If so, before
you create a new session with an already existing sid, you will need to
delete the old sid entry before inserting a new one with the same sid.

Richmond Dyes wrote:
> I have written user defined session management library in php using
> postgresql as my session repository.  When I let my session timeout on
> my browser I get the below errors on my screen.
>
>    *Warning*: pg_query(): Query failed: ERROR: duplicate key violates
> unique constraint "li_session_pkey" in
> */var/www/html/liberty/includes/session.php* on line *31*
>
> *Fatal error*: Call to undefined function: pg_error() in
> */var/www/html/liberty/includes/session.php* on line *31*
>
> *Warning*: Unknown(): A session is active. You cannot change the
> session module's ini settings at this time. in *Unknown* on line *0
>
> The problem is in the write function of my library. Here it is:
>
> function pg_session_write($sid, $val) {
>     $life = get_cfg_var("session.gc_maxlifetime");
>     $exp = time() + $life;
>     $selQ = "SELECT sidid FROM li_session
>     WHERE sidid = '$sid' AND exptime >". time();
>     $selR= pg_query($selQ)or die("It didn't work:". pg_error());
>      if(pg_num_rows($selR)) {
>         $sesupQ ="UPDATE li_session SET
>         exptime = '$exp', vidval = '$val'
>         WHERE
>         sidid = '$sid' and exptime >". time();
>         $sesupR=pg_query($sesupQ) or die("It didn't work:". pg_error());
>     } else {
>      $sesinQ = "INSERT INTO li_session
>     VALUES('$sid', '$val', '$exp')";
>     $sesinR= pg_query($sesinQ) or die("It didn't work:". pg_error());
>     }
> }
> *


--
erik jones <erik@myemma.com>
software development
emma(r)