$ (pencere) iç killSession () PHP işlevi. boşaltmak

3 Cevap php

Ben basit bir sohbet komut dosyası yapıyorum ve geçerli oturumu öldürür ve DB kullanıcıyı siler killSession işlevi var. Sorun adı belirlenir ve sohbet formu yüklemek değildir doğrulandıktan sonra), sadece oturumu öldürür ve (geri loginForm gider olmasıdır. İşte senaryo:

<?php
if (!isset($_SESSION['name'])) {
	loginForm(); // set a name for chat
} else {
?>
	// chat form

	$(window).unload(function () {
		<?php  killSession(); ?>
	});

Ben yenilemek veya sayfayı kapatmak sonra () killSession tetiklemek için bir yolu var mı?

UPDATE:

Hala anlamaya olamaz. Belki bir mola gerekir.

$(window).unload(function () {
	$.get("killSession.php", { name:"test" }); // i set the name to test for testing
});

İşte killSession.php sayfası:

session_start();
function killSession($name) {
	include("config.php");
	mysql_query("DELETE FROM sessions WHERE name='$name'");
	session_destroy();
	header("Location: index.php");
}

killSession($_GET['name']);

$. Çalışmıyor hala olsun, ben tarayıcı üzerinden separatly çalıştı. killSession.php? name = testi DB silmek, ancak oturum öldürmek olmaz.

3 Cevap

PHP işlevi killSession çağrıldığında oturumun hemen öldürülür. Bu idam ediyor her Yani kodunuz oturumu öldürecek.

Yapmanız gereken onunload olay tetiklenir sadece PHP işlevi killSession çağırmaktır. Ve JavaScript dışında bir PHP işlevini çağırarak sunucuya yeni bir istek gönderme ile mümkündür.

Yani o zaman böyle bir şey belki, killSession işlevini çağıran bir komut dosyası için bir istek göndermek gerekir:

$(window).unload(function () {
    $.get("killSession.php");
});

Ve içeride killSession.php daha sonra PHP işlevi killSession diyoruz.

Bu javascript sunucu için beklemek zorunda değildir değilsin demektir uyumsuz o çünkü istek çalışmıyor. Istek senkron yapma yanıt için javascript beklemek yapacak:

$(document).ready(function()
{
    $(window).unload(function() 
    { 
        $.ajax
        ({
            type: "GET",
            url: "killSession.php",
            async: false,
            data: "name=test",
            success: function(msg)
            {
                alert(msg);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown)
            {
                alert("I failed");
            }
        });
    });
});

Ajax On:

Tarayıcı orada yönlendirir That (ajax başına) php index.php:. Bunu size Yer çağırdığınız düşünüyorum varsayarak yaşıyorum. Ajax aslında, tamamen tarayıcı karşısında atlar gelmez bu şekilde çalışmıyor. Bu ajax çok kullanışlı yapan şeydir. Eğer index.php yankı şeyi jQuery geri isteği aldığı budur. Sen onunla bir şeyler yapmak gerekiyor. Ben sadece bir örnek olarak benim parçasında bunu haber veriyorum. Ben de isteği başarısız olursa görmek için hata kullanın. Ayrıca firebug içine bakmak isteyebilirsiniz. Tüm ajax isteklerini görmek için konsol sekmesini kullanabilirsiniz.

Not: Ayrıca ilk php komut oturumu başlatmak isteyebilirsiniz.

i PHP öldürmek oturumu script veya AJAX HttpRequest yöntemi çağırarak gizli bir iframe tavsiye ederim