2012-06-16 2 views
2

У меня возникли проблемы с выяснением того, как создать функцию javascript, которая уничтожит php-сеанс. У меня есть интерактивная ссылка, которая вызовет функцию, называемую destroyphpsess. Я думаю, что до сих пор все в порядке. Теперь мне нужно определить функцию javascript. Это код, который у меня есть до сих пор ...Создание функции javascript для уничтожения php-сессии

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; 

Теперь мне нужно определить функцию javascript. Здесь я испытываю проблемы. Это основной план, который у меня есть до сих пор ...

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

Если кто-то может помочь мне с функцией, я был бы признателен! Спасибо.

+0

Почему вы не используете ajax и не вызываете страницу, которая уничтожит сеанс – Broncha

+3

+1 для возврата с гораздо лучшим вопросом! : D – comfortablejohn

ответ

11

Ваш JavaScript работает на стороне клиента, а ваш PHP работает на стороне сервера. Вы не можете вызвать PHP-функции из JavaScript таким образом. У вас есть два варианта:

  1. сделать вызов AJAX на стороне сервера скрипт, который очищает данные сессии (рекомендуется, для обеспечения согласованности и надлежащей очистки, что материал на стороне сервера)
  2. Очистить PHPSESSID печенья с JavaScript (не будет работать, если вы перенастроить, как вы справляетесь сеансов, или если сессии обрабатываются с помощью параметров URL)
+0

Я уверен, что вы подразумеваете, что JavaScript работает на стороне клиента, а PHP работает на стороне сервера. – Shoaib

+0

Doh! Спасибо, исправление ... сделано. – Brad

+0

кукурузная шляпа воздействует на ваш мозг :-) –

6

PHP-сессии обычно использует куки, который хранится на стороне клиента. Следующий код очистит этот файл cookie, тем самым отменив сеанс.

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

+1

+1 Я бы использовал 'session_destroy' из вызова AJAX ... Я бы никогда не подумал об этом, чистив куки-файл, но мне понравилась эта идея. –

+0

Это была моя другая мысль, но да, я думал о своей стороне клиента. Этот код оставит сессию висящей на стороне сервера, пока она не истечет – secretformula

+0

, где бы я поместил эту строку кода? я бы поставил его в функцию? –

0

Все твердит AJAX. Это было бы неплохо, если бы вы также захотели очистить файл cookie на стороне сервера, но я думаю, что если бы вы знали, что AJAX вы, вероятно, использовали бы уже ...

Я нашел AJAX довольно запутанным, когда Я впервые встретил его. Так что я бы предложил, посмотрев и, возможно, используя функциональность jQuery AJAX. Включение jQuery только для одной функции, вероятно, слишком велико, но это может быть немного проще.

0

Ваш JavaScript работает на стороне клиента, а ваш PHP работает на стороне сервера. Вы не можете вызвать PHP-функции из JavaScript таким образом. У вас есть два варианта:

Сделайте вызов AJAX на серверный скрипт, который очищает данные сеанса (рекомендуется, для согласованности и правильной очистки этого сервера) Очистите cookie PHPSESSID с помощью JavaScript (не будет работайте, если вы переконфигурируете, как обрабатываете сеансы, или если сеансы обрабатываются по параметрам URL-адреса)

Смежные вопросы