Depois de alguma pesquisa conclui que a forma mais segura para utilizar num sistema de login é utilizar AJAX + PHP.
Agora tou com dificuldades numa situação, ou seja:
ao inserir os dados para autenticar escrevo em php o form com uma cláusula if
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>
?>
aqui é chamado o ficheiro AJAX, busca os dados e envia-os para a página onde faz a validação dos dados
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", "login.php?username="+username+"&password="+password+"&nocache="+nocache);
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4) {
alert(xmlHttp.responseText);
//document.getElementById("iMenuV").innerHTML = xmlHttp.responseText;
}
}
xmlHttp.send(null);
}
Agora valida dados enviados e retorna valor para AJAX, e se validar correctamente cria a session com o username...
login.php
<?php
include('includes/config.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){
echo "Confere!";
session_start();
$_SESSION['nome'] = $username;
}else{
echo "Dados incorrectos!";
}
?>
index.php
Por fim, está aqui o meu problema:
......
}else{
include('seguranca.php');
}
?>
O que pretendo é que quando o user for validado, desapareça o formulário e seja apresentado o nome do user, por exemplo. Este include refere-se a essa mensagem
seguranca.php
<?php
echo "Olá, " . $_SESSION['nome'];
?>
Que não está a funcionar....o formulário mantem-se e a mensagem não aparece....
Alguma sugestão para contornar a situação?
coloquei on-line em :
http://teste.vibeltaxis.com/index.php
Obrigado!