Re: Having problems with user defined sessions using postgresql

Lists: Postg범퍼카 토토SQL : Postg범퍼카 토토SQL 메일 링리스트 : 2006-09-14 이후 PGSQL-PHP 15:10
From: Richmond Dyes <rdyes(at)monroehosp(dot)org>
To: pgsql-php(at)postgresql(dot)org
Subject: Having problems with user defined sessions using postgresql as my session manager
Date: 2006-09-14 13:52:49
Message-ID: 45095EB1.50707@monroehosp.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-php

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
I have written user defined session management library in php using
postgresql as my session repository.&nbsp; When I let my session timeout on
my browser I get the below errors on my screen.<br>
<br>
&nbsp;&nbsp; <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>
&nbsp;&nbsp;&nbsp; $life = get_cfg_var("session.gc_maxlifetime");<br>
&nbsp;&nbsp;&nbsp; $exp = time() + $life;<br>
&nbsp;&nbsp;&nbsp; $selQ = "SELECT sidid FROM li_session<br>
&nbsp;&nbsp;&nbsp; WHERE sidid = '$sid' AND exptime &gt;". time();<br>
&nbsp;&nbsp;&nbsp; $selR= pg_query($selQ)or die("It didn't work:". pg_error());<br>
&nbsp;&nbsp;&nbsp; &nbsp;if(pg_num_rows($selR)) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sesupQ ="UPDATE li_session SET<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exptime = '$exp', vidval = '$val'<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; WHERE<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sidid = '$sid' and exptime &gt;". time();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sesupR=pg_query($sesupQ) or die("It didn't work:". pg_error());<br>
&nbsp;&nbsp;&nbsp; } else {<br>
&nbsp;&nbsp;&nbsp; &nbsp;$sesinQ = "INSERT INTO li_session<br>
&nbsp;&nbsp;&nbsp; VALUES('$sid', '$val', '$exp')";<br>
&nbsp;&nbsp;&nbsp; $sesinR= pg_query($sesinQ) or die("It didn't work:".
pg_error());&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; }<br>
}<br>
</b>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 2.1 KB

From: Erik Jones <erik(at)myemma(dot)com>
To: Richmond(dot)Dyes(at)monroehosp(dot)org
Cc: pgsql-php(at)postgresql(dot)org
Subject: Re: Having problems with user defined sessions using postgresql
Date: 2006-09-14 15:10:43
Message-ID: 450970F3.1070507@myemma.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg범퍼카 토토SQL : Postg범퍼카 토토SQL 메일 링리스트 : 2006-09-14 이후 PGSQL-PHP 15:10

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(at)myemma(dot)com>
software development
emma(r)