婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP實現cookie跨域session共享的方法分析

PHP實現cookie跨域session共享的方法分析

熱門標簽:長春人工外呼系統服務商 哪里辦理400電話 外呼系統撥打暫時無法接通 江西手機自動外呼防封系統是什么 高德地圖標注家 仁和怎么申請400開頭的電話 廣東地市地圖標注 廣州防封卡外呼系統多少錢一個月 怎么向銷售公司推銷外呼系統

本文實例講述了PHP實現cookie跨域session共享的方法。分享給大家供大家參考,具體如下:

做過web開發的小伙伴們都了解cookie和session,cookie是存儲在客戶端的,session是存儲在服務器的。

本篇主要通過一些實踐中的案例和大家分享一下踩到坑,重點說明了cookie跨域問題和session服務器共享問題,以php語言為使用語言進行說明。

先聊聊cookie

設置cookie無效

setcookie("sso", "e589hR6VnO8K1CNQZ4PSP/LWGBhRKE5VckawQwl1TdE8d4Q5E7tW", 900);

這個問題很多剛入門php的小伙們都會碰到。這個代碼的本意應當是想設置cookie sso的有效期為15分鐘,可是執行這個代碼后發現沒有效果。為什么呢?因為第三個參數expire表示的是過期的時間節點,而不是有效時間,所以如果希望設置cookie為15分鐘,正確的做法應當是獲取當前的時間戳加上15分鐘。

setcookie這個函數還有path、domain參數都比較常用,強烈建議剛學php的小伙們多翻閱手冊。php手冊地址: http://php.net/manual/zh/index.php

獲取cookie值獲取不到

先看這樣一段代碼

setcookie("sso", "e589hR6VnO8K1CNQZ4PSP/LWGBhRKE5VckawQwl1TdE8d4Q5E7tW", time() + 900);
var_dump($_COOKIE["sso"]);

要解決這個問題,要先了解一下setcookie后發生了什么?因為cookie是保存在客戶端的,php是服務端語言,實際上setcookie之后只是在返回的http頭增加一個cookie的頭信息,告訴客戶端需要設置一個醬紫的cookie,如下圖:

php中setcookie返回的http頭

而$_COOKIE這個數組里面保存客戶端傳遞上來的cookie。自然第一次刷新的時候因為客戶端沒有相應的cookie值,所以$_COOKIE是沒有sso的信息的。第一次請求過后,因為服務器設置了cookie sso,所以第一次請求過來客戶端就有了cookie sso的信息,所以第二次請求的時候就會帶上sso的信息,服務端就能通過$_COOKIE取到值了。

cookie跨域問題

這個可以說是cookie中一個比較熱門的問題,面試的時候一般很愛聊這方面的問題。

跨域的業務需求大概是醬紫:用戶在a.com進行了登錄,希望在b.com也同步進行了登錄。如果是同一個主域比較簡單,可以通過setcookie中的domain參數進行設定:例如有x.a.com和xx.a.com,可以通過設置domain為a.com,從而a.com的所有二級域名都可以共享這一個cookie。基于安全方面的原因,在a.com下面設置domain為b.com是無效的。

那么是否真的沒有辦法可以實現這個了呢?這個還是有一些奇巧淫技的,這里介紹一種使用內框iframe的方法。

具體思路:在a.com下設置cookie后,嵌入一個iframe框鏈接b.com的頁面,b.com設置好頁面cookie后,再嵌入一個a.com的頁面,然后通過parent.parent就可以調用最外層的a.com的js方法,從而進行跳轉或者一些其它的操作。具體代碼示例如下:

假設a.com有頁面:login.php和callback.php,b.com有頁面synclogin.php

a.com的login.php代碼:

?php
$sso = "e589hR6VnO8K1CNQZ4PSP/LWGBhRKE5VckawQwl1TdE8d4Q5E7tW";
setcookie("sso", $sso);
?>
login success...
script type="text/javascript">
  function jumpTo() {
    location.;
  }
