Ir ao conteúdo
  • Cadastre-se
carecazn

Erro de login com bootstrap

Recommended Posts

Boa noite, estou tentando fazer um sistema de login no Bootstrap 3, porém eu não estou conseguindo, estou usando Method POST, porém, quando eu coloco o usuario e a senha ele mostra na URL e não faz o login.

 

<form action="" class="" method="POST" enctype="multipart/form-data">
  <div class="form-group">
    <label for="exampleInputEmail2">Email</label>
    <input type="email" class="form-control" name="email" id="email" placeholder="Digite o seu e-mail">
  </div>

  <div class="form-group">
    <label for="exampleInputName2">Senha: </label>
    <input type="password" name="password" required=“required” class="form-control" placeholder="Digite a sua senha">
  </div>

  <input type="submit" id="logar" name="logar" class="btn btn-success" value="Logar"/>
  <a class="btn btn-info" href="?pg=cad_membros" role="button">Cadastre-se</a>
</form>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o F12 pra ver se o problema é no front. Mas pelo visto, está tudo ok. O problema pode ser no back também, aí nao sei se voce pode ir verificar isso. 

 

@edit Tem também o campo action que está vazio, o problema deve estar aí. Aí no caso voce tem que saber pra onde está indo esse formulário, se é pra um Servlet jsp ou jsf ou um Controller em Javascript.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Action em branco é porque ele esta direcionando para mesma página, ele esta enviando as informações para a url

 

igreja_n/?email=fabiomoreira.rp%40gmail.com&password=123&logar=Logar

Mas eu quero que envie com o Method GET POST

Ele funciona normal no site, porém eu quis colocar no Bootstrap e esta dando esse erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

@carecazn Isso acontece quando o formulário que está tentando submeter não remete a lugar nenhum.

Seria interessante você postar o código completo, com a parte do php também.

 

O melhor que você tem a fazer é acrescentar o action="recebeDados.php"  e fazer um teste para ver se realmente está submetendo o formulário. Se bem sucedido, você aplica a técnica ajax usando  o jquery a função  $.ajax() para fazer a requisição de login " na mesma " página.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, dif disse:

@carecazn Isso acontece quando o formulário que está tentando submeter não remete a lugar nenhum.

Seria interessante você postar o código completo, com a parte do php também.

 

O melhor que você tem a fazer é acrescentar o action="recebeDados.php"  e fazer um teste para ver se realmente está submetendo o formulário. Se bem sucedido, você aplica a técnica ajax usando  o jquery a função  $.ajax() para fazer a requisição de login " na mesma " página.

if(isset($_POST['logar'])){
	//Recuperando os dados do formulário
	$email  	= trim(strip_tags($_POST['email']));
	$password = trim(strip_tags($_POST['password']));
	
	//Selecionar os registros do banco de dados
	$sql = "SELECT * from cadastro_irmaos WHERE BINARY email=:email AND BINARY password=:password";
	try{
	$result = $connect->prepare($sql);
	$result->bindParam(':email', $email, PDO::PARAM_STR);
	$result->bindParam(':password', $password, PDO::PARAM_STR);
	$result->execute();
	$cont = $result->rowCount();
	if($cont>0){
		while($sessao = $result->FETCH(PDO::FETCH_OBJ)){
	$email  	= $_POST['email'];
	$password = $_POST['password'];
	
	$_SESSION['email'] = $email;
	$_SESSION['password'] = $password;
	$_SESSION['nome'] = $sessao;
	
	echo "<script language='javascript'>window.location='index.php';</script>";
	exit;
		}}else{
		echo"<script language='javascript'>
					alert('Erro ao logar, verifique os dados digitados!');
					window.location='index.php';
					</script>";
	}
	}catch(PDOException $e){
	echo 'ERROR:' .$e->getMessage();}			
}//Fecha if isset
?><!--Fim do Login-->
<?php
if(!isset($_SESSION['nome'])){
	echo '<form class="form-signin" action="" method="POST" enctype="multipart/form-data">
	      <div class="form-group">
        <label for="inputEmail">Email</label>
        <input type="email" class="form-control" name="email" id="email" placeholder="Digite o seu e-mail">
				</div>
				
				<div class="form-group">
					<label for="inputSenha">Senha: </label>
					<input type="password" name="password" required=“required” class="form-control" placeholder="Digite a sua senha">
				</div>
				
				
				<input type="submit" id="logar" name="logar" class="btn btn-success" value="Logar"/>
				<a class="btn btn-info" href="?pg=cad_membros" role="button">Cadastre-se</a></form>';
}else{
	if(isset($_SESSION['nome']))
if($_SESSION['nome']->admin <=1){
echo '<a class="btn btn-info" href="adm/adm.php" role="button">Painel Administrativo</a>';
echo '<a class="btn btn-info" href="?sair" role="button">Sair do Sistema</a>';
}}	
?>

