我一直在使用这个登录脚本https://github.com/panique/php-login-minimal在我的网站上。当我不使用 jquery mobile 时,它的效果非常好。当我启用它时,由登录脚本创建的 php session 似乎已死。例如:所有登录保护页面,页面顶部都有此代码:
require_once("config/db.php");
require_once("classes/Login.php");
$login = new Login();
每当我尝试返回到最后一页,甚至转到不同的链接时, session 就不再起作用。
这是我的完整 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 导航,但它一直出问题。
有人可以帮助我吗?
非常感谢!
最佳答案
在 Login 类的 __construct()
函数中,您会发现 session_start()
--- 必须在所有要使用该方法的页面上调用它$_SESSION
变量。
因此,在不受访问控制的页面上,您需要添加 session_start()
为了证明这一点,为什么不尝试抛出这样的 block :
if(! session_id() ) {
echo "No session! Starting, now."; session_start();
} else {
echo session_id();
}
关于php - jQuery Mobile 和 PHP 登录 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25593931/