John Doe
John Doe

Reputation: 2060

Creating javascript function to destroy php session

I am having trouble figuring out how to create a javascript function that will destroy a php session. I have a clickable link that will call a function called destroyphpsess. I think this is all right so far. Now I need to define the javascript function. This is the code I have so far...

if ($_SESSION['color'] == "") {
    $var = "<a href='JavaScript:newPopup(\"http://www.yourfantasyfootballreality.com/register.php\");' class='two'>Register</a> | <a href='JavaScript:newPopup(\"http://www.yourfantasyfootballreality.com/signin.php\");' class='two'>Sign In</a>";
} else {
    $var = "Hello, ".$_SESSION['color'] ."! | " . "<a href=\"http://www.yourfantasyfootballreality.com/index.php\" onclick=\"destroyphpsess()\" class='two'>Log Out</a>";
}
echo $var;

Now I need to define the javascript function. This is where I am having trouble. This is the basic outline I have so far...

function destroyphpsess()
{
<?php
session_destroy();
?>
}

If someone could help me with the function I would appreciate it! Thanks.

Upvotes: 2

Views: 8290

Answers (4)

John Doe
John Doe

Reputation: 2060

Your JavaScript runs client-side, and your PHP runs server-side. You can't call PHP functions from JavaScript this way. You have two options:

Do an AJAX call to a server-side script that clears the session data (recommended, for consistency and proper clearing of that stuff server-side) Clear the PHPSESSID cookie with JavaScript (won't work if you reconfigure how you handle sessions, or if sessions are handled by URL parameters)

Upvotes: 0

comfortablejohn
comfortablejohn

Reputation: 625

Everyone keeps saying AJAX. This would be a good idea if you want to clean up the cookie on the server side as well, but I think if you knew what AJAX was you probably would have used it already...

I found AJAX pretty confusing when I first came across it. So what I would suggest is having a look at and maybe using jQuery's AJAX functionality. Including jQuery for just one function is probably overkill, but it might be a bit easier.

Upvotes: 0

secretformula
secretformula

Reputation: 6432

A PHP session generally uses a cookie that is stored client side. The following code will clear that cookie thus unlinking the session.

document.cookie = 'PHPSESSID=; expires=Thu, 01-Jan-70 00:00:01 GMT;';

Upvotes: 6

Brad
Brad

Reputation: 163272

Your JavaScript runs client-side, and your PHP runs server-side. You can't call PHP functions from JavaScript this way. You have two options:

  1. Do an AJAX call to a server-side script that clears the session data (recommended, for consistency and proper clearing of that stuff server-side)
  2. Clear the PHPSESSID cookie with JavaScript (won't work if you reconfigure how you handle sessions, or if sessions are handled by URL parameters)

Upvotes: 11

Related Questions