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