Fica registrado aqui mais uma dica encontrada durante o processo de desenvolvimento de sites.

Este dica é referente a um erro encontrado e solucionado por Neil Tanaka, coordenador chefe da equipe de desenvolvimento do local onde trabalho, durante análises a um antigo site.

Descrição do problema: Em um site comum (PHP), existe um painel de login dentro de um iframe. Este arquivo que faz o login do usuário é chamado dentro do iframe, e ele envia para si mesmo, os dados do formulário de login. Ao validar um usuário, o arquivo abre uma janela popup. Esta janela popup, verifica se existe uma sessão em PHP antes de exibir o conteúdo. Caso não encontre nenhuma sessão ativa, ela exibe o texto "acesso restrito".
Em navegadores Internet Explorer, a sessão funcionava corretamente. Porém nos navegadores Mozilla Firefox e Google Chrome, a mensagem "acesso restrito" era exibida, indicando que a sessão não foi gravada. No entanto, o fato do Firefox e do Chrome não gravarem a sessão, não era uma regra. Em alguns computadores, a janela popup exibia o conteúdo corretamente, em outro computadores, "acesso restrito".

Testes: Foram testados o login de usuário em quatro computadores, utilizando sempre o Internet Explorer, Google Chrome e Mozilla Firefox. Em dois dos computadores testados, a mensagem "acesso restrito" foi exibida, tanto no Google Chrome como no Mozilla Firefox, porém, nos outros dois computadores restantes, o conteúdo foi exibido corretamente em todos os navegadores. Vale ressaltar que o cache dos navegadores foram zerados em todos os computadores antes do teste.O código que estava sendo utilizado para o login, seguia essa linhagem:

login.php
<form action="" method="post" name="form1">
   <input name="txt_login" type="text" />
   <input name="txt_senha" type="password" />
</form>
<?php
if(isset($_POST['txt_login'])) {
   //Inicia a sessão
   session_start();
   $_SESSION['S_login'] = $_POST['txt_login'];
   $_SESSION['S_senha'] = $_POST['txt_senha'];

   //Abre o PopUp, uma página que está no próprio servidor
   echo "<script>window.open('http://www.site.com/diretorio/popup.php',,’’);</script>";
}
?>
Nota: Este é só um exemplo para demonstrar onde foi o erro. Esta NÂO é a melhor forma de se fazer uma página de login.

A solução para o problema é mais simples do que parece, embora tenha feito gastar um precioso tempo até descobrir.

O erro foi chamar a janela popup passando a URL toda até ela. De alguma forma, isto causava o estranho comportamento dos navegadores nos diferentes computadores. Após arrumar a linha, passando o endereço até o arquivo com base no local do arquivo que o chamava, o problema foi solucionado:
echo "<script>window.open(‘./diretorio/popup.php',,’’);</script>";
Até a próxima :-)


Sobre o Autor:
Guilherme Oliveira
Guilherme Oliveira trabalha com desenvolvimento de software a mais de 10 anos. É técnico em informática, bacharel em ciência da computação, especialista em engenharia de software, além de ser Oracle Certified Java Programmer 6 (OCJP 6). Suas áreas preferidas são desenvolvimento web e games.