/script>
iframe src="http://b.com/synclogin.php?sso=?php echo $sso; ?>">/iframe>

b.com的synclogin.php頁面

?php
setcookie("sso", $_GET["sso"]);
?>
iframe src="http://a.com/callback.php">/iframe>

a.com的callback.php頁面

script type="text/javascript">
  parent.parent.jumpTo();
/script>

代碼看起來也不難,值得一提的是這里嵌入了兩個iframe,因為如果只用一個iframe的話,即在b.com的synclogin.php內直接調用父窗體的jumpTo方法,在有些瀏覽器下會提示沒有權限的錯誤:
Error: Permission denied to access property

這里只是演示了cookie跨域同步的思路,具體細節還有很多可以改進的地方,比如iframe鏈接的頁面可以考慮改成靜態的頁面,這樣效率會比php動態頁面快很多,還有像參數校驗、多個主域(比如還有c.om)同時登錄等等,這里就不再累述。

cookie的總結到這里就結束,如果你感覺有一些收獲,可以在頁面底部掃碼給我打賞喲,感謝O(∩_∩)O~

session

$_SESSION沒有值

這個session使用和cookie有一點不太一樣,session使用前必須先調用session_start方法。否則會收到一個undefined的錯誤:
Notice: Undefined variable: _SESSION

session存儲在哪

session存儲在服務端,但是session究竟是存儲在哪呢?php.ini中關于session有一個save_path的選項可以設置存放的目錄,如果這個選項沒有設置值,那么就存儲在系統默認的tmp目錄下。默認的tmp目錄可以通過sys_get_temp_dir方法取到。

例如在mac下面,php的session一般會存儲在/var/tmp目錄下。

session_start();
echo session_id();//本例輸出ipkl446enhae25uq92c28u4lo3
$_SESSION['name'] = "tony”;
$_SESSION['users'] = array("tony", "andy");

通過session_id方法可以取到當前的session編號,通過這個編號可查看一下該session文件。

$ sudo more /var/tmp/sess_ipkl446enhae25uq92c28u4lo3
name|s:4:"tony";users|a:2:{i:0;s:4:"tony";i:1;s:4:"andy";}

可以清楚的看到session存儲數據的結構,其中值是用序列化的方式進行轉化存儲的。

session也用了cookie

session不是存儲在服務端嗎,怎么又和cookie扯上關系了?其實想想也簡單,因為客戶端再請求的時候,服務端怎么樣才能知道該客戶端的session存儲在哪個文件呢?其實也是通過cookie PHPSESSID來進行標識。

php中session的cookie標識

php在進行session操作的時候會生成一個session id,而后把這個值以cookie的形式保存在客戶端,就是圖示中的PHPSESSID了。客戶端在下次請求的時候就會帶上這個PHPSESSID,服務端就能知道當前客戶端對應的session文件了

session超時設置

cookie超時設置比較簡單,一個參數就搞定了。session這邊有點小麻煩,既不能單獨設置cookie PHPSESSID的超時時間,也不能單獨設置服務端文件的超時時間。具體的可以參考鳥哥這篇文章:如何設置一個嚴格30分鐘過期的Session,真的非常嚴謹,贊一下。

session服務器共享

這個問題和cookie的跨域類似,面試的時候也很愛聊這個問題。

以前在做服務器集群的時候會碰到這樣的一樣問題,就是用戶一會訪問是處于正常登錄狀態,一會訪問又沒有登錄了。這個問題偶爾才會出現。跟蹤代碼下去才發現session沒有取到相應的值,想想也是醉了:原來服務器session沒有設置共享,session存在在本地文件目錄,當用戶訪問另外一臺服務器的時候自然就取不到session了。

解決方法也不難,通過共享的存儲在進行服務器之間的共享。這里使用redis的進行session存儲。可以通過php.ini配置文件進行調整,也可以在代碼中通過ini_set進行調整

ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379”);

如果需要使用redis進行存儲,需要session中的Registered save handlers支持redis

php中session是否支持redis

