Ir para conteúdo
Fórum Script Brasil
  • 0

Login AJAX&PHP


ThinkBrunus

Pergunta

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. :blush: Boas! O o código já está ajustado, e já está a funcionar! O problema agora é implementar as sessões entre AJAX e PHP, e não sei onde hei-de colocar, estou a tentar mandar escrever assim:
document.getElementById("iBlockUserLogout").innerHTML = "session_start(); $_SESSION['test'] = $username;";

Como não está a funcionar não me parece que seja boa ideia...alguém já teve algum problema idêntico?

Editado por ThinkBrunus
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Boas!

A dúvida colocada anteriormente está praticamente resolvida, acabei por deixar assim:

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);
}
e na página php:
while ($result = mysql_fetch_object($sql)) {    
    if ($result->nome == true){
        $_SESSION['username'] = $result -> nome;
        echo $_SESSION['username'];
    }else{
        echo "0";
    }
}
Assim ficou resolvido! Apenas um pormenor, quando é autenticado o user, ele vai escrever na DIV(iBlockUser) o responseText...no index.php tenho o seguinte:
<div id="iBlockUser">
        <?php
            if (empty($_SESSION['username'])){
                include('includes/login.php');
            } else {
                include('includes/logged.php');
            }
        ?>            
    </div>

Pretendo que assim que após se escrito na DIV o responseTex, seja feito de um refresh à página de forma a actualizar a mesma e actualizar a instrução do include('includes/logged.php');

Poderei fazer isto no seguimento do cógigo em ajax?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...