<?php
在ThinkPHP中session無(wú)法傳值的問題
這幾天用TP做項(xiàng)目,突然發(fā)現(xiàn)session無(wú)法使用了,在一個(gè)控制器里設(shè)置的session值,然后在另一個(gè)控制器里無(wú)法調(diào)用,糾結(jié)啊.
不知道哪里的問題,各種方法都試過了就是不行,最終在網(wǎng)上查了一下,也有人遇到過這樣的問題,最終想到了一個(gè)最古老的解決方法,那就是修改php.ini文件,沒辦法只能死馬當(dāng)活馬醫(yī)了,結(jié)果還真行,雖然這個(gè)方法有些安全隱患但這也是沒有辦法的辦法了.
1,查找c:/windows目錄下php.ini文件
2,修改php.ini中的session.auto_start = 0 為 session.auto_start = 1 //設(shè)置自動(dòng)開啟session
3,重啟apache服務(wù)器 //我只修改了上邊一處就可以用了如果不行的話,就執(zhí)行下邊第4步
4,修改php.ini中的session.save_path = "C:/tmp",將前邊的;去掉 //修改session的保存路徑,自動(dòng)建立tmp文件夾
session 跨域,困擾我好幾天,今天終于弄明白了,不管是thinkphp,還是本身的php,其實(shí)都要設(shè)置session.cookie_domain,設(shè)置好,就OK了,在thinkphp 里,在配置文件里:
conf/config.php
第一行:加ini_set('session.cookie_domain', ".domain.com");//跨域訪問Session
別的不用框架的一樣,以下又是我這幾天總結(jié)的,session 跨域解決辦法,本人已親自測(cè)試成功,并已運(yùn)用到自己的網(wǎng)站!
第一種情況:如果你目錄下沒有.htaccess這個(gè)文件,也就是沒有采取url偽靜態(tài)2的話,那么,你在conf/config.php
第一行加上:ini_set('session.cookie_domain', ".domain.com");//跨域訪問Session
這種如果你開啟了調(diào)試,可能用,但關(guān)閉了調(diào)試,可能就不管用了!
第二種情況:如果你目錄下有.htaccess這個(gè)文件,那么你在根目錄,index.php的第一行加入:
//定義ThinkPHP框架路徑 define('THINK_PATH','../ThinkPHP/');
//定義項(xiàng)目名稱和路徑 define('APP_NAME','Www');
define('APP_PATH','.'); //加載框架入口文件
require(THINK_PATH."/ThinkPHP.php"); //實(shí)例化一個(gè)網(wǎng)站應(yīng)用實(shí)例
App::run(); ?>
這種開不開啟調(diào)試都管用!