I’m writing an authentication system with mobile jquery and php. The html code is as follows:
<div data-role = "page" id ="dialogo">
<a href = "#identificacion" id = "formdialog" data-rel="dialog"> </a>
</div>
<div data-role = "page" id = "identificacion">
<div id ="main">
<div id ="caplogin">
<img src = "images/vives_logo.png"/>
<p> Acceso</p>
<div style ="clear:both;"></div>
</div>
<div style ="clear:both;"></div>
<div id ="formlogin">
<form name ="formautentificacion" id ="formautentificacion" method = "post" action = "" data-ajax="false">
<table>
<tr> <td> Login </td> <td> <input type ="text" name ="user" id ="user" size="30"/></td> </tr>
<tr> <td> Password </td><td><input type ="password" name ="pass" id="pass" size="30"/></td></tr>
<tr> <td colspan = "2" align ="right"> <input type = "submit" id = "sbmt_aut" name = "sbmt_aut" value = "ENTRAR"/></td>
</table>
</form>
</div>
</div>
</div>
<div data-role = "page" id = "pageclients">
<div id = "headerpageclient">
<a href="index.php" class ="logout" data-role="button" data-icon="delete">SALIR</a>
</div>
<div id = "clientes">
</div>
</div>
<div data-role = "page" id = "pagepuntosventa">
<div id = "headerpagepuntoventa">
</div>
</div>
I have two ajax function to start and destroy php sessions, and use changepage it according with ajax response, for login the the functionality is correct and logout, but the safari back button doesn’t working and falls on the last page.
$(document).delegate("#dialogo", "pageinit", function() {
$("#formdialog").click();
})
$(document).delegate("#identificacion", "pageinit", function() {
$("#formautentificacion").submit(function(e){
e.preventDefault();
//e.stopImmediatePropagation();
$.ajax({
type: 'POST',
url: 'ax/login.php',
data:$(this).serialize(),
cache: false,
success: function(data)
{
if(data == 1)
{
//$.mobile.changePage("promocion.php", {transition: "flip"});
//window.location = "index.php";
$.mobile.changePage("#pageclients", {transition: "flip"});
}
else
{
if (data == 2)
alert("Usuario bloqueado, 3 intentos fallidos");
else
alert("Error en la identificación");
}
$("#user").val("");
$("#pass").val("");
}
})
})
$(".logout").click(function(e){
//e.preventDefault();
logout();
})
})
$(document).delegate("#pageclients", "pageinit", function() {
seguridad();
})
Function seguridad() for check that session is on:
session_start();
include("../class/aut.php");
$aut = new aut();
$res = 0;
if (!empty($_SESSION["usuario"]) && !empty($_SESSION["token"]) )
{
$_SESSION["usuario"] = mysql_real_escape_string($_SESSION["usuario"]);
$_SESSION["token"] = mysql_real_escape_string($_SESSION["token"]);
if ( $aut->checktoken($_SESSION["usuario"],$_SESSION["token"]) )
{
$_SESSION["token"] = md5(rand().$_SESSION["usuario"]);
$aut->updateToken($_SESSION["usuario"], $_SESSION["token"]);
$res = 1;
}
else
{
session_destroy();
session_unset();
$res = 0;
//header("Location: index.php");
//exit;
}
}
else
{
session_destroy();
session_unset();
$res = 0;
//header("Location: index.php");
//exit;
}
echo $res;
?>
And function logout:
function logout()
{
$.ajax({
type: 'GET',
url: 'ax/logout.php',
cache:false,
//async: false,
success: function(data)
{
$("#formdialog").click();
}
})
}
I try to close the session and then on each page with the security function to verify the session. But once destroyed the session I can go back to a page and not skip dialogue.
Any ideas?
The button to exit the application I’ve made as follows:
logout.php
Js
And the link to logout
And html for the fisrt page:
And when the first pageinit, force click
With this if you close the application, but this fails when I click back button history, index.php not redirect to initial dialeg.
Any ideas?