Jump to content
AllysonSouza

Problema com SESSION

Recommended Posts

Bom, eu faco o login da minha pagina, e deixo a ID armazenada na SESSION, ai beleza, uso essa SESSION para cadastrar em um tabela, tudo certo, só que depois que eu volto para pagina inicial, a SESSION parece que expirou, ela nao funciona mais..., mas isso só quando hospeda, pq testando pelo localhost isso não acontece, eu cadastro e volto e a SESSION  ainda funciona, vou postar o codigo abaixo... 

 

login.php

<?php
session_start();
//incluir a conex�o para todo o site
include "conexao.php";
?>
<!Doctype html>
<html>
	<head>
		<title>Login</title>
		<meta charset="utf-8">
		<!-- Chamada do framework jQuery -->
		<script src="css/bootstrap/js/jquery-3.2.1.min.js"></script>
		
		<!-- Chamada do framework bootstrap -->
		<link rel="stylesheet" href="css/bootstrap/css/bootstrap.min.css">
		<link rel="stylesheet" href="css/bootstrap/css/bootstrap-theme.min.css">
		<script src="css/bootstrap/js/bootstrap.min.js"></script>
	
		<script>
			function showAlertaErro(){
				//$("#alerta-erro").show(2000).delay(1000).hide(2000);
				$("#alerta-erro").slideDown(400).delay(3000).slideUp(400);
				//$("#alerta-erro").fadeIn(2000).delay(1000).fadeOut(2000);
				
			}
		</script>
	
		<style>
		  .panel{
		      width: 60%;
		      margin: 0 auto;
		      margin-top: 20px;
		  }
		  
		  #alerta-erro{
		      display: none;
		  }
		</style>
	
	</head>
	<body>
	
		<div id="alerta-erro" class="alert alert-danger" role="alert">
			<h4>Falha no login</h4>
			Usuário e/ou senha inválidos
		</div>
	
		<div class="container-fluid">

			<div class="panel panel-warning">
				<div class="panel-heading">
					<h4>Acesso restrito</h4>
				</div>
				
				<div class="panel-body">
					<form action="" method="post">
    					<div class="form-group">
    						<label for="nome">Login</label>
    						<input type="text" name="fnome" id="nome" class="form-control" placeholder="Digite seu login" required>
    					</div>
    					
    					<div class="form-group">
    						<label for="senha">Senha</label>
    						<input type="password" name="fsenha" id="senha" class="form-control" placeholder="Digite sua senha" required>
    					</div>
    					
    					<input type="submit" value="Acessar" class="btn btn-success">
    					<input type="reset" value="Limpar Campos" class="btn btn-default">
					</form>
				</div>
				
			</div>
	
		</div>
	</body>
</html>
<?php 
    //Verificar se ele clicou em acessar
    if(!empty($_POST)){
        //REsgatar os dados do form
        $nome = $_POST['fnome'];
        $senha = $_POST['fsenha'];
        
        //script para verificar se existe um e-mail com esta senha no banco
        $sql = "SELECT
                        *
                    FROM
                        funcionarios
                    WHERE
                        nome = '$nome'
                    AND
                        senha = MD5('$senha')";
        
        //Executar no banco de dados
        $res = mysqli_query($con, $sql);
        
        //Verificar se existe resultado em res
        $dados = mysqli_fetch_array($res);
        
        //Verificar se o usuário conseguiu logar
        if($dados['id']==""){
            echo "<script>";
            echo "showAlertaErro();";
            echo "</script>";
            $_SESSION['logado'] = false;
        }else{
            $_SESSION['logado'] = true;
            $_SESSION['id'] = $dados['id'];
            header("location:index.php");
        }
        
    }
?>

 

inicio.php

<?php 

$id = $_SESSION['id'];


$sql = "SELECT 
                f.id,
                f.nome,
                f.data_admissao,
                f.salario
            FROM
                funcionarios f
            WHERE
                id = $id";
    $res = mysqli_query($con, $sql);
    while($linha = mysqli_fetch_array($res)){
    ?>

<div class="jumbotron">
  <h1>Bem Vindo <?php echo $linha['nome'] ?></h1>
  <?php } ?>
  <p>
  		Gerencie todos os conteúdos do seu site nesta página.
  		Hoje é dia <?php echo date("d/m/Y"); ?>.
  </p>
  <p><a class="btn btn-primary btn-lg" href="logout.php" role="button">Sair</a></p>
</div>

 

cadastrar.php

<?php 
        $teste = $_SESSION ['id'];
     
    //Verificar se o post n�o est� vazio
  
        //Executa a��o para cadastrar
      
       
        //Script de inser��o de estado
        $sql = "INSERT INTO vendas
                    (total, data_hora, clientes_id, funcionarios_id, hora) 
                  values(0, now(), 1, $teste , now())";
        $res = mysqli_query($con, $sql) or die(mysqli_error($con));
        
        //SELECT o ultimo id cadastado pela conexão atual
        $sql = "SELECT max(id) as id FROM vendas";
        $resMaxId = mysqli_query($con, $sql);
        $dados = mysqli_fetch_array($resMaxId);
        $ultimoIdVenda = $dados['id'];
        
        if($res==1){
            echo "<script>";
            echo "alert('Cadastrado com sucesso');";
            echo "window.location = 'index.php?pasta=vendas&acao=produtos&venda_id=$ultimoIdVenda';";
            echo "</script>";
        }else{
            echo "Erro ao cadastrar";
        }
        
    

