gpt4 book ai didi

javascript - AJAX 请求中的 PHP session 变量

转载 作者:行者123 更新时间:2023-12-03 11:56:47 25 4
gpt4 key购买 nike

我在通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com