Eu não sei fazer esta função em Ajax, se você puder me ensinar eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@carecazn

 

Tome como base de exemplo o seu formulário do post inicial.

No jquery ficaria da seguinte maneira:

 

$(document).ready(function()
    //armazena na variável os dados do formulário com a função serialize()              
	var form = $('.form').serialize();
    var btn = $('.btn');

	//chama o evento de click do mouse no botão de enviar
	btn.on('click',function(event)
        event.preventDefault();   
    	$.ajax({
      		url: 'recebeDados.php',
      		dataType: 'html',
      		data: form
    	}).done(function(data){
      		$('.callback').html(data);
    	}).fail(function(data){
      		$('.callback').html(data);
    	});
    )};                 
)};

Basicamente esta é a mágica!

Explicando de uma maneira bem objetiva, o formulário é armazenado em uma variável, chamando a função de serializar os dados. 

Ao clicar no botão de enviar, é chamada a função $.ajax() que tem como parâmetro, a url na qual será invocado,  o tipo de dado e o dado em si.  veja que em data eu chamei a variável que armazenei logo no inicio!

 

A função done() serve para quando o callback, ou seja, o retorno for bem sucedido, e inserindo em um elemento cujo class é callback o valor da mensagem de sucesso. o mesmo acontece com fail() para caso falhar.

 

Já no arquivo recebeDados.php,  deves retirar algumas coisas e deixar que o retorno seja só em texto.

eu deixaria assim:

 

<?php
	//Recuperando os dados do formulário
	$email  	= trim(strip_tags($_POST['email']));
	$password = trim(strip_tags($_POST['password']));
	
	//Selecionar os registros do banco de dados
	$sql = "SELECT * from cadastro_irmaos WHERE BINARY email=:email AND BINARY password=:password";
	try{
	$result = $connect->prepare($sql);
	$result->bindParam(':email', $email, PDO::PARAM_STR);
	$result->bindParam(':password', $password, PDO::PARAM_STR);
	$result->execute();
	$cont = $result->rowCount();

	if($cont>0){
		while($sessao = $result->FETCH(PDO::FETCH_OBJ)){
	$email  	= $_POST['email'];
	$password = $_POST['password'];
	
	$_SESSION['email'] = $email;
	$_SESSION['password'] = $password;
	$_SESSION['nome'] = $sessao;

	exit;
		}else{
		echo"
		Erro ao logar, verifique os dados digitados!";
			
	}
	}catch(PDOException $e){
	echo 'ERROR:' .$e->getMessage();}			
}//Fecha if isset

Vejo que falta ali uma chamada de conexão com o banco de dados. mas talvez você tenha feito isso em outra linha que não mostrou.

 

Outra coisa que vejo de estranho é que no seu formulário estas usando o multipart/form-data.. se você não está enviando um arquivo com o campo file, não precisa por no formulário!

 

Se tiver mais dúvidas sobre o ajax, leia:  http://api.jquery.com/jquery.ajax/ é em inglês mas dá para entender perfeitamente o funcionamento básico! :thumbsup:

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×