我使用vhost在本地工作。
我的网址如下:http://smartspace.dev/index.php/game
我希望它是这样的:http://smartspace.dev/game
会话输出:
array (size=6)
'id' => string '4' (length=1)
'agent' => string 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36' (length=108)
'planet' => int 0
'last' =>
array (size=4)
'sessionID' => string 'a710069jelqmr7ifdvvail1hi4' (length=26)
'userID' => string '4' (length=1)
'userIP' => string '127.0.0.1' (length=9)
'lastonline' => string '1421747723' (length=10)
'path' => string 'index.php' (length=9)
'PHPDEBUGBAR_STACK_DATA' =>
array (size=0)
empty
当我输入url:http://smartspace.dev/index.php/game
时,我可以访问$_SESSION its not empty
但当我输入url时:http://smartspace.dev/game
会话为空数组(大小=0(空
我使用以下.htaccess使我的url看起来更漂亮。。。
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)'." - [F]
</IfModule>
<FilesMatch "('.(bak|config|sql|fla|psd|ini|log|sh|inc|swp|dist)|~)$">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
在这里,我还粘贴$_SERVER:的输出
带有index.phpurl:http://smartspace.dev/index.php/game
array (size=36)
'HTTP_HOST' => string 'smartspace.dev' (length=14)
'HTTP_CONNECTION' => string 'keep-alive' (length=10)
'HTTP_ACCEPT' => string 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' (length=74)
'HTTP_USER_AGENT' => string 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36' (length=108)
'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate, sdch' (length=19)
'HTTP_ACCEPT_LANGUAGE' => string 'en-US,en;q=0.8,de-DE;q=0.6,de;q=0.4,tr;q=0.2,fr;q=0.2' (length=53)
'HTTP_COOKIE' => string 'lang=en; PHPSESSID=mib1vvnitulmunionb9v9mdr83; SmartSpace=a710069jelqmr7ifdvvail1hi4' (length=84)
'PATH' => string 'C:'ProgramData'Oracle'Java'javapath;C:'Windows'system32;C:'Windows;C:'Windows'System32'Wbem;C:'Windows'System32'WindowsPowerShell'v1.0';C:'wamp'bin'php'php5.5.12;C:'ProgramData'ComposerSetup'bin;C:'Program Files (x86)'Git'cmd;C:'Program Files (x86)'nodejs';' (length=257)
'SystemRoot' => string 'C:'Windows' (length=10)
'COMSPEC' => string 'C:'Windows'system32'cmd.exe' (length=27)
'PATHEXT' => string '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC' (length=53)
'WINDIR' => string 'C:'Windows' (length=10)
'SERVER_SIGNATURE' => string '<address>Apache/2.4.9 (Win64) PHP/5.5.12 Server at smartspace.dev Port 80</address>
' (length=84)
'SERVER_SOFTWARE' => string 'Apache/2.4.9 (Win64) PHP/5.5.12' (length=31)
'SERVER_NAME' => string 'smartspace.dev' (length=14)
'SERVER_ADDR' => string '127.0.0.1' (length=9)
'SERVER_PORT' => string '80' (length=2)
'REMOTE_ADDR' => string '127.0.0.1' (length=9)
'DOCUMENT_ROOT' => string 'C:/wamp/www/SmartSpace/' (length=23)
'REQUEST_SCHEME' => string 'http' (length=4)
'CONTEXT_PREFIX' => string '' (length=0)
'CONTEXT_DOCUMENT_ROOT' => string 'C:/wamp/www/SmartSpace/' (length=23)
'SERVER_ADMIN' => string 'admin@smartspace.dev' (length=20)
'SCRIPT_FILENAME' => string 'C:/wamp/www/SmartSpace/index.php' (length=32)
'REMOTE_PORT' => string '51752' (length=5)
'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7)
'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8)
'REQUEST_METHOD' => string 'GET' (length=3)
'QUERY_STRING' => string '' (length=0)
'REQUEST_URI' => string '/index.php/game' (length=15)
'SCRIPT_NAME' => string '/index.php' (length=10)
'PATH_INFO' => string '/game' (length=5)
'PATH_TRANSLATED' => string 'redirect:'index.php' (length=19)
'PHP_SELF' => string '/index.php/game' (length=15)
'REQUEST_TIME_FLOAT' => float 1421748882.781
'REQUEST_TIME' => int 1421748882
没有index.phpurl:http://smartspace.dev/game
array (size=36)
'REDIRECT_STATUS' => string '200' (length=3)
'HTTP_HOST' => string 'smartspace.dev' (length=14)
'HTTP_CONNECTION' => string 'keep-alive' (length=10)
'HTTP_ACCEPT' => string 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' (length=74)
'HTTP_USER_AGENT' => string 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36' (length=108)
'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate, sdch' (length=19)
'HTTP_ACCEPT_LANGUAGE' => string 'en-US,en;q=0.8,de-DE;q=0.6,de;q=0.4,tr;q=0.2,fr;q=0.2' (length=53)
'HTTP_COOKIE' => string 'SmartSpace=15ngr9spbsqfb09fvst2gk5tc4; lang=en; PHPSESSID=mib1vvnitulmunionb9v9mdr83; SmartSpace=a710069jelqmr7ifdvvail1hi4' (length=123)
'PATH' => string 'C:'ProgramData'Oracle'Java'javapath;C:'Windows'system32;C:'Windows;C:'Windows'System32'Wbem;C:'Windows'System32'WindowsPowerShell'v1.0';C:'wamp'bin'php'php5.5.12;C:'ProgramData'ComposerSetup'bin;C:'Program Files (x86)'Git'cmd;C:'Program Files (x86)'nodejs';' (length=257)
'SystemRoot' => string 'C:'Windows' (length=10)
'COMSPEC' => string 'C:'Windows'system32'cmd.exe' (length=27)
'PATHEXT' => string '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC' (length=53)
'WINDIR' => string 'C:'Windows' (length=10)
'SERVER_SIGNATURE' => string '<address>Apache/2.4.9 (Win64) PHP/5.5.12 Server at smartspace.dev Port 80</address>
' (length=84)
'SERVER_SOFTWARE' => string 'Apache/2.4.9 (Win64) PHP/5.5.12' (length=31)
'SERVER_NAME' => string 'smartspace.dev' (length=14)
'SERVER_ADDR' => string '127.0.0.1' (length=9)
'SERVER_PORT' => string '80' (length=2)
'REMOTE_ADDR' => string '127.0.0.1' (length=9)
'DOCUMENT_ROOT' => string 'C:/wamp/www/SmartSpace/' (length=23)
'REQUEST_SCHEME' => string 'http' (length=4)
'CONTEXT_PREFIX' => string '' (length=0)
'CONTEXT_DOCUMENT_ROOT' => string 'C:/wamp/www/SmartSpace/' (length=23)
'SERVER_ADMIN' => string 'admin@smartspace.dev' (length=20)
'SCRIPT_FILENAME' => string 'C:/wamp/www/SmartSpace/index.php' (length=32)
'REMOTE_PORT' => string '51788' (length=5)
'REDIRECT_URL' => string '/game' (length=5)
'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7)
'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8)
'REQUEST_METHOD' => string 'GET' (length=3)
'QUERY_STRING' => string '' (length=0)
'REQUEST_URI' => string '/game' (length=5)
'SCRIPT_NAME' => string '/index.php' (length=10)
'PHP_SELF' => string '/index.php' (length=10)
'REQUEST_TIME_FLOAT' => float 1421748975.194
'REQUEST_TIME' => int 1421748975
有助于找出差异的网站:https://www.diffchecker.com/x2brteqf
这是我的会话构造函数:
class Session
{
private static $obj;
private static $isInit = false;
static function init() {
ini_set('session.use_cookies', '1');
ini_set('session.use_only_cookies', '1');
ini_set('session.use_trans_sid', 0);
ini_set('session.auto_start', '0');
ini_set('session.serialize_handler', 'php');
ini_set('session.gc_maxlifetime', SESSION_LIFETIME);
ini_set('session.gc_probability', '1');
ini_set('session.gc_divisor', '1000');
ini_set('session.bug_compat_warn', '0');
ini_set('session.bug_compat_42', '0');
ini_set('session.cookie_httponly', true);
session_set_cookie_params(SESSION_LIFETIME, '/', NULL, HTTPS, true);
session_cache_limiter('nocache');
session_name('SmartSpace');
self::$isInit = true;
}
function __construct()
{
if(self::$isInit === false)
{
self::init();
}
}
您需要在调用session_start()
之前使用session_set_cookie_params()
函数,并使用正确的$path
参数。该值取决于您的应用程序安装(如果它安装在webroot的子目录中会怎样?(,但在您的特定情况下,该值为'/'
。