Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bene Silva Júnior

Página de redirecionamento em branco

Recommended Posts

Boa noite!

 

O meu site redireciona o usuário, depois do cadastro ou login, para uma página em branco, sem código fonte, sem nada!

 

O código para validação e redirecionamento do login é:

 

 

<?PHP
    $ip = getenv("REMOTE_ADDR"); //IP
    $navegador = ($_SERVER['HTTP_USER_AGENT']); //Navegador
    
    date_default_timezone_set('America/Sao_Paulo'); //setando o fuso horário onde o servidor se encontra
    $data = date("Y/m/d"); //Data (formato americano)
    $hora = date ("H:i"); //Hora
    
    $servidor = 'mysql.hostinger.com.br';
    $usuario = '4065456_jr';
    $senha = 'k87juh6h5r';    
    $banco = 'u344188337_cad';
    $tabela = 'cadastros';
    
    $link = mysql_connect($servidor, $usuario, $senha) or die ('Não foi possível conectar: '.mysql_error());
    
    $select = mysql_select_db($banco);    

    if($_REQUEST["acao"] = "login")
    {        
        $login =  $_POST["login"];
        $senha =  $_POST["senha"];
        
        //Verifica no banco se o login informado já está cadastrado
        $buscar = mysql_query("SELECT nome, COUNT(*) AS total FROM cadastros WHERE login = '$login' AND senha = '$senha'");
        $total = mysql_result($buscar,0,"total");
    
        if ($total != 0) // caso encontre um usuário com o login cadastrado...
        {
            //Faz uma busca na tabela para recuperar o nome do login informado
            $query = mysql_query("SELECT * FROM cadastros WHERE login = '$login' AND senha = '$senha'");
            
            while ($l = mysql_fetch_array($query)) //percorre registros da tabela
            {
                $nome = $l["nome"]; //armazena o valor do campo nome que satisfaça as condições da query
            }
            
            session_start(); //inicio da sessão - caso o login e senha estejam corretos
            $_SESSION["usuario"] = $nome; //armazena o nome do usuário
            $_SESSION["autenticado"] = TRUE; //armazena autenticado como TRUE        
            header("Location:http://www.criandobits.bl.ee/index.php"); //redireciona para a página principal
        }
        else //caso a autenticação falhe...
        {            header("Location:http://www.criandobits.bl.ee/paginas/_avisoLogin.php"); //redirecionamento para página de aviso        
        }
       }
        else //caso a requisição falhe...
        {
            header("Location: http://www.criandobits.bl.ee/paginas/_avisoLogin.php"); //redirecionamento para página de aviso
 }
?>

Código do arquivo _validarFormCadastro.php:

 

 

