Jump to content
Gumb

Primeira tentativa de login com session sempre falha

Recommended Posts

Então, estou fazendo um site  o login é via ajax, ai quando o login é aceito começa a session e reseta a pagina pra atualizar o session.  Tudo esta funcionando perfeito, porem na primeira tentativa de login o session nao começa, se eu tento dar login novamente com as mesmas credencias ele funciona normalmente e isso SÓ acontece no index do site, se eu faco o primeiro login em outra pagina q usa os mesmos códigos funciona perfeitamente. Alguém sabe o que pode ser? ele sempre entra no php e volta pro js mas nao seta o session.

Share this post


Link to post
Share on other sites

index.php

<?php
session_start();
ob_start();
if(isset($_COOKIE['iduser'])){//verifica se tem o id nos cookies
	$verifica=$_COOKIE['iduser'];
}else{
	if(isset($_SESSION["id"])){//se nao tiver nos cookies e ele iniciou a sessao seta os cookies
		$verifica=$_SESSION["id"];
		setcookie("iduser", $verifica,time() + (86400 * 2));
	}
}
...
?>

js ajax

$(document).ready(function(){
		$('.loginForm').submit(function(e){
			e.preventDefault();
			$('.allerromsg').fadeOut();
			var form = $(this);
			var ajaxUrl = form.attr('action');
			var formData = form.serialize();
			$.post(ajaxUrl, formData, function(data){
				var data = $.parseJSON(data);
				if(data.success == 'success'){					
					if(data.register=='true'){//verifica se o usuario é novo
						a = '?register=true';
					}else{
						a = '?log=true';
					}
					window.location.href = a;//atualiza a pagina
				}else{//mostra os erros caso o php retorne false
					if(data.success == 'existuser'){	
						$('#erromsg2').fadeIn();
					}else{
						if(data.success == 'emailwr'){
							$('#erromsg3').fadeIn();
						}
						if(data.success == 'notfound'){	
							$('#erromsg').fadeIn();
						}
					}
				}
				
			 
		 });
		});
	});

verificacao do login

<?php
	session_start();
	$senha=$_POST["senha"];
	$email=$_POST["email"];
.........//verificacao do banco de dados
	$_SESSION["id"]=$id;	
//faz uma caralhada de verificaçao e retorna o json dessa forma
	echo json_encode(array( "id" => $id, "name" => $name, "email" => $email, "success" => $success, "register"=> $register));

?>

Tem o session_start sim, eu resumi bastante os codigos, mas da pra entender, basicamente funciona tudo, menos o primeiro login no index, isso me atrapalha muito, e nao faço a minima ideia de como arrumar

Share this post


Link to post
Share on other sites

Vendo assim eu tambem não estou conseguindo visualizar algum erro.

 

Mas sugiro você colocar um debug logo abaixo do session_start()

 

if(isset($_SESSION["id"])){ echo 'TEM ID: '.$_SESSION["id"] ; } else { echo 'NÃO TEM ID'; }

para você debugar se está setando a session com ou sem valor.

 

E uma observação: atenção aos usar cookie pois depende da configuração do navegador (segurança) aceitar cookie ou não e também pelo fato de se o sistema for de informações relevantes a questão de verificar se já existe sessão "auto-logar" o usuário.

 

Vou ver novamente o código após um café. 

Share this post


Link to post
Share on other sites

