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

(Resolvido) Problema desconhecido com Sessions


Anderson Ferreira

Pergunta

Olá galera .. Estou fazendo meu site em PHP com um sistema de 'login e senha'...

Ai na index.php (página inicial) coloquei o seguinte script no COMEÇO da página:

<?php

    session_start();
        @$_SESSION["login"];
        @$_SESSION["senha"];

    #variaveis
        @$login = $_SESSION["login"];
        @$senha = $_SESSION["senha"];

[...]
Isso serve pra verificar se o usuário fez login ou não. Para isso, na mesma página (index.php) utilizaei o seguinte script:
$conexao_verificacao_login = ("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'");
$RS = mysql_query($conexao_verificacao_login);

    if (mysql_num_rows($RS) > 0)
        {
        include "paginas/barra_login_on.php"; // SERÁ CARREGADO UMA PÁGINA COM A MENSAGEM: OLÁ nome_de_usuário
        }

        else
            {
            include "paginas/barra_login_off.php"; // SERÁ CARREGADO UMA PÁGINA COM A MENSAGEM: Olá visitante
            }
------------------------ Quando eu abro o site pelo servidor no meu computador (localhost), o site funcionar perfeitamente :D MÁS .. Quando eu mando pro servidor da internet, ele da erro :'( // Na parte de cima da página, aparece os seguintes erros:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/xxx/www/index.php:2) in /home/xxx/www/index.php on line 4 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/xxx/www/index.php:2) in /home/xxx/www/index.php on line 4
Eu já vi um erro parecido, quando eu coloquei as 'sessions' no meio da páginas; mas agora as sessions estão no início da página, antes de qualqr coisa :S Qual será o problema ? :( A linha 4 que ele está dando erro é esta linha:
session_start();

-------

Pelo pouco q entendo de PHP, percebi q este erro é pelo motivo q não tem nenhum valor definido para as variáveis: "$_SESSION["login"];" e "$_SESSION["senha"];"

O problema é q preciso dessa session pra poder verificar se o usuário está logado ou não. porque lá no meio da página, podem ver de acordo com o código acima, que eu irei fazer ma consulta no BD, se o resultado for maior q zero, qr dizer q o usuário esta fez login, caso contrário, não fez login.

Bom galera, não queria pergunta, pois já fiz muitas perguntas ultimamente pra você's.. Mas é q essa ta difícil de resolver, não sei porque esta assim :'(

Obrigado (e desculpas),

Anderson Ferreira

Editado por Anderson Ferreira
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Sim, ela esta no inicio de toda a página...

Ta assim:

index.php

<?php

    session_start();
        @$_SESSION["login"];
        @$_SESSION["senha"];

    #variaveis
        @$login = $_SESSION["login"];
        @$senha = $_SESSION["senha"];

[...]

Link para o comentário
Compartilhar em outros sites

  • 0

Descobri mais ou menos o erro ..

O problema q estou colocando um header ("Location: pagina.php"); para redirecionar. E estou colocando vários deles, e alguns no meio do site.

E descobri, q assim como os session's, os header's não podem ficar no meio da página. Sempre no começo.

Mas como vou colocar um header no começo se preciso deles no meio da página?

porque se eu colocar no começo da página, ele vai reedirecionar imediatamente, logo quando a página carregar. Mas qro q ele redirecione só no meio da página, pois vários deles estão dentro de um IF.

/////

Alguém poderia me ajudar?

Obrigado,

Anderson Ferreira

Link para o comentário
Compartilhar em outros sites

  • 0
<?php

function carregar1() {

header ("Location: pagina.php");

}

function carregar2() {

header ("Location: pagina2.php");

}

?>

<?php echo carregar1(); ?>

testa isso..

espero ter ajudado

Fiiz isso em todas as páginas, e mesmo assim continua com inúmeros erros :( :( :(

vou postar por partes, primeiro vou tentar resolver o do index.php... o seguinte erro esta aparecendo na página inicial (xxx.com):

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/xxx/www/index.php:2) in /home/xxx/www/index.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/xxx/www/index.php:2) in /home/xxx/www/index.php on line 4
Mas, meu Deuuuuuuuuuuuuuuuus .. nãao tem nada antes do session, NADA :angry: Podem conferir: index.php
<?php

    session_start();
        @$_SESSION["login"];
        @$_SESSION["senha"];

    #variaveis
        @$login = $_SESSION["login"];
        @$senha = $_SESSION["senha"];

    @$local = $_GET["local"];

    if ($local == "")
        {
        $local = "index";
        }

    include "paginas/conexao.php";

?>


<HTML>

<HEAD>

        <title> xxx </title>

        <link rel='stylesheet' href='css/estilo.css' media='all' type='text/css'>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <script type='text/javascript' src='js/jquery-1.3.2.min.js'></script>
        <script type='text/javascript' src='js/menu_sanfona.js'></script>
        <script type='text/javascript' src='js/login_e_registrar.js'></script>

</HEAD>


<BODY>

    <div class='tudo'>

        <?php include "paginas/cabecario.php"; ?>

        <div class='conteudo_geral'>

            <?php include "paginas/menu.php"; ?>
            <?php include "paginas/barra_login.php"; ?>


            <div class='conteudo_texto'>

                <?php

                    $comentarios = "OFF";
                    $pagina = "00000";

                    include "paginas/"."$local".".php";
                    include "paginas/postar_comentarios.php";
                    include "paginas/exibir_comentarios.php";

                ?>

            </div> <!-- FIM - DIV 'conteudo_texto' -->

        </div> <!-- FIM - DIV 'conteudo_geral' -->

    </div> <!-- FIM - DIV 'tudo' -->

</BODY>

</HTML>

Já olhei, desolhei, reeolhei .. NADA antes do session ;; e esse FDP do PHP ainda qr teimar :X

Gostaria muito da ajuda de você's (e agradeço a grande ajuda até o momento).. // desculpa o incomodo pessoal, mas esse é meu 1° super-projeto, com sistema de login, senha, comentarioos .. vou ficar tão emocionado se terminar *-------*

Obrigado,

Anderson Ferreira

Editado por Anderson Ferreira
Link para o comentário
Compartilhar em outros sites

  • 0

Galera ... ta muitooo estranho isso :S // não to entendo mais nada ..

ta, eu assumo, não manjo nada em PHP (pelo menos uns 3% eu manjo KKK) ... mas eu sei o sufiente, para saber q o SESSION tem q ficar antes de tudo, e o %@$#@ está antes de tudo.

Podem ver, nãao estou louco, não tem nada antes do Session!!!!!!!

index.php

<?php

    session_start();

    if
        (isset($_SESSION['login'],$_SESSION['senha']))

        {
        $login = $_SESSION["login"];
        $senha = $_SESSION["senha"];
        }

        else

            {
            $login = 0;
            $senha = 0;
            }

    @$local = $_GET["local"];

    if ($local == "")
        {
        $local = "index";
        }

    include "paginas/conexao.php";

?>


<HTML>

<HEAD>

        <title> xxx </title>

        <link rel='stylesheet' href='css/estilo.css' media='all' type='text/css'>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        &lt;script type='text/javascript' src='js/jquery-1.3.2.min.js'></script>
        &lt;script type='text/javascript' src='js/menu_sanfona.js'></script>
        &lt;script type='text/javascript' src='js/login_e_registrar.js'></script>

</HEAD>


<BODY>

    <div class='tudo'>

        <?php include "paginas/cabecario.php"; ?>

        <div class='conteudo_geral'>

            <?php include "paginas/menu.php"; ?>
            <?php include "paginas/barra_login.php"; ?>


            <div class='conteudo_texto'>

                <?php

                    $comentarios = "OFF";
                    $pagina = "00000";

                    include "paginas/"."$local".".php";
                    include "paginas/postar_comentarios.php";
                    include "paginas/exibir_comentarios.php";

                ?>

            </div> <!-- FIM - DIV 'conteudo_texto' -->

        </div> <!-- FIM - DIV 'conteudo_geral' -->

    </div> <!-- FIM - DIV 'tudo' -->

</BODY>

</HTML>
Dei uma arrumada no código, coloqei o inset para verificar o session. Até melhorou, pois não precisei colocar o @ nos sessions. Mas o merd* do PHP insiste dar o seguinte erro:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/xxx/www/index.php:1) in /home/xxx/www/index.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/xxx/www/index.php:1) in /home/xxx/www/index.php on line 3

Meu DEEEEEEEEEEEEEEEEEEEEUS .. não tem nada antes do session, nada (ta, eu já faleei isso, mas sei lá .. estou loko ? cego ? tem alguma coisa antes do session e não estou vendo? xD)

E o pioor de tudo: no localhost no meu PC, funciona normal .. mas quando mando pro servidor, não funciona :angry:

AJÚDAAAAAAAAAAAAAAAAAAAA :( :unsure:

Editado por Anderson Ferreira
Link para o comentário
Compartilhar em outros sites

  • 0

ÁFF , Descobri o problema disso tudo ..

Realmente não era nada antees do Session (HUHU, não estoou louco)

O problema era q eu tinha q configurar as configurações avançados do meu servidor de hospedagem.

Então, onde estava: session.auto_start - Ao habilitar, as sessões do PHP são iniciadas automaticamente.

Estava como não, ai troquei para sim .. Funcionou :blush: ;) ^_^ :rolleyes: B) :lol: :D :P

