2013-06-30 40 views
0

我已经做了一个函数destroy(),这被称为onclick事件的logout按钮。但问题是该函数中的服务器端代码始终在页面加载时被调用,无论是否单击注销按钮。我想要做的就是为会话变化设置一个值lastVisitonclick事件logout按钮。请让我知道什么是适当的方式做到这一点感谢,当JS函数被调用时销毁会话变量

   function destroy() 
       { 
       <?php $_SESSION['lastVisit'] = "logout"; ?> 
       alert('hi'); 

       } 
+2

PHP在服务器端执行,_JavaScript_在客户端执行,当页面生成时,它是服务器端,查看页面(和_JavaScript_运行)时,它是客户端。 –

+0

我认为你需要饼干 – paka

+0

你不能混合使用PHP这样的javascript –

回答

2

你混合PHP代码与他们不一起工作一样,你需要做一个Ajax调用JavaScript代码,因为你这个变得容易正在使用jQuery。

的Javascript

jQuery(document).ready(function() { 
    jQuery("#LogoutButtonID").click(destroy()); 
}); 
function destroy() { 
    jQuery.ajax({ 
     "url":"http://www.example.com/someScriptToLogout.php", 
     "success":function() { 
     alert("i logged out"); 
     } 
    }); 
} 

和someScriptToLogout.php

<?php 
session_start(); 
$_SESSION['lastVisit'] = "logout"; 
+2

不要忘记' session_start()':) – moonwave99

+0

感谢帕特里克你真棒! – user2304394

+0

@ moonwave99,哦,是的我似乎忘了那没我:) –

1

为什么不去Ajax的方法是什么?

PHP:

if(isset($_POST['endSession'])){ 
destroy(); 

echo 'Hi'; 
} 

function destroy(){ 
    $_SESSION['lastVisit'] = "logout"; 
       } 

的javascript:

$.post('logOut.php',{endSession:'yes'},function(hi){ 

alert(hi) 

}) 

这是肯定会做你想要什么

请注意:该解决方案将假设你在你的网页具有jQuery的并且您的php代码位于一个名为logOut.php