Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

connection_aborted

24-07-2010 09:16

Encontrei este comando: connection_aborted — Verifica se o cliente está desconectado. Retorna 1 se o cliente está desconectado, 0 caso contrário. No link: http://www.php.net/manual/pt_BR/functio ... borted.php.

Pergunto: posso usá-lo ao se fechar o navegador para fazer um update? Se fecho o navegador, estou desconectando o cliente?

Encontrei a função abaixo neste link http://www.w3schools.com/php/func_misc_ ... borted.asp:
<?php function check_abort() { if (connection_aborted()) error_log ("Script $GLOBALS[SCRIPT_NAME]" . "$GLOBALS[SERVER_NAME] was aborted by the user."); } //some script to be executed here // Call the check_abort function when the script ends register_shutdown_function("check_abort"); ?>

E estou tentando fazer o update para o bd, mas o valor não está sendo enviado:
<? $AnuncianteID = $_GET['AnuncianteID']; echo $AnuncianteID; echo "<br>"; function check_abort() { if (connection_aborted()) require("../../configuracao_mysql.php"); $Nao = 'não'; $q1 = "update ztab_anunciantes2 set FechouSessao = '".$Nao."' where AnuncianteID = '".$AnuncianteID."' "; $r1 = mysql_query($q1); /* error_log ("Script $GLOBALS[SCRIPT_NAME]" . "$GLOBALS[SERVER_NAME] was aborted by the user."); */ } // Call the check_abort function when the script ends register_shutdown_function("check_abort"); ?>

Se a função acima estiver incorreta, ou não for apropriada ao que pretendo, como posso usar o valor retornado se a conexão foi interrompida (1), para fazer o update. Ou não posso? Se não puder, então, para que servirá tal comando?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17562
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

connection_aborted

24-07-2010 21:11

Testei aqui esse script e não achei nenhuma lógica, porque não tem nada que identifique a pessoa.

Se por exemplo você coloca no documento o seguinte

echo connection_aborted();

Vai retornar 0, que diz que está conectado, mas, como vai retornar 1 se para isso você deveria estar desconectado? Quem iria carregar esse arquivo?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

connection_aborted

24-07-2010 21:27

Posso estar dizendo besteira, mas será que quando se é desconectado pelo fechamento do navegador, o valor retornado ficaria armazenado em algum lugar? Esse comando seria utilizado em chats. Quanto a identificar o usuário, estou enviando o seu id por um link, e recebendo com $_GET. Encontrei, também, este código:
<? set_time_limit(0); ignore_user_abort(false); while(!connection_aborted()) { //busca novas mensagens e as imprime na tela } mysql_query("DELETE FROM usuarios_na_sala_X WHERE id=$_SESSION[chat_id]"); ?>

Lendo-o, após a desconexão pelo fechamento do navegador, seriam deletados os registros do bd? É isso? O que significa o ponto de exclamação antes do comando dentro do while? O link de onde encontrei o código é este (nele, falam sobre chats): http://forum.wmonline.com.br/topic/1013 ... n-aborted/.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17562
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

connection_aborted

24-07-2010 21:51

Eu fiz aqui diversos testes com o connection_aborted tentando retornar o valor 1, que seria verdadeiro.

O problema é como retornar o valor 1 para o aborted.

Tentei o seguinte

$conexao = mysql_connect("localhost", "log", "sen") or die(mysql_error()); $db = mysql_select_db("bd"); $valor = connection_aborted(); if($valor==1) { mysql_query("DELETE FROM eventos WHERE id='13'"); }

Fechei o navegador, tentando abortar, para deletar um item em uma tabela que tenho, também tentei ao fechar no navegador e nada.
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17562
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

connection_aborted

24-07-2010 22:11

Acho que achei uma solução para o problema.

No caso, fiz uns testes aqui e vi que dá para carregar um arquivo via AJAX chamado no onunload, ou seja, quando fechar ou sair do navegador, carrega esse arquivo, fazendo um DELETE no MySQL por exemplo. O problema tem sido o Opera, que parece não aceitar nenhum evento de saída.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

connection_aborted

24-07-2010 22:18

Post aí para eu testar. Para o acesso restrito, irei permitir o uso do FF, IE e Safari.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17562
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

connection_aborted

24-07-2010 22:26

Já deixo antes algumas observações:

* Teria que usar frames, para que esse script jQuery fique no frame superior, permitindo a navegação na parte inferior.
* Um refresh no documento iria forçar o login;
* Testei aqui com MySQL, mas acho que você pode tentar deletar a SESSION atual também

O script que iria no frame superior seria

<script src="jquery.js" type="text/javascript"></script> <script type="text/javascript"> function Saida() { $("#conteudo").load("teste2.php"); } </script> <body onunload="Saida()">

Note que na saída ele chama um outro arquivo.

teste2.php

<?php
$conexao = mysql_connect("localhost", "log", "sen") or die(mysql_error());
$db = mysql_select_db("bd");
mysql_query("DELETE FROM tabela WHERE id='identificador'");
?>

Esse identificador você pode usar um valor da SESSION, pode simplesmente deletar a SESSION, ou algo que desejar.

No caso se for deletar a SESSION, você deve ter um verificador em PHP "if" antes do JavaScript junto com o código do onunload, verificando se a SESSION existe, se não manda a pessoa para a página de login.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

connection_aborted

25-07-2010 06:44

Não rola frames com sessão. Teve um post em que você mesmo fez essa observação, depois fiz uma pesquisa, e encontrei várias opiniões iguais à sua. Meu site já estava com frames e os tirei. O problema é que quando clico no botão atualizar do navegador, eu saio da sessão e vou para a home page. Sem frames isso não ocorre.

Veio-me à cabeça (algum fantasminha deve ter soprado) iframe oculto, digitei no Google, e parece que isso existe. Dê uma olhada: http://forum.wmonline.com.br/topic/1965 ... me-oculto/. Será que dá para fazer funcionar o seu código com iframe oculto? Vou tentar.

Outra coisa: seu código tem link para o arquivo jquery.js. Pode ser de qualquer versão?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

connection_aborted

25-07-2010 07:22

Cara, não está rolando, e vou parar de tentar, ao menos por enquanto. Desculpe por algo, e obrigado pela força.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17562
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

connection_aborted

25-07-2010 09:14

Realmente, tem esse problema quanto ao refresh.

Então fica como mais próximo da solução aquele que falei anteriormente, considerado o tempo do último movimento do usuário na página.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

connection_aborted

25-07-2010 21:13

Você me falou disso. Não me recordo em que post está. Você pode me passar o link desse código?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17562
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

connection_aborted

25-07-2010 22:22

Foi nesse post
http://www.codigosnaweb.com/forum/Expir ... _5483.html

Acho o mais próximo, já que você vai definir um tempo a partir do último movimento do usuário no sistema.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado