jQuery Mobile and PHP Login SESSION


jQuery Mobile and PHP Login SESSION

我一直在我的网站上使用此登录脚本 https://github.com/panique/php-login-minimal。当我不使用jquery移动时,它真的很棒。当我启用它时,似乎由登录脚本创建的 php 会话已死。例如:所有受登录保护的页面,页面顶部都有以下代码:

require_once("config/db.php");
require_once("classes/Login.php");
$login = new Login();

每当我尝试返回最后一页甚至转到不同的链接时,会话都不再工作。

这是我完整的主.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移动脚本时,它工作得很好。但是当它启用时,im导航时的登录认为网站不能正常工作。似乎每当我更改页面时都不会执行创建新登录名的 PHP 代码。我已经禁用了 ajax 导航,但它一直在窃听。

有人可以帮助我吗?

谢谢!

在 Login 类的 __construct() 函数中,您将找到必须在所有将使用 $_SESSION 变量的页面上调用的session_start() ---。

因此,在不受访问控制的页面上,您需要投入session_start()

为了证明这一点,你为什么不尝试像这样扔块:

if(! session_id() ) {
 echo "No session! Starting, now."; session_start(); 
} else { 
echo session_id(); 
}

你需要把session_start()放在每个php文件的顶部。每个使用会话的文件都需要调用 session_start() 。这是处理会话时常见的错误。