2013-06-30 39 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