PHP网页设计完成跨域名Cookie
php manual(PHP手册)肯定是要从网上下载一个的,它很权威,也很全面,我自己认为它是一本很好的参考书,但是不适合新手当教材使用。cookie Cookie真是一个巨大的创造,它答应web开辟者保存他们的用户的登录形态。但是,当你的站点或收集有一个以上的域名时就会呈现成绩了。
在Cookie标准上说,一个cookie只能用于一个域名,不克不及够发给其它的域名。因而,假如在阅读器中对
一个域名设置了一个cookie,这个cookie关于其它的域名将有效。假如你想让你的用户从你的站点中的个中
一个停止登录,同时也能够在其它域名长进行登录,这可真是一个浩劫题。
我的处理计划将利用上面的普通框架:
一个预置的剧本将用来承受经由过程GET或COOKIE体例传递过去的sessionid号。它将比COOKIE优先选择GET
变量。所以,不管什么时候需求援用穿插的域名时,咱们把sessionid做为一个URL参数停止发送。
修正Apache设置装备摆设,用来完成重写一切的穿插域名的cookie。如许做的缘由一会儿就会清晰了。
在任什么时候候呈现一个穿插域名援用时利用变量。
第一步:创立预置剧本
将上面的代码加到预置剧本中(或呈现在一切剧本之前的函数中)。
<?php
/* 撑持穿插域名cookie... */
// 假如GET变量已设置了,而且它与cookie变量分歧
//则利用get变量(更新cookie)
global $HTTP_COOKIE_VARS, $HTTP_GET_VARS;
if (isset($sessionid) && isset($HTTP_GET_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid'] != $HTTP_GET_VARS['sessionid'])) {
SetCookie('sessionid', $HTTP_GET_VARS['sessionid'], 0, '/', '');
$HTTP_COOKIE_VARS['sessionid'] = $HTTP_GET_VARS['sessionid'];
$sessionid = $HTTP_GET_VARS['sessionid'];
}
?>
一旦这个代码运转以后,一个全局的'sessionid'变量将可以用于剧本。它将保留着用户的cookie中的
sessionid值,或是经由过程GET恳求发来的sessionid值。
第二步:为一切的穿插域名援用利用变量
创立一个全局的设置装备摆设文件,用于寄存可以停止切换的域名的根基援用模式。例如,假如咱们具有
domain1.com和domain2.com,则以下设置:
<?php
$domains['domain1'] = "http://www.domain1.com/-$sessionid-";
$domains['domain2'] = "http://www.domain2.com/-$sessionid-";
?>
如今,假如在代码中以下做:
<?php
echo "Click <a href=\"", $domains['domain2'], "/contact/?email=yes\">here</a> to contact us.";
?>
你将发生以下的输入:
Click <a href="http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes\">here</a>
to contact us.
在这里sessionid已被拔出到URL中去了。
在这个中央,你能够会想"如许能够会在web办事器上翻开名为横线,sessionid,横线的子目次?!?!?"。
但是,上面的步调将供应一个必须的戏法,以便让它可以利用!
第三步:设置装备摆设Apache
如今,剩下的步调就是设置装备摆设apache来重写这个URL:
http://www.domain2.com/-66543afe6543asdf6asd-/contact/
酿成如许:
http://www.domain2.com/contact/?sessionid=66543afe6543asdf6asd
而且这类url:
http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes
酿成如许:
http://www.domain2.com/contact/?email=yes&sessionid=66543afe6543asdf6asd
为了完成它,复杂地设置装备摆设两个虚拟办事器,作为domain1和domain2,以下操作:
<VirtualHost ipaddress>
DocumentRoot /usr/local/www/domain1
ServerName www.domain1.com
RewriteEngine on
RewriteRule ^/-(.*)-(.*\?.*)$ $2&sessionid=$1
RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1
</VirtualHost>
<VirtualHost ipaddress>
DocumentRoot /usr/local/www/domain2
ServerName www.domain2.com
RewriteEngine on
RewriteRule ^/-(.*)-(.*\?.*)$ $2&sessionid=$1
RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1
</VirtualHost>
这些重写的划定规矩完成了下面两个URL重写的请求。
结论
经由过程利用变量联合与apache的重写功效,穿插域名cookie可以以一种复杂的体例完成。想要保护如许的
体系,不管甚么时分链接穿插域名,在利用域名变量以外,甚么也不必作了!在域名外部的链接不需求停止
修正,由于cookie会任务正常。
假如你有乐趣看一下在临盆收集中实践运作中的体系,请观赏http://www.familyhealth.com.au/。在
一些穿插域名链接上挪动你的鼠标,而且看一下当你点击后它们是若何被重写的。
或许,利用这个手艺独一的成绩就是没法删除在用户阅读器中的全体域名下的cookie。
如果你单纯是为了做网站赚钱,我想你还是别学php的好,去学ASP,JSP好了,毕竟它们有实力雄厚的公司去支持它们。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标, 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 基础有没有对学习php没有太大区别,关键是兴趣。 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 本文当是我的笔记啦,遇到的问题随时填充 当然这种网站的会员费就几十块钱。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
页:
[1]