Por que você está usando cookies? Talvez esse seja o motivo de somente funcionar na segunda vez. Os cookies somente são alterados após a atualização do navegador. Diferente da sessão.

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 Pellegrini3834
      Ola galera do IMasters!!!!!!
       
      Estou com uma duvida eu tenho um CRUD em php MVC e queria saber em que camada fica as mensagens depois de uma realização de um evento por exemplo:
      Cadastro de Pessoa, depois de cadastrada quero que ele emita uma mensagem dizendo que a "PESSOA FOI CADASTRADA COM SUCESSO!!!!" e eu queria saber  em que parte ela fica se é no Controle ou na View porque sabemos que no modelo fica a parte referente a manipulação de dados.
      Obrigado.
    • By Henrique Augusto Rohloff
      Olá! Sou iniciante e estou treinando para configurar uma página de buscas de produtos em um banco de dados.
      Os produtos já estão sendo encontrados quando a palavra bate com os itens do banco. A conexão com o banco de dados está funcionando corretamente. Porém, quando nada é encontrado, queria que aparecesse uma mensagem "Nenhum resultado, tente novamente." Já tentei com  else de tudo que é jeito mas não aparece corretamente... Qual é o jeito certo?
       
      Segue o código:
       
       
    • By maruoppolo
      Olá, tenho 2 tabelas:
       
      tb_dados: ID - MUSICA
       
      tb_votos: ID - VOTO - RADIO - MUSICA
       
      Preciso fazer uma query que traga as musicas da tb_dados porém ordenando pelo número de votos que ela teve na tb_votos.
       
      Então assim, existem 2 tipos de voto 1 = like e 2 = dislike, cada ver que um usuário vota eu pego qual radio que ele esta ouvindo e salvo no campo radio, o id da musica na tb_dados e salvo no campo musica da tb_votos e coloco o número 1 para like e 2 para dislike no campo voto.
       
      A query precisa contar quantos likes teve na tv_votos filtrando por radio e mostrando os resultados em ordem decrescente as musicas com mais likes.
       
      A ideia é trazer as 10 musicas com mais like de cada radio
       
      Alguma ideia de como fazer?? Estou enroscado nisso a dias.
    • By Chester1
      oi, eu to tentando mexer com servidores agora no PHP e esta dando um erro muito estranho que quando eu procuro em um programa que acha erros de sintaxe ele me diz que o erro esta no </HTML>    se alguem puder me dizer qual foi o erro que eu cometi eu agradeceria
       

       
      <HTML> <HEAD><TITLE>incluindo no banco de dados</TITLE></HEAD> <body> <BODY bgcolor="#d0d0d0"> <center> <h3>Lanchonete coma bem (voltada para o internauta)</h3> <h1>24horas</h1> <?php $login_digitado=$_POST['login']; $senha=$_POST['senha']; $nome=$_POST['nome']; $email=$_POST['email']; $telefone=$_POST['telefone']; $celular=$_POST['celular']; $endereco=$_POST['endereco']; $complemento=$_POST['complemento']; if ($login_digitado == "" || $senha == "" || $nome =="" || $email == "" || $telefone == "" || $endereco == "" || $complemento == "") { echo "existem(m) campos(s) de preenchimento obrigatorio em branco,<BR> infelizmente tera que voltar para preenche-lo(s)."; echo "<BR><a href=\"cadastro.php\">clique aqui para tentar novamente</a>"; } else { { $link=mysql_connect("localhost", "root", "") or die ("<h1>nao foi possivel conectar !!!</h1> ".mysql_error());  
      obs :estou trabalhando com formularios e servidores
         
         
         
         
      ?>
      </BODY>
      </HTML>
    • By DavidPin94
      Boa tarde, estou tentando criar uma validação para saber se o usuário já está cadastrado no meu banco de dados para meu sistema ficar mais organizado, porém quando realizo o teste cadastrando um usuário já cadastrado, o cadastro ocorre sendo que não era para ocorrer
      <?php require_once("conexao.php");?> <?php if (isset($_POST['usuario'])) { $nome = utf8_decode($_POST['usuario']); $senha = utf8_decode($_POST['senha']); $inserir = "INSERT INTO cadastro "; $inserir .= "(usuario, senha) "; $inserir .= "VALUES "; $inserir .= "('$nome', '$senha')"; $query = "SELECT usuario FROM cadastro WHERE usuario = '$usuario' LIMIT 1"; $consulta = mysqli_query($conecta, $query); $query = "SELECT usuario FROM clientes WHERE usuario = '$usuario' LIMIT 1"; $consulta = mysqli_query($conecta, $query); if (mysqli_num_rows($consulta) < 1) { $operacao_inserir = mysqli_query($conecta, $inserir); if (! $operacao_inserir) { die("Erro no banco"); }else header("location: login.php"); }else{ die("Usuário existente!"); } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Cadastrar novo usuário</title> <link rel="stylesheet" type="text/css" href="estilo.css"> </head> <body> <nav> <ul> <li><a href="inicial.php">PÁGINA INICIAL</a></li> <li><a href="quem_somos.php">QUEM SOMOS</a></li> </ul> </nav> <div id="cadastro"> <form method="post" action="cadastro.php"> <label>Digite seu nome de usuário</label> <input type="text" name="usuario" placeholder="Ex: Usuario123" required size="50" minlength="5" maxlength="20" autofocus><br> <label>Digite sua senha</label> <input type="password" name="senha" placeholder="Deve conter mais de 5 caracteres" required size="50" minlength="5" maxlength="20" autofocus><br> <input type="submit" value="Cadastrar" id="enviar" name="enviar"> </form> </div> </body> </html> ,  alguém poderia me ajudar?  Meu código:
×

Important Information

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