Thread: [pLog-General] variable like $login?
Brought to you by:
jondaley
From: Daniel K. <ke...@fo...> - 2004-02-19 02:00:23
|
Oscar, I want to include a form in the postandcomments.template that only the=20= person who posted the article will see (I think you call this person=20 the "user"). Can I found out if the "user" is logged in? I want to do something like: {if $login =3D=3D $user} Hello {$user}! {/if} Is there a variable like $login available when viewing an article? -- =A0=A0Daniel =A0=A0...@fo... |
From: Oscar R. <os...@re...> - 2004-02-19 16:00:47
|
Hi! The public side of pLog doesn't worry whether the user has logged in=20 into the admin interface or not, so such object as $login is never=20 exported to the templates... But I think this can be easily overcome=20 with a simple plugin. We could develop a very simple plugin which would=20= check the authentication information from the session and that would=20 interface with the templates in the following way: {assign var=3Duser value=3D$article->getUserInfo()} {if $auth->userIsAuthenticated($user)} Hello, =1B{$user->getUsername()}! {/if} What the plugin should do is find the user information from the=20 session. The login process is carried out in=20 class/admin/adminloginaction.class.php, lines 71-78 so you can have a=20 look there, paying attention at how things are stored in the session.=20 So, if there is any information about a user who has logged in, you=20 should be able to get it doing something like: $sessionInfo =3D $_SESSION["SessionInfo"]; $userInfo =3D $sessionInfo->getValue( "userInfo" ); $sessionInfo is of SessionInfo type and $userInfo is of UserInfo type.=20= The simply comparing the user who wrote the article with the user who=20 is now logged in, we can be sure that they are the same (or not) Of course you could always make the changes to the core but I am not=20 quite sure if it's a good idea... Regards, Oscar On 19 Feb 2004, at 03:51, Daniel Kehoe wrote: > Oscar, > > I want to include a form in the postandcomments.template that only the=20= > person who posted the article will see (I think you call this person=20= > the "user"). Can I found out if the "user" is logged in? > > I want to do something like: > > {if $login =3D=3D $user} > Hello {$user}! > {/if} > > Is there a variable like $login available when viewing an article? > > -- > =A0=A0Daniel > =A0=A0...@fo... > > > > ------------------------------------------------------- > SF.Net is sponsored by: Speed Start Your Linux Apps Now. > Build and deploy apps & Web services for Linux with > a free DVD software kit from IBM. Click Now! > http://ads.osdn.com/?ad_id=1356&alloc_id438&op=CCk > _______________________________________________ > pLog-General mailing list > pLo...@li... > https://lists.sourceforge.net/lists/listinfo/plog-general > |
From: Oscar R. <os...@re...> - 2004-02-20 15:54:04
|
I was wondering... was this of any use? Oscar On 19 Feb 2004, at 17:57, Oscar Renalias wrote: > Hi! > > The public side of pLog doesn't worry whether the user has logged in=20= > into the admin interface or not, so such object as $login is never=20 > exported to the templates... But I think this can be easily overcome=20= > with a simple plugin. We could develop a very simple plugin which=20 > would check the authentication information from the session and that=20= > would interface with the templates in the following way: > > {assign var=3Duser value=3D$article->getUserInfo()} > {if $auth->userIsAuthenticated($user)} > Hello, =1B{$user->getUsername()}! > {/if} > > What the plugin should do is find the user information from the=20 > session. The login process is carried out in=20 > class/admin/adminloginaction.class.php, lines 71-78 so you can have a=20= > look there, paying attention at how things are stored in the session.=20= > So, if there is any information about a user who has logged in, you=20 > should be able to get it doing something like: > > $sessionInfo =3D $_SESSION["SessionInfo"]; > $userInfo =3D $sessionInfo->getValue( "userInfo" ); > > $sessionInfo is of SessionInfo type and $userInfo is of UserInfo type.=20= > The simply comparing the user who wrote the article with the user who=20= > is now logged in, we can be sure that they are the same (or not) > > Of course you could always make the changes to the core but I am not=20= > quite sure if it's a good idea... > > Regards, > > Oscar > > On 19 Feb 2004, at 03:51, Daniel Kehoe wrote: > >> Oscar, >> >> I want to include a form in the postandcomments.template that only=20 >> the person who posted the article will see (I think you call this=20 >> person the "user"). Can I found out if the "user" is logged in? >> >> I want to do something like: >> >> {if $login =3D=3D $user} >> Hello {$user}! >> {/if} >> >> Is there a variable like $login available when viewing an article? >> >> -- >> =A0=A0Daniel >> =A0=A0...@fo... >> >> >> >> ------------------------------------------------------- >> SF.Net is sponsored by: Speed Start Your Linux Apps Now. >> Build and deploy apps & Web services for Linux with >> a free DVD software kit from IBM. Click Now! >> http://ads.osdn.com/?ad_id=1356&alloc_id438&op=CCk >> _______________________________________________ >> pLog-General mailing list >> pLo...@li... >> https://lists.sourceforge.net/lists/listinfo/plog-general >> > > > > ------------------------------------------------------- > SF.Net is sponsored by: Speed Start Your Linux Apps Now. > Build and deploy apps & Web services for Linux with > a free DVD software kit from IBM. Click Now! > http://ads.osdn.com/?ad_id=1356&alloc_id438&op=CCk > _______________________________________________ > pLog-General mailing list > pLo...@li... > https://lists.sourceforge.net/lists/listinfo/plog-general > |
From: Daniel K. <ke...@fo...> - 2004-02-28 01:29:32
|
Oscar, I took a shot at implementing the plugin you suggested and added the=20 plugin call to a template. In the plugin, i've got $sessionInfo =3D $_SESSION["SessionInfo"]; foreach ($sessionInfo->getAsArray() as $k =3D> $v) { error_log($k); } which shows me all the session variables. I see: blogId Year Month Day but not userInfo even when I've logged in and visited an admin page and then go directly=20= to view a blog posting that uses my template with my new plugin. I'm mystified. Does the session get reset before we see a blog page? -- =A0=A0Daniel =A0=A0...@fo... On Feb 19, 2004, at 7:57 AM, Oscar Renalias wrote: > Hi! > > The public side of pLog doesn't worry whether the user has logged in=20= > into the admin interface or not, so such object as $login is never=20 > exported to the templates... But I think this can be easily overcome=20= > with a simple plugin. We could develop a very simple plugin which=20 > would check the authentication information from the session and that=20= > would interface with the templates in the following way: > > {assign var=3Duser value=3D$article->getUserInfo()} > {if $auth->userIsAuthenticated($user)} > Hello, =1B{$user->getUsername()}! > {/if} > > What the plugin should do is find the user information from the=20 > session. The login process is carried out in=20 > class/admin/adminloginaction.class.php, lines 71-78 so you can have a=20= > look there, paying attention at how things are stored in the session.=20= > So, if there is any information about a user who has logged in, you=20 > should be able to get it doing something like: > > $sessionInfo =3D $_SESSION["SessionInfo"]; > $userInfo =3D $sessionInfo->getValue( "userInfo" ); > > $sessionInfo is of SessionInfo type and $userInfo is of UserInfo type.=20= > The simply comparing the user who wrote the article with the user who=20= > is now logged in, we can be sure that they are the same (or not) > > Of course you could always make the changes to the core but I am not=20= > quite sure if it's a good idea... > > Regards, > > Oscar > > On 19 Feb 2004, at 03:51, Daniel Kehoe wrote: > >> Oscar, >> >> I want to include a form in the postandcomments.template that only=20 >> the person who posted the article will see (I think you call this=20 >> person the "user"). Can I found out if the "user" is logged in? >> >> I want to do something like: >> >> {if $login =3D=3D $user} >> Hello {$user}! >> {/if} >> >> Is there a variable like $login available when viewing an article? >> >> -- >> =A0=A0Daniel >> =A0=A0...@fo...= |
From: Oscar R. <os...@re...> - 2004-02-28 09:41:48
|
Sorry, now I remembered I added the following line not long ago to=20 admin.php: session_name( "plog_admin_session" ); I don't know if that will prevent index.php from being able to access=20 the session created by admin.php... unless you do the same in there.=20 Also, I am not so sure now... can sessions generated by two different=20 php scripts be shared?? Oscar On 28 Feb 2004, at 03:26, Daniel Kehoe wrote: > Oscar, > > I took a shot at implementing the plugin you suggested and added the=20= > plugin call to a template. > > In the plugin, i've got > $sessionInfo =3D $_SESSION["SessionInfo"]; > foreach ($sessionInfo->getAsArray() as $k =3D> $v) { > error_log($k); > } > which shows me all the session variables. I see: > blogId > Year > Month > Day > but not userInfo > > even when I've logged in and visited an admin page and then go=20 > directly to view a blog posting that uses my template with my new=20 > plugin. > > I'm mystified. Does the session get reset before we see a blog page? > > -- > =A0=A0Daniel > =A0=A0...@fo... > > > On Feb 19, 2004, at 7:57 AM, Oscar Renalias wrote: > >> Hi! >> >> The public side of pLog doesn't worry whether the user has logged in=20= >> into the admin interface or not, so such object as $login is never=20 >> exported to the templates... But I think this can be easily overcome=20= >> with a simple plugin. We could develop a very simple plugin which=20 >> would check the authentication information from the session and that=20= >> would interface with the templates in the following way: >> >> {assign var=3Duser value=3D$article->getUserInfo()} >> {if $auth->userIsAuthenticated($user)} >> Hello, =1B{$user->getUsername()}! >> {/if} >> >> What the plugin should do is find the user information from the=20 >> session. The login process is carried out in=20 >> class/admin/adminloginaction.class.php, lines 71-78 so you can have a=20= >> look there, paying attention at how things are stored in the session.=20= >> So, if there is any information about a user who has logged in, you=20= >> should be able to get it doing something like: >> >> $sessionInfo =3D $_SESSION["SessionInfo"]; >> $userInfo =3D $sessionInfo->getValue( "userInfo" ); >> >> $sessionInfo is of SessionInfo type and $userInfo is of UserInfo=20 >> type. The simply comparing the user who wrote the article with the=20 >> user who is now logged in, we can be sure that they are the same (or=20= >> not) >> >> Of course you could always make the changes to the core but I am not=20= >> quite sure if it's a good idea... >> >> Regards, >> >> Oscar >> >> On 19 Feb 2004, at 03:51, Daniel Kehoe wrote: >> >>> Oscar, >>> >>> I want to include a form in the postandcomments.template that only=20= >>> the person who posted the article will see (I think you call this=20 >>> person the "user"). Can I found out if the "user" is logged in? >>> >>> I want to do something like: >>> >>> {if $login =3D=3D $user} >>> Hello {$user}! >>> {/if} >>> >>> Is there a variable like $login available when viewing an article? >>> >>> -- >>> =A0=A0Daniel >>> =A0=A0...@fo... > > > ------------------------------------------------------- > SF.Net is sponsored by: Speed Start Your Linux Apps Now. > Build and deploy apps & Web services for Linux with > a free DVD software kit from IBM. Click Now! > http://ads.osdn.com/?ad_id=1356&alloc_id438&op=CCk > _______________________________________________ > pLog-General mailing list > pLo...@li... > https://lists.sourceforge.net/lists/listinfo/plog-general > |
From: Matt <wo...@cc...> - 2004-02-28 21:29:22
|
On Sat, 28 Feb 2004 11:41:20 +0200, Oscar Renalias <os...@re...> wrote: > Also, I am not so sure now... can sessions generated by two different > php scripts be shared?? > Yes sessions are like cookies that are stored on your harddrive... they exist untill you delete them or they timeout. sessions_unregister deletes them. I use them constantly cross script. -- Matt C.E. Wood wo...@wo... PGP Public Key. wo...@cc... http://woodzy.com/woodzy.asc Ham Radio: KF4TBH |
From: Daniel K. <ke...@fo...> - 2004-02-29 06:26:10
|
Oscar, That info helps. If I comment out session_name( "plog_admin_session" ); in admin.php and session_name("plog_main_session"); in index.php, then I can access session data from both admin pages and=20= blog pages. Would you consider dropping the session_name statements=20 from core? I think the only benefit is to show nosy users with enabled=20= cookie warnings a descriptive name for the cookie. If you don't name=20 the session, it will be the PHP default name, and we'll be able to=20 access the session anywhere in the app, including extended=20 functionality any of us might want to add. I'm still having a problem, though, and I think you can help me out. I=20= get the error: "PHP Fatal error: Unknown(): The script tried to execute a method or=20 access a property of an incomplete object. Please ensure that the class=20= definition 'userinfo' of the object you are trying to operate on was=20 loaded _before_ the session was started..." The error is caused by my code: function posterIsLoggedIn($poster) { =09 $allow =3D false; $sessionInfo =3D $_SESSION["SessionInfo"]; $userInfo =3D $sessionInfo->getValue("userInfo"); if (isset($userInfo)) { if ($userInfo->getId() =3D=3D $poster->getId()) $allow =3D= true; } return $allow; } I've seen this error before when I try to use objects in PHP sessions=20 and I've never figured out the right way to resolve it. I'm sure you've=20= had some experience with this? -- =A0=A0Daniel =A0=A0...@fo... On Feb 28, 2004, at 1:41 AM, Oscar Renalias wrote: > Sorry, now I remembered I added the following line not long ago to=20 > admin.php: > > session_name( "plog_admin_session" ); > > I don't know if that will prevent index.php from being able to access=20= > the session created by admin.php... unless you do the same in there.=20= > Also, I am not so sure now... can sessions generated by two different=20= > php scripts be shared?? > > Oscar > > On 28 Feb 2004, at 03:26, Daniel Kehoe wrote: > >> Oscar, >> >> I took a shot at implementing the plugin you suggested and added the=20= >> plugin call to a template. >> >> In the plugin, i've got >> $sessionInfo =3D $_SESSION["SessionInfo"]; >> foreach ($sessionInfo->getAsArray() as $k =3D> $v) { >> error_log($k); >> } >> which shows me all the session variables. I see: >> blogId >> Year >> Month >> Day >> but not userInfo >> >> even when I've logged in and visited an admin page and then go=20 >> directly to view a blog posting that uses my template with my new=20 >> plugin. >> >> I'm mystified. Does the session get reset before we see a blog page? >> >> -- >> =A0=A0Daniel >> =A0=A0...@fo... >> >> >> On Feb 19, 2004, at 7:57 AM, Oscar Renalias wrote: >> >>> Hi! >>> >>> The public side of pLog doesn't worry whether the user has logged in=20= >>> into the admin interface or not, so such object as $login is never=20= >>> exported to the templates... But I think this can be easily overcome=20= >>> with a simple plugin. We could develop a very simple plugin which=20 >>> would check the authentication information from the session and that=20= >>> would interface with the templates in the following way: >>> >>> {assign var=3Duser value=3D$article->getUserInfo()} >>> {if $auth->userIsAuthenticated($user)} >>> Hello, =1B{$user->getUsername()}! >>> {/if} >>> >>> What the plugin should do is find the user information from the=20 >>> session. The login process is carried out in=20 >>> class/admin/adminloginaction.class.php, lines 71-78 so you can have=20= >>> a look there, paying attention at how things are stored in the=20 >>> session. So, if there is any information about a user who has logged=20= >>> in, you should be able to get it doing something like: >>> >>> $sessionInfo =3D $_SESSION["SessionInfo"]; >>> $userInfo =3D $sessionInfo->getValue( "userInfo" ); >>> >>> $sessionInfo is of SessionInfo type and $userInfo is of UserInfo=20 >>> type. The simply comparing the user who wrote the article with the=20= >>> user who is now logged in, we can be sure that they are the same (or=20= >>> not) >>> >>> Of course you could always make the changes to the core but I am not=20= >>> quite sure if it's a good idea... >>> >>> Regards, >>> >>> Oscar >>> >>> On 19 Feb 2004, at 03:51, Daniel Kehoe wrote: >>> >>>> Oscar, >>>> >>>> I want to include a form in the postandcomments.template that only=20= >>>> the person who posted the article will see (I think you call this=20= >>>> person the "user"). Can I found out if the "user" is logged in? >>>> >>>> I want to do something like: >>>> >>>> {if $login =3D=3D $user} >>>> Hello {$user}! >>>> {/if} >>>> >>>> Is there a variable like $login available when viewing an article? >>>> >>>> -- >>>> =A0=A0Daniel >>>> =A0=A0...@fo... >> >> >> ------------------------------------------------------- >> SF.Net is sponsored by: Speed Start Your Linux Apps Now. >> Build and deploy apps & Web services for Linux with >> a free DVD software kit from IBM. Click Now! >> http://ads.osdn.com/?ad_id=1356&alloc_id438&op=CCk >> _______________________________________________ >> pLog-General mailing list >> pLo...@li... >> https://lists.sourceforge.net/lists/listinfo/plog-general >> > > > > ------------------------------------------------------- > SF.Net is sponsored by: Speed Start Your Linux Apps Now. > Build and deploy apps & Web services for Linux with > a free DVD software kit from IBM. Click Now! > http://ads.osdn.com/?ad_id=1356&alloc_id438&op=3Dclick > _______________________________________________ > pLog-General mailing list > pLo...@li... > https://lists.sourceforge.net/lists/listinfo/plog-general |
From: Oscar R. <os...@re...> - 2004-02-29 15:29:39
|
Hi > Oscar, > > That info helps. If I comment out > session_name( "plog_admin_session" ); > in admin.php and > session_name("plog_main_session"); > in index.php, then I can access session data from both admin pages and > blog pages. Would you consider dropping the session_name statements > from core? I think the only benefit is to show nosy users with enabled > cookie warnings a descriptive name for the cookie. If you don't name > the session, it will be the PHP default name, and we'll be able to > access the session anywhere in the app, including extended > functionality any of us might want to add. The call to session_name was placed there in order to avoit problems with sites that host more than one blog. I am running my own site shared with somebody else (somebody who installed plog in his own server and kindly allowed me to run my site there) and we were having problems with logging in to one site and then visiting the other and so on... Using this method seemed to help. The problem might be that admin.php was overwriting the session created by index.php, but perhaps there is a way to overcome that, not sure... > > I'm still having a problem, though, and I think you can help me out. I > get the error: > "PHP Fatal error: Unknown(): The script tried to execute a method or > access a property of an incomplete object. Please ensure that the > class definition 'userinfo' of the object you are trying to operate on > was loaded _before_ the session was started..." > > The error is caused by my code: > function posterIsLoggedIn($poster) > { > $allow = false; > $sessionInfo = $_SESSION["SessionInfo"]; > $userInfo = $sessionInfo->getValue("userInfo"); > if (isset($userInfo)) { > if ($userInfo->getId() == $poster->getId()) $allow = true; > } > return $allow; > } > > I've seen this error before when I try to use objects in PHP sessions > and I've never figured out the right way to resolve it. I'm sure > you've had some experience with this? > That usually happens when you have an object serialized in the session and php doesn't know its definition because there is no php code loaded to define it. In other words, you didn't include() the code defining the class UserInfo. Just to make sure, add include_once( "class/dao/userinfo.class.php" ); to the code of your plugin and see if that helps. Oscar |
From: Daniel K. <ke...@fo...> - 2004-02-29 16:59:52
|
Hi Oscar, On Feb 29, 2004, at 7:28 AM, Oscar Renalias wrote: > The call to session_name was placed there in order to avoit problems=20= > with sites that host more than one blog. I am running my own site=20 > shared with somebody else (somebody who installed plog in his own=20 > server and kindly allowed me to run my site there) and we were having=20= > problems with logging in to one site and then visiting the other and=20= > so on... Using this method seemed to help. > > The problem might be that admin.php was overwriting the session=20 > created by index.php, but perhaps there is a way to overcome that, not=20= > sure... I don't think the snafu results from overwriting. I think naming a=20 session establishes a new session. How about using the same session=20 name throughout pLog? Like session_name("plog_session"); in both admin.php and index.php? I tried and that works. As to the problem you were trying to solve, I wonder if maybe the=20 session name needs to include a variable keyed to the blog, like=20 session_name($blogId."_plog_session"). But maybe not; I'm not sure why=20= changing the session_name fixed the problem if the session_name is the=20= same between two different blogs. >> I'm still having a problem, though, and I think you can help me out.=20= >> I get the error: >> "PHP Fatal error: Unknown(): The script tried to execute a method or=20= >> access a property of an incomplete object. Please ensure that the=20 >> class definition 'userinfo' of the object you are trying to operate=20= >> on was loaded _before_ the session was started..." >> >> The error is caused by my code: >> function posterIsLoggedIn($poster) >> { =09 >> $allow =3D false; >> $sessionInfo =3D $_SESSION["SessionInfo"]; >> $userInfo =3D $sessionInfo->getValue("userInfo"); >> if (isset($userInfo)) { >> if ($userInfo->getId() =3D=3D $poster->getId()) $allow =3D= true; >> } >> return $allow; >> } >> >> I've seen this error before when I try to use objects in PHP sessions=20= >> and I've never figured out the right way to resolve it. I'm sure=20 >> you've had some experience with this? >> > > That usually happens when you have an object serialized in the session=20= > and php doesn't know its definition because there is no php code=20 > loaded to define it. In other words, you didn't include() the code=20 > defining the class UserInfo. Just to make sure, add > > include_once( "class/dao/userinfo.class.php" ); > > to the code of your plugin and see if that helps. It didn't help. Still the same error. I also tried adding $userInfo =3D new UserInfo(null,null,null,null); and the error remains. The session must be started before the plugin is=20= called. -- =A0=A0Daniel =A0=A0...@fo... |