在ThinkPHP中session无法传值的问题

2018-01-04 11:42:00 2476 3 编辑:深正互联 来源:互联网

<?php

    在ThinkPHP中session无法传值的问题

这几天用TP做项目,突然发现session无法使用了,在一个控制器里设置的session值,然后在另一个控制器里无法调用,纠结啊.

不知道哪里的问题,各种方法都试过了就是不行,最终在网上查了一下,也有人遇到过这样的问题,最终想到了一个最古老的解决方法,那就是修改php.ini文件,没办法只能死马当活马医了,结果还真行,虽然这个方法有些安全隐患但这也是没有办法的办法了.

1,查找c:/windows目录下php.ini文件

2,修改php.ini中的session.auto_start = 0 为 session.auto_start = 1 //设置自动开启session

3,重启apache服务器 //我只修改了上边一处就可以用了如果不行的话,就执行下边第4步

4,修改php.ini中的session.save_path = "C:/tmp",将前边的;去掉 //修改session的保存路径,自动建立tmp文件夹

session 跨域,困扰我好几天,今天终于弄明白了,不管是thinkphp,还是本身的php,其实都要设置session.cookie_domain,设置好,就OK了,在thinkphp 里,在配置文件里:

conf/config.php

第一行:加ini_set('session.cookie_domain', ".domain.com");//跨域访问Session

别的不用框架的一样,以下又是我这几天总结的,session 跨域解决办法,本人已亲自测试成功,并已运用到自己的网站!

第一种情况:如果你目录下没有.htaccess这个文件,也就是没有采取url伪静态2的话,那么,你在conf/config.php

第一行加上:ini_set('session.cookie_domain', ".domain.com");//跨域访问Session

这种如果你开启了调试,可能用,但关闭了调试,可能就不管用了!

第二种情况:如果你目录下有.htaccess这个文件,那么你在根目录,index.php的第一行加入:

        //定义ThinkPHP框架路径 define('THINK_PATH','../ThinkPHP/');

        //定义项目名称和路径 define('APP_NAME','Www');

        define('APP_PATH','.'); //加载框架入口文件

        require(THINK_PATH."/ThinkPHP.php"); //实例化一个网站应用实例

        App::run(); ?> 

这种开不开启调试都管用!

12.jpeg

本站文章均为深正网站建设摘自权威资料,书籍,或网络原创文章,如有版权纠纷或者违规问题,请即刻联系我们删除,我们欢迎您分享,引用和转载,但谢绝直接搬砖和抄袭!感谢...
关注深正互联

15

技术从业经验

多一份方案,会有收获...

联系深正互联,免费获得专属《策划方案》及报价

在线咨询 微信交谈
拒绝骚扰,我们只想为给您带来一些惊喜...
多一份免费策划方案,总有益处。

请直接添加技术总监微信联系咨询