Link para o comentário
Compartilhar em outros sites

  • 0

===============================================================================================

Olá galera, esta parte resolvi :D

Agora estou com outro problema, então resolví aproveitar o mesmo post, já q é sobre erros em PHP, um assunto relacionado.

----

Tenho um formulário para fazer login no site. E o action desse formulário é esta página:

login.php

<?php

    session_start();
        $_SESSION["login"] = $_POST["login"];
        $_SESSION["senha"] = $_POST["senha"];

    function header1()
        {
        header ("Location: ../index.php?local=perfil");
        }

    function header2()
        {
        header ("Location: ../index.php?local=login_erro");
        }

    #variaveis
        $login = $_SESSION["login"];
        $senha = $_SESSION["senha"];

    include "conexao.php";


    $conexao_login = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'");
    $RS = array();

    if (mysql_num_rows($conexao_login) > 0)
        {
        $RS = mysql_fetch_array($conexao_login);
        echo header1();
        }

        else
            {
            echo header2();
            }

?>
Acho q está tudo certo, mas está dando o seguinte erro:
Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/www/paginas/login.php:2) in /home/xxx/www/paginas/login.php on line 10
A linha 10, é esta linha:
header ("Location: ../index.php?local=perfil");

O problema é só no reedirecionamento. Pois quando volto pra index, o login é efetuado com sucesso. O único problema q ele não está reedirecionando, e está dando este erro.

Obrigado,

Anderson Ferreira

Editado por Anderson Ferreira
Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, a mensagem:

Aviso: session_start (): Não é possível enviar o limitador de cache da sessão - cabeçalhos já enviados

Diz que o cabeçalho já foi enviado...as vezes não conseguimos achar o erro, por mais que tentemos e olhemos com muita calma. 

Bem, o cabeçalho já foi enviado, o session_start() já está ativo, então só "iniba" o erro e "toca pra frente"...

Como inibir o erro? Simples use desta forma:

<? @session_start() ?>

beleza 

Agraços 

Edgar Caldeira da Cruz

Editado por Edgar Caldeira da Cruz
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
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...