Jump to content
fael97

SESSÃO PHP SOME AO RELOGAR PÁGINA NA HOSPEDAGEM

Recommended Posts

Olá a todos bom dia, tarde ,noite...

bem estou com um problema meio chato, sempre que relogo a página no meu site a sessão que estava salva some.. eu preciso muito dela pois ela quem me mantem logado e navegando pelo site..

a estrutura do meu site é assim. É uma rede social: www.onfamily.com.br.

tenho a pagina de login que me leva para index, paginas de navegação que leva para pagina de cadastro de família caso não houver a sessão família. e caso não houver login nem senha  me leva pra pagina de login novamente.

o problema é que quando eu logo, após ir para página de navegação mostra a sessão família la emcima, mas quando eu relogo a página a sessão some, e me leva para página de cadastro de família, sendo que a família ja foi cadastrada e validade na página de login do qual está na sessão. alguem poderia me ajudar com este bug? pra não precisar ficar fazendo várias consultas sempre quando relogo a página?

 

meu codigo é assim:

 

Página processa_login: 

 

<?php 
    if((isset($_POST['email'])) and (isset($_POST['senha']))){

        //inclui arquivos de classes
        include('classes/classes.inc.php');
        //inclui arquivo de funcoes
        require_once('funcoes/conexao.func.php');

        $conn = Conn();

        if(!isset($_SESSION)) session_start();

        //recupera dados do form
        $email = $_POST['email'];
        $senha = utf8_encode($_POST['senha']);

        //instãncia novo objeto login da classe login
        $login = NEW Login("","","");
                    
        $retorno_log =  $login->autenticaUsuario("$email","$senha");                        

        if($retorno_log == 1){

            //atribui os valores a sessão
            $_SESSION['email'] = $email;
            $_SESSION['senha'] = $senha;

            $selecionar = $conn->prepare("
                SELECT informacoes_usuario.familia FROM informacoes_usuario 
                JOIN usuarios ON informacoes_usuario.usuario = usuarios.idusuario 
                WHERE email = ?
            ");
            $selecionar->execute(array($email));
            $registro = $selecionar->fetchAll(PDO::FETCH_ASSOC);

            if($registro[0]['familia'] != null){
                $_SESSION['familia'] = $registro[0]['familia'];

                if(isset($_SESSION['url'])){
                    echo "<script>window.location.assign('$url');</script>";
                }else{
                    echo "<script>window.location.assign('nav/index.php');</script>";
                }                            
            }else{
                echo "<script>window.location.assign('cadastro/criar_familia.php');</script>";
            }
        }else{
            echo "usuário ou senha incorretos";
        }            
    }else{
        echo "Houve um erro interno. <a href=\"javascript:history.back()\">Voltar</a>";
    }
?>                

 

trecho da página index: 

    //se não existe sessão, então inicia
    if(!isset($_SESSION)) session_start();
    
    //$_SESSION['url'] = $_SERVER['REQUEST_URI'];    

    //aqui imprime da primeira vez que faço o login, mas quando relogo a página a sessão some!, obs: a sessão email e senha continuam la

    echo $_SESSION['familia'];

    echo $_SESSION['email'];

    echo $_SESSION['senha'];
    if((!isset($_SESSION['email'])) and (!isset($_SESSION['senha'])) and (!isset($_SESSION['familia']))){
        header('location: ../index.php');
    }elseif((isset($_SESSION['email'])) and (isset($_SESSION['senha'])) and (!isset($_SESSION['familia']))){
        header('location: ../cadastro/criar_familia.php');
    }

 

alguem da um help por favor, porque a sessão família está aparecendo somente uma vez e sumindo, e a sessão email e senha não está? 

obs: no servidor local funciona perfeitamente, e antes estava funcionando normalmente após alterar alguns trechos que nem lembro mais oque é.

Share this post


Link to post
Share on other sites
Em 10/01/2019 at 12:43, fael97 disse:

Olá a todos bom dia, tarde ,noite...

bem estou com um problema meio chato, sempre que relogo a página no meu site a sessão que estava salva some.. eu preciso muito dela pois ela quem me mantem logado e navegando pelo site..

a estrutura do meu site é assim. É uma rede social: www.onfamily.com.br.

tenho a pagina de login que me leva para index, paginas de navegação que leva para pagina de cadastro de família caso não houver a sessão família. e caso não houver login nem senha  me leva pra pagina de login novamente.

o problema é que quando eu logo, após ir para página de navegação mostra a sessão família la emcima, mas quando eu relogo a página a sessão some, e me leva para página de cadastro de família, sendo que a família ja foi cadastrada e validade na página de login do qual está na sessão. alguem poderia me ajudar com este bug? pra não precisar ficar fazendo várias consultas sempre quando relogo a página?

 

meu codigo é assim:

 

Página processa_login: 

 

<?php 
    if((isset($_POST['email'])) and (isset($_POST['senha']))){

        //inclui arquivos de classes
        include('classes/classes.inc.php');
        //inclui arquivo de funcoes
        require_once('funcoes/conexao.func.php');

        $conn = Conn();

        if(!isset($_SESSION)) session_start();

        //recupera dados do form
        $email = $_POST['email'];
        $senha = utf8_encode($_POST['senha']);

        //instãncia novo objeto login da classe login
        $login = NEW Login("","","");
                    
        $retorno_log =  $login->autenticaUsuario("$email","$senha");                        

        if($retorno_log == 1){

            //atribui os valores a sessão
            $_SESSION['email'] = $email;
            $_SESSION['senha'] = $senha;

            $selecionar = $conn->prepare("
                SELECT informacoes_usuario.familia FROM informacoes_usuario 
                JOIN usuarios ON informacoes_usuario.usuario = usuarios.idusuario 
                WHERE email = ?
            ");
            $selecionar->execute(array($email));
            $registro = $selecionar->fetchAll(PDO::FETCH_ASSOC);

            if($registro[0]['familia'] != null){
                $_SESSION['familia'] = $registro[0]['familia'];

                if(isset($_SESSION['url'])){
                    echo "<script>window.location.assign('$url');</script>";
                }else{
                    echo "<script>window.location.assign('nav/index.php');</script>";
                }                            
            }else{
                echo "<script>window.location.assign('cadastro/criar_familia.php');</script>";
            }
        }else{
            echo "usuário ou senha incorretos";
        }            
    }else{
        echo "Houve um erro interno. <a href=\"javascript:history.back()\">Voltar</a>";
    }
?>                

 

trecho da página index: 

    //se não existe sessão, então inicia
    if(!isset($_SESSION)) session_start();
    
    //$_SESSION['url'] = $_SERVER['REQUEST_URI'];    

    //aqui imprime da primeira vez que faço o login, mas quando relogo a página a sessão some!, obs: a sessão email e senha continuam la

    echo $_SESSION['familia'];

    echo $_SESSION['email'];

    echo $_SESSION['senha'];
    if((!isset($_SESSION['email'])) and (!isset($_SESSION['senha'])) and (!isset($_SESSION['familia']))){
        header('location: ../index.php');
    }elseif((isset($_SESSION['email'])) and (isset($_SESSION['senha'])) and (!isset($_SESSION['familia']))){
        header('location: ../cadastro/criar_familia.php');
    }

 

alguem da um help por favor, porque a sessão família está aparecendo somente uma vez e sumindo, e a sessão email e senha não está? 

obs: no servidor local funciona perfeitamente, e antes estava funcionando normalmente após alterar alguns trechos que nem lembro mais oque é.

 

Cara, coloca o valor da sessão familiar fixo, e faz um teste, tipo assim:

//ao invés disso $_SESSION['familia'] = $registro[0]['familia'];
$_SESSION['familia'] = 1; // coloca isso.

vê ela ainda some.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By juliosertori
      Amigos, estou utilizando um sistema de FormValidation, e vem pronta algumas coisas, mas estou com dúvida:
       
      Como pego os dados desse POST no PHP?
       
      FormValidation.utils.fetch(formSubmitUrl, { method: 'POST', dataType: 'json', params: { name: form.querySelector('[name="username"]').value, email: form.querySelector('[name="password"]').value, }, }) Obrigado!
    • By msantino
      Bom dia.
       
      Estou desenvolvendo uma aplicação que vai acessar e gravar dados via webservice dentro do nosso crm... mas estou com um problema que quando tento fazer o acesso mostra a seguinte mensagem de erro:
       
      Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing Schema: can't import schema from 'http://dsksp015.phonoway.com.br:8051/wsDataServer/mex?xsd=xsd0' in /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php:113 Stack trace: #0 /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php(113): SoapClient->SoapClient('http://187.93.2...') #1 {main} thrown in /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php on line 113
       
      Não sei se faz alguma diferença, mas nosso CRM é o TOTVS RM
       
      Grato.
    • By mamotinho
      Boa noite! estou com dúvidas em relação a array, eu tenho uma procedure no SQL Server e essa procedure exibe uma lista de resultados, eu gostaria de pega o valor desses resultados e lista em um array para eu comparar com outro valor que vai ser selecionado em um select , tipo abaixo:
       
      $arraySelect = $db->prepare(exec WebSite.dbo.server_value_product 2);
      $arraySelect->execute();
      $arrayExemple = $arraySelect->fetchAll();

      procedure_list = array($arrayExemple);
       
      !in_array($valorSelect, $procedure_list){
         echo 'O Valor selecionado não existe nos resultados da procedure';
      }
       
       
      alguem sabe como posso listar o resultado da procedure em array. e sabe se o valor que procuro está entre os resultados da array.
    • By asacap1000
      Galera já não sei mais onde procurar, estou configurando o processo de login com certificação digital porém não consigo ler o retorno. No site da Certisign explica em java e .Net mas utilizo em minha aplicação da intranet tudo em PHP como eu teria que fazer. Segue exemplo que eles fornecem em .Net
       
      <form action="https://autenticador.certisign.com.br/CertisignLogin/certificado/login" method="get"> <input type="hidden" value="209" id="id" name="id"> <input type="hidden" value="CHAVE CRIPTOGRAFICA INICIAL" id="nome" name="nome"> <input type="hidden" value="http://www.seusite.com.br/suaAplicacao/retorno" id="retorno" name="retorno"> <div> <input type="image" src="images/ico-certisign_30x30.png" alt="Submit" id="btnLoginCertisign"> </div> </form> O de cima envia até aí tudo bem
       
      Abaixo o retorno que é o que não consigo fazer em PHP
       
      string retorno = Request["cb"]; string encryptionKey = "<conteúdo da chave criptográfica descarregada na etapa 2>"; retorno = CryptoLogin.Instance.DecryptText(retorno,encryptionKey);</conteúdo> A variável retorno deverá mostrar as informações como o exemplo aaixo.
       
      CertificadoBean: { emissor: Certisign Autoridade Certificadora TESTE, nome: "PROPRIETARIO DO CERTIFICADO DE TESTE", cpf: "001.002.003-44", cnpj: "", OAB: "", validade: "2015-05-27 20:59:59", emissao: "2014-05-27 21:00:00", email: "proprietario.teste@certisign.com.br", certificadoBase64: "MIIFmDCCBICgAwI...... BAQUFADCCARAx" }  
    • By Camilavip
      Queria saber como fazer esse select e quando eu trazer um estado ele já puxa as cidades contidos nele, e ao escolher a cidade ele trazer os bairros. Consegui pela internet mas só com estados e cidades. no caso em 2 níveis, e eu precisaria em 3, faço pelo mysqli
       
      Em estados no banco está assim
      CREATE TABLE `estados` ( `id_estado` int(10) NOT NULL, `estado` varchar(30) NOT NULL ) ENGINE=Aria DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `estados` -- INSERT INTO `estados` (`id_estado`, `estado`) VALUES (1, 'Rio de Janeiro'), (2, 'Minas Gerais'); Cidades
      CREATE TABLE `cidades` ( `id_cidade` int(10) NOT NULL, `id_estado` int(10) NOT NULL, `cidade` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `cidades` -- INSERT INTO `cidades` (`id_cidade`, `id_estado`, `cidade`) VALUES (1, 1, 'Rio de Janeiro'), (2, 2, 'Belo Horizonte'); E bairros
      CREATE TABLE `bairros` ( `id_bairro` int(10) NOT NULL, `id_cidade` int(10) NOT NULL, `bairro` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `bairros` -- INSERT INTO `bairros` (`id_bairro`, `id_cidade`, `bairro`) VALUES (1, 1, 'Centro'), (2, 1, 'Tijuca'), (3, 1, 'Leblon'), (4, 2, 'Pampulha');  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.