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 Gemenson Miranda
      Oi pessoal, estou com um problema na minha hospedagem LInux do Godaddy, publiquei meu site, fiz o apontamento correto do banco de dados, mas quando acesso a URL o site me exibe HTTP ERROR 500 exibe realizei a configuração do arquivo .htaccess, alterei as permissões para (755), nada disso resolve... A questão e que sempre que comento as informações de apontamento do banco de dados no arquivo index.php o site carrega normalmente, porem sem conexão com o bando mysql, o que me faz pensar que o erro pode esta relacionado ao banco mysql, porem não consigo visualizar o erro por que a tela fica toda branca e não retorna nada, como resolver esse erro ou ao menos exibir qual erro causa ele?? agradeço!
    • By TheRonaldoStar
      Oii, fala ae pessoal!!
      Alguém pode me ajudar com uma coisa por favor?;
      Seguinte!, eu anteriormente fiz uma pergunta aqui no fórum recorrente a isso, mas eu conseguir uma solução parcial.
      Que era, fazer uma listagem de todos os cadastros e fazer a junção dos cadastros com uma coluna igual, Ou seja existem duas colunas [DE e Para], que recebem o id de quem está recebendo ou que está enviando a mensagem, eu conseguir fazer a tal listagem por grupo mas o problema que estou tendo é: que so faz o agrupamento de as colunas contiver o id por ex: [De = "1" e Para ="2"].
      Atualmente estou usando a codificação deste Jeito:
       
      $sql_2 = $db -> prepare("SELECT * FROM privado WHERE (Para = '$Meu_id') Or (De = '$Meu_id') GROUP BY Para, De DESC"); $sql_2 -> execute(); Esta consulta como pode ver ele busca todos os cadastros que tenha o meu ID ou seja do usuário online!, Após a consulta ele vei obter em um "while" somente o [ Id_De eo Id_Para ] desta forma:
      while($dados_2 = $sql_2 -> fetch(PDO::FETCH_OBJ)){ $Id_De = ($dados_2 -> De); $Id_Para = ($dados_2 -> Para); } Mas em fim eu gostaria de saber como mostrar somente um resultado ou seja o ultimo resultado que tiver o meu ID em ambas colunas [ Id_De ou Id_Para ].
      Antes de vocês me recomendar a função DESC LIMIT 'valor' saiba eu quero que liste todos os usuários que enviou ou recebeu minha mensagem não somente 1 ou seja se eu mandar um mensagem para o usuário 2 e ele me retornar uma mensagem vai mostrar somente o ultimo registro que tenha o meu ID e o id dele.
       
      Atenciosamente,
      ~Ronaldo
       
    • By TheRonaldoStar
      Oi, mais cedo eu fiz um post aqui no site mas um pouco longo creio eu que e mais fácio eu fazer uma pergunta mais direta.
      A pergunta é:
      Como posso fazer agrupamentos de uma tabela através de dois campos cujo os valores são =, mesmo que esteja invertidos?
      EX: [DE = "1"], [PARA = "2"].
      E fazer o agrupamento ou só mostrar o ultimo cadastro mesmo que eles estejam invertidos desta forma?
      EX: [DE = "2"], [PARA = "1"].
       
      Acho que agora com este post fui mais claro, Alguém pode me ajudar por favor??.
      Atenciosamente,
      ~Ronaldo
    • By HigorCrds
      Bom, o que eu consegui até agora foi fazer com que, ao usuário clicar em algum dos botões de paginação (1, 2, 3...) o PHP guarde uma SESSION com o número da página correspondente.
      Segue o código:
       
      <!-- BOTÃO COM O NÚMERO DA PÁGINA --> <button onclick="mudaVar(<?php echo $i; ?>);"> <?php echo $i; ?> </button> <!-- FUNÇÃO PARA GUARDAR SESSION PG --> function mudaVar(valor) { $.ajax({ url:'sessions.php?valor='+valor }); } // GUARDA SESSION PG if(isset($_GET['valor'])){ $_SESSION['pg'] = $_GET['valor']; } Até aí tudo bem, só que o problema é que a SESSION não é alterada naquele momento, só quando eu atualizo a página.
      Como corrigir isso?
×

Important Information

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