javascript - AJAX 请求中的 PHP session 变量

标签 javascript php ajax session

我在通过 AJAX 请求使用 session 变量时遇到了巨大的困难。层次结构是:

i. index.php
   require_once('config.php');
   <script class="include" type="text/javascript" src="js/jquery.manage.js"></script>  

ii. config.php
    session_start();
    $loggedInUser = $_SESSION["user"];

iii. manage.js
     $.post('functions.php', 'checkPermissions', function(data){});

iv. functions.php
    checkPermissions(){
       if ($loggedInUser->permission == "1"){
       //stuff
       }
     }

我认为 $loggedInUser 会在 config.php 中全局化,从而可以被 Functions.php 访问。但问题是我通过 ajax 请求运行该问题吗?有时我觉得这意味着我请求的 PHP 文件位于它自己的星球上,并且不与全局 PHP 变量或 session 变量交互。我在每个变体中都会遇到错误。我尝试直接在functions.php 中调用$_SESSION 变量(使用session_start()),但出现类似错误

The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "loggedInUser" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition

最佳答案

我并不是说一定要这样做,因为我不知道您的 loggedInUser 是如何工作的,但是您可以不分配 $_SESSION['user'] 在登录时该类中?看我的例子。然后它将在 session 中,您总是可以通过它的 session 变量来访问它。我不确定您的 AJAX 调用正在做什么,但被调用的页面除了检查 $_SESSION 之外可能不需要检查任何功能。

i. index.php
   require_once('config.php');
   <script class="include" type="text/javascript" src="js/jquery.manage.js"></script>  

ii. config.php
    session_start();

// Your login class
class loggedInUser
    {
        // Default actions
        public  function __construct()
            {
                if(isset($_POST['login'])) {
                        // Assign the user info to array (or false/0 if user/pass wrong)
                        $_userinfo  =   $this->ProcessLogin();

                        // If user is good, then assign all the returned db info
                        if($_userinfo !== 0) {                          
                                // Here is where you would assign the usergroup/permissions
                                $_SESSION['user']       =   $_userinfo['user'];

                                // assign more session vars from returned info 
                                $_SESSION['username']   =   $_userinfo['username'];
                                $_SESSION['first_name'] =   $_userinfo['first_name'];
                                //...etc.
                            }
                        else
                            $_error['login']    =   'Incorrect User/Password';
                    }
            }

        protected   function ProcessLogin()
            {
                // Include db connection if not in assigned as a global
                include_once($_SERVER['DOCUMENT_ROOT'].'/my/dbconnection.php');
                // -->Check user/pass against db code here<--
                // Presume $_userinfo is the checked against credentials and user is valid,
                // This is just a representation of what your DB returns for demonstration
                $_userinfo = array('id'=>123,'username'=>'dougfrank','user'=>1);                    

                // If row count for user is 1 (whatever the logic is here)
                return (!empty($_userinfo))? $_userinfo: 0; 
            }
    }

$_setUser   =   new loggedInUser();

iii. manage.js
     $.post('functions.php', 'checkPermissions', function(data){});


// This is how you would check whenever you are checking
// who has user 1 credentials
if($_SESSION['user'] == 1) {
        // do stuff.
    }

关于javascript - AJAX 请求中的 PHP session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25577069/

相关文章:

javascript - 有没有办法通过单击 HREF 链接来获取表内的值?

javascript - 如何使用服务器返回的 json 数据动态填充 google 条形图的数据

php - 使用 PHP cPanel 配置远程 MySQL 访问

php - 变量变量处理顺序: changes in PHP 7

php - 在 Laravel 中实现面向对象设计

javascript - 如何在 Django ajax 更新中返回 json 字典

javascript - 如何在nodejs路由器中使用Promise和yield?

javascript - 为什么以下内容会在浏览器中阻塞,直到加载并评估 `lib.js` 为止?

ajax - Clojurescript 序列化表单 AJAX POST

javascript - PHP邮件函数发出电子邮件,但AJAX函数出错