Jump to content

Recommended Posts

Hello friends,

 

I am new to PHP and have developed a website... i am stuck at one place. I want to know if the user changes the url in the adress bar and goes to another webpage.. Can we detect that?

 

This is very important for my website because I calsulate the duration of login based on whether user goes to another page or logs out.

No you can't detect if someone changes the url.

 

What you can do is utilize ajax to make periodic updates to a script on your site, which you can use as an "activity" monitor.

 

Very few people actually logout of a website -- they just navigate away or close the browser.  You should not depend on a logout.

No you can't detect if someone changes the url.

 

What you can do is utilize ajax to make periodic updates to a script on your site, which you can use as an "activity" monitor.

 

Very few people actually logout of a website -- they just navigate away or close the browser.  You should not depend on a logout.

 

 

well if you're gonna go with ajax, you could just go with an onbeforeunload event... but I don't know the browser support of that event.

RusselReal,

  Those are not the same things at all.  A timed ajax call can update status every 30 seconds or minute or 5 minutes.  That technique is frequently used to support html/near realtime chat pages.

RusselReal,

  Those are not the same things at all.  A timed ajax call can update status every 30 seconds or minute or 5 minutes.  That technique is frequently used to support html/near realtime chat pages.

 

yes I know what AJAX is, but AJAX is simply Javascript with use of XML Streams... I have used the same general idea on one of my sites as what you have mentioned, but I stuck to the Original Poster's guidelines with my answer.. I wasn't bashing your answer. He wanted to know when the user changed URLs, yes ofcourse you can't actually GET the new URL, but you can use this to know when the user:

A. CLOSES THE BROWSER

B. NAVIGATES AWAY FROM THE CURRENT PAGE.

 

That seems to be his ultimate goal here :) then he could use AJAX inside of the onbeforeunload to send a request to the server, the server doesn't even have to give a response, make it a 1 way transaction saying that the user has left that page :)

 

Russell,

 

well if you're gonna go with ajax, you could just go with an onbeforeunload event... but I don't know the browser support of that event.

 

The way I read your reply, it seemed to be saying that you could substitute one for the other.  I will agree with you that you can use that function in most of the current browsers, but regardless, an ajax call is going to be needed.  At the point that you are going to make an ajax call to indicate that the person has an active session, I think you might as well update the status periodically, but onbeforeunload() is a viable solution as well.

I have no idea with ajax... is there any php codin...

 

Or can anyone help me with the code in ajax.

 

This is what I would recommend:  http://jquery.com/

http://api.jquery.com/category/ajax/

 

You write a script that does session_start(), checks that there's a valid user and if so, calls an update function you write that will update the status of the user -- usually via a datetime column in the database named something like lastseen.

 

In your jquery you make calls to this script based on the setInterval() javascript function. 

 

One reason not to use the onbeforeunload() event as suggested by russelreal, is that this would be problematic in certain circumstances where for example, someone opens up multiple tabs to your site for the same session, which is easy to do with current browsers.  If you assume that because someone closed a tab they were logging out, you could get in a situation where you logged someone out who still had an open window on your site.

 

I have no idea with ajax... is there any php codin...

 

Or can anyone help me with the code in ajax.

 

This is what I would recommend:  http://jquery.com/

http://api.jquery.com/category/ajax/

 

You write a script that does session_start(), checks that there's a valid user and if so, calls an update function you write that will update the status of the user -- usually via a datetime column in the database named something like lastseen.

 

In your jquery you make calls to this script based on the setInterval() javascript function. 

 

One reason not to use the onbeforeunload() event as suggested by russelreal, is that this would be problematic in certain circumstances where for example, someone opens up multiple tabs to your site for the same session, which is easy to do with current browsers.  If you assume that because someone closed a tab they were logging out, you could get in a situation where you logged someone out who still had an open window on your site.

 

yes but they would be inactive until they visit another page anyway :)

 

when they visit the next page their session will be touched and they'll be "active" again.

I have no idea with ajax... is there any php codin...

 

Or can anyone help me with the code in ajax.

 

This is what I would recommend:  http://jquery.com/

http://api.jquery.com/category/ajax/

 

You write a script that does session_start(), checks that there's a valid user and if so, calls an update function you write that will update the status of the user -- usually via a datetime column in the database named something like lastseen.

 

In your jquery you make calls to this script based on the setInterval() javascript function. 

 

One reason not to use the onbeforeunload() event as suggested by russelreal, is that this would be problematic in certain circumstances where for example, someone opens up multiple tabs to your site for the same session, which is easy to do with current browsers.  If you assume that because someone closed a tab they were logging out, you could get in a situation where you logged someone out who still had an open window on your site.

 

yes but they would be inactive until they visit another page anyway :)

 

when they visit the next page their session will be touched and they'll be "active" again.

 

Doubtful. Usually a logout destroys the session data.  Otherwise, it's not really a logout. 

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.