php - jQuery Mobile 和 PHP 登录 session

标签 php jquery mysql session jquery-mobile

我一直在使用这个登录脚本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/

相关文章:

php - 调整窗口大小时如何防止HTML元素移动?

php - Laravel auth 有时会检索错误的用户

jquery - 创建对 jQuery.data 键的本地引用

javascript - 通过javascript获取访问 token

mysql - PHPmyadmin 和 Joomla 与图像字段

php - 使用index.php而不是index.html是不好的做法吗?

jquery - 使用 jQuery 的水平菜单的基本旋转木马

mysql - 从命令行调用 mysql 5.5 并将查询结果输出到文件给出使用消息而不是查询结果

Mysql映射表FK约束

php - 采用 Ruby on Rails 提高产品质量?