Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Estranho... Diz Que Não Posso Modificar Header


Rubiz Gardini

Pergunta

Tenho um sistema de login que usei em um servidor e funcionou direitinho... dessa vez, pra outro servidor, ele dá um erro estranho:

Warning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\modelandoideias\admin\login.php:1) in C:\Inetpub\modelandoideias\admin\login.php on line 22

Este é meu código, parece que esse aviso está indicando as linhas do setcookie e do redirecionamento para a página interna de logado.... Ele não está permitindo nenhuma linha de código do else...

<?php
// obtém os valores digitados
$username = $_POST["username"];
$senha = $_POST["senha"];

// acesso ao banco de dados
include "conecta_mysql.inc";
$resultado = mysql_query("SELECT * FROM usuarios where username='$username'");
$linhas = mysql_num_rows ($resultado);
if($linhas==0)  // testa se a consulta retornou algum registro
{
    header ("Location: admin.php");
}
else
{
       if ($senha != mysql_result($resultado, 0, "senha")) // confere senha
    {
        header ("Location: erro.php");
    }
    else   // usuário e senha corretos. Vamos criar os cookies
    {
        setcookie("nome_usuario", $username);
        setcookie("senha_usuario", $senha);
        // direciona para a página inicial dos usuários cadastrados
        header ("Location: admin.php");
    }
}
mysql_close($con);
?>

Alguém desvenda esse mistério?

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Quanto ao fato de funcionar em um servidor e não funcionar em outro, isso se deve a configuração do php.ini.

Quanto ao erro, é porque alguma coisa está dando saída para o navegador antes de redirecionar (header(location:...)), isso gera o erro citado pelo PHP.

Para alterar tente primeiro usar o ob_start() e ob_end_flush(), caso não funcione ai você tem 2 opções:

1 - achar o que está dando saída para o navegador antes do header;

2 - usar javascript para redirecionar.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá obrigada pela pronta resposta!

Eu vi quanto a essa regra ob_start, não captei como ela poderia ser usada aqui no caso... Vou tentar com JS mesmo, se não der certo, volto a postar...

========editado===============

Olha, não sei como usar o javascript dentro do php e também, preciso dessa validação;

Se alguém puder me ajudar fico grata!

Editado por Rubiz Gardini
Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

que interessonte...!

O negócio foi agora!!! Só que ele não escreve o fdp do cookie no meu browser, então quando tento redirecionar, a página que checa cookies não deixa entrar... meu browser não tem configurações anti-cookies...

Link para o comentário
Compartilhar em outros sites

  • 0

Eu pesquisei um pouco o manual do php, com um exemplo que tinha lá consegui enviar cookies pro browser, isso quer dizer que po problema não é meu server... Olhem o código pra ver comigo se descobrem alguma coisa...

Código que cria cookies

<?php
ob_start();
// obtém os valores digitados
$username = $_POST["username"];
$senha = $_POST["senha"];

// acesso ao banco de dados
include "conecta_mysql.inc";
$resultado = mysql_query("SELECT * FROM usuarios where username='$username'");
$linhas = mysql_num_rows ($resultado);
if($linhas==0)  // testa se a consulta retornou algum registro
{
    header ("Location: admin.php");
}
else
{
       if ($senha != mysql_result($resultado, 0, "senha")) // confere senha
    {
        header ("Location: erro.php");
    }
    else   // usuário e senha corretos. Vamos criar os cookies
    {
    echo 'entrou no else';
        setcookie("nome_usuario", $username);
        setcookie("senha_usuario", $senha);
        // direciona para a página inicial dos usuários cadastrados
        header ("Location: admin.php");
    }
}
mysql_close($con);

ob_end_flush();
?>
Código que valida cookies:
<?php
if(isset($_COOKIE["nome_usuario"]))
    $nome_usuario = $_COOKIE["nome_usuario"];
if(isset($_COOKIE["senha_usuario"]))
    $senha_usuario = $_COOKIE["senha_usuario"];

if(!(empty($nome_usuario) OR empty($senha_usuario)))
{
    include "conecta_mysql.inc";
    $resultado = mysql_query("SELECT * FROM usuarios WHERE username='$nome_usuario'");
    if(mysql_num_rows($resultado)==1)
    {
        if($senha_usuario != mysql_result($resultado,0,"senha"))
        {
            setcookie("nome_usuario");
            setcookie("senha_usuario");
            header ("Location: erro.php");
            exit;
        }
    }
    else
    {
        setcookie("nome_usuario");
        setcookie("senha_usuario");
        header ("Location: erro.php");
        exit;
    }
}
else
{
    header ("Location: erro.php");
    exit;
}

mysql_close($con);
?>
O código que peguei e deu certo foi esse:
<?php
// set the cookies
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");

// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['cookie'] as $name => $value) {
        echo "$name : $value <br />\n";
    }
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Uma coisa que eu me esqueci foi, ao contrário do header("Location:..."), segurar o buffer de saída com o ob_start() é ineficiente com o setcookie, pois depois que qualquer coisa dê saída não se poderá mais gravar um cookie...

Link para o comentário
Compartilhar em outros sites

  • 0

Tanto faz iniciante ou não... tem muitos detalhes pra se lembrar que a gente só fica sabendo ou relembra na hora do desenvolvimento... mas no caso você tem a opção de utilizar javascript para redirecionar, isso vai evitar o erro de headers already sent...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --rubiz --

Isso pode ser um erro ou inadequação de servidor?

Pois eu estou mudando de servidor, espero que este seja melhor!!! Pois em outro servidor que eu utilizei, esse problema nunca aconteceu!! Com esse mesmo script... :o

Link para o comentário
Compartilhar em outros sites

  • 0
Tenho um sistema de login que usei em um servidor e funcionou direitinho... dessa vez, pra outro servidor, ele dá um erro estranho:
Warning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\modelandoideias\admin\login.php:1) in C:\Inetpub\modelandoideias\admin\login.php on line 22

Este é meu código, parece que esse aviso está indicando as linhas do setcookie e do redirecionamento para a página interna de logado.... Ele não está permitindo nenhuma linha de código do else...

<?php
// obtém os valores digitados
$username = $_POST["username"];
$senha = $_POST["senha"];

// acesso ao banco de dados
include "conecta_mysql.inc";
$resultado = mysql_query("SELECT * FROM usuarios where username='$username'");
$linhas = mysql_num_rows ($resultado);
if($linhas==0)  // testa se a consulta retornou algum registro
{
    header ("Location: admin.php");
}
else
{
       if ($senha != mysql_result($resultado, 0, "senha")) // confere senha
    {
        header ("Location: erro.php");
    }
    else   // usuário e senha corretos. Vamos criar os cookies
    {
        setcookie("nome_usuario", $username);
        setcookie("senha_usuario", $senha);
        // direciona para a página inicial dos usuários cadastrados
        header ("Location: admin.php");
    }
}
mysql_close($con);
?>

Alguém desvenda esse mistério?

use <? echo "<script>window.location.href = 'admin.php';</script>";?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...