在我的header.php
文件的最顶部,我有一个index.php
:
<?php require 'setup/header.php'; ?>
标头包含来自同一目录的一堆文件,其中一个是session.inc.php
:
<?php
if(!isset($_SESSION)){
session_name('__KD');
session_set_cookie_params(0,'/','','',true);
session_start();
}
if(!isset($_SESSION['visitor'])) {
if (empty($_SERVER['HTTP_REFERER'])) { $_SERVER['HTTP_REFERER'] = 'direct'; }
$_SESSION['visitor']['ip'] = ipaddress(); // personal function to retrive the users IP adress
$_SESSION['visitor']['ua'] = $_SERVER['HTTP_USER_AGENT'];
$_SESSION['visitor']['ref'] = $_SERVER['HTTP_REFERER'];
$_SESSION['visitor']['arr'] = $now[0]; // = getdate();
}
?>
在我的<body>
的{{1}}部分中,有一个文件index.php
,用于处理内容和实际的页面请求。
并且在最底部,仍位于load.tpl.php
标签内,包括了所有javascript。
<body>
load.tpl.php :
<body>
<?php require 'content/load.tpl.php'; ?>
<?php include 'assets/js/scripts.combined.js'; ?>
</body>
此结构可确保所有页面都可以访问<nav id="site-navigation" class="noprint">...</nav>
<main id="site-content">
<?php
/**
* $_PAGE['file'] is a variable that holds the actual filename from a db request
*/
include $_PAGE['file'].'.php';
?>
</main>
<footer id="site-footer">...</footer>
中的所有内容(函数,类,会话,DB,常量,变量等,以及javascript)。
这是我在包含的页面文件-header.php
中单击“提交”按钮时正在执行的javascript / jquery ajax脚本:
Search.pg.php
最后解决手头的问题:
RequestRecipe.ajax.php
该脚本位于index.php的子文件夹中,与$("#RequestRecipe").submit(function(e){
var _POST = $(this).serialize(); // form $_POST[]s
var script = 'scripts/RequestRecipe.ajax.php'; // script to be executed
e.preventDefault();
$.ajax({type:'POST', url:script, data:_POST})
.done(function(response){
console.log(response);
})
.fail(function(response){
console.log(response);
});
});
隔离。这意味着在此独立脚本中无法访问网站上所有可访问的内容:
index.php
RequestRecipe.ajax.php
root/
index.php
assets/js/scripts.combined.js (this is where the ajax-script is located)
setup/header.php (includes session.inc.php from same directory)
content/Search.pg.php (is included by load.tpl.php into the index.php-file)
scripts/RequestRecipe.ajax.php
当我单击提交按钮时,该按钮执行ajax调用,向<?php
session_start();
print_r($_SESSION); // this is empty
?>
发出请求,$ _ SESSION不可用。会话返回空。
我做错了什么?
导航时,每个页面都有可用的会话,但进行ajax调用时,该会话不可用。