PHP网页设计静态网页经常使用手艺:用PHP跟随变量(cook...
学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后... 在良多时分,咱们需求跟踪阅读者在全部网站的举动,对他们身份停止主动或半主动的辨认(也就是平常常说的网站上岸之类的功效),这时候候,咱们常采取一组变量来“跟随”访客。完成变量“跟随”有良多种办法,对照用很多的是cookie和session。上面咱们用时下很盛行的PHP为人人解说一下它们的利用。一.Cookie的利用
Cookie是网站保留在阅读器客户真个信息,也就是说保留在访客的机械里的变量,普通跟着HTTP头发送到客户端。在Cookie失效以后及生效之前,客户每次收回页面恳求的时分,城市把Cookie一块发送到办事器,只需咱们针对它停止响应的处置,就能够完成变量“跟随”。
1. 设置一个Cookie变量
设置一个Cookie变量,PHP利用的函数是:
int setcookie(string name, string value, int expire, string path, string domain, int secure);个中name是Cookie变量称号标识,你在PHP中将可以象利用通俗变量名一样来用它援用Cookie变量。value是Cookie变量的初始值,expire 暗示该Cookie变量的无效工夫;path 为该Cookie变量的相干途径;domain 暗示Cookie变量的网站;secure 则需在 https 的平安传输时才无效。
例如咱们要设置一个变量username,它的值是字符串“bluewind”,咱们可以这么写代码:
setcookie (“username”,“bluewind”); //这两个参数是setcookie需要的。咱们还想给这个变量设置无效工夫来限制操作超时等,好比说10分钟:
setcookie (“username”,“bluewind”, 600000); //无效工夫的单元是毫秒。注重:setcookie和header函数一样,需求放在任何能向客户端输入的语句之前。
2. 烧毁一个变量
烧毁Cookie变量只需将它的value设为空(“”)就能够了,如想烧毁下面谁人变量只需再写一次:
setcookie (“username” ,“”);就能够了。这经常使用作平安加入之用。
3. Cookie的无效局限和保存期
Cookie的无效局限(也就是说在这个局限的页面都能失掉这个Cookie变量)默许的是该目次及其子目次,固然你可以用setcookie的path和domain参数停止修正。假如你不合错误cookie的expire停止设置(拜见1. 设置一个Cookie变量中的例子),那末当你分开网站的页面,cookie也同时失掉主动烧毁。
http://www.netscape.com/newsref/std/cookie_spec.html是 cookie 原创者 Netscape 所供应的完全引见信息。
二,session的利用
session变量,也就是会话级变量,是访客在全部和网站交互的过程当中都存在的私有变量。在客户端不撑持有能够不撑持cookie的时分(好比linux下的lynx……呵呵,惨了点),咱们为了包管数据准确平安,就需求采取session变量。Session在各类网页言语中的完成体例纷歧样,PHP在4.0后也入手下手撑持它了。起首,让咱们来看看一个复杂的例子:
test.php ----------- <?session_start(); session_register(var); //注册变量var$var="这是SESSION变量的值"; //var变量已被作为session变量 ?>test1.php ------ <?session_start(); session_register(var); echo $var; //输入:“这是SESSION变量的值”?>1、初始一个session
假如PHP的设置主动session并没有开启的话,需求利用session_start()函数来初始化一个session,这个函数的用法以下:
: boolean session_start(void);它的感化是初始化一个新的 Session,若该客户已在 Session 当中,则连上原 Session。本函数没有参数,且前往值均为 true。
2、在session中注册一个变量
你要在session保留的变量都必需利用以下函数对变量停止注册:
boolean session_register(string name);本函数在全局变量中增添一个变量到今朝的 Session 当中。参数 name 即为欲到场的变量名。胜利则前往true 值。
然后你就能够直接利用变量名对它停止赋值,这个值就会被保留上去。
3、利用session变量的值
如上例所示,只需你再在新的页面反复上两个步调(除赋值外),就能够直接利用session变量。
4、session的烧毁
假如你只是想刊出一个变量而不是摧毁全部变量的话,那需求利用函数:
boolean session_unregister(string name);用法很复杂,参数 name 即为欲删除的变量名。胜利则前往 true 值。
然而,假如要全部“摧毁”session变量的话,好比说平安加入甚么的,利用函数:
boolean session_destroy(void);本函数停止今朝的 Session。本函数没有参数,且前往值均为 true。
5、其它有效的session函数
a、 反省变量是不是注册
boolean session_is_registered(string name);本函数可反省今朝的 Session 当中是不是已有指定的变量注册。参数 name 即为欲反省的变量名。胜利则前往true 值。
b、 给注册变量归null
void session_unset(void); 这个函数可以把固然注册的一切的session变量置为空。注重它不是unregister,也分歧于destroy。 上面这个例子,对此函数做了很好的申明。
<?php session_register('a','b','c'); //auto-session-start $a=1; $b=2; $c=3; session_unregister('a'); //unregistrered $a echo "A: $a - reg:".session_is_registered('a')." ";// but the global $a remains session_unset(); // unsets $b und $c echo "B:$b - reg:".session_is_registered('b')." "; // the registration remains ! echo "C:$c - reg:".session_is_registered('c')." "; echo session_encode(); ?> 输入: A: 1 - reg: B: - reg:1 C: - reg:1 !b|!c|c、定制你本人的session处置办法
void session_set_save_handler (string open, string close, string read, string write, string destroy, string gc) 这个函数可以界说用户级的session的保留函数(翻开、封闭、写入等)。好比,咱们想把session保留在当地的一个数据库中时,本函数就很有效了。缺省情形下,每一个session存贮在体系一时目次的一个个自力文件中(例如在unix体系中为/tmp)。这合适或不合适,依你的需求而言。例如:假如你的撑持php的web办事器散布在分歧的机械上,你不克不及很轻易地同享它们之间的session(固然,你也能够将sessions保留在NFS同享中)。另外一个潜伏的成绩是你机械上的数千或数百万个session文件使你的文件体系变得狼藉 。注重:这个函数是在4.0b4版本后才呈现的。利用本函数前,先要设置装备摆设php.ini文件,session.save_hadler=user ,不然,session_set_save_handler()不会失效。
另外,依据我的测试,你假如想让如许的session跨页面利用,还要在每个用到session的剧本文件中到场你自定的函数及session_set_save_handler,所以,最好的办法是做成一个独自的文件,在每个要用到session的剧本顶用include来包括出去。
上面这个例子供应了一个最根基的session保留法,相似于默许的files办法。假如你想用数据库来完成,这也是很轻易做到的。
Example:session_set_save_handler() example <?php function open ($save_path, $session_name) { global $sess_save_path, $sess_session_name; $sess_save_path = $save_path; $sess_session_name = $session_name; return(true); } function close() { return(true); } function read ($id) { global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "r")) { $sess_data = fread($fp, filesize($sess_file)); return($sess_data); } else { return(""); } } function write ($id, $sess_data) { global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "w")) { return(fwrite($fp, $sess_data)); } else { return(false); } } function destroy ($id) { global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id"; return(@unlink($sess_file)); } /********************************************* * WARNING - You will need to implement some * * * sort of garbage collection routine here. * * *********************************************/ function gc ($maxlifetime) { return true; } session_set_save_handler ("open", "close", "read", "write", "destroy", "gc"); session_start(); // proceed to use sessions normally // 如今你就能够象平常一样地利用session了。 ?> 那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢? 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标, 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 爱上php,他也会爱上你。 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 基础有没有对学习php没有太大区别,关键是兴趣。 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 兴趣是最好的老师,百度是最好的词典。
页:
[1]
2