• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

thinkbrunus

Opinião login

8 mensagens neste tópico

Olá!

Mais uma vez venho em busca de uma opinião sobre como fazer um sistema de login.

O que pretendo é que o user faça o login no form normal e os dados sejam validados na mesma página, e se a autenticação for validada, queria que desaparecesse o tal formulário e aparecesse os dados do user, por exemplo.

Entretanto já fiz umas pesquisas e algum estudo para desenvolver algo em AJAX e PHP, ou só em PHP. De momento estou a tentar implementar AJAX com PHP mas já tenho a cabeça quase em àgua....

Gostava de saber opiniões.

Obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá fnds!

Entretanto já comecei a desenvolver um sistema de login em AJAX + PHP, está a funcionar mas estou com uma questão que aproveito a ocasião para colocar. O login está a funcionar, tenho o form que envia para AJAX, recebe a resposta, apresenta a mensagem...e pretendo que quando o user é autenticado, desapareça o form de login...

Tentei fazer o seguinte:

index.php

<div id="iBlockUser">
    <?php
        if (!isset($_SESSION['nome'])) {
            unset($_SESSION['nome']);
            echo"<script language='javascript' src='scripts/ajax.js'></script>
            <table><form id='frmLogin' name='frmLogin' method='post' >
            <tr>
                <td>Username:</td>
                <td><input type='text' name='txtUserName' id='txtUserName' size='14' maxlength='14' /></td>                
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type='text' name='txtPassword' id='txtPassword' size='14' maxlength='14' /></td>                
            </tr>
            <tr>
                <td colspan='2' align='right'><input name='btnLogin' value='Login' id='btnLogin' type='submit' onclick='java script:login();' /></td>
            </tr>                    
            </form>
        </table>";                    
        }else{
            include('seguranca.php');         
        }    
           </div>
    ?>

Mas não estou a conseguir que funcione...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por exemplo o teu login ta numa tag div

<div id="div_login">

<form...

<input ...

...

</form

</div>

em javascript na funçao que vais chamar vais adicionar isto

document.getElementById('div_login').innerHTML="";

// isto coloca a tag <div id="div_login" ></div> asim, se quiseres escrever alguma coisa la no meio em vez de fazer "", fazes "o que quero escrever"

se usares uma biblioteca como por exemplo a jquery ajudate mt nesse desenvolvimento podes fazer de maneira mais facil, e rapida

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o unset serve para apagar uma variavel em memoria, ele ta apagar a sessao, mas nao é assim que se elimina uma sessao

tens que usar session_unset(), session_destroy()

ver estas duas funcoes no manual do php porque sao muito uteis quando trabalhavas com sessoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se estás a chamar o script de log-in com Ajax é normal que não funcione como esperavas, a página não é enviada para o servidor.

Se queres esconder uma div tag (com JavaScript):

document.getElementById("nome_da_div").style.display="none";

Pessoalmente nunca foi muito adepto de Ajax nem JavaScript, mas enfim. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

Já andei em mudanças no código e está parcialmente a funcionar.

Optei pelo seguinte:

Na página login.php

<div id="iBlockUser">
    	<?php
		if (empty($_SESSION['username'])){
			include('login.php');
		} else {
			echo "<div id='iBlockUserLogout'>" . $_SESSION['username'] . "</div>";
		}
	?>            
    </div>

O tal código em AJAX:

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", "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 a página que valida os dados do login

<?php
session_start();
include('includes/settings.php');

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

Como disse parcialmente a funcionar, ele faz a autenticação e apresenta determinada DIV consoante o estado da sessão...e disse parcialmente porque estou a deparar-me com mais um problema, quando vou navergar pelo site, e noutra página sem ser o index.php ele não me vai buscar a página que autentica os dados de login, e isso acontece no ficheiro de javascript

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora