Ir para conteúdo

POWERED BY:

Arquivado

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

ThinkBrunus

[Resolvido] Login AJAX&PHP

Recommended Posts

Olá, estou a tentar implementar um código para fazer o login em AJAX&PHP, mas não estou a conseguir resultados...será que podem dar-me uma ajudinha a ver se está alguma coisa errada no meu código?

 

index.php

<input name="btnLogin" value="Login" id="btnLogin" type="submit" onclick="login()" />

ajax.js

var xmlHttp;
var nocache = 0;

function login(){
xmlHttp = getXmlHttpObject(); //inicializa variável com identificação do browser
var username = encodeURI(document.getElementById('txtUserName').value);
var password = encodeURI(document.getElementById('txtPassword').value);
nocache = Math.random();
xmlHttp.open("GET","login.php?username="+username+"&password="+password"&nocache="+nocache);
	xmlHttp.onreadystatechange = function(){
		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
			document.getElementById("iMenuV").innerHTML = xmlHttp.responseText;
		}
	}
xmlHttp.send(null);
}

//verifica qual o browser utilizado
function getXmlHttpObject(){
var xmlHttp = null;
	try {  // Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
		id_browser=1;
	}
	catch (e) {  // Internet Explorer
		  try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			id_broowser=2;
		}
		  catch (e) {
			try {
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				id_browser=3;
			  }
			catch (e) {
				  alert("O browser não suporta AJAX!");
				  return false;
			  }
		}
	  }
	return xmlHttp;
}

login.php

<?php
include('includes/config.php');
$username = $_GET['txtUserName'];
$password = $_GET['txtPassword'];

$query = "SELECT * FROM ndetalhe WHERE nome='" . $username . "' AND password='" . $password . "'";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
	$validUser = mysql_num_rows($result);
	if ($validUser > 0){
		echo "Confere!";
	}else{
		echo "Dados incorrectos!";
	}
?>

 

O objectivo é depois de isto funcionar, trabalhar com sessões, mas isso é outra conversa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao um erro detectado pelo menos e o seguinte

 

$username = $_GET['txtUserName'];

$password = $_GET['txtPassword'];

 

deveria ser sim:

 

$username = $_GET['username'];
$password = $_GET['password'];

 

pk? pk sao esses parametros que voce manda no ajax, para elem do cache

xmlHttp.open("GET","login.php?username="+username+"&password="+password"&nocache="+nocache);

você na alinea a cima tem 3 parametros username (username=), password (password=), nocache(nocache=)

 

alguma duvida poste

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado!

Já está resolvido, ficou assim:

 

ajax.js

function login(){
xmlHttp = getXmlHttpObject(); //inicializa variável com identificação do browser
var username = encodeURI(document.getElementById('txtUserName').value);
var password = encodeURI(document.getElementById('txtPassword').value);
nocache = Math.random();
xmlHttp.open("GET", "/includes/loginResponse.php?username="+username+"&password="+password+"&nocache="+nocache);
	xmlHttp.onreadystatechange = function(){
		if (xmlHttp.readyState == 4) {
			if (xmlHttp.responseText == 0){
				alert('Dados incorrectos!');
			} else {
				document.getElementById("iBlockUser").innerHTML = xmlHttp.responseText;
				
			}
		}
	}
xmlHttp.send(null);
}

loginResponse.php

$username = $_GET['username'];
$password = $_GET['password'];
$query = "SELECT * FROM ndetalhe WHERE nome='" . $username . "' AND password='" . $password . "'";
$sql = mysql_query($query) or die('Query failed: ' . mysql_error());
//$result = mysql_num_rows($sql);
while ($result = mysql_fetch_object($sql)) {	
	if ($result->nome == true){
		$_SESSION['username'] = $result -> nome;
		echo $_SESSION['username'];
	}else{
		echo "0";
	}
}

Assim está a funcionar correctamente, apenas pretendo fazer um refresh na página, pois no index tenho o seguinte:

 

<?php
			if (empty($_SESSION['username'])){
				include('includes/login.php');
			} else {
				include('includes/logged.php');
			}
		?>

Pretendo que caso a sessão esteja inicializada, coloque alguns dados do user. Ele na verdade está a faze-lo, mas primeiro escreve o user name que está na sessão (que é o responseText do ajax). Acham que à alguma forma de ele assim que valida o login efectue um refresh único e automático de forma a não aparecer o valor da sessão ($_SESSION['username']) ou então que apareça e seja de seguida feito o tal refresh?

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.