Robert Birschener Postado Dezembro 26, 2012 Compartilhar Postado Dezembro 26, 2012 Olá pessoal. Estou desenvolvendo um sistema de atendimento online e estou fazendo a parte de convite dos usuários para o chat, mas estou tendo dificuldade com ajax e javascript, vou postar o código abaixo e depois explico qual o meu problema. online.php <?php include "conexao.php"; // Script para verificação de navegador. $useragent = $_SERVER['HTTP_USER_AGENT']; if (preg_match('|MSIE ([0-9].[0-9]{1,2})|',$useragent,$matched)) { $browser_version=$matched[1]; $browser = 'IE'; } elseif (preg_match( '|Opera/([0-9].[0-9]{1,2})|',$useragent,$matched)) { $browser_version=$matched[1]; $browser = 'Opera'; } elseif(preg_match('|Firefox/([0-9\.]+)|',$useragent,$matched)) { $browser_version=$matched[1]; $browser = 'Firefox'; } elseif(preg_match('|Chrome/([0-9\.]+)|',$useragent,$matched)) { $browser_version=$matched[1]; $browser = 'Chrome'; } elseif(preg_match('|Safari/([0-9\.]+)|',$useragent,$matched)) { $browser_version=$matched[1]; $browser = 'Safari'; } else { // browser not recognized! $browser_version = 0; $browser= 'other'; } //Variável que salva o navegador encontrado. $navegador = $browser . $browser_version; //Pega URL da página atual. $link = $_SERVER['HTTP_REFERER']; //Verifica o sistema operacional do visitante $Sistema = "desconhecido"; if(ereg("Windows",$user_agente) || ereg("WinNT",$user_agente) || ereg("Win95",$user_agente)) { $sistema = "Windows"; } if(ereg("Mac", $user_agente)) { $sistema = "Macintosh"; } if(ereg("X11", $user_agente)) { $sistema = "Unix"; } //Usuários online $ip = $_SERVER["REMOTE_ADDR"]; $datahora = date("Y-m-d H:i:s"); $select = mysql_query("SELECT * FROM user_online WHERE ip = '$ip'"); if( mysql_num_rows( $select ) > 0 ) { print ""; mysql_query("UPDATE user_online SET time = '$datahora' WHERE ip = '$ip'"); mysql_query("UPDATE user_online SET navegador= '$navegador' WHERE ip = '$ip'"); mysql_query("UPDATE user_online SET url= '$link' WHERE ip = '$ip'"); mysql_query("UPDATE user_online SET sistema= '$sistema' WHERE ip = '$ip'"); print mysql_error(); } else { print ""; mysql_query("INSERT INTO user_online (ip,time,navegador,url,sistema,verificador) VALUES ('$ip','$datahora','$navegador','$link','$sistema ','0')"); print mysql_error(); } $data_parametro = date("Y-m-d H:i:s", strtotime("-30 seconds")); mysql_query("DELETE FROM user_online WHERE time < '$data_parametro'"); while($row= mysql_fetch_array($select)){ if($row["verificador"] == '1'){ include "popup.php"; } } ?> atualizar.php <script type="text/javascript"> function Ajax(){ var xmlHttp; try{ xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari } catch (e){ try{ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer } catch (e){ try{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ alert("No AJAX!?"); return false; } } } xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4){ document.getElementById('ReloadThis').innerHTML=xmlHttp.responseText; setTimeout('Ajax()',10); } } xmlHttp.open("GET","online.php",true); // aqui configuramos o arquivo xmlHttp.send(null); } window.onload=function(){ setTimeout('Ajax()',10); // aqui o tempo entre uma atualização e outra } </script> <div id="ReloadThis"></div> popup.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Simple JQuery Modal Window from Queness</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> <script type="text/javascript"> $(document).ready(function() { var id = '#dialog'; //Get the screen height and width var maskHeight = $(document).height(); var maskWidth = $(window).width(); //Set heigth and width to mask to fill up the whole screen $('#mask').css({'width':maskWidth,'height':maskHeight}); //transition effect $('#mask').fadeIn(1000); $('#mask').fadeTo("slow",0.8); //Get the window height and width var winH = $(window).height(); var winW = $(window).width(); //Set the popup window to center $(id).css('top', winH/2-$(id).height()/2); $(id).css('left', winW/2-$(id).width()/2); //transition effect $(id).fadeIn(2000); //if close button is clicked $('.window .close').click(function (e) { //Cancel the link behavior e.preventDefault(); $('#mask').hide(); $('.window').hide(); }); //if mask is clicked $('#mask').click(function () { $(this).hide(); $('.window').hide(); }); }); </script> <style type="text/css"> body { font-family:verdana; font-size:15px; } a {color:#333; text-decoration:none} a:hover {color:#ccc; text-decoration:none} #mask { position:absolute; left:0; top:0; z-index:9000; background-color:#000; display:none; } #boxes .window { position:absolute; left:0; top:0; width:440px; height:200px; display:none; z-index:9999; padding:20px; } #boxes #dialog { width:375px; height:203px; padding:10px; background-color:#ffffff; } a.close{ float:right; } #js{display:none;} </style> <div id="boxes"> <div style="margin0 auto; display: none;" id="dialog" class="window"> <a href="#" class="close"><img src="close.png"/></a> <img src="janela1.png"/><a href="#"><img src="janela2.png"/></a> </div> </div> </body> </html> O que acontece é que no arquivo online.php onde tem a condição: if($row["verificador"] == '1'){ include "popup.php"; } que verifica se o operador convidou o usuário para o chat, quando o campo verificador no banco de dados é setado como 1 o código javascript do popup.php não executa, se eu colocar qualquer outra coisa (que não seja js) vai executar normalmente. Já tentei de tudo antes de vir aqui no fórum pedir ajuda dos amigos, mas não encontro mais nenhuma solução. O arquivo atualizar.php serve para atualizar o online.php a cada 10 segundos para saber se o usuário continua online, se mudou de página, etc. Acredito que o problema esteja lá. Agradeço muito qualquer ajuda. Link para o comentário Compartilhar em outros sites More sharing options...
joaopaulo Postado Dezembro 26, 2012 Compartilhar Postado Dezembro 26, 2012 O problema que vejo no seu script é que talvez tenha se esquecido que certas coisas são client-side e server-side. PHP é 100% do tempo server-side. Jamais ele irá executar um JS do lado do servidor... Leia um pouco mais sobre client-side e server-side, e aí faça um diagrama de caso e uso para contornares teu problema. Link para o comentário Compartilhar em outros sites More sharing options...
Robert Birschener Postado Dezembro 26, 2012 Autor Compartilhar Postado Dezembro 26, 2012 O problema que vejo no seu script é que talvez tenha se esquecido que certas coisas são client-side e server-side. PHP é 100% do tempo server-side. Jamais ele irá executar um JS do lado do servidor... Leia um pouco mais sobre client-side e server-side, e aí faça um diagrama de caso e uso para contornares teu problema. Joao, não entendi direito quando você disse que 'jamais ele irá executar um JS do lado do servidor'. No caso do meu script eu estou chamando o popup.php no online.php que abriria uma página jquery para o usuário avisando que ele foi convidado, mesmo lendo um artigo (http://brasilphp.blogspot.com.br/2009/03/conceitos-gerais-sobre-client-side-e.html) explicando sobre eu não consegui visualizar. Eu li na internet que o javascript não funciona em páginas que utilizam ajax (que é o meu caso), neste caso existe outra solução para atualizar a página a cada X segundos que não seja ajax? Link para o comentário Compartilhar em outros sites More sharing options...
joaopaulo Postado Dezembro 27, 2012 Compartilhar Postado Dezembro 27, 2012 Ops... Olha a informação errada aí... Ajax é Javascript!!! O que você precisa aprender é injetar a resposta do Ajax no Javascript e interagir tudo. O Facebook faz isso o tempo todo. Hmmmm, esse tema é bem mais complicado do que posso dizer aqui, mas o caminho é estudar muito como funcionam as requisições Ajax e por fim fazer um sistema desses. Link para o comentário Compartilhar em outros sites More sharing options...
Robert Birschener Postado Dezembro 27, 2012 Autor Compartilhar Postado Dezembro 27, 2012 Ops... Olha a informação errada aí... Ajax é Javascript!!! O que você precisa aprender é injetar a resposta do Ajax no Javascript e interagir tudo. O Facebook faz isso o tempo todo. Hmmmm, esse tema é bem mais complicado do que posso dizer aqui, mas o caminho é estudar muito como funcionam as requisições Ajax e por fim fazer um sistema desses. Tem alguma outra maneira de atualizar uma página como o ajax faz com outra linguagem? Queria algo que não fosse igual meta que atualiza como se desse um f5, só temos o ajax mesmo pra esse tipo de coisa? Link para o comentário Compartilhar em outros sites More sharing options...
joaopaulo Postado Dezembro 28, 2012 Compartilhar Postado Dezembro 28, 2012 Tem alguma outra maneira de atualizar uma página como o ajax faz com outra linguagem? Queria algo que não fosse igual meta que atualiza como se desse um f5, só temos o ajax mesmo pra esse tipo de coisa? Só Ajax :D (Ainda bem!) Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados