我的会话有一个奇怪的问题... 我在htaccess中使用重定向创建了MVC php应用。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !/Public/
RewriteRule ^(.*)$ /Public/$1 [L]
和公共目录中的htaccess:
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
在默认的api index.php(网址:domain.com/offer或domain.com/gallery)中,会话正常工作
<?php print_r($_SESSION); ?>
//result: ARRAY ( [TEST] => TRUE )
<?=session_id()?>
//result: 6a5d103581340500d75b76c47f335d4e
但是!如果我使用网址:domain.com/ajaxFilePHP/signIn.php 会话无法正常工作...
<?php print_r($_SESSION); ?>
//result: Array( [IL] => 1 [NAME] => admin [LID] => 1 )
<?=session_id()?>
//result:
我检查了ajax和客户端连接是否相同。
这不是我的服务器...在我的PC和服务器中,api正常工作... php ini中的会话配置几乎完全相同...
我的服务器:
Cookie - PHPSESSID=....
HTTP_COOKIE - PHPSESSID=...
session.cookie_httponly - no value
session.gc_divisor - 1000
session.sid_bits_per_character - 5
session.sid_length - 26
其他服务器:
Cookie - no entry in ini
HTTP_COOKIE - no entry in ini
session.cookie_httponly - 0
session.gc_divisor - 100
session.sid_bits_per_character - 4
session.sid_length - 32
有人可以帮忙吗?
编辑: 我有session_start();在ajaxFilePHP目录中的每个文件中
<?php
session_start();
require_once realpath(dirname(__FILE__)."/../../App/Core/DataBase/DBinit.php");
if(isset($_POST['name']) && isset($_POST['pass'])){
$l = new LoginDB();
exit($l->Login($_POST['name'], $_POST['pass']));
}
exit('100');
EDIT2:
主文件:
session_status();
//return code: 2
ajaxPhpFile:
session_status();
//return code: 1
答案 0 :(得分:0)
如果要使用php会话,请确保需要php会话的文件,然后在顶部添加:session_start();
,否则您将无法从会话数组中获得任何结果,良好的做法是如果您具有通用标头.php例如在顶部session_start();