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

Sessões não funcionam


Guest --deqr --

Pergunta

Guest --deqr --

Pessoal,

estou com um problemas com sessões, desenvolvi todo um site em casa, no meu pc,

agora que passei para o servidor está acontecendo uma coisa estranha, bom,

pelo menos para mim:

Tento gravar 4 variáveis de sessões, destas, apenas 2 são gravadas,

alguém sabe porque isso??

Segue o código que utilizo para gravá-las:

<?php
session_start();

include "../includes/conect.php";

//RECEBE OS DADOS DO FORMULÁRIO
$login   =   $_POST["login"];
$senha     =   $_POST["senha"];

if ((!$login=="") and (!$senha=="")){
//VERIFICA
$sql   =   mysql_query("
           SELECT A.id, A.nome FROM usuarios A
           WHERE  A.login  =  '".$login."'
              AND A.senha    =  '".$senha."'") or die("ERRO NO COMANDO SQL");


//VERIFICA SE RETORNOU ALGO
if(!mysql_num_rows($sql)> 0){
echo "<script>
        alert(\"Não foi possível efetuar seu login. Caso você não seja cadastrado, efetue seu cadastro!\");
        </script>";
echo "<script>document.location = \"../cadastro.php\";</script>";    

} else {
     //PEGA OS DADOS
     $id   =   mysql_result($sql, 0, "id");
     $nome =   mysql_result($sql, 0, "nome");
    
    
     //GRAVA AS VARIÁVEIS NA SESSÃO
     $_SESSION["id"]    =   $id;
     $_SESSION["nome"]  =   $nome;
     $_SESSION["senha"]  =   $senha;
     $_SESSION["login"]  =   $login;
    
     //REDIRECIONA PARA A PÁGINA QUE VAI EXIBIR OS PRODUTOS
     Header("Location: ../index.php");
}//FECHA ELSE
} else {
    echo "<script>
        alert(\"Não foi possível efetuar seu login. Caso você não seja cadastrado, efetue seu cadastro!\");
        </script>";
    echo "<script>document.location = \"../cadastro.php\";</script>";    
}
?>

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

As sessões não estão sendo gravadas ou estão sendo gravadas em branco? Testou com o isset para verificar? Se estiver sendo gravado em branco verifique se o conteúdo que está sendo atribuído a elas não está em branco...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --deqr --

Não estão sendo gravadas, pois quando dou um echo nas váriaveis, antes de gravá-las em sessões,

estas mostram a string correta, os valores que devem ser.

Link para o comentário
Compartilhar em outros sites

  • 0

Troque isso:

$_SESSION["id"]    =   $id;
     $_SESSION["nome"]  =   $nome;
     $_SESSION["senha"]  =   $senha;
     $_SESSION["login"]  =   $login;
    
     //REDIRECIONA PARA A PÁGINA QUE VAI EXIBIR OS PRODUTOS
     Header("Location: ../index.php");
Por isso:
$_SESSION["id"]    =   $id;
     $_SESSION["nome"]  =   $nome;
     $_SESSION["senha"]  =   $senha;
     $_SESSION["login"]  =   $login;
    
echo 'ID '.$_SESSION["id"].'<BR>NOME '.$_SESSION["nome"].'<BR> SENHA '.$_SESSION["senha"].'<BR>LOGIN'.$_SESSION["login"];
     //REDIRECIONA PARA A PÁGINA QUE VAI EXIBIR OS PRODUTOS
    // Header("Location: ../index.php");

Mais um detalhe, lembre-se que se por acaso você em outra página que tem o session_start(); criar um variável chamada, por exemplo, $nome, o valor da sessão $_SESSION['nome'] passará a ser o valor da variável $nome (se register_globals estiver ON).

Link para o comentário
Compartilhar em outros sites

  • 0
Troque isso:

$_SESSION["id"]    =   $id;
     $_SESSION["nome"]  =   $nome;
     $_SESSION["senha"]  =   $senha;
     $_SESSION["login"]  =   $login;
    
     //REDIRECIONA PARA A PÁGINA QUE VAI EXIBIR OS PRODUTOS
     Header("Location: ../index.php");
Por isso:
$_SESSION["id"]    =   $id;
     $_SESSION["nome"]  =   $nome;
     $_SESSION["senha"]  =   $senha;
     $_SESSION["login"]  =   $login;
    
echo 'ID '.$_SESSION["id"].'<BR>NOME '.$_SESSION["nome"].'<BR> SENHA '.$_SESSION["senha"].'<BR>LOGIN'.$_SESSION["login"];
     //REDIRECIONA PARA A PÁGINA QUE VAI EXIBIR OS PRODUTOS
    // Header("Location: ../index.php");

Mais um detalhe, lembre-se que se por acaso você em outra página que tem o session_start(); criar um variável chamada, por exemplo, $nome, o valor da sessão $_SESSION['nome'] passará a ser o valor da variável $nome (se register_globals estiver ON).

Cara, seguinte, fiz a substituição que você pediu,

mostra td certo, os valores corretos, mas não intendo porque quando vou para a página

que preciso verificar isso, é como se não estivesse gravado nada.

Segue abaixo o inicio do código da página que verifica os valores:

session_start();

include "includes/conect.php";

//verifica se está logado senao vai para página d login

if( (!isset($_SESSION["id])) and (!isset($_SESSION["login"])) ){

Header("Location: cadastro.php");

}

//Consulta os gibis cadastrados

$sql = "select id, titulo from gibis where login=".$_SESSION["login]."'";

$gibis = mysql_query($sql);

if (!$_GET['id']==") {

$_SESSION["idgibi] = $_GET['id'];

}

//Exclusao

if ($_GET['op'] == "E") {

foreach($_POST["alterar"] as $altera)

{

$ex = mysql_query("delete from gibis where id=.$altera);

$ex = mysql_query("delete from quadros where id=".$altera);

}

echo "<script>document.location = \"montar_gibi.php\";</script>";

}

if ($_GET['op] == "X") {

if (!$_GET['idq'] == "") {

$ex = mysql_query("delete from quadros where id=.$_GET['idq]);

echo "<script>document.location = \"montar_gibi.php?op=A&id=".$_GET['id']."\";</script>";

}

}

Por favor, ajuda ae

Link para o comentário
Compartilhar em outros sites

  • 0

Coloca ai pelo meio do código dessa outra página:

echo (!isset($_SESSION["id"])?'ID SETADO<BR>':'ID NÃO SETADO<BR>';

echo (!isset($_SESSION["login"])?'LOGIN SETADO<BR>':'LOGIN NÃO SETADO<BR>';

echo (!isset($_SESSION["nome"])?'NOME SETADO<BR>':'NOME NÃO SETADO<BR>';

echo (!isset($_SESSION["senha"])?'SENHA SETADO<BR>':'SENHA NÃO SETADA<BR>';

Assim já vai dizer se tá setado ou não, pois se não tiver tem que ver se em algum lugar não tem um session_destroy, se estiver setado e não estiver aparecendo nada ai é procurar onde os dados das sessões estão sendo alterados...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --deqr --
Coloca ai pelo meio do código dessa outra página:

echo (!isset($_SESSION["id"])?'ID SETADO<BR>':'ID NÃO SETADO<BR>';

echo (!isset($_SESSION["login"])?'LOGIN SETADO<BR>':'LOGIN NÃO SETADO<BR>';

echo (!isset($_SESSION["nome"])?'NOME SETADO<BR>':'NOME NÃO SETADO<BR>';

echo (!isset($_SESSION["senha"])?'SENHA SETADO<BR>':'SENHA NÃO SETADA<BR>';

Assim já vai dizer se tá setado ou não, pois se não tiver tem que ver se em algum lugar não tem um session_destroy, se estiver setado e não estiver aparecendo nada ai é procurar onde os dados das sessões estão sendo alterados...

Só queria dizer que consegui resolver o problema,

era mais ou menos isso mesmo,

troquei os nomes das sessões e funcionou,

provavelmente havia outra variável com o mesmo nome,

e provavelmente no servidor estava habilitado variáveis globais.

Valeu pela ajuda pessoal!

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...