當這樣設置之后,session就會保存在redis中了,不同的集群服務器之間就可以通過該redis服務器進行共享了。

好吧,暫時就寫到這里了,以后會發現新的坑會繼續補充上來。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP中cookie用法總結》、《php緩存技術總結》、《PHP數組(Array)操作技巧大全》、《PHP網絡編程技巧總結》及《php字符串(string)用法總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • php7 list()、session及其他模塊的修改實例分析
  • PHP7創建銷毀session的實例方法
  • PHP 圖像處理與SESSION制作超簡單驗證碼的方法示例
  • PHP 實現超簡單的SESSION與COOKIE登錄驗證功能示例
  • PHP cookie與session會話基本用法實例分析
  • 如何解決PHP獲取不到SESSION信息之一般情況
  • thinkphp 5框架實現登陸,登出及session登陸狀態檢測功能示例
  • php實現多站點共用session實現單點登錄的方法詳解
  • PHP使用Session實現上傳進度功能詳解
  • PHP SESSION跨頁面傳遞失敗解決方案

標簽:廈門 海北 湘西 濮陽 文山 梅河口 黔東 惠州

巨人網絡通訊聲明:本文標題《PHP實現cookie跨域session共享的方法分析》,本文關鍵詞  PHP,實現,cookie,跨域,session,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現cookie跨域session共享的方法分析》相關的同類信息!
  • 本頁收集關于PHP實現cookie跨域session共享的方法分析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91小视频免费观看| 亚洲激情中文1区| 蜜臀av一区二区| 亚洲成av人片在线| 一区二区高清视频在线观看| 色综合久久天天| 亚洲在线视频免费观看| 欧美蜜桃一区二区三区| 亚洲人成网站在线| 免费观看日韩电影| 亚洲色图在线看| 欧美综合天天夜夜久久| 国产三区在线成人av| 91精品国模一区二区三区| 成人a免费在线看| 蜜桃精品视频在线观看| 久久亚洲综合色一区二区三区| 久久久久久综合| 一区二区三区精品在线观看| 国产亚洲短视频| 国产欧美一区二区三区在线老狼| 亚洲精品一线二线三线无人区| 亚洲免费大片在线观看| 亚洲成人免费观看| 精品国产一区久久| 成人午夜免费视频| 亚洲欧美日本在线| 中文字幕免费观看一区| 热久久免费视频| 欧美日韩高清在线播放| 在线综合+亚洲+欧美中文字幕| 成人看片黄a免费看在线| 色综合亚洲欧洲| 国产精品久久久久四虎| 在线观看一区日韩| 中文字幕一区免费在线观看| 91视频91自| 国产精品视频一二三| 91久久精品一区二区三区| 国产91露脸合集magnet| 天堂av在线一区| 亚洲三级免费观看| 成人欧美一区二区三区视频网页 | 狠狠色丁香婷婷综合| 日韩欧美高清一区| 91热门视频在线观看| 成人黄色网址在线观看| 亚洲免费毛片网站| 日韩精品免费专区| 91在线观看成人| 中文字幕一区二区在线播放| 欧美一区二区三区日韩| 亚洲高清中文字幕| 亚洲美女免费在线| 久久久精品黄色| 色屁屁一区二区| 久久久国产一区二区三区四区小说| 成人动漫av在线| 精品国产三级a在线观看| 麻豆精品视频在线观看视频| 精品日韩一区二区三区| 国产欧美一区二区三区在线老狼| 日本一区二区三区四区| 国产精品美女视频| 亚洲高清久久久| 日本不卡在线视频| 成人午夜精品在线| 中文字幕av不卡| 日本大胆欧美人术艺术动态| 国产女人aaa级久久久级| 欧美日韩第一区日日骚| 国产日韩欧美麻豆| 亚洲伊人色欲综合网| 91首页免费视频| 五月天中文字幕一区二区| 色综合天天做天天爱| 捆绑紧缚一区二区三区视频| 成人成人成人在线视频| 亚洲在线视频网站| 免费观看30秒视频久久| 国产中文字幕一区| 国产一区二区福利视频| 麻豆精品在线看| 蜜桃视频在线观看一区| 亚洲资源在线观看| 欧美zozozo| 国产91在线观看| 亚洲高清免费视频| 粉嫩嫩av羞羞动漫久久久| 亚洲三级免费电影| 高清免费成人av| 日韩精品亚洲一区| 99精品欧美一区| 亚洲人成7777| 欧洲av在线精品| 亚洲欧美中日韩| 国产成人精品一区二| 首页国产欧美日韩丝袜| 国产日韩综合av| 91麻豆精品国产自产在线观看一区 | 国产精品一区二区你懂的| 日韩一区精品字幕| 久久久一区二区| 日韩精品乱码免费| 欧美群妇大交群的观看方式| 成人h版在线观看| 一区二区三区成人| 久久99精品一区二区三区三区| 欧美亚洲一区三区| 91精品国产综合久久精品图片| 久久久www免费人成精品| 69精品人人人人| 欧美在线免费观看亚洲| 亚洲精品日韩综合观看成人91| 自拍偷拍欧美精品| 奇米在线7777在线精品| 久久免费视频色| 性做久久久久久久免费看| 国产精品三级电影| 中文字幕亚洲精品在线观看| 视频一区二区三区入口| 久久久亚洲综合| 欧美xxxxxxxx| 成人免费观看视频| 亚洲一区二区在线免费观看视频| 亚洲欧美日韩一区二区| 国产日韩亚洲欧美综合| 亚洲女同一区二区| 午夜久久久影院| 日本成人在线视频网站| 精品视频在线视频| 成人夜色视频网站在线观看| 国产精品美女久久久久aⅴ| 亚洲欧美视频在线观看| 欧美亚州韩日在线看免费版国语版| 日本一区二区三区高清不卡| 国产不卡视频一区二区三区| 亚洲精品国久久99热| 久久看人人爽人人| 久久99热狠狠色一区二区| 亚洲欧美综合另类在线卡通| 国产精选一区二区三区| 在线这里只有精品| 中文字幕一区免费在线观看 | 欧美日本在线播放| 亚洲成人综合网站| 国产福利视频一区二区三区| 九九精品一区二区| 视频一区二区中文字幕| 亚洲欧美一区二区三区国产精品| 国产精品色噜噜| 洋洋av久久久久久久一区| 国产在线麻豆精品观看| 亚洲一区在线观看视频| 在线观看国产一区二区| 欧美激情在线观看视频免费| 国产成人av一区| 在线不卡中文字幕播放| 成人av电影在线观看| ●精品国产综合乱码久久久久| 热久久免费视频| 欧美影视一区在线| 亚洲精品久久久蜜桃| 欧美专区亚洲专区| 裸体健美xxxx欧美裸体表演| 蜜桃av一区二区三区| 精品久久久久一区二区国产| 懂色av一区二区在线播放| 欧美一二三区在线观看| 亚洲va欧美va国产va天堂影院| av毛片久久久久**hd| 男人的天堂亚洲一区| 国产精品白丝在线| 色一区在线观看| 国产又粗又猛又爽又黄91精品| 91视频精品在这里| 国产午夜精品一区二区三区视频| 久久先锋影音av鲁色资源网| 色欧美乱欧美15图片| 丝袜a∨在线一区二区三区不卡| 国产精品一区二区三区乱码| 三级一区在线视频先锋| 亚洲欧美怡红院| 日韩一级欧美一级| 久久综合狠狠综合| 国产成a人亚洲| 91天堂素人约啪| 日本女优在线视频一区二区| 亚洲男人都懂的| 色综合天天综合色综合av| 午夜久久久久久久久| 精品国产免费人成电影在线观看四季| 日韩色在线观看| 国产精品天天摸av网| 一区二区国产盗摄色噜噜| 欧美日韩免费电影| 国产伦精品一区二区三区视频青涩 | 极品销魂美女一区二区三区| 在线国产亚洲欧美| 亚洲色图在线看|