?>

Detalher: quando eu deslogo e relogo, a SESSION funciona novamente...

Share this post


Link to post
Share on other sites

Estou com um problema parecido (faltou tempo para corrigir :), pelo que pesquisei, quando nao definimos as configurações na sessão, recebemos as configurações default do php.ini, que pode variar de instalação para instalação, SO para SO, dando esses desgastes. Voce pode alterar essa configuração diretamente no php.ini (caso tenha acesso ao mesmo) ou entao (o que seria mais correto na minha opnião) definir as validades e as durações em cada página pois elas ficariam funcionais em qualquer local. Segue o link do php.net ensinando:

 

https://secure.php.net/manual/pt_BR/function.session-cache-expire.php

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 Sapinn
      Tô fazendo esse forum pq não achei nada que me ajudasse. Tenho um site em que os professores dão temas para as usuarios produzirem textos, basicamente um site de historias. Preciso que o aluno saiba se ja fez um texto sobre aquele determinado tema. Sendo assim tenho duas tabelas no meu banco usuario que cadastra todos os usarios e historia que tem o tema. Quando o aluno vai enviar a historia automaticamente envia seu email. O que eu realmente quero é comparar se o email existe nas duas tabelas se sim ele retorna já foi feito se não ele retorna Nada feito ainda.
    • By Kellyfer
      Ola estou tentando publicar imagens multilas usando o comando FOR mas nao estou acertando, alguem poderia me ajudar??
      /*script*/
      <?php 
      date_default_timezone_set('America/Sao_Paulo');
      session_start();?> 
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="utf-8">
          <title>Upload de Imagens</title>
      </head>
      <body>
      <!--FORMULÁRIOS-->
      <form action="upload.php" method="post" enctype="multipart/form-data">
          <input type="file" name="arquivos[]" multiple required>
          <input type="submit" value="Publicar">
      </form>
      <p>
      <?php 
      if(isset($_SESSION['erro'])):
          echo $_SESSION['erro'];
          session_unset();
      elseif(isset($_SESSION['sucesso'])):
          echo $_SESSION['sucesso'];
          session_unset();
      endif;
      ?>
      </p>
      <?php 
      /*MOSTRANDO AS IMAGENS NA TELA*/
      $utf8 = header("content-type:text/html;charset= utf-8");
      $conn = new mysqli('localhost','thesim','xthesimx1986','db_galeria');
      $conn->set_charset("utf8");
      $busca_image = "SELECT id, nome_arquivo FROM tb_upload  ORDER BY id DESC";
      $res = mysqli_query($conn, $busca_image);
       if(mysqli_num_rows($res) <= '0'){
           echo "Nenuma imagem encontrada!";
       }else{
           while($res_pos =mysqli_fetch_array($res)){
               $nome_arquivo    =$res_pos[0];
      for($c=0; $c>=10; $c++);
      print "<div class='foto'><img src='uploads/$nome_arquivo$c</div>";
      }
      }
      ?>
      </body>
      </html>
      Imagens anexadas



    • By tatysouzac
      Minha view:
      <div>                            
                                          <form method="post" action="http://localhost/integradorcode/index.php/welcome/validar">
                                          EMAIL: <input type="text" name="email"  /> <br><br>
                                          SENHA:  <input type="password" name="senha"/> <br><br><br><br>
                                          <input class="myButton" type="submit" value="Entrar"/> <br><br>
                                          </form>
                                          <a href="Cadastro.php" class="myButton">Cadastrar</a><br><br>
                                          <a href="#" class="myButton">Esqueceu sua senha?</a>
               </div>
       
       
       
      Controller:
       
          public function validar(){
              //var_dump($_POST);
              $this->load->model("Cadastro_model");
              $result = $this->Cadastro_model->validar($_POST["email"],md5($_POST["senha"]));
              var_dump($result);
          }
       
       
      Model:
       
          function validar($email, $senha){
              return $this->db->query("SELECT * FROM `cadastro_clientes` WHERE email_cliente = '{$email}'  AND senha_cliente = '{$senha}' AND status = 1 LIMIT 1")->result_array();
          }
       
       
      Não da nenhuma mensagem de erro mas coloco senha e login certos do meu bd e o return não retorna nada array 0 
    • By MateusOFCZ
      Olá, estou desenvolvendo um projeto de registro de clientes em java no netbeans e usando o MySQL Workbench e Xampp, gostaria de saber se é possível fazer com que o programa fique verificando se está conectado com o banco de dados, e caso não esteja ele mostra uma mensagem pedindo para o usuário se conectar em uma rede, caso ele se conecte o programa irá esconder essa mensagem e funcionará normalmente.

      Eu consegui fazer com que ele mostre se está conectado ou não, porém se eu desligar o servidor ele não atualiza mostrando que está offline, ele continua como online...
    • By terra
      Olá,
       Tenho esse codigo
       
      e gostaria de chamar  bairro = dados.address.suburb; aqui nesse função 
       
       
      Agradeço qualquer ajuda
×

Important Information

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