Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia;
No meu painel de controle do site que eu estou desenvolvendo, a pagina de validação do login, tem a função header para fazer o direcionar para outra pagina.
Exemplo, tem a condição if else.
se for verdadeiro ele encaminha para uma pagina
header('location: painel.php');
e se for falso ele encaminha para outra pagina.
header('location: index.php');
Mas esta dando erro. Abaixo esta a mensagem de erro.
**Warning**: Cannot modify header information - headers already sent by (output started at /home/frutisulcom/public_html/site/admin/valida_login.php:1) in **/home/frutisulcom/public_html/site/admin/valida_login.php** on line **38**
E na linha 38 esta o código
header('location: painel.php');
o site esta hospedado na HostGator e na minha maquina, localhost funciona.
Alguém pode me ajudar?
Grato
Gilberto Jr
Att;>
1 hora atrás, tetsuo disse:
Olá!
Isso acontece porque algo já foi entregue para o browser.
declare header quando nada tiver sido entregue para o browser ainda.
Em outras palavras:
declare header antes de qualquer trecho html
ou então trechos php que tenham echo, print, print_r, var_dump, etc...
Declare header somente na camada de processos/lógica
@tetsuo, veja meu código da pagina abaixo.
Como eu faria pra fazer dessa forma que você mencionou? Veja que minha pagina não tem TAG html em sim.
<?php
//session_start();
$usuariot = $_POST['usuario'];
$senhat = md5($_POST['senha']);
//echo $usuariot.' - '.$senhat."<br/>";
include_once("conexao_n.php");
$result = mysqli_query($link,"select * from usuarios where login='$usuariot' and senha='$senhat' and ativo=1");
$resultado = mysqli_fetch_assoc($result);
//echo "Usuario: ".$resultado['nome'];
if(empty($resultado)){
//mensagem de erro
$_SESSION['loginErro'] = "<div class='alert-danger'>Usuário ou senha Inválido</div>";
//MANDA O USUARIO PARA A TELA DE LOGIN
header("Location: index.php");
}else{
//Define os valores atribuidos na sessão do usurio
$_SESSION['usuarioId'] = $resultado['Id'];
$_SESSION['usuarioNome'] = $resultado['nome'];
$_SESSION['usuarioSobrenome'] = $resultado['sobrenome'];
$_SESSION['usuarioEmail'] = $resultado['email'];
$_SESSION['usuarioAtivo'] = $resultado['ativo'];
$_SESSION['usuarioLogin'] = $resultado['login'];
$_SESSION['usuarioSenha'] = $resultado['senha'];
$_SESSION['usuarioNivelAcesso'] = $resultado['nivel_acesso_id'];
if($_SESSION['usuarioNivelAcesso'] == 1){
header("Location: painel.php");
}else{
header("Location: usuario.php");
}
}
?>
Fico agradecido.
Att;
Gilberto JrEste é o arquivo valida_login.php?
o que tem na linha 1?
e na linha 38?
>
Agora, tetsuo disse:
Este é o arquivo valida_login.php?
o que tem na linha 1?
e na linha 38?
Isso, o que tem na linha 1 é a abertura do script php
<?php
e na linha 38 tem o código
if($_SESSION['usuarioNivelAcesso'] == 1){
header("Location: painel.php"); //linha 38
}else{
header("Location: usuario.php");
}
Att;
Gilberto Jraparententeme há espaços antes da tag de abertura do php
remova os espaços
>
15 minutos atrás, tetsuo disse:
aparententeme há espaços antes da tag de abertura do php
remova os espaços
Revisei meu codigo pra ver se havia espaço na abertura do php, mas não tem.
Esta tudo certo.
Att;
Gilberto JrE o sr. está acessando este arquivo direto na url?
a sua url termina com valida_login.php?
>
13 minutos atrás, tetsuo disse:
E o sr. está acessando este arquivo direto na url?
a sua url termina com valida_login.php?
Não, essa pagina valida_login.php esta no action do formulário que o usuário digita o usuário e senha.
<form class="form-signin" method="post" action="valida_login.php">
Att;
Gilberto JrEstranho é que eu criei uma pagina somente com o
<?php
header("location: http://www.tecnogalli.com.br");
?>
E subi essa pagina para o ftp, em seguida eu rodei a pagina pelo navegador, e quando ela executou funcionou.
Att;
Gilberto JrO arquivo conexao_n.php está sendo chamado no decorrer do código.
Meu palpite é que esse arquivo tenha algum caractere antes da abertura do php (<?php) ou após o fechamento (?>).
Certifique-se que este arquivo não esteja imprimindo nenhum dado antes da abertura e remova o fechamento, já que ele é opcional justamente para previnir esse tipo de problema. Exemplo:
<?php //nenhum caractere antes do "<"
// aqui vem sua conexão
//?> ---> não precisa desse cara
E obviamente, nenhum echo no meio de qualquer um desses 2 arquivos (até o header).
Ah, e mais uma coisa importante: coloque um exit após cada header. Exemplo:
if($_SESSION['usuarioNivelAcesso'] == 1){
header("Location: painel.php");
exit;
}else{
header("Location: usuario.php");
exit;// isso é importante
}
Olá!
Isso acontece porque algo já foi entregue para o browser.
declare header quando nada tiver sido entregue para o browser ainda.
Em outras palavras:
declare header antes de qualquer trecho html
ou então trechos php que tenham echo, print, print_r, var_dump, etc...
Declare header somente na camada de processos/lógica