Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Juliano Tavares

Login e ficar na mesma página

Recommended Posts

Olá pessoal, tenho a seguinte aplicação:

 

Em uma página index.php eu faço um include de um formulario de login.php onde nele é verificado se o usuario está logado (neste caso ele verifica as sessões), e se estiver logado ele mostra o menu na mesma tabela do formulario, e vice-versa (se não estiver logado ele mostra o login). Essa seria minha ideia, porém não consigo que depois de verificar o login ele dê um reload e mostra o menu da area restrita, mas sem sair da página atual, apenas para que ele logue no site.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tu vai precisar jogar um AJAX ai no meio senão não tem como dar refresh só em um lugar.

 

tag form tem que ter action=""

e o botao de enviar, onclick="fazerlogin();"

 

JS

function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		ro = new XMLHttpRequest();
	}
	return ro;
}

var http = createRequestObject();

function fazerlogin() {
	
	/*declara as variaveis do form*/
	var login = escape(document.NOMEDOFORM.NOMEDOCAMPODOLOGIN.value);
	var pass = escape(document.NOMEDOFORM.NOMEDOCAMPODASENHA.value);

	
	/*Isso aqui vai fazer o botão apo´s ser clicado, tirar o valor dele (deve ser Send ou Enviar) e troca por Enviando*/ 
	document.contactform.send.value='Enviando';

	/*mandando as coisa pro PHP que valida o login*/
	
	http.open('get', 'caminho/pro/arquivo.php?login='+login+'&pass='+pass+'&action=QUALQUERCOISA');


	http.onreadystatechange = handleResponse;
	http.send(null);
}

function handleResponse() {
	if(http.readyState == 4){
		var response = http.responseText;
		var update = new Array();

		if(response.indexOf('|' != -1)) {
			update = response.split('|');
			document.getElementById(update[0]).innerHTML = update[1];
		 
		}
	}
}

Como seria essa ultima função handleResponse? Simples! Qualquer coisa que o PHP responder que tiver |, ele vai entender que é pra ele. Em termos práticos, se verificar, logar e etc certinho, você coloca no PHP de verificação

echo "NOMEDADIVDATABELADOLOGIN|coisas que tem que aparecer quando logar corretamente";

Entendeu?

 

aí, no seu PHP de validação, você coloca assim.

if(!isset($_GET['action']))
{
die("You must not access this page directly!"); //Por isso no action pode ser qualquer coisa, é só pra ter certeza que foi o JS que enviou :P
}

/* Bora dar um trim nas variavel antes de usá-las */

//dados
$varlogin = trim($_GET['login']); //login
$varsenha = trim($_GET['pass']); //senha


/* agora bora checar se tá preenchido essas bagaça */

   if ($varlogin == "" | $varsenha == "" )
{
echo "NOMEDADIVDATABELADOLOGIN| coloca aqui um java simples, tipo window.alert falando um ou mais campos nao foram preenchidos";
}
else {

/*faz a verificacao sua..*/

/*se login/senha tiver errado,*/
echo "NOMEDADIVDATABELADOLOGIN|coisas que tem que aparecer quando o login estiver errado";


/*se login/senha tiver certo,*/
echo "NOMEDADIVDATABELADOLOGIN|coisas que tem que aparecer quando logar corretamente";
}

 

Ufa..

Acho que é isso. Não testei agora mas vai dar certo :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tentei olha só meu código:

 

login.php

<script type="text/javascript" src="js/login.js"></script>

</head>
 
<body class="texto">
 
<table width="144" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
	<td height="30"><table width="100" border="0" align="center" cellpadding="0" cellspacing="0">
	  <tr>
		<td align="center" class="titulo_grid2">Identificação</td>
	  </tr>
	</table></td>
  </tr>
  <tr>
	<td><form action="" method="post" name="login_form" id="">
	  <span class="texto">Usuário<br />
	  <input name="usuario" type="text" id="usuario" size="17" /><br> 
	  Senha<br />
 <input name="senha" type="password" id="senha" size="17" />
 <br />
 
 <input type="submit" name="Submit" value="Enviar" onclick="fazerlogin();"/ >
 
  <br />
  <a href="http://www.site.com.br/index.php?menu=senha_perdida">[Esqueceu a senha?]</a></span>
	</form></td>
  </tr>
</table>

login.js

function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		ro = new XMLHttpRequest();
	}
	return ro;
}

var http = createRequestObject();

function fazerlogin() {
	
	/*declara as variaveis do form*/
	var login = escape(document.login_form.usuario.value);
	var pass = escape(document.login_form.senha.value);

	
	/*Isso aqui vai fazer o botão apo´s ser clicado, tirar o valor dele (deve ser Send ou Enviar) e troca por Enviando*/ 
	document.contactform.send.value='Enviando';

	/*mandando as coisa pro PHP que valida o login*/
	
	http.open('get', 'verifica_usuario.php?usuario='+usuario+'&senha='+senha+'&action=LOGIN');


	http.onreadystatechange = handleResponse;
	http.send(null);
}

function handleResponse() {
	if(http.readyState == 4){
		var response = http.responseText;
		var update = new Array();

		if(response.indexOf('|' != -1)) {
			update = response.split('|');
			document.getElementById(update[0]).innerHTML = update[1];
		 
		}
	}
}

verifica_usuario.php

<?php
session_start();

// Conexão com o banco de dados
require "includes/conexao.php";

// Inicia sessões

if(!isset($_GET['action']))
{
die("Você não tem acesso a esta página, faça seu login novamente!"); //Por isso no action pode ser qualquer coisa, é só pra ter certeza que foi o JS que enviou :P
}

/* Bora dar um trim nas variavel antes de usá-las */

//dados
$usuario = trim($_GET['usuario']); //login
$senha = trim($_GET['senha']); //senha


/* agora bora checar se tá preenchido essas bagaça */

   if ($usuario == "" | $senha == "" )
{
	echo "<script> alert(\"Preencha os campos para logar!\")</script>";
}
else {
	echo "<script> alert(\"Login Incorreto!\")</script>";
}else{


$SQL = "SELECT id, nome, usuario, senha, email
		FROM cadastro
		WHERE usuario = '" . $usuario . "'";
$result_id = @mysql_query($SQL)  or die ('I cannot connect to the database because: ' . mysql_error());
$total = @mysql_num_rows($result_id);

// Caso o usuário tenha digitado um login válido o número de linhas será 1..
if($total)
{
	// Obtém os dados do usuário, para poder verificar a senha e passar os demais dados para a sessão
	$dados = @mysql_fetch_array($result_id);

	// Agora verifica a senha
	if(!strcmp($senha, $dados["senha"]))
	{
		// TUDO OK! Agora, passa os dados para a sessão e redireciona o usuário
		$_SESSION["id_usuario"]   = $dados["id"];
		$_SESSION["nome"] = stripslashes($dados["nome"]);
		
mysql_query("UPDATE cadastro set data_ultimo_login=now()");
		include "logado.php"; 
		
			   exit;
	}

/**
* Executa a consulta no banco de dados.
* Caso o número de linhas retornadas seja 1 o login é válido,
* caso 0, inválido.
*/
	// Senha inválida
	else
	{
		echo "<script> alert(\"Senha Inválida !\")</script>";
		include "login.php";
		exit;
	}
}
// Login inválido
else
{
   		echo "<script> alert(\"Login Inválido !\")</script>";
		include "login.php";
	exit;
}
?>

até ai, não acontece nada, ele dá reload na página de todo jeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.