亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP教程-COOKIE與SESSION聯(lián)合實現(xiàn)跨域

2020-03-24 17:53:15
字體:
來源:轉載
供稿:網友
大家都知道SESSION是不可以跨域的,也就是說: A.WEMVC.COM這個域的可執(zhí)行文件不可以訪問到B.WEMVC.COM的SESSION,這個是SESSION的特性,同樣也是出于安全角度才這樣的.
在一般情況下,一個網站只有一個域名,但是也有些網站架構是由多個子域名組建的.所以就需要SESSION可以跨子域被訪問到,這樣才可以實現(xiàn)用戶的跨域登錄.就是說客戶在A下登錄的,同樣B也同時登錄了,不需要用戶再次登錄,同時也實現(xiàn)了參數(shù)的跨域傳遞.當然不可跨域的SESSION本身已經可以幫助我們做很多事情了,那么跨域后的SESSION呢.讀到這里是否很激動人心,當然你也可能是正在為SESSION跨域而發(fā)愁而找到這篇文章的,同樣也祝賀你.我們長話斷說了,開始我們今天的課程:COOKIE與SESSION聯(lián)用實現(xiàn)SESSION跨域.首先讓我們再重新溫習下PHP中的COOKIE和SESSION:COOKIE:
定義:
cookie 常用于識別用戶。cookie 是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求頁面時,它同時會發(fā)送 cookie。通過 PHP,您能夠創(chuàng)建并取回 cookie 的值。PS:其中文名叫 曲奇 .
在PHP中用sethtml' target='_blank'>Cookie函數(shù)來設置COOKIE,該函數(shù)一共有7個參數(shù)(在此我要向曾經我面試過的一位同仁道歉,當時我把答案說成了6個,SORRY~,同時我也提醒廣大作家盡快更新自己的文章,在PHP5.2.0版本中已經增加為7個參數(shù).),這7個參數(shù)分別為 string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly ]]]]]] .
name The name of the cookie. 規(guī)定 cookie 的名稱。
value The value of the cookie. This value is stored on the clients computer; do not store sensitive information. Assuming the name is cookiename , this value is retrieved through $_COOKIE['cookiename'] 規(guī)定 cookie 的值。
expire The time the cookie expires. This is a Unix timestamp so is in number of seconds since the epoch. In other words, you ll most likely set this with the time() function plus the number of seconds before you want it to expire. Or you might use mktime(). time()+60*60*24*30 will set the cookie to expire in 30 days. If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).規(guī)定 cookie 的有效期。Note: You may notice the expire parameter takes on a Unix timestamp, as opposed to the date format Wdy, DD-Mon-YYYY HH:MM:SS GMT, this is because PHP does this conversion internally.
expire is compared to the client s time which can differ from server s time.
path The path on the server in which the cookie will be available on. If set to / , the cookie will be available within the entire domain . If set to /foo/ , the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain . The default value is the current directory that the cookie is being set in.規(guī)定 cookie 的服務器路徑。
domain The domain that the cookie is available. To make the cookie available on all subdomains of example.com then you d set it to .example.com . The . is not required but makes it compatible with more browsers. Setting it to www.example.com will make the cookie only available in the www subdomain. Refer to tail matching in the spec for details.規(guī)定 cookie 的域名。
secure Indicates that the cookie should only be transmitted over a secure HTTPS connection from the client. When set to TRUE, the cookie will only be set if a secure connection exists. The default is FALSE. On the server-side, it s on the programmer to send this kind of cookie only on secure connection (e.g. with respect to $_SERVER[ HTTPS ]).規(guī)定是否通過安全的 HTTPS 連接來傳輸 cookie。
httponly When TRUE the cookie will be made accessible only through the HTTP protocol. This means that the cookie won t be accessible by scripting languages, such as JavaScript. This setting can effectly help to reduce identity theft through XSS attacks (although it is not supported by all browsers). Added in PHP 5.2.0. TRUE or FALSE.規(guī)定是否必須通過HTTP協(xié)議來定義訪問COOKIE,防止XSS攻擊.
SESSION全面教程
SESSION在這里就不過多的講解了,主要是: session_cache_expire Return current cache expire session_cache_limiter Get and/or set the current cache limiter session_commit Alias of session_write_close session_decode Decodes session data from a string session_destroy Destroys all data registered to a session session_encode Encodes the current session data as a string session_get_cookie_params Get the session cookie parameters session_id Get and/or set the current session id session_is_registered Find out whether a global variable is registered in a session session_module_name Get and/or set the current session module session_name Get and/or set the current session name session_regenerate_id Update the current session id with a newly generated one session_register Register one or more global variables with the current session session_save_path Get and/or set the current session save path session_set_cookie_params Set the session cookie parameters session_set_save_handler Sets user-level session storage functions session_start Initialize session data session_unregister Unregister a global variable from the current session session_unset Free all session variables session_write_close Write session data and end session 哈哈,不是我懶噢,這里只講跨域.
OK,大概溫習了下COOKIE和SESSION,開始實現(xiàn)我們的跨域.
首先我描述下我的思路,COOKIE可以指定域名,也就是說它可以跨域子域,例如:setcookie( name ,'joshua ,time()+3600*24, /', wemvc.com ),那么A.wemvc.com,B.wemvc.com都可以訪問到$_COOKIE['name'],值也均為 joshua .同理,SESSION ID也可以設置成這個域名,那么A.wemvc.com和B.wemvc.com都可以得到同一個SESSION ID,那么我們的目的也就達到了.因為知道了同一個SESSION ID就可以訪問到這個SESSION中的值了.SESSION有多種方式存儲,文件/數(shù)據(jù)庫/內存等,我們采用數(shù)據(jù)庫存儲,因為如果A.wemvc.com,B.wemvc.com不在同一臺服務器上,那么內存和文件的存儲方式就很難實現(xiàn)跨域了,至于到底又沒有方法,本人還沒有試過.
首先在數(shù)據(jù)庫中創(chuàng)建一張SESSION表:
CREATE TABLE `sessions` (
`sid` varchar(32) NOT NULL default '',
`expiry` int(20) unsigned NOT NULL default '0',
`value` text NOT NULL,
PRIMARY KEY (`sid`),
KEY `expiry` (`expiry`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

然后寫一個類,這個類用于讀取/插入/更新/刪除以及垃圾回收SESSION
class session{
private $db;
function __construct($db){
$this- db=$db;
}
public function open($save_path,$session_name){
return true;
}
public function close(){
$this- db=null;
return true;
}
public function read($sid){
$rs=$this- db- query( select * from sessions where sid=' .$sid. '
foreach ($rs as $row){
return $row['value'];
}
return null;
}
public function write($sid,$value){
if(is_null($oldvalue=$this- read($sid))){
//insert
return $this- db- query( insert into sessions (sid,expiry,value)values( .$sid. , .time(). , .$value. ) );
}else{
//update
return $this- db- query( update sessions set expiry= .time(). ,value= .$value. where sid= .$sid. );
}
}
public function destroy($sid){
return $this- db- query( delete from sessions where sid= .$sid. );
}
public function gc($max_life_time){
return $this- db- query( delete from sessions where expiry+ .$max_life_time. .time());
}
}
我來解釋下這個類:
private $db; 類的DATABASE屬性.
function __construct($db) 類的構造函數(shù),在聲明類時,可以直接傳遞DB屬性到類中,當然如果還不明白可以先GOOGLE一下 PHP 類 construct 方法
public function open($save_path,$session_name) session打開,沒有什么花頭,直接返回TRUE;
public function close() session關閉,同理open,但注意要關閉DB連接;
public function read($sid) session讀取,傳值SID,在數(shù)據(jù)表中將這個SID的VALUE作為返回值返回;
public function write($sid,$value) session的寫入與更新,這個你會有疑問,為什么set expiry= .time(). ,稍后答案在清空過期SESSION GC方法中便會揭曉;
public function destroy($sid) session的銷毀,很簡單,就是把數(shù)據(jù)表中等于這個SID的數(shù)據(jù)刪除掉;
public function gc($max_life_time) 清空過期session,把超過max_life_time的SESSION都銷毀掉,也就是SESSION的創(chuàng)建時間加上最大生存時間小于現(xiàn)在時間( expiry+ .$max_life_time. .time())的SESSION數(shù)據(jù)刪除掉,這下你會明白為什么在寫入和更新SESSION的方法中為什么寫當前時間了吧,當然這個寫法不是絕對的,隨個人意愿只要你的SQL寫正確了,也就可以了.
好我們接著來看更重要的部分:
上面的類中需要一個數(shù)據(jù)庫鏈接屬性,所以聲明對象的時候需要這樣:
$session=new session(your db connect adapter);
數(shù)據(jù)庫鏈接我可以提供大家一個PDO的方法,參照使用:
function connect_db($arrPDODB){
$db=new PDO($arrPDODB['db_driver']. :host= .$arrPDODB['db_host']. dbname= .$arrPDODB['db_name'],$arrPDODB['db_user'],$arrPDODB['db_password']);
$db- query( set names utf8 );
return $db;
}

SO,上面聲明對象部分你可以這樣寫:
$session=new session(connect_db($arrPDODB));
接下來:
//設置色session id的名字
ini_set('session.name', 'sid');
//不使用 GET/POST 變量方式
ini_set('session.use_trans_sid', 0);
//設置垃圾回收最大生存時間
ini_set('session.gc_maxlifetime', 3600);
//使用 COOKIE 保存 SESSION ID 的方式
ini_set('session.use_cookies', 1);
ini_set('session.cookie_path', '/');
//多主機共享保存 SESSION ID 的 COOKIE,注意此處域名為一級域名
ini_set('session.cookie_domain', ' wemvc.com');
//將 session.save_handler 設置為 user,而不是默認的 files
session_module_name('user');
session_set_save_handler(array($session,'open'),
array($session,'close'),
array($session,'read'),
array($session,'write'),
array($session,'destroy'),
array($session,'gc'));

以上都是SESSION的設置,不明白的多搜索下手冊,我喜歡刨根究底這樣的學習方式,這樣你可以學透一個知識點,而不是知道一知半解,就認為自己懂了或者會了.
最后在你需要的地方將SESSION啟動:
session_start();
最后再提供一個如何防止Session偽造攻擊的博文,希望能夠仔細閱讀.
好了,大功告成,只要在每個執(zhí)行文件之前包含這個類,并啟動它,你的程序可以跨域了,呵呵.當然也可以跨一級域名.你可以在我寫出下一篇博文之前自己先研究下啊.
另外,先說一句,其實AJAX也可以跨子域,當時給我下一篇博文作鋪墊了.哈哈,歡迎大家與我一同討論學習.
2008年9月26日更新:
新增了一個demo程序,程序很簡單,沒有寫入庫的東西,適合新手學習.
附:
demo_session_1
程序講解:很簡單的 a b 兩個文件夾代表你兩個域,把你的虛擬機設置為a.yourdomain.com、b.yourdomain.com就可以了。先把這個搞懂,再考慮session入庫的事情。session入庫主要是因為一個網站有多臺服務器的情況下,若session還是以默認的文件型保存的話,多服務器是行不通的。
demo_session 2
程序講解:這份程序添加了入庫功能,數(shù)據(jù)表的創(chuàng)建,文件上面有的。html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
中文字幕日韩电影| 亚在线播放中文视频| 亚洲区免费视频| 黄色免费视频网站| 久久久久久久999精品视频| 国产拍揄自揄精品视频麻豆| 92国产在线视频| 91精品91久久久中77777老牛| 成人午夜影视| 男女视频网站| 久久久久久人妻一区二区三区| 国产一区免费电影| 国产精品一卡| 精品肉丝脚一区二区三区| 狠狠色噜噜狠狠狠狠8888| 91亚洲精品视频在线观看| www.日本久久久久com.| 亚洲午夜在线电影| 一区二区三区 日韩| 欧美精品国产白浆久久久久| 日日噜噜夜夜狠狠久久波多野| 99re6在线视频精品免费| 国产精品视频一区二区三| 男女啪啪网站视频| 国产午夜精品久久| 国产日韩欧美二区| 欧美一区二区少妇| 精品久久香蕉国产线看观看亚洲| 欧美最猛性xxxxx(亚洲精品)| 一个人看的www视频免费观看| 国产无人区码熟妇毛片多| 99久久免费国产| 屁屁影院在线观看| 成人自拍视频网站| 日韩成人在线视频| 欧美一区二区三区久久综合| 欧美日韩一区二区三| 亚洲日本一区二区三区| 国产成人av一区二区三区在线观看| 欧美性xxxx图片| 男人艹女人网站| 精品久久久噜噜噜噜久久图片| 99精品久久久久久| 日产福利视频在线观看| 日本成人在线不卡视频| 国产手机视频在线| 亚洲色图国产精品| 欧美日韩亚洲系列| 手机在线免费看av| 2018高清国产日本一道国产| 国产日韩一区二区在线| 国产精品一区二区三区四区五区| 综合天天久久| 精品国产鲁一鲁****| 欧美精品99久久久**| 全程偷拍露脸中年夫妇| 亚洲大片av| 成人在线日韩| 日韩有码在线视频| 国产传媒一区二区三区| 久久中文字幕一区| 欧美一区二区三区视频免费播放| 亚洲成人第一网站| 国产乱码精品一区二区三区五月婷| 女同互忝互慰dv毛片观看| 私人影视中文字幕| 亚洲精选91| 成年女人在线看片| 国产欧美日韩视频在线观看| 亚洲另类欧美日韩| 99精品热6080yy久久| 久久草视频在线| 久久夜色电影| 欧美性色黄在线视频| 青青草视频在线免费播放| 在线观看黄网站免费继续| caopor在线视频| 亚洲成av人片一区二区密柚| 国内伊人久久久久久网站视频| 亚洲一区二区在线观看视频| 国产精品久久久久久影视| 午夜影视日本亚洲欧洲精品| 亚洲欧美999| sihu成人| 欧美性suv| 日韩视频二区| 91在线观看免费视频| 日韩精品一区二区三区免费视频| 91九色美女在线视频| 女王人厕视频2ⅴk| 伊是香蕉大人久久| 99视频精品免费| 天天干天天做天天操| 99国产精品一区二区| 欧美一a一片一级一片| 欧美三级一区| 欧美日韩国产精选| 欧美做受喷浆在线观看| av在线下载| 亚洲最大成人网4388xx| 久久xxx视频| 男女高潮又爽又黄又无遮挡| 日韩一级欧美一级| 偷窥国产亚洲免费视频| 国产一二三区av| 午夜视频免费播放| 黄色影院在线观看| 国产 高清 精品 在线 a| 国产一级揄自揄精品视频| 视频一区在线播放| 日韩精品aaa| 免费在线播放第一区高清av| 亚洲观看高清完整版在线观看| 亚洲午夜精品久久久久久久久久久久| 精品国产精品三级精品av网址| 91原色影院| 亚洲自拍偷拍精品| 成人精品国产一区二区4080| a一级免费视频| 色欲综合视频天天天| av免费播放网址| 欧美精品videosex性欧美| 国产精品无码乱伦| 激情五月色婷婷| 免费亚洲精品视频| 中文字幕不卡三区| 国产精品视频你懂的| 国产精品自拍视频在线| 精品国产乱码久久久久久1区2区| 国产一区二区三区四区五区加勒比| 国产又粗又猛又爽又黄的视频一| 69av视频在线播放| 四虎永久在线精品免费一区二区| 中文字幕日本在线| 蜜桃av噜噜一区二区三区| 欧美xo影院| 成人信息集中地| 亚洲男人天堂av网| 一区二区三区四区毛片| 天堂中文在线官网| 国产精品区一区二区三含羞草| 亚洲乱码精品| 久久久久久久久久久亚洲| xxxx 国产| 欧美激情亚洲国产| 成年女人免费视频| 2020国产在线| 国产精品久久国产精品99gif| 欧美视频中文在线看| 黑人玩欧美人三根一起进| 亚洲二区在线| 久久精品国产欧美亚洲人人爽| 青青草成人在线| 亚洲视频专区在线| 亚洲精品成a人在线观看| 一区二区三区视频播放| 婷婷成人av| 99久久国产综合精品女不卡| 两个人日本在线观看视频| 黄色免费成人| 7777kkkk成人观看| 国产精品人人做人人爽| 国产拍揄自揄精品视频麻豆| 日韩国产高清一区| 国产精品网友自拍| 亚洲天堂精品在线| 一本大道久久a久久精品综合| 91精品一区二区三区久久久久久| 99中文字幕在线观看| 国产欧美一区二区三区视频| 久久精品噜噜噜成人av农村| 欧美色图亚洲天堂| 亚洲精品中文字幕无码蜜桃| 欧美中文字幕精在线不卡| 先锋亚洲精品| 天天久久人人| 免费在线观看一区二区| 日韩簧片在线观看| 亚洲精品高清在线观看| 日韩精品久久久毛片一区二区| 禁断一区二区三区在线| 少妇按摩一区二区三区| 亚洲激情欧美色图| 亚洲精品福利资源站| 中文字幕电影在线| 亚洲精品网址在线观看| 色偷偷精品视频在线播放| 久久久国产一区| 欧美性生交xxxxxdddd| 拍拍拍999自拍偷| 中文字幕免费在线观看视频一区| 久久久久久久久国产一区| 五月天婷婷综合网| 久久国产剧场电影| 欧美a级黄色大片| 亚洲激情自拍| 国产美女被草| 好看的日韩精品| 日韩在线观看免费高清| 丰满少妇大力进入| 日本中文字幕电影在线免费观看| 一区二区三区四区免费观看| 色综合久久影院| 后入内射无码人妻一区| 美日韩在线视频| 欧美日韩综合在线免费观看| 天堂中文字幕一二区| 亚洲免费观看高清完整| 国产日韩成人内射视频| 亚洲成熟少妇视频在线观看| av色影在线看免费| 日韩av资源在线播放| 亚洲精品国产一区黑色丝袜| 一本色道久久88综合日韩精品| 黄页网址大全在线播放| 欧美国产在线观看| 波多野结衣之无限发射| 色999五月色| 秋霞在线午夜| 亚洲av无码一区二区三区人| 欧美精品videossex88| 亚洲精品一区二区三区四区五区| 亚洲理论在线a中文字幕| 五月婷婷激情综合| 日韩精品视频在线观看网址| 久久亚洲精品无码va白人极品| 青青草成人免费视频| 精品国产一区二区三区久久久樱花| 亚洲护士老师的毛茸茸最新章节| av手机在线播放| 日韩av不卡一区| 国产精品乱人伦中文| 日本三级午夜理伦三级三| 久久久国产一区二区三区四区小说| 国产精品观看| 日韩伦理电影网站| 国产91精品一区二区绿帽| 亚洲成人久久电影| 一道本一区二区| 极品少妇一区二区三区| 性欧美videos白嫩| 久久久久国产精品www| 中文字幕免费高清电视剧网站在线观看| 美女福利视频一区| 乱小说欧美综合| 欧美电影免费观看网站| 四虎影视在线观看2413| 欧美一区二区三区免费大片| av中文字幕免费在线观看| 在线观看免费的av| 欧美日韩美女视频| 国产精品区免费视频| 亚洲成人生活片| 91理论电影在线观看| 网址你懂得在线观看| 日日狠狠久久偷偷四色综合免费| 在线不卡欧美精品一区二区三区| 婷婷精品视频| 亚洲免费三区一区二区| 欧美女v视频| 日韩午夜在线电影| 国产精品videossex| 日韩成人中文字幕| 涩涩屋黄网站| 濑亚美莉一二区在线视频| 成人免费视频观看| 亚洲wwwav| 色播视频在线播放| 国产精品国产三级国产a| 妺妺窝人体色www在线观看| 99精品国产99久久久久久白柏| 中文字幕色呦呦| 色拍拍在线精品视频8848| 国产乱色在线观看| 亚洲男人资源| 欧美特黄aaaaaaaa大片| 91传媒理伦片在线观看| 九九**精品视频免费播放| 青青在线免费观看| 国产精品99精品无码视亚| 欧美日韩不卡视频| 亚洲国产日韩在线一区模特| 北岛玲精品视频在线观看| 欧美成人精品午夜一区二区| 少妇又紧又色又爽又刺激视频| 亚洲一级生活片| 丁香桃色午夜亚洲一区二区三区| 91综合精品国产丝袜长腿久久| 男男一级淫片免费播放| 欧美另类久久久品| 黄色精品在线看| 亚洲成人动漫在线| 麻豆成人小视频| 91在线看黄| 亚洲中文字幕一区二区| 麻豆精品av| 中文字幕第一页在线视频| 国产999精品久久久影片官网| 天堂久久一区| 国产福利第一视频| 日韩精品社区| www日韩tube| 欧美新色视频| 久久99精品久久久久久琪琪| 中文在线资源观看视频网站免费不卡| 性久久久久久久久久久久久久| yellow91字幕网在线| 国产精品久久久久久亚洲影视| 97久久精品人人澡人人爽缅北| 久久成人精品无人区| 亚洲国产精品国自产拍久久| 黄色精品免费看| 亚洲毛片一区二区三区| 久久影院午夜片一区| 午夜激情视频在线播放| 精品视频全国免费看| 色www亚洲国产阿娇yao| 国产午夜精品久久久久久免费视| 国产在线精品一区二区夜色| 美女色狠狠久久| 2021亚洲天堂| 欧美日韩亚洲自拍| 成年人在线免费观看| 国产精品区一区| 欧美在线极品| 制服丝袜一区二区三区| av高清不卡在线| 欧美 日本 亚洲|