我有以下文件文件夹结构:
public_html >> index.php、post.php 等
public_html >> 包括 >> common.php、security.php、ajaxfile.php 等。
public_html >> ajaxlibs >> chk_login.php 等
下面的文件有很多功能,包括一个用于登录的功能,几乎所有地方都会调用该文件:
安全.php:
<?php
//checking user credentials goes here ......
//...........
function logIn($newToken,$uID)
{
$cookieExpiry= time()+36000;
//set user login (ul) cookie:
setcookie('token',$newToken,$cookieExpiry,'/','',FALSE,true);
setcookie('uid',$uID,$cookieExpiry,'/','',FALSE,true);
return 'success';
}
//if user credentials are valid:
logIn('token_hashed_via_another_func', $uID);
?>
cookie 在登录时完美设置,如下所示:
Cookie 名称:token,值:'token_hashed_via_another_func',路径:'/'
但是当我调用与 security.php 位于同一目录的 AJAX 文件时,例如 include/ajaxfile.php,我得到一个具有不同值和路径的新 cookie,如下所示:
Cookie 名称:token,值:'different_value_with_unkown_hashing_resource',路径:'/include/'
因此,我得到了一个名称相同但值和路径不同的新 cookie,并且原始 cookie 没有被删除。
令人惊讶的是,如果我将同一个 AJAX 文件移动到另一个文件夹而不是具有 security.php 的文件夹,我不会遇到同样的问题。
我几乎可以肯定它在某种程度上与 AJAX 有关,因为当我需要来自同一目录(即包含)的文件时,问题不会发生。
这是我如何调用 AJAX 文件的示例:
$.ajax({
type: "GET",
url: "include/ajaxfile.php",
dataType: "text",
async: true,
cache: false,
timeout: 40000,
success: function(response)
{
//do something or even nothing
},
error: function()
{
alert("error!");
}
});
收到一只叮咚