我正在编写一个使用移动jquery和php的认证系统。html代码如下:
<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>我有两个ajax函数来启动和销毁php会话,并根据ajax响应使用changepage它,用于登录的功能是正确的和注销,但safari后退按钮不工作,并落在最后一页。
$(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();
})用于检查会话是否处于打开状态的函数seguridad():
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;
?>和函数注销:
function logout()
{
$.ajax({
type: 'GET',
url: 'ax/logout.php',
cache:false,
//async: false,
success: function(data)
{
$("#formdialog").click();
}
})
}我尝试关闭会话,然后在每个页面上使用安全功能来验证会话。但是一旦销毁了会话,我就可以返回页面,而不是跳过对话。
有什么想法吗?
发布于 2012-07-04 18:22:21
退出我创建的应用程序的按钮如下所示:
logout.php
<?php
session_start();
session_unset();
session_destroy();
?>Js
function logout()
{
$.ajax({
type: 'GET',
url: 'ax/logout.php',
cache:false,
//async: false,
success: function(data)
{
console.log("LOGOUT");
//$.mobile.changePage("#dialogo");
}
})
$.mobile.changePage("http://10.0.74.199/representantes");
}和到注销的链接
<a href="index.php" class ="logout ui-btn-right" data-role="button" data-icon="delete" data-theme="a">Salir</a>以及用于第一个页面的html:
<div data-role = "page" id ="dialogo">
<a href = "#identificacion" id = "formdialog" data-rel="dialog"> </a>
</div>
<div data-role = "page" id = "identificacion" data-overlay-theme="f">
<div id ="main">
<div id ="caplogin">
<img src = "http://10.0.74.199/representantes/images/vives_logo.png"/>
<p> Acceso Promoción Vives </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>并在第一个pageinit时,强制点击
$(document).delegate("#dialogo", "pageinit", function() {
$("#formdialog").click();
})如果您关闭应用程序,但当我单击back按钮历史记录时失败,index.php不会重定向到初始对话框。有什么想法吗?
发布于 2012-06-29 18:47:50
我认为您的问题是jQueryMobile在DOM中保留了以前访问过的页面的缓存。您应该尝试删除所有页面(或至少第一个页面),以便当用户重新访问它时,jQueryMobile将重新获取其内容并触发您的会话代码。
$('#somepage').remove();https://stackoverflow.com/questions/11259918
复制相似问题