<?php
    
    $ip = getenv("REMOTE_ADDR"); //IP
    $navegador = ($_SERVER['HTTP_USER_AGENT']); //Navegador
    
    date_default_timezone_set('America/Sao_Paulo'); //setando o fuso horário onde o servidor se encontra
    $data = date("Y/m/d"); //Data (formato americano)
    $hora = date ("H:i"); //Hora
    
    $servidor = 'mysql.hostinger.com.br';
    $usuario = 'u344188337_jr';
    $senha = 'k87juh6h5r';    
    $banco = 'u344188337_cad';
    $tabela = 'cadastros';
    
    $link = mysql_connect($servidor, $usuario, $senha) or die ('Não foi possível conectar: '.mysql_error());
    
    $select = mysql_select_db($banco);
    
    //Verifica se o arquivo foi chamado  partir de um formulário
    if($_REQUEST["acao"] == "cadastro") //se a variável "acao" passada via URL for igual a "cadastro"
    {      
        $nome =  $_POST["nome"];
        $cidade =  $_POST["cidade"];
        $bairro =  $_POST["bairro"];
        $uf =  $_POST["uf"];
        $sexo =  $_POST["sexo"];
        $email = $_POST["email"];
        $login =  $_POST["login"];
        $senha =  $_POST["senha"];
        $conheceuSite = $_POST["ondeConheceuSite"];
        $boletim = $_POST["boletim"];    
        
        //Se o checkbox não estiver marcado...
        if($boletim != 'on')    
        {
               $boletim = false;
        }    
    
        //Verifica no banco se o login e/ou e-mail informados já estão cadastrados
        $buscar = mysql_query("SELECT COUNT(*) AS total FROM cadastros WHERE login = '$login' OR email = '$email'");
        $total = mysql_result($buscar,0,"total");
    
        if ($total != 0) // caso haja algum usuário com o login e/ou e-mail cadastrado...
        {            header("Location:http://www.criandobits.bl.ee/paginas/_avisoCadastroErro.php"); //redireciona para a página de erro
        }
        else // caso contrário...
        {    
    
        //Expressão SQL de inserção de dados
        $sql = "INSERT INTO $tabela (nome, cidade, bairro, uf, sexo, email, login, senha, comoConheceu, malaDireta, ip, navegador, data, hora)
            VALUES('$nome','$cidade','$bairro','$uf','$sexo','$email', '$login', '$senha', '$conheceuSite','$boletim','$ip','$navegador', '$data',     '$hora')";        

    //Executa a expressão SQL no servidor, e armazena o resultado
    $result = mysql_query($sql);
    
    //Verifica o sucesso da operação
    if(!$result)
    {
        die('Erro: '.mysql_error());
    }
    //Se  aoperação foi realizada com sucesso, redireciona para a página de aviso
    else
    {        
        header("Location:http://www.criandobits.bl.ee/paginas/_avisoCadastro.php"); //redirecionamento
    }  
  }
 }
 
?>

 

As páginas para o redirecionamento estão presentes no servidor. A página em branco não volta nenhum erro, fica tudo branco.

 

O meu site está hospedado no Hostinger. O endereço é www.criandobits.bl.ee. Acessem o site e tente criar um cadastro e se logarem pra vocês perceberem melhor o problema.

 

Ou usem o login:

 

usuário: teste

senha: teste

 

OBS.: No meu servidor local o redirecionamento acontece sem problemas. O código só muda na parte de informações do servidor e no endereço de redirecionamento:

 

 

 
    //Dados do servidor local
    $servidor = 'localhost';
    $usuario = 'root';
    $senha = '';    
    $banco = 'site_contatos';
    $tabela = 'cadastros';
 
  ....
 
 header("Location: _avisoLogin.php"); 

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok...

 

Na página _cadastro_usuarios.php coloque o seguinte input dentro do form:

 

<input type="hidden" name="acao" value="cadastro" />

 

E na página onde está o login(_login_usuarios.php), coloque no form:

 

<input type="hidden" name="acao" value="login" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Ok...

 

Na página _cadastro_usuarios.php coloque o seguinte input dentro do form:

 

<input type="hidden" name="acao" value="cadastro" />

 

E na página onde está o login(_login_usuarios.php), coloque no form:

 

<input type="hidden" name="acao" value="login" />

Fiz o que você sugeriu, mas agora o formulário de cadastro de usuários não envia as informações. Eu desfiz as modificações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No arquivo _validarFormLogin.php, substitua :

 


if($_REQUEST["acao"] = "login")
//por
if($_REQUEST["acao"] == "login")

Posta o resultado. Verifique se no seu servidor local a exibição de erros está habilitada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No arquivo _validarFormLogin.php, substitua :

 


if($_REQUEST["acao"] = "login")
//por
if($_REQUEST["acao"] == "login")

Posta o resultado. Verifique se no seu servidor local a exibição de erros está habilitada.

Corrigido. Eu corrigi no servidor remoto e ele não volta nenhum erro; volta página em branco, sem código fonte.

 

Corrigido. Eu corrigi no servidor remoto e ele não volta nenhum erro; volta página em branco, sem código fonte.

Aqui no servidor local o erro não acontece. As páginas são redirecionadas normalmente, sem erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Complementando a dica do @JVirtuArts

Altere:

 

 

