session¥þ±Ðµ{(¤G)
--------------------------------------------------------------------------------
¤G¡Bphp3,4¤¤sessionªº¹ê²{
¦bphp3¤¤¬O¨S¦³session³oºØªFªFªº¡A¦ý§Ṳ́S»Ýn¡A«ç»ò¿ì©O¡H§O«æ¡A¦³«Ü¦h¤H´À§A°µ¤F³o¨Ç¡A
³o¨ä¤¤³Ì¦³¦Wªºnºâphplib¤F¡C§A¥i¥H¥h°ê¥~¤U
¸ü¡A¤]¥i¥H¤W°ê¤º¤j³¡¤Àphp¯¸ÂI¤U¸ü¡C§ÚÌn°µªº²Ä¤@¥ó¨Æ¬OÅýphplib©Mphp3µ²¦X¦b¤@°_¨Ï¥¦¯à
¤u§@¡C¬°¤F¯à¹ê²{³o¤è±ªº¥¯à¡A§ÚÌ»Ýn¥ý¦w¸Ëphplib¡C
¸òµÛ§Ú¨Ó°µ¡A«Ü®e©öªº(¥H¤U¤èªk¦b
win2000+php3.0.16+apache1.3.12+phplib7.2c+mysql3.23.21 for win32 ¤W³q¹L)
phplib³Ì°ò¥»ªº¥¯à¥]¬A¥Î¤á»{ÃÒ¡ASessionºÞ²z¡AÅv¤Î¼Æ¾Ú®wªº©â¹³¤Æ¡C
«ç¼Ë¨Ï¥Îphplib¨Ó¹ê²{session¥¯à©O?
¤@¡Bº¥ý§A±Nphplib¸Ñ¶}¡A¸Ì±¦³¤@ӥؿý¥s"php",±N³oӥؿý«þ¨©¨ìapacheªº¦w¸Ë¥Ø¿ý¤U¡C¥H
¤U¥Hµ§ªÌªº¾÷¾¹¬°¨Ò:
§Úªºapache¦w¸Ë¦bd:apache ¥Ø¿ý¤U,§Ú±N¤W±ªº"php"¥Ø¿ý«þ¨©¨ìd:apache,¨Ã±Nphplib¤Uªºpages
¥Ø¿ý¤Uªº¤å¥ó©M¥Ø¿ý¤@°_«þ¨©¨ì
d:apachehtdocs¤U¡Aª`·N¤£±a¥Ø¿ý¥»¨¡C
phplibªºÃþ®w»Ýn®Ú¾Ú¨t²Î¶i¦æªì©l¤Æ¡A§A¥i¥H×§ïlocal.inc¤å¥ó¡A¨ä¤¤¥]§tµÛ¤@¨Ç°ò¥»°Ñ¼Æ¡A
§A¥i¥H®Ú¾Ú¦Û¤v¾÷¾¹ªº¹ê»Ú±¡ªp¨Ó¶i¦æ×§ï¡C
±Nd:apachephpprepend.php3¤å¥ó¤¤ªº¤@¬qµ{§Ç§ï¬°¦p¤U¼Ë¤l¡G
- if (!isset($_PHPLIB) or !is_array($_PHPLIB)) {
- $_PHPLIB$"libdir"] = "d:/apache/php/"; //³o¨à§ï¬°§A©ñphplib¤Uphp¥Ø¿ýªº¸ô®|
- }
½Æ»s¥N½X
µM«á±Nd:apachephplocal.inc¤å¥ó§ï¦p¤U:
- class DB_Example extends DB_Sql {
- var $Host = "localhost";//§Aªºmysql¼Æ¾Ú®w©Ò¦b¥D¾÷¦W
- var $Database = "test";//¼Æ¾Ú®w¦W
- var $User = "root";//¼Æ¾Ú®w¥Î¤á¦W
- var $Password = "";//¼Æ¾Ú®w¥Î¤á¤f¥O
- }
½Æ»s¥N½X
³Ì«á¤@¨B°õ¦æ¸Ñ¶}ªºphplib¥Ø¿ý¤¤ªºstuff¥Ø¿ý¤Uªºcreate_database.mysql¤å¥ó,¥Í¦¨ªì©lªí¡C
§ÚÌ»¡©ú¤@¤Uphplibªº¤u§@ì²z¡A¨C¤@ӨϥÎphplibªº¶±º¥ý¥²¶·¥i¥H§ä¨ì¹B¦æphplib©Ò¥²¶·
Ãþ®w¤å¥ó¡A§ÚÌ¥i¥H¦bphp3.ini¤¤³]¸mauto_prepend
Åܶq¨Ó¤ä«ù¡Aphplib¤Àµo¥]¤¤¥]§t¤@Óprepend.php3¤å¥ó¡A±Nauto_prepend«ü©w
¬°"d:/apache/php/prepend.php3"(±a¤Þ¸¹)«á¡A¦U¶±´N·|¦Û°Ê¥]§tphplibÃþ®w¡A§ÚÌÁÙ¥i¥H
±NphplibÃþ®w©Ò¦b¥Ø¿ý¥[¶iincludeÅܶq¤¤¡A¥H«K¥i¥H§ä¨ì³o¨Ç¤å¥ó¡A·íµM¡A³Ìfªº¿ìªk´N¬O«ü©w
phplibªºµ´¹ï¸ô®|¡A³o¥i¤£¬OÓ¦n¥D·N,¥i²¾´Ó©Ê¤Ó®t¡I
²Ä¤G¨B¡A¨C¤@ӨϥÎphplibªº¶±¤¤¡A§A¥²¶·º¥ý½Õ¥Îpage_open¨ç¼Æ¶i¦æªì©l¤Æ¡C³o·|§i¶D
phplib¡A§A²{¦b©Î±N¨Ó·|¥Î¨ìª¬ºA«O¦s¡C¤@Ө嫬ªº
page_open¨Ò¤l¦p¤U¡G - <?php
- page_open(array("sess" => "Example_Session"));
- ?>
½Æ»s¥N½X
¼Æ²ÕÅܶq(sess)¥Î¨Óªì©l¤Æ¤@¨Çª¬ºA«O¦s¹ï¶H¡Aª`·N¡G¥²¶·¨Ï¥Îphplib¤º¸m¦W(sess)¡A³o¨Ç¤º¸m
¦W¬O§A¦blocal.ini¤¤©Ò©w¸qªº¡Apage_open
¨ç¼Æ¥²¶·¦b¶±¤º®e¿é¥X¨ìÂsÄý¾¹¤§«e³Q½Õ¥Î¡Cphp3¸}¥»³Ì«áÀ³¥Hpage_close()µ²§ô¡A³o±N·|±N
¦³Ãöª¬ºA¼Æ¾Ú¼g¦^¨ì¼Æ¾Ú®w¤¤¡A¦pªG§A§Ñ¤Fªº¸Ü¡A
µ²ªG§AÀ³¸Ó¯à·Q¨ì,«¢«¢¡A§AªºÅܶq¥þ¥á¤F,¥i¤£n©Ç§Ú¨S§i¶D§A...
¦]¬°phplib¨Ï¥Î¤FCookies¨Ó«O¦sª¬ºA«H®§¡A©Ò¥Hpage_open()¨ç¼Æ¥²¶·¦b¶±¤º®e¿é¥X¨ìÂsÄý¾¹
¤§«e³Q½Õ¥Î¡A ³o¸Ìªº¶±¤º®e¥i¥H¬O¥ô¦óHTML
«H®§©ÎªÌªÅ¦æ¡A¦pªG§Aµo²{¤F¿ù»~"Oops - SetCookie called after header has been sent"¡A
³oªí©ú¦bpage_open()¤§«e¦VÂsÄý¾¹¿é¥X¤F¨Ç¤°»ò¡A
§An¯S§O¯d·NªÅ¦æ¡A¦]¬°«D±`Ãø§ä¨ì¡A¨å«¬ªº¿ù»~¬O¦b<? ©M ?>¼Ð°O¤§¶¡¿é¥X¤FªÅ¦æ¡A§AÀ³Àˬd
¦blocal.inc©Mprepend.php3¤å¥ó¤¤¬O§_¥]§t¤FªÅ¦æ¡A
³o¤]¬O¤@Ó«D±`®e©ö¥X¿ùªº¦a¤è¡C¬°¤F´î¤Ö¥X¿ùªº¥i¯à,§ÚÌ¥i¥H³o¼Ë®Ñ¼gªì©l¤Æµ{§Ç: - <?
- page_open(array("sess" => "Example_Session"));
- ?>
- <html>
- .....
- </html>
½Æ»s¥N½X
²Ä¤T¨B¡A¨ãÅé¨Ï¥Î¡C
·í¤@ӥΤá³X°Ý¤F¸Óºô¯¸«á¡AÀH§Y¥Î¤áªºsession´N¶}©l¤F¡A¦pªG¥Î¤áªºÂsÄý¾¹¤ä«ùcookieªº¸Ü¡A
±N·|«Ø¥ß¤@Ósessionªºid©ñ¤Jcookie¡A
³oӰߤ@ªºID¬O¥ÑPHP3ÀH¾÷¥Í¦¨¡AµM«á¤S¥ÎÀH¾÷ºØ¤l¦r¦ê¶i¦æmd5¥[±K¹L¤Fªº¡A³o¸ÌªºcookieÀ³¸Ó
¥s°µsession cookie¡A¦]¬°³oÓcookie¬O¤£·|
¼g¨ì¥Î¤áµw½L¸Ì¥hªº¡A·í¤@Ósession´Áµ²§ôªº®ÉÔ¡A¸Ócookie¤]³Q§¹µ²¤F¡C¦pªG¥Î¤áÂsÄý¾¹¤£¤ä
«ùcookieªº¸Ü¡A¨º»ò ¸Ósessionªºid±N·|©ñ¤JurlÃ줤¡A
¦]¬°¬O¥[±K¹Lªº¡A©Ò¥HÅѨú¤F¤]¨S¥Î¡Csession ID¦s©ñµÛ¥Î¤áªº¦³Ãö«H®§¡A¦p¥Î¤á¤w»{ÃÒ¡B»{ÃÒ
¨ì´Á®É¶¡¡B¥Î¤áÅv¡A©M¨ä¥L¤@¨Ç§A¥i¯à»Ýnªº«H®§¡A
¤è«K§Ų́ú¥Î¡C
Session¨ä¹ê´N¬O¥Î¤á¤@¦¸·|¸Üªº¹Lµ{¡CSession¨Ã¤£¬O¶È¶È¥Î¨Ó¸òÂܥΤ᪺µù¥U¡A¹ê»Ú¤W¡A¥¦ÁÙ
¥i¥H¦³¨ä¥¦ªº¨Ï¥Î³õ¦X¡A§A¥i¥H¥Î¥¦¨Ó¦sÀx¥ô¦ó§A·Qn
¦s¶Jªº«H®§¡A³o¨Ç«H®§¥i¥H¦b¥Î¤áÀH«á³X°Ýªº¶±¤¤¬£¤W¥Î³õ¡A·íµM«e´£¬O¨º¨Ç¶±n¨Ï¥Î
PHPLIB¡C¤èªk«Ü²³æ¡Aµù¥U¤@ÓÅܶq«á§Y¥i¦bÀH«áªº¶±¤¤¨Ï¥Î¥¦¡A
ª½¦Üsessionµ²§ô¡C¤èªk¡G
- <?php $sess->register( "variable_name"); ?>
½Æ»s¥N½X
ª`·N¡A³o¸Ìªºvariable_name¤£¬OÅܶqÈ¡A¦Ó¬OÅܶq¦W¡A¥i¥H¥ý«ü©wÅܶq¦W¡AÀH«á¦A½áÈ¡C§A¦b¬Y
Ó¶±¤¤¥i¥H§ïÅÜÅܶqªºÈ¡AÀH«áªº¶±³X°Ý¸ÓÅܶq®É
·|±o¨ì§ïÅܫ᪺ȡCÅܶqªºÃþ«¬¬O¦h¼Ëªº¡A¥i¥H¬O¤@Ó¦r¦ê¡A¤@ӼƦr¡A¤@ӼƲաCÁ|¨Ò¨Ó»¡
©ú¡G
²Ä¤@¶: - <?php
- page_open(array("sess" => "Example_Session"));
- $sess->register( "first"); //ª`·NÅܶq¦W«e¤£»Ýn¥$$
- if (iset($firstname)) {
- $first = $firstname;
- }
- .....
- page_close();
- ?>
½Æ»s¥N½X ²Ä¤G¶: - <?php
- page_open();//¶}©lsession
- echo $first;//¬Ý¬Ý®ÄªG
- page_close();//«O¦sª¬ºA«H®§
- ?>
½Æ»s¥N½X
µù¥U§¹¤@ÓÅܶq¡A·í¶±³Ì«á½Õ¥Îpage_close()¨ç¼Æ«á¡A¦UÓsessionÅܶq·|³Q¼g¦^¨ì¼Æ¾Ú®w¤¤¡C
¦pªG§A§Ñ°O½Õ¥Îpage_close()¨ç¼Æªº¸Ü¡A
Åܶq´N¤£·|³Q¼g¦^¼Æ¾Ú®w¡A±N¥X²{¤£¥i¹wª¾ªº«áªG¡C·íÅܶq³Q¨Ï¥Î§¹²¦¡A§A¤£¦A»Ýn¥Î¨ì®É¡A¥i
¥H½Õ¥Î¥H¤U¨ç¼Æ±NÅܶq§R°£¡G - <?php
- page_open(array("sess" => "Example_Session"));
- ...
- $sess->unregister( "variable_name");
- ...
- page_close();
- ?>
½Æ»s¥N½X
PHPLIB 7.0¤¤¡A¨Ï¥Î¤F¤@ºØ¦sÀxµ²ºc¡A¥¦¤¹³§A¦sÀxsession¼Æ¾Ú¨ì¼Æ¾Ú®w¤¤¡B¦@¨É¤º¦s¤¤©ÎªÌ
LDAP¤¤¡CPHPLIB¨Ï¥Î¤F¼Æ¾Ú®wÃþ¡A³o¨Ï±o§A¦³
¤F§ó¦hªº¿ï¾Ü,§A¥i¥H¿ï¥Îoracle8,mysql,postgresqlµ¥µ¥¼Æ¾Ú®w¨Ó«O¦sª¬ºA«H®§¡C
Ãö©óphplib¤¤ªº¨ä¥¦¥¯à¥H¤Î¦³Ãösessionªº¨ä¥¦¨ç¼Æªº¨Ï¥Î¡A§A¥i¥H°Ñ¬Ý¥¦±aªº¤â¥U,©Î¤W¥¦ªº
ºô¯¸¬Ý¦b½u¤åÀÉ¡C¥¦ªº¦Ñ®a¦b
http://phplib.netuse.de/index.php3 ¡C
php4ªºsession¹ê²{¤j³£±qphplib¾Ç¨Óªº¡A¥¦¤]¾acookies«O¦ssession id,¥Î¤å¥ó¨t²Î«O¦sÅܶq
(Àq»{±¡ªp¤U)¡C¦]¦¹¡A¥¦ªºsession
Åܶq¤£¯à«O¦s¹ï¹³(¨Æ¹ê¤W¯à«O¦s¹ï¹³¤º®e¡A¦ý¨S¦³·N¸q¡A¦]¬°¥¦¬O«O¦s¦bºÏ½L¤Wªº¡A¤£¬O¬¡ªº¹ï
¶H¡A¥R¨ä¶q¤]´N¬O¹ï¹³«ÍÅé¡C)¤£¹L³oÂIªº¨î¤£¬O¤Ó
¤j¡A§Ú̦b¤j³¡¤À±¡ªp¤U³£¥u»Ýn«O¦sÅܶq´N¦æ¤F¡C·íµM§A¤]¥i¥H±Nsession«O¦s¦b¼Æ¾Ú®w¤¤,¤U
¤@¤p¸`¤¤§ÚÌ·|Á¿¨ì«ç¼Ë±Nsession«O¦s¦b¼Æ¾Ú®w¤¤¡C
¦bphp4¤¤¥Ñ©ó¤ñphp3¦h¤Fsession¤ä«ù¡A©Ò¥H¦bphp.ini¤å¥ó¤¤¤]¦h¤Fsession°t¸m¿ï¶µ¡C¤U±§ÚÌ
¨Ó¬Ý¬Ý¦U¶µªº§@¥Î»P·N¸q:
- $Session]
- session.save_handler = files; handler used to store/retrieve data(¥Î¤°»ò«O¦ssession
- Åܶq,Àq»{±¡ªp¤U¥Î¤å¥ó)
- session.save_path = c:/temp; argument passed to save_handler(«O¦ssessionÅܶqªº¥Ø¿ý¡A
- ¦blinux/unix¤U¬°/tmp,¦bwin¤U³]¬°§Aªº¥Ø¿ý) ; in the case of files, this is the ; path where data files are stored
- session.use_cookies = 1; whether to use cookies(¬O§_¨Ï¥Îcookies,·íµM¡A¦bwin¤U§OµL¿ï
- ¾Ü)
- session.name = PHPSESSID ; name of the session(Àq»{session¨Ï¥Îªºcookies¦W,«ØÄ³¤£n§ï°Ê) ; is used as cookie name
- session.auto_start = 0; initialize session on request startup(¬O§_¦Û°Ê±Ò¥Îsession,·í
- ¬°1®É¡A¦b¨C¶¤¤´N¥i¥H¤£¥²½Õ¥Îsession_start()¨ç¼Æ¤F)
- session.cookie_lifetime = 0; lifetime in seconds of cookie(³]©w cookie °e¨ìÂsÄý¾¹«á
- ªº«O¦s®É¶¡¡A³æ¦ì¬°¬í¡C¯Ê¬ÙȬ° 0¡Aªí¥Üª½¨ìÂsÄý¾¹Ãö³¬¡C) ; or if 0, until browser is restarted
- session.cookie_path = /; the path the cookie is valid for(cookie)(cookies¦³®Ä¸ô®|)
- session.cookie_domain =; the domain the cookie is valid for(cookies¦³®Ä°ì¦W)
- session.serialize_handler = php; handler used to serialize data(©w¸q§Ç¦C¤Æ¼Æ¾Úªº¼Ð
- ÃÑ¡A¥»¥¯à¥u¦³ WDDX ¼Ò¶ô©Î PHP ¤º³¡¨Ï¥Î¡C¯Ê¬ÙȬ° php) ; php is the standard serializer of PHP
- session.gc_probability = 1; percentual probability that the (³]©w¨C¦¸Á{®É¤å¥ó¶}©l³B
- ²z (gc, garbage collection) ³B²z·§²v¡C¯Ê¬ÙȬ° 1¡C ) ; 'garbage collection' process is started ; on every session initialization
- session.gc_maxlifetime = 1440; after this number of seconds, stored(³]©w«O¦ssession
- ªºÁ{®É¤å¥ó³Q²M°£«eªº¦s¬¡¬í¼Æ) ; data will be seen as 'garbage' and ; cleaned up by the gc process
- session.referer_check =; check HTTP Referer to invalidate (¨M©w°Ñ·Ó¨ì«È¤áºÝªº
- Session ¥N½X¬O§_n§R°£¡C¦³®É¦b¦w¥þ©Î¨ä¥¦¦Ò¼{®É¡A·|³]©w¤£§R°£¡C¯Ê¬ÙȬ° 0¡C) ; externally stored URLs containing ids
- session.entropy_length = 0; how many bytes to read from the file(³]©w session ±q°ªæi
- ȸ귽Ū¨úªº¦ì¼Æ¡C¯Ê¬ÙȬ° 0.)
- session.entropy_file =; specified here to create the session id(³]©w session ¥N½X«Ø
- ¥ß®É¡A¨Ï¥Î¥~³¡°ªæiȸ귽©Î¤å¥ó¨Ó«Ø¥ß¡A¨Ò¦p UNIX ¨t²Î¤Wªº /dev/random
- ©Î /dev/urandom¡C ) ; session.entropy_length = 16 ; session.entropy_file = /dev/urandom
- session.cache_limiter = nocache; set to { nocache,private,public } to (³]©wsession
- ½w½Ä¨î) ; determine HTTP caching aspects
- session.cache_expire = 180; document expires after n minutes(¤åÀɦ³®Ä´Á,³æ¦ì¬°¤ÀÄÁ)
- ¦bwindows¥¥x¤U¡Aphp4.01pl2¥H«eªºª©¥»·|¥X²{³]¸msession.save_path «á¥X¿ùªº±¡ªp¡A³o¬O
- phpªº¤@Óbug,¦bphp4.01pl2¤Î¥H«á¤w¸g×¥¿¤F¡C¦pªG§A¥Î¥H«eªºª©¥»¡A
- §A¥i¥H±Nsession.save_path³]¬°"./",©Î³]¬°"/temp",¨Ã¦b§A©ñ¸mphp¸}¥»ªº·í«e½L®Ú¥Ø¿ý¤U«Ø¤@
- Ó¦W¬°tempªº¥Ø¿ý§Y¥i(§Úªºphp¸}¥»©ñ¦bd:apachehtdocs¤U¡A«h§Ú¦bd:½L®Ú¥Ø¿ý¤U«Ø¤@¦W¬°temp
- ªº¥Ø¿ý)¡C
- ¦bphp4¤¤¦³Ãösessionªº¨ç¼Æ¥Dn¦³¥H¤U³o¨Ç¡G
- session_start: ªì©l¤Æsession,»Ýn¥Îsessionªº¨C¤@Ó¶±³Ì¶}©l³B½Õ¥Î¡C
- session_destroy: µ²§ô session,¦b»Ýnµ²§ôsession³B½Õ¡C
- session_name: ¦s¨ú¥Ø«e session ¦WºÙ¡C
- session_module_name: ¦s¨ú¥Ø«e session ¼Ò¶ô¡C
- session_save_path: ¦s¨ú¥Ø«e session ¸ô®|¡C
- session_id: ¦s¨ú¥Ø«e session id¸¹¡C
- session_register: µù¥U·sªºsessionÅܶq¡C
- session_unregister: §R°£¤wµù¥UsessionÅܶq¡C
- session_is_registered: ÀˬdsessionÅܶq¬O§_µù¥U¡C
- session_decode: Session ¼Æ¾Ú¸Ñ½X¡C
- session_encode: Session ¼Æ¾Ú¥$±K¡C
½Æ»s¥N½X
³q±`±¡ªp¤U§ÚÌ¥u»Ýn½Õ¥Î¤TÓ¨ç¼Æ§Y¥i¡C
§Ysesssion_start()¡Bsession_register()¡Bsession_is_registered()¡C
¦b»Ýn¥Î¨ìsessionªº¨C¤@¶ªº³Ì¶}©l³B½Õ¥Îsession_start()¨ç¼Æ¡A
¤@Ө嫬ªº¨Ï¥Îsessionªº¶±¦p¤U¡G - <?session_start()?>
- <html>
- ....
- <body>
- <?
- $var="hello";
- session_register("var");//µù¥U$varÅܶq¡Aª`·N¨S¦³$²Å¸¹
- if(session_is_registered("var"))//ÀˬdÅܶq¬O§_µù¥U
- echo "haha,µù¥U¤F!";
- else
- echo "sorry,ÁÙ¨S¦³µù¥U!";
- ?>
- </body>
- </html>
½Æ»s¥N½X
php4¤¤session³B²zªº©w¨î
§ÚÌ»ÝnÂX¥R6Ó¨ç¼Æ¡A·íµM³o¨Ç¨ç¼Æ¤£»Ý§A¥h½Õ¥Î¡A¹ï§Ų́ӻ¡¬O³z©úªº¡C
³o´XÓ¨ç¼Æ¬O:
sess_open($sess_path, $session_name);
³oÓ¨ç¼Æ³Qsession³B²zµ{§Ç½Õ¥Î¨Ó§@ªì©l¤Æ¤u§@¡C»Ýn¶Çµ¹¥¦ªº¨âӰѼƬO$sess_path,¥¦¹ïÀ³
§Aªºphp.ini¤å¥ó¤¤ªºsession.save_path
¿ï¶µ;$session_name,¥¦¹ïÀ³php.ini¤¤ªºsession.name ¿ï¶µ¡C¥¦Ì¨ãÅé«ç¼Ë¤u§@,½Ð¬Ý¤U±ªº¨Ò
¤l¡C
sess_close();
³oÓ¨ç¼Æ¦b¶±µ²§ô°õ¦æ¨Ã¥Bsession³B²zµ{§Ç»ÝnÃö³¬®É³Q½Õ¥Î¡C(ª`·N¡A¤£n©Msess_destory
²V²c¤F,¥¦¬O¥Î¨Óµ²§ôsessionªº)
sess_read($key);
³oÓ¨ç¼Æ¦bsession³B²zµ{§ÇŪ¨ú«ü©wsessionÁäÈ($key)®É¡C
³oÓ¨ç¼ÆÀ˯Á¨Ãªð¦^¼ÐÃѬ°$keyªºsession¼Æ¾Ú.(ª`·N¡G§A¤£¥Î¾á¤ß«ç¼Ë§Ç¦C¤Æ©M¤Ï§Ç¦C¤Æ¼Æ¾Ú,
¦pªG§A¤£ª¾¹D³o¬O¤°»ò·N«ä¡A¤£n¾á¤ß¥¦)
ĶªÌµù¡G§Ç¦C¤Æ¬O±NÅܶq©Î¹ï¹³¦bµ{§Çµ²§ô©Î»Ýn®É«O¦s¦b¤å¥ó¤¤¡A¦b¤U¦¸µ{§Ç¹B¦æ©Î»Ýn®É¦A
½Õ¤J¤º¦sªº§Þ³N,¦³§O©ó¥u«O¦s¼Æ¾Úªº¤èªk¡C
sess_write($key, $val);
³oÓ¨ç¼Æ¾Ú¦bsession³B²zµ{§Ç»Ýn±N¼Æ¾Ú«O¦s®É½Õ¥Î,³oºØ±¡ªp¸g±`¦b§Aªºµ{§Çµ²§ô®Éµo¥Í¡C
¥¦t³d±N¼Æ¾Ú«O¦s¦b¤U¦¸¯à¥Îsess_read($key)¨ç¼ÆÀ˯Áªº¦a¤è¡C
sess_destroy($key);
³oÓ¨ç¼Æ¦b»Ýn®ø·´session®É¡C¥¦t³d§R°£session¨Ã¥B²M°£Àô¹Ò¡C
sess_gc($maxlifetime);
³oÓ¨ç¼Æt³d²M²z¸H¤ù¡C¦b³oºØ±¡ªp¤U¡A¥¦t³d§R°£¹L®Éªºsession¼Æ¾Ú¡Csession³B²zµ{§Ç·|°¸
º¸½Õ¥Î¥¦Ì¡C
²{¦b§Ṳ́w¸g²M·¡¤F§ÚÌ´£¨Ñªº¨ç¼Æ¡C
©w»sµ{§Ç¥i¥H¥Îmysql¼Æ¾Ú®w©ÎDBM¤å¥ó«O¦ssession¼Æ¾Ú¡C¨ú¨M©ó§Aªº»Ýn¡C
¦pªG§A¨M©w¨Ï¥Îmysql§@¤ä«ù¡A¨º»Ýn§@¥H¤U¤u§@:
º¥ý§Ú̦bmysql¤¤³Ð«Ø¤@Ósessions¼Æ¾Ú®w¡A¨Ã¥B³Ð«Ø¤@Ósessionsªí¡C¥ý¹B¦æ§Aªºmysql«È¤á
ºÝ¨Ã¥B°õ¦æ¤U±ªº©R¥O¡G
mysql> CREATE DATABASE sessions;
mysql> GRANT select, insert, update, dele ON sessions.* TO phpsession@localhost
-> IDENTIFIED BY 'phpsession';
mysql> CREATE TABLE sessions (
-> sesskey char(32) not null,
-> expiry int(11) unsigned not null,
-> value text not null,
-> PRIMARY KEY (sesskey)
-> );
¤U¤@¨B,×§ïsession_mysql.php¤å¥óªº$SESS_DB* Åܶq¨Ï¨ä¤Ç°t§A¾÷¾¹¤Wªº¼Æ¾Ú®w³]¸m¡C
(«Ü©êºp¡A¥Ñ©óª©Åvì¦]¡A§Ú¤£¯à§â¥H¤U¥N½X¤¤ªº^¤å¥h±¼¡A¥u¦n¥[¨ÇµùÄÀ¤F
=============================================================
- <?
- /* ------------------------------------------------------------------------
- * session_mysql.php
- * ------------------------------------------------------------------------
- * PHP4 MySQL Session Handler
- * Version 1.00
- * by Ying Zhang (ying@zippydesign.com)
- * Last Modified: May 21 2000
- *
- * ------------------------------------------------------------------------
- * TERMS OF USAGE:
- * ------------------------------------------------------------------------
- * You are free to use this library in any way you want, no warranties are
- * expressed or implied. This works for me, but I don't guarantee that it
- * works for you, USE AT YOUR OWN RISK.
- *
- * While not required to do so, I would appreciate it if you would retain
- * this header information. If you make any modifications or improvements,
- * please send them via email to Ying Zhang <ying@zippydesign.com>.
- *
- * ------------------------------------------------------------------------
- * DESCRIPTION:
- * ------------------------------------------------------------------------
- * This library tells the PHP4 session handler to write to a MySQL database
- * instead of creating individual files for each session.
- *
- * Create a new database in MySQL called "sessions" like so:
- *
- * CREATE TABLE sessions (
- * sesskey char(32) not null,
- * expiry int(11) unsigned not null,
- * value text not null,
- * PRIMARY KEY (sesskey)
- * );
- *
- * ------------------------------------------------------------------------
- * INSTALLATION:
- * ------------------------------------------------------------------------
- * Make sure you have MySQL support compiled into PHP4. Then copy this
- * script to a directory that is accessible by the rest of your PHP
- * scripts.
- *½T«H§Aªºphp4¦³mysql¤ä«ù¡AµM«á§â³oÓ¸}¥»«þ¨©¨ì©M§Aªºphp¸}¥»¦³Ãöªº¥Ø¿ý¡C
- * ------------------------------------------------------------------------
- * USAGE:¡]¨Ï¥Î¤èªk¡^
- * ------------------------------------------------------------------------
- * Include this file in your scripts before you call session_start(), you
- * don't have to do anything special after that.
- *¥]§t³oÓ¤å¥ó¨ì§An¨Ï¥Îsessionªº¤å¥ó¤¤¡A¥²¶·¦b½Õ¥Îsession_start()¤§«e¡A§_«h,
- *·|«ÜºGªº¡A¤£n©Ç§Ú¨S§i¶D§A¡C ³o¼Ë´N¤£»Ýn¦A°µ¤°»ò¤u§@¤F,ÁÙ©M§A¥H«e¥Îsessionªº¤èªk¤@
- ¼Ë¡C
- */
- $SESS_DBHOST = "localhost"; /* database server hostname */
- $SESS_DBNAME = "sessions"; /* database name */
- $SESS_DBUSER = "phpsession"; /* database user */
- $SESS_DBPASS = "phpsession"; /* database password */
- $SESS_DBH = "";
- $SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
- function sess_open($save_path, $session_name) {
- global $SESS_DBHOST, $SESS_DBNAME, $SESS_DBUSER, $SESS_DBPASS, $SESS_DBH;
- if (! $SESS_DBH = mysql_pconnect($SESS_DBHOST, $SESS_DBUSER, $SESS_DBPASS)) {
- echo "<li>Can't connect to $SESS_DBHOST as $SESS_DBUSER";
- echo "<li>MySQL Error: ", mysql_error();
- die;
- }
- if (! mysql_select_db($SESS_DBNAME, $SESS_DBH)) {
- echo "<li>Unable to select database $SESS_DBNAME";
- die;
- }
- return true;
- }
- function sess_close() {
- return true;
- }
- function sess_read($key) {
- global $SESS_DBH, $SESS_LIFE;
- $qry = "SELECT value FROM sessions WHERE sesskey = '$key' AND expiry > " . time();
- $qid = mysql_query($qry, $SESS_DBH);
- if (list($value) = mysql_fetch_row($qid)) {
- return $value;
- }
- return false;
- }
- function sess_write($key, $val) {
- global $SESS_DBH, $SESS_LIFE;
- $expiry = time() + $SESS_LIFE;
- $value = addslashes($val);
- $qry = "INSERT INTO sessions VALUES ('$key', $expiry, '$value')";
- $qid = mysql_query($qry, $SESS_DBH);
- if (! $qid) {
- $qry = "UPDATE sessions SET expiry = $expiry, value = '$value' WHERE sesskey
- = '$key' AND expiry > " . time();
- $qid = mysql_query($qry, $SESS_DBH);
- }
- return $qid;
- }
- function sess_destroy($key) {
- global $SESS_DBH;
- $qry = "DELETE FROM sessions WHERE sesskey = '$key'";
- $qid = mysql_query($qry, $SESS_DBH);
- return $qid;
- }
- function sess_gc($maxlifetime) {
- global $SESS_DBH;
- $qry = "DELETE FROM sessions WHERE expiry < " . time();
- $qid = mysql_query($qry, $SESS_DBH);
- return mysql_affected_rows($SESS_DBH);
- }
- session_set_save_handler(
- "sess_open",
- "sess_close",
- "sess_read",
- "sess_write",
- "sess_destroy",
- "sess_gc");
- ?>
½Æ»s¥N½X
=================================================================
©w¨î¨Ï¥Îdbm¤å¥ó®Éªº±µ¤f
================================================================= - <?
- /* ------------------------------------------------------------------------
- * session_dbm.php
- * ------------------------------------------------------------------------
- * PHP4 DBM Session Handler
- * Version 1.00
- * by Ying Zhang (ying@zippydesign.com)
- * Last Modified: May 21 2000
- *
- * ------------------------------------------------------------------------
- * TERMS OF USAGE:
- * ------------------------------------------------------------------------
- * You are free to use this library in any way you want, no warranties are
- * expressed or implied. This works for me, but I don't guarantee that it
- * works for you, USE AT YOUR OWN RISK.
- *
- * While not required to do so, I would appreciate it if you would retain
- * this header information. If you make any modifications or improvements,
- * please send them via email to Ying Zhang <ying@zippydesign.com>.
- *
- * ------------------------------------------------------------------------
- * DESCRIPTION:
- * ------------------------------------------------------------------------
- * This library tells the PHP4 session handler to write to a DBM file
- * instead of creating individual files for each session.
- *
- * ------------------------------------------------------------------------
- * INSTALLATION:
- * ------------------------------------------------------------------------
- * Make sure you have DBM support compiled into PHP4. Then copy this
- * script to a directory that is accessible by the rest of your PHP
- * scripts.
- *½T«H§Aªºphp4¦³DBM¤ä«ù¡C«þ¨©³oÓ¤å¥ó¦b§Aªºphp¸}¥»¥Ø¿ý¡C
- * ------------------------------------------------------------------------
- * USAGE:
- * ------------------------------------------------------------------------
- * Include this file in your scripts before you call session_start(), you
- * don't have to do anything special after that.
- * ¦b½Õ¥Îsession_start()¤§«e½Ð¥]§t³oÓ¤å¥ó¡C¤§«á´N¤£»Ýn§@¤°»ò¤u§@¤F¡C
- */
- $SESS_DBM = "";
- $SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
- function sess_open($save_path, $session_name) {
- global $SESS_DBM;
- $SESS_DBM = dbmopen("$save_path/$session_name", "c");
- return ($SESS_DBM);
- }
- function sess_close() {
- global $SESS_DBM;
- dbmclose($SESS_DBM);
- return true;
- }
- function sess_read($key) {
- global $SESS_DBM, $SESS_LIFE;
- $var = "";
- if ($tmp = dbmfetch($SESS_DBM, $key)) {
- $expires_at = substr($tmp, 0, strpos($tmp, "¢x"));
- if ($expires_at > time()) {
- $var = substr($tmp, strpos($tmp, "¢x") + 1);
- }
- }
- return $var;
- }
- function sess_write($key, $val) {
- global $SESS_DBM, $SESS_LIFE;
- dbmreplace($SESS_DBM, $key, time() + $SESS_LIFE . "¢x" . $val);
- return true;
- }
- function sess_destroy($key) {
- global $SESS_DBM;
- dbmdele($SESS_DBM, $key);
- return true;
- }
- function sess_gc($maxlifetime) {
- global $SESS_DBM;
- $now = time();
- $key = dbmfirstkey($SESS_DBM);
- while ($key) {
- if ($tmp = dbmfetch($SESS_DBM, $key)) {
- $expires_at = substr($tmp, 0, strpos($tmp, "¢x"));
- if ($now > $expires_at) {
- sess_destroy($key);
- }
- }
- $key = dbmnextkey($SESS_DBM, $key);
- }
- }
- session_set_save_handler(
- "sess_open",
- "sess_close",
- "sess_read",
- "sess_write",
- "sess_destroy",
- "sess_gc");
- ?>
½Æ»s¥N½X
=================================================================
¨ãÅé«ç»ò¥Î´N¤£¥Î¦h»¡¤F¡A¦]¬°³o¨Ç¨ç¼Æ³£¬Ophp¤ÞÀº½Õ¥Îªº¡A»P§Ú̵LÃöªº¡C§ÚÌ¥u»Ý·Ó¤Wz°t
¸m«á´N¦æ¤F¡A§A¥ÎªºÁÙ¬O¥H«eªºsession¨ç¼Æ¡C
¬Ý¬Ý¤U±ªº¥N½X´Nª¾¹D¤F¡G¡^
session©w¨îªº´ú¸Õ¥N½X
================================================================== - <?
- /* ------------------------------------------------------------------------
- * test.php
- * ------------------------------------------------------------------------
- * PHP4 Customer Session Handler Test Script
- * Version 1.00
- * by Ying Zhang (ying@zippydesign.com)
- * Last Modified: May 21 2000
- */
- /* default to DBM handler */
- if (! isset($handler)) {
- $handler = "dbm";
- }
- /* default action is increment */
- if (! isset($action)) {
- $action = "increment";
- }
- /* load up the appropriate session handling script, depending on the handler */
- if ($handler == "dbm") {
- include("session_dbm.php");
- } elseif ($handler == "mysql") {
- include("session_mysql.php");
- } else {
- echo "<li>Unrecognized handler ($handler)";
- die;
- }
- /* start the session and register a simple counter */
- session_start();
- session_register("count");
- /* figure out what we should do, depending on the action */
- switch ($action) {
- case "increment" :
- $count = isset($count) ? $count + 1 : 0;
- break;
- case "destroy" :
- session_destroy();
- break;
- case "gc" :
- $maxlife = get_cfg_var("session.gc_maxlifetime");
- sess_gc($maxlife);
- break;
- default:
- echo "<li>Unknown action ($action)";
- break;
- }
- ?>
- <h1>Session Test Script</h1>
- <ul>
- <li>Handler: <b><?=$handler?></b>
- <li>Action: <b><?=$action?></b>
- <li>Count: <b><?=$count?></b>
- </ul>
- <hr size=1>
- <form>
- <table>
- <tr>
- <td>Handler:</td>
- <td>
- <select name="handler">
- <option value="dbm">DBM</option>
- <option value="mysql">MySQL</option>
- </select>
- </td>
- </tr>
- <tr>
- <td>Action:</td>
- <td>
- <select name="action">
- <option value="increment">Increment</option>
- <option value="destroy">Session Destroy</option>
- <option value="gc">Force Garbage Collection</option>
- </select>
- </td>
- </tr>
- <tr>
- <td></td>
- <td><br><input type="submit"></td>
- </tr>
- </table>
- </form>
½Æ»s¥N½X
|