jQuery Mobile和PHP登录会话
我一直在我的网站上使用此登录脚本https://github.com/panique/php-login-minimal。当我没有使用jQuery Mobile时它工作得非常好。当我启用它时,似乎由登录脚本创建的php会话已死亡。例如:所有登录保护的网页,对页面的顶部验证码:jQuery Mobile和PHP登录会话
require_once("config/db.php");
require_once("classes/Login.php");
$login = new Login();
每当我试图返回到上一个页面,甚至去diferent链接时,会不工作了。
这里是我的全部main.php代码:
<?php
require_once("config/db.php");
require_once("classes/Login.php");
$login = new Login();
?>
<html>
<head>
<title>Personal</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
</script>
<script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"></script>
<script type="text/javascript" src="js/noty/packaged/jquery.noty.packaged.min.js"></script>
<script src="libraries/RGraph.common.core.js" ></script>
<script src="libraries/RGraph.bar.js" ></script>
<script type="text/javascript" src="js/script.js"></script>
<script>
function error(text) {
var n = noty({
text : text,
type : 'error',
dismissQueue: true,
layout : 'bottomCenter',
theme : 'defaultTheme',
maxVisible : 5
});
}
function ok(text) {
var n = noty({
text : text,
type : 'success',
dismissQueue: true,
layout : 'bottomCenter',
theme : 'defaultTheme',
maxVisible : 5
});
}
</script>
<script src="js/jquery-ui-1.8.23.custom.min.js" type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<div data-role="page" class="page contact-form">
<div data-role="header">
<a href="login.php" data-icon="arrow-l" data-direction="reverse">Voltar</a>
<a href="index.php" data-icon="home" data-direction="reverse">Home</a>
<h1>Login</h1>
</div><!--/header-->
<div color-bar>
<div data-role="content" align="center" id="logina">
<!--<h3><em>Faca o login</em></h3>
<p>Aqui, voce acessara sua pagina exclusiva.</p>-->
<a href="#"><img src='img/logo2.png' alt="portfolio image" /></a>
<hr />
<div id="contact-form-wrapper">
<div data-role="content">
<?php
echo $_SESSION['user_login_status'];
if ($login->isUserLoggedIn() == true) {
if (isset($_GET["planilha"])){
include("views/planilha.php");
die();
}
if (isset($_GET["fichas"])){
include("views/fichas.php");
die();
}
if (isset($_GET["progresso"])){
include("progresso.php");
die();
}
if (isset($_GET["setexe"])){
include("views/setexe.php");
die();
}
if (isset($_GET["addficha"])){
include("views/addficha.php");
die();
}
if (isset($_GET["editficha"])){
include("views/editficha.php");
die();
}
if (isset($_GET["addficha2"])){
include("views/addficha2.php");
die();
}
include("views/logged_in.php");
}
else {
include("views/loginsub.php");
}
?>
</div>
</div>
正如你所看到的,我有一个主页上显示根据URL参数我想要的页面。当我不包括jQuery的手机脚本,它很好地工作。但是,当它启用时,登录时,我想浏览网站不能正常工作。似乎创建新登录的php代码不会在我更改页面时执行。我已经禁用了ajax导航,但它一直在窃听。
有人可以帮助我吗?
非常感谢!
在登录类__construct()
功能,你会发现session_start()
---即必须在要使用的$_SESSION
变量的所有页面调用。
所以,在您的网页没有被访问控制,你需要扔在session_start()
为了证明这一点,你为什么不尝试扔在块这样的:
if(! session_id()) {
echo "No session! Starting, now."; session_start();
} else {
echo session_id();
}
但我访问的所有页面都在main.php下。当jquery mobile没有启用时,它工作得很好 – 2014-08-31 16:30:12
jQuery没有办法干扰会话。不可能以任何方式塑造或形成。 (当然,除非篡改PHPSESSID cookie - 这不太可能)。 – 2014-08-31 16:43:16
它的发生。我认为这个问题是因为jQuery Mobile的缓存。当我禁用它时,一切都是完美的。 – 2014-08-31 16:45:32
你需要把session_start()
放在每个php文件的顶部。每个使用会话的文件都需要拨打session_start()
。在处理会议时这是常见的错误。
即使即时通讯只使用1个php文件显示其他的url根据参数?它已经在这个主要的 – 2014-08-31 17:14:32
请尝试添加它 – 2014-08-31 17:15:13
不工作.... – 2014-08-31 21:06:55
如何设置/定义$ _SESSION ['user_login_status']? – 2014-08-31 16:51:16
on classes/Login.php。在所有登录代码都被管理的情况下 – 2014-08-31 16:54:06
如果像你说的那样,jQuery手机有问题,一次一个注释掉相关的代码行,你会发现这个bug。在打开' 2014-08-31 16:55:53