Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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](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](http://www.criandobits.bl.ee/paginas/_avisoLogin.php)"). //redirecionamento para página de aviso }?><?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.Poste o código da página _validarFormCadastro.php (se ela existir) para analisar melhor..
Já postei.
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" />
>
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.
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.
Tente colocar em sua primeira linha: ob_start();
>
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.
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"){
...Tente colocar em sua primeira linha: ob_start();
Onde? No _validaFormLogin.php ? Se sim, fiz isso mas não resolveu.
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.
>
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?
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,)
}>
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?
No servidor local funciona? A exibição de erros está habilitada?
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.
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)
>
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.
Estou com o mesmo problema
depois da atualização parou de funcionar
como fez pra funcionar?
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.
Poste o código da página _validarFormCadastro.php (se ela existir) para analisar melhor..