首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >会话在重写url时未设置。

会话在重写url时未设置。
EN

Stack Overflow用户
提问于 2015-01-20 10:18:23
回答 1查看 452关注 0票数 0

我在本地和一位退伍军人一起工作。

我的url是这样的:http://smartspace.dev/index.php/game,我希望它是这样的:http://smartspace.dev/game

会议产出:

代码语言:javascript
复制
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:$_SESSION:http://smartspace.dev/index.php/game时,我可以访问its not empty

但是当我进入url:http://smartspace.dev/game会话时,空数组(size=0)为空

我使用下面的.htaccess使我的urls看起来更漂亮..。

代码语言:javascript
复制
<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.php url:http://smartspace.dev/index.php/game

代码语言:javascript
复制
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.php url:http://smartspace.dev/game

代码语言:javascript
复制
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

下面是我的会话构造函数:

代码语言:javascript
复制
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();
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2015-01-20 11:08:53

您需要在调用session_set_cookie_params()之前使用session_start()函数,并使用正确的$path参数。该值取决于您的应用程序安装(如果它安装在webroot的子目录中呢?),但在您的特定情况下,值是'/'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28042812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档