<form method="POST" action="_validarFormLogin.php?acao=login" name="formLogin" > //para

<form method="POST" action="_validarFormLogin.php" name="formLogin" > 

 

Para validar melhore seu código. Exemplo:

 


if($_REQUEST["acao"] && $_REQUEST["acao"] == "cadastro"){
...

 

 




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde? No _validaFormLogin.php ? Se sim, fiz isso mas não resolveu.

 

Sim, antes de $ip = getenv("REMOTE_ADDR");

 

Se isso não funcionou, deve verificar se o servidor online está bloqueando o header ou session, já que funciona off.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Complementando a dica do @JVirtuArts

Altere:

 

 

<form method="POST" action="_validarFormLogin.php?acao=login" name="formLogin" > //para

<form method="POST" action="_validarFormLogin.php" name="formLogin" > 

 

Para validar melhore seu código. Exemplo:

 


if($_REQUEST["acao"] && $_REQUEST["acao"] == "cadastro"){
...

Mas como o outro código vai saber se o parâmetro passado é para login? Não entendi...

 


 

Sim, antes de $ip = getenv("REMOTE_ADDR");

 

Se isso não funcionou, deve verificar se o servidor online está bloqueando o header ou session, já que funciona off.

O curioso é que para cadastrar usuários o banco de dados grava os dados normalmente, mas o redirecionamento é para uma página em branco.

 

Como saber se o servidor remoto está bloqueando o header ou session? Ele é um plano gratuito. Será que por causa disso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples

Olha o exemplo,havia esquecido do isset:

 

 

if(isset($_REQUEST["acao"]) && $_REQUEST["acao"] == "cadastro"){
 //executa ações para cadastro (inserts,select ...)
}

if(isset($_REQUEST["acao"]) && $_REQUEST["acao"] == "login"){
 //executa ações para login (verificação de senha,usuário,)
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Simples

Olha o exemplo,havia esquecido do isset:

 

 

if(isset($_REQUEST["acao"]) && $_REQUEST["acao"] == "cadastro"){
 //executa ações para cadastro (inserts,select ...)
}

if(isset($_REQUEST["acao"]) && $_REQUEST["acao"] == "login"){
 //executa ações para login (verificação de senha,usuário,)
}

Marcos, com relação ao formulário de cadastro, os registros estão sendo gravados no banco normalmente. O problema não está aí e sem no fato de que não está sendo feito o redirecionamento. Os usuários estão sendo cadastrados, mas o aviso que isso foi feito não está aparecendo, entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No servidor local funciona? A exibição de erros está habilitada?

No servidor local o redirecionamento está sendo feito normalmente, sem erros.

 

No servidor local o redirecionamento está sendo feito normalmente, sem erros.

O estranho é que antes funcionava no servidor remoto, mas não sei que aconteceu que o servidor remoto parou de redirecionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um arquivo e coloque em seu conteúdo :

 

<?php
phpinfo();

 

Faça o teste no seu servidor local e também no servidor hostinger. Compare as diferenças. (versão do php, etc)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um arquivo e coloque em seu conteúdo :

 

<?php
phpinfo();

 

Faça o teste no seu servidor local e também no servidor hostinger. Compare as diferenças. (versão do php, etc)

No servidor remoto a versão do PHP é 5.3.28. Já no servidor local a versão é 5.4.19. Atualizei a versão no servidor remoto para 5.4. Estou esperando... Até agora continua no 5.3.

 

No servidor remoto a versão do PHP é 5.3.28. Já no servidor local a versão é 5.4.19. Atualizei a versão no servidor remoto para 5.4. Estou esperando... Até agora continua no 5.3.

Tem uns ítems que no Hostinger está desabilitado, enquanto no meu servidor local está habilitado, como o Virtual Directory Support, Thread Safety, Zend Multibyte Support etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao marcar um tópico como resolvido, poste como o fez ajudando assim, outros que venham a ter o mesmo problema (o que ocorre com frequência).

Isso ajudará na qualidade do fórum, que anda baixa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.