Ir para conteúdo

POWERED BY:

Arquivado

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

Gilberto Jr

Erro função header

Recommended Posts

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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 Jr

Compartilhar este post


Link para o post
Compartilhar em outros sites
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 Jr

Compartilhar este post


Link para o post
Compartilhar em outros sites
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 Jr

Compartilhar este post


Link para o post
Compartilhar em outros sites
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 Jr

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho é 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 Jr

Compartilhar este post


Link para o post
Compartilhar em outros sites

O 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
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

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