2013-03-21 5 views
-1

사용자가 브라우저를 닫을 때 MySQL 쿼리를 실행하려고합니다. 나는 onbeforeunload와 관련이 있지만 Chrome에서만 작동하며 탭이 닫힌 경우에만 작동합니다. 브라우저에서 MySQL 쿼리 실행 닫기

그때 나는이 PHP 예제를 시도 :

<?php 
    include "db/dbc.php"; 
    ignore_user_abort(true); 
    ob_end_clean(); 
    echo "Testing connection handling"; 


    if (connection_status() == 1){ 
    mysql_query("DELETE FROM online WHERE id='55'"); 

    } 
    echo "test"; 
    flush(); 

?> 

하지만이 중 하나가 작동하지 않습니다. 누구든지 실제 예제가 있습니까? 브라우저를 닫을 때 정말 데이터베이스에서 게시물을 삭제해야합니다.

+4

100 % 신뢰할만한 방법으로 귀하가 묻는 것을 의심합니다. – Pointy

+0

브라우저 프로세스를 종료하면 어떻게됩니까? 온라인 상태 인 사용자를 추적하려면 서버 끝에서 시간 초과를 사용하십시오. ** ** 신뢰할 수 없습니다. –

+0

전혀 클라이언트 측에 의존하지 말라 : P – Anubhab

답변

0

사용자의 브라우저와 세션과 끊임없이 통신하는 코드를 사용하여 누군가가 "온라인"상태 일 때 확인할 수 있습니다. 이것과 관련된 많은 오래된 메소드, 특히 PHP의 경우, 사용자의 열린 세션에 대한 'Last Seen'값을 업데이트하는 데이터베이스 테이블을 사용합니다. X 분 안에 '본'적이 없다면 '오프라인'이라고 생각할 것입니다. 앞서 언급했듯이, AJAX와 비슷하게, 훨씬 더 잘할 수 있습니다.

다른 사람들이 언급했듯이이 방법은 신뢰할 수 없으므로 이러한 방식으로 수행해서는 안됩니다.

0

자바 스크립트를 사용하여이 작업을 수행하고 창 닫기 이벤트를 확인할 수 있지만 브라우저에서 지원되는지 여부는 브라우저에서 결정됩니다.

사람들이 사이트를 방문 할 때 기록 할 테이블을 만든 다음 cron 작업을 실행하여 페이지를 변경 한 이후의 기간을 확인할 수 있습니다. X 분이 넘었 으면 해당 사용자의 상태를 오프라인으로 설정하십시오.

소스 - K2xL

0

우리는 사용자가 로그인하거나하지 않은 경우 5 분 확인 cron 작업으로이 일을 해결했다. 모든 아이디어를 제공해 주셔서 감사합니다. =)

그리고 누가이 말을 투표 했습니까?

+0

누가 그것을 싫어 했습니까? 인터넷 투표는 중요하지 않습니다. –