我正在研究除自定義php項目之外還需要工作的laravel項目,因爲我需要訪問laravel應用程序中的純php全局變量$ _SESSION和$ _COOKIE。
到現在爲止我只是空或空。有人知道如何做到這一點?
我正在研究除自定義php項目之外還需要工作的laravel項目,因爲我需要訪問laravel應用程序中的純php全局變量$ _SESSION和$ _COOKIE。
到現在爲止我只是空或空。有人知道如何做到這一點?
Laravel有自己的實現$_SESSION
和$_COOKIE
,所以我恐怕你不能通過這些超全球變量訪問它們。
要努力克服這一點,你可以做什麼,在你的Laravel應用,是通過執行類似數據從一個轉移到其他:
foreach(Session::all() $key => $value)
{
$_SESSION[$key] = $value;
}
不幸的是,這對這個問題沒有幫助,因爲我需要在laravel應用程序中實現更改,因爲它很小且易於管理。但我知道這將有助於其他情況。謝謝! – gvsrepins
它不怎麼樣?無論如何,我認爲這是迄今爲止最相關的答案。更多關於[Laravel's Docs - Session(4.2)](http://laravel.com/docs/4.2/session)。 – srph
因爲在他的回答中,他展示瞭如何讓laravel會話對其他應用程序可見,什麼是非常有用的,但當時我需要的是相反的。如何在laravel應用程序中提供其他應用程序的會話。感謝我在這裏收到的答案,我可以做到這一點,並且是一件非常簡單的事情,如果你對此感到好奇,請檢查我自己的答案。 :) – gvsrepins
我有一個類似的問題與CakePHP的一對夫婦幾個月前。基本上,Cake應用程序中的會話變量完全獨立於我們擁有的定製應用程序中的會話變量。問題在於Cake使用與PHPSESSID不同的會話標識符。最後,我被迫通過強制Cake使用PHPSESSID來彌補差距。我對Laravel不太熟悉,但從我看到的(在他們的主站點上),他們似乎使用「laravel_session」而不是PHPSESSID。這很可能是你的問題,官方的Laravel論壇上似乎有一個topic about this。
Laravel有它自己的那些全局實現,但是你可以通過Symfony請求類來訪問它們 - 這是Laravel請求的父類。 Symfony正在直接與全局工作。
會議:
Request::getSession();
的Cookie:
$cookie = new ParameterBag($cookie_name);
用於會話的答案就是這麼簡單,我不相信在開始時,它會實際工作。
我在想,Laravel以某種方式覆蓋了正常PHP會話的默認行爲。也許在幕後宣佈自定義session_handler
或其他魔法。
感謝所有我在這裏得到的答案,我發現Laravel根本沒有使用$ _SESSION,它實現了一個完全不同的驅動程序。
因此,有acesses到外部會議,我只是使用本地session_start()
和session_name()
純PHP現在我已經接取到所有的數據,在全球$_SESSION
保存在側面項目中使用相同的命名空間。
對於cookies,我無法弄清楚如何做到這一點,從Laravel應用程序:/。但只要有會話,我就可以繼續併合並應用程序。
我有類似的問題,沒有被設置laravel和Cookie :: get()返回null。這是因爲laravel加密了他們的cookies。您可以不包含EncryptCookies
中間件以避免此問題。刪除\App\Http\Middleware\EncryptCookies::class
from $middlewareGroups
app\Http\Kernel.php
在任何* PHP腳本中,您總是可以訪問像'$ _SESSION'或'$ _COOKIE'這樣的超全局變量(在HTTP SAPI上下文中,CLI可能會有所不同)。獲得NULL(或者空)意味着那些目前不被使用,這當然是可以的,因爲一些會話管理根本不能使用'$ _SESSION'。對於['$ _COOKIE'](http:// php。net/_cookie)它總是包含所有在HTTP請求時設置的cookie。請查閱Laravel的技術文檔,不是爲了某些樂趣而重寫這種超全球陣列。 – hakre