未来往事
authcode 是使用异或运算进行加密和解密,原理如下。这里我们假设:
加密如下
明文:1010 1001
密匙:1110 0011
密文:0100 1010
得出密文0100 1010,解密之需和密匙异或下就可以了

解密如下
密文:0100 1010
密匙:1110 0011
明文:1010 1001
并没有什么高深的算法,密匙重要性很高,所以,关键在于怎么生成密匙。下面我们看下具体的用法:
输出结果:
a110ZnCl9WbcDyOm3gLgDWdyda9sHluDcpudUVBvNlskwSkdgpKredM
fity.cn

互联网思维之连接一切 多云

Rinald 月光宝盒 随笔/分享 2014/02/08 09:14
连接思维是互联网思维的重要表现之一,当我们回首互联网历史的时候,会发现互联网让人与人、人与物之间的连接更为便捷。雅虎缩短了人与媒体的连接,谷歌缩短了人与信息的连接,MSN和Facebook缩短了人与人的连接,ebay缩短了人与商品的连接。

当有人问起我们互联网思维的概念时,我们总是一筹莫展。但当我们讲起互联网思维的时候,却总是眉飞色舞,声称某某企业就是运用互联网思维才成功的。

互联网思维到底是什么?对于这个概念,不同的人有不同的解释,有时候它就像哲学这个词一样,只可意会不可言传。

有人曾将互联网思维与文艺复兴时期的“人文主义”相联系,而我更愿意将其与工业革命的连接相联系。第一次工业革命,蒸汽机车让人们以比以往更快的速度相连接,第二次工业革命,电话、电报让人们在几秒钟内实现连接,互联网时代(革命)则几乎让远隔千里的人们在任何想要的时间内实现连接。所以如果要问互联网思维是什么的话,它一定包括连接思维。

人与媒体的连接,代表:雅虎、微博

在互联网出现之前,当我们想了解国内外新闻的时候,无非是通过以下几种形式:电视、报纸杂志(即纸媒)、收音机,它们统称为传统媒体,一般是由职业记者报道后发布于媒体,然后民众获取。传统媒体有三个特点:

一是新闻滞后,一般来说当广大民众得知一个新闻的时候,它已经发生多时了;

二是民众获取长尾新闻较为困难,一般来说媒体会花较大的精力报道最重大的新闻,民众获取这些新闻相对便利,而对于处于长尾的非重大新闻,则少有媒体报道,获取这些新闻较为困难;

三是民众获取新闻的行为多为被动,电视作为比报纸报道更为快捷的媒体,一般是在民众收看得时候才会被获取。所以在互联网出现的前的大多数年景里,不少人会每天吃完晚饭后守在电视机前准时观看19点的《新闻联播》,来了解国内外重要新闻。

互联网的出现改变了人们通过媒体获取新闻的习惯,1994年杨致远和大卫·费罗在美国创立了雅虎,此后几年,人们开始登陆雅虎而非从电视、纸媒上获得新闻信息。每天早上,人们不用打开电视或买报纸来了解前一天的新闻,而只需打开雅虎,快速浏览网页;当一个球迷对一场电视不转播的比赛的结果焦虑不安时,他也不用守在电视机前等待体育新闻,而只需打开雅虎看它的网络直播(虽然早期还是文字直播);当一个人对于一个小众领域的新闻动态感兴趣时,他再也不用到处搜集报纸杂志,只需要打开雅虎的某个频道就足够了。

雅虎的出现大大缩短了人与媒体之间的连接路径,使人们获取新闻的行为由被动收看变成了主动点击。如果说雅虎的出现是对传统媒体的革命的话,那微博的出现就是对传统媒体的二次革命,在微博出现之前,人们与媒体的连接中间总会有必要的一环——记者或编辑,而微博出现后,几乎每个身在世界各地的人都可以将自己看到的最新消息发布于微博,人们可以直接(不必经过职业记者或编辑)看到当事人对事件的描述。2009年一架美利坚航空公司的空中客车A-320班机因故迫降于纽约哈德孙河面上。一位救援人员贾尼斯·克鲁姆斯用自己的iPhone手机拍摄下当时的一幕,并上传到Twitter,成为了飞机迫降后首张现场照片。

因为微博的出现,人们开始以前所未有的速度获得重大新闻信息,因为微博的出现,每个人都可能成为媒体,人类与媒体之间的连接从未如此快捷。

人与信息的连接,代表:Google、百度

有时候我们不得不承认生于互联网革命之后的人是幸运的,据说马克思当年为了写《资本论》,几年如一日地在大英图书馆里查资料学习,由于他固定坐在一个座位上,数年下来,桌子下面竟然留下了磨出的脚印。如果马克思生于现世,显然他就不需要每天往返大英图书馆了,他可能只需要打开Google就可以了,而大英图书馆也可能会因此省下两块地砖。

上面的例子无非是让我们找一下回到没有互联网的时代的体验,在那个时代作者为了写一本书,可能需要每天到图书馆去查资料;记者为了写一篇报道,可能需要翻遍过往的报纸杂志;学生为了找到一个数学题的答案,可能需要问许多其他同学或翻遍教辅书;而在一个不那么令人关注的小众领域,你可能费劲心思也找不到相关的资料或书籍。但在互联网时代这一切都变得异常简化,查询资料?打开Google;查询数学题答案?打开Google。对于在现实中难以找到的小众领域的资料,Google同样可能告诉你答案。2010年,Google平均一年要保存33万亿条查询记录,由于Google的数据量巨大,因此你通过它找到自己需要的资料的概率一定非常大。

据Statista的一项新研究显示,2012年Google的广告收入超过了整个美国印刷媒体的总和。同样2012年百度财报显示,百度的在线的广告收入即将超过央视。这从侧面体现了Google、百度这样的搜索引擎作为信息平台,其价值已在大步赶超传统媒体的价值。

Google、百度这样的搜索引擎大大改变了人们连接信息的习惯,降低了人们获取信息的成本,人类与信息之间的连接从未如此快捷。

人与人的连接之通信,代表:MSN,微信
+阅读全文
整合驱动程序到系统安装盘-图片多是因为适应不同用户的需求,其实操作过程很简单,也就是点几下鼠标的事。当我们在使用SATA、SCSI硬盘或磁盘阵列的电脑安装系统,需要在安装程序检测磁盘设备时按下F6键,插入软盘为操作系统提供 磁盘设备的驱动程序,如果你的电脑上没有软盘驱动器则无法开始安装。要避免类似的麻烦,可以将磁盘设备的驱动程序整合到操作 系统的安装光盘上,又或者整合更多驱动程序,让操作系统在安装时自动安装。

整合驱动需要两个软件:nLite和Microsoft .NET Framework Version 2.0 通过工具软件将驱动程序整合到操作系统安装光盘,主要使用nLite。为了便于你的阅读本文关于nLite的使用相关内容已生成为pdf文档,请点击下方链接进行下载:
linux系统下大多数都是用ext3/ext4文件系统系统,许多流行的linux发行版默认的文件系统就是ext3/ext4,正常我们在windows下是无法识别ext3/ext4分区.导致我们想要提取一些数据的时候而有心无力.Ext2Fsd可以让你在Windows系统中挂在linux的分区。

这里推荐两款可以在windows系统下识别linux分区格式的软件
1、Ext2Read 是一个能够读取etc2/etx3/ext4文件系统的工具。他支持LVM2和Ext4.可以查看和复制文件和文件夹,递归复制整个文件夹。
2、Ext2Fsd是一个windows下的ext2文件系统驱动,支持windows2000,xp,vista。是一款自由软件,以GPL2协议发布

ext2fsd使用方法
第一步:打开ext2fsd后,先载入文件系统驱动,在菜单选中"工具与设置"->"配置文件系统驱动",点击"启动"后,更改并退出
第二步:在你所需要挂在的ext分区上右击选中"更改"装配点盘符",为你需要挂在的分区添加一个盘符就搞定了。

注意:虽然用ext2fsd可以对挂在的linux分区进行写入,但推荐最好别这样做.这样做可以会导致数据丢失.

谷歌Google创新9原则 不指定

Rinald fastcompany 随笔/分享 2014/01/24 00:47
想知道是什么让 Google 成为生产力与创造力的圣杯?当然不是喝山景城脚下的神水。而是贯彻其首席社会布道师 Gopi Kallayil 所谓的 Google 创新九原则。任何企业,无论规模大小,均可从 Google 的创新文化中偷师。

1、创新无所不在

自顶向下也好,自底向上也罢,创新可以来自于任何地方,甚至是你最想不到的地方。比方说,一位给 Google 员工看病的医生指出 Google 有责任帮助那些搜索“如何自杀”的人。这番话令 Google 调整了搜索结果显示,使得屏幕顶端显示出美国预防自杀热线的电话号码。此后很快拨打热线的数量就增加了 9 个百分点。后来在许多国家也进行了相应调整(注:中国似乎没有)。

2、聚焦用户

钱的事情以后再担心,首先要聚焦用户,其他的东西自然水到渠成。当用户输入几个字母时就展示搜索建议,Google 通过这样的预测性分析改进搜索速度。该即时搜索功能为每位用户的每次搜索都节省了若干毫秒。Google 的销售人员担心此举会缩短客户浏览广告的时间,但公司仍继续并相信此举值得冒险。

最终结果如何?感谢即时搜索,Google 测算该功能推出 1 年之后节省下来的时间相当于返还人类 5000 年。“打造出色的用户体验,收入会照顾好自己的,” Kallayil 说。此外,会有更多的客户被你的产品新带来的好处所吸引。

3、以好十倍为目标

如果你只想着改进 10%,那你只会看到增量式的变化。如果你希望激进的、革命性的创新,那就想想 10 倍的改进,这会迫使你跳出固有的思维模式。比方说,2004 年,Google 开始 Google Book 项目,提出要将全球信息组织起来并对历史上所有印刷过的书本进行数字化,这是一个巨大挑战。

Google 联合创始人开发了自己的书籍扫描仪,刚开始时还要人跟着扫描仪的节奏来翻页。可现在 Google 已经扫描了当初计划扫描的 1.3 亿本书中的 3000 万,全球几十家图书馆都在参与该项目。

4、靠技术洞见放手一搏

每一个组织都有自己独特的洞察力,如果放手一搏,就能引发重大创新。想出无人驾驶汽车的是 Google 的工程师而非汽车业—因为他们没有对数百万因为人为错误而导致的交通死亡熟视无睹。Google Maps、Google Earth、街景汽车—开发无人汽车的一切组件均已准备就绪。加上与斯坦福大学的人工智能团队的协作,Google 工程师已经生产出实验性的无人车,可以在太浩湖和湾区之间自由穿梭,让盲人可以更加独立地外出开车购物或办事。

5、交付、迭代

不要等到一切皆完美,要早交付,多交付。让用户帮你“升级”。2008 年 Chrome 发布时,每 6 周 Google 就会推出一个改进版。“现在 Chrome 用这种办法已经在许多国家攀上了浏览器 No.1 的位置,” Kallayil 说:“你的产品也许并不完美,但请相信,用户会把完美还给你的。”

6、给员工20%的自由时间

赋予员工 20% 的工作时间来从事自己热爱的项目,哪怕该项目并不在公司的核心任务或使命范围。“他们会用自己的创意思考来愉悦你,” Kallayil 保证说。在 Google,工程师和项目经理每周有一天的自由时间去折腾自己喜欢的创意。这些创意里面有很多最红都转化成了产品或产品改进。一个很好的例子是:一位计划去西班牙旅游的工程师发现自己无法获得入驻旅店的近景,因为所在街道太窄,街景车进不去。后来他改装了街景摄像机,装上特制的 Google 三轮车,用来到汽车进不去或不给进的旅游景点拍摄。

7、默认开放流程

把你的流程向所有用户开放。集思广益,靠用户集体的力量去获取奇思妙想。Google 创建 Android 平台时知道,自己无法将地球上最好的开发者都招致麾下。因此,它“默认开放”,鼓励 Google 以外的开发者为每天使用 Android 设备的 10 亿用户开发 app。“生态体系就是这样形成的,” Kallayil 说。在营销上,Google 也向用户请教如何推销其语音搜索 app,有的孩子还发来一些聪明的视频,其水平之高足以与大广告公司的东西匹敌。

8、失败好

失败不应该背负污名。如果你不怎么失败,说明你的尝试还不够努力。在 Google,只要产品无法发挥出最大潜力就会被扫地出门,但公司会从中择取最好的功能。“实际上,失败是一种荣耀,”他说:“失败是通往创新和成功之路。你可以自豪地失败。”

9、要有使命感

“这是最重要的原则,” Kallayil 说:“Google 的每个人都有强烈的使命感和目标感。我们相信自己的工作能以积极的方式影响着千百万人。”每个人都应该有自己的故事。
js/jquery获取当前页面URL地址并判断URL字符串中是否包含某个具体值
本文介绍jquery/js获取当前页面url地址的方法,在jquery与js中获取当前页面url方法是一样的,因为jquery没有自己相关的函数,使用js 的windows方法来获取,相关方法如下:
window.location.pathname //设置或获取对象指定的文件名或路径
window.location.href //设置或获取整个 URL 为字符串
window.location.port //设置或获取与 URL 关联的端口号码
window.location.protocol //设置或获取 URL 的协议部分
window.location.hash //设置或获取 href 属性中在井号“#”后面的分段
window.location.host //设置或获取 location 或 URL 的 hostname 和 port 号码
window.location.hostname //设置或获取 location 或 URL 的 hostname 和 port 号码
window.location.search //设置或获取 href 属性中跟在问号后面的部分
window.location //属性 描述 hash 设置或获取 href 属性中在井号“#”后面的分段

javascript判断字符串中是否包含某字符串,js字符串中查看子字符
indexOf函数方法示例用法:

例如未来往事博客中的快速评论代码:

其他示例:

如需了解更多关于indexOf的用法请google。
CodeIgniter去除index.php Nginx规则范例:
server
  {
    listen       80;
    server_name  ci.fity.cn;
    index index.html index.htm index.php;
    root  /htdoc/web/citest;
  
    location / {
        try_files $uri $uri $uri/ /index.php?s=$uri&$args;
        index  index.html index.htm index.php default.php;
        if ($request_filename !~* /(index\.php|assets|uploads|phpinfo\.php))
        {  
           rewrite ^/(.*)$ /index.php/$1 last;                                                                                                
        }
    }

    location ~ .*\.(php|php5) {
            include fcgi.conf;
                        fastcgi_pass  127.0.0.1:9000;
                        fastcgi_param PATH_INFO $fastcgi_script_name;
                        fastcgi_index index.php;
    }
}
本文主要介绍Thinkpad E430/431 Win8系统改为Win7系统的步骤:
自微软公司发布Win8系统以后,越来越多的电脑厂商都把Win8系统出厂预装到笔记本当中,联想Thinkpad E430系列笔记本也不例外,由于Win8系统的操作界面发生了很多改变,有很多人还不太喜欢使用电脑出厂预装的Win8系统,所以想要把Thinkpad E431笔记本中出厂预装的Win8换成Win7系统。

对于笔记本电脑装系统,相信很多人都不陌生,但就有很多朋友问我,为什么我用U盘或是光盘对出厂预装了Win8系统的电脑安装系统,在按F12选择U盘或光盘启动的时候,老是进不去,画面闪动一下,又回到原来的界面,这是什么原因造成了的呢? 
有些人开始怀疑这是U盘或光盘坏了,或者是PE没有做好等原因,但拿到其它电脑上去,又成正常启动,这到底是那里出问题了呢?   其实这不是你的U盘或PE出问题了,而是笔记本电脑预装Win8系统,采用了UEFI接口的原因,所以才会有一些PE无法兼容导致进不去,如果我们想要把预装的Win8系统换成Win7系统,我们只需要更改一下BIOS即可。
  
Win8换Win7更改BIOS的方法一: 
按开电源键,即可不停地按F1键,进入BIOS操作界面,按向右的方向键,选择“Security”,然后再按向下的方向键,选择最下面的“Secure Boot”,按回车键进入;
把“Secure Boot"中的“Enabled”按回车键更改成“Disabled”;
按Esc键返回上一级菜单,再按向右方向键,选择“Startup”,把“UEFI/Legacy Boot”中的“UEFI Only”改成“Both”即可,按“Fn+F10”保存,然后就可以和其它电脑一样正常安装系统了。

Win8换Win7更改BIOS的方法二:  
 同样是按电源键后,不停地按F1进入BIOS操作界面,按向右方向键
选择“Restart”,然后再把“- OS Optimized Defaults”中的“Enabled”改成“Disabled”,在更改过程中,会弹出提示,我们选择YES即可;
然后再按“Fn+F9”重置BIOS设置,重置完成以后,按再“Fn+F10”保存设置即可,这时就同没有预装Win8系统的电脑重装系统的方法是一样的了。 

 注:你可以根据自己需要,随意选择上面其中一种更改BIOS中UEFI接口的方法,只要执行了上面其中某种方法的操作,即可顺种地通过U盘或光盘启动来更换Win8操作系统。 

常见错误:
Win8系统换Win7以后,画面卡在“正在启动Windows” ?
出厂预装Win8系统换成Win7,必须更换BIOS中的UEFI接口,然后再重装系统。但系统通过ghost导入到电脑硬盘当中,重启时,画面就一直卡在“正在启动Windows”处,这是什么原因造成的呢?其实这主要是因为分区表错误的原因造成的,我们只需要运行PE系统的中DiskGenius分区工具,选择中电脑硬盘,再点文件边上的硬盘,在下拉菜单中点击“重建主引导记录(MBR)”即可,然后再按正常操作对电脑硬盘进行重新分区并重装系统即可。

详细说明信息参考本博客其他类似文章
ASUS S200E Win8系统改为Win7系统
GPT与MBR分区表格式类型转换
网页倒计时代码 倒计时代码 网站运行时间代码 网站已运行天数代码
1、jQuery.countdown插件
显示格式:50 周 01 天 07 小时 18 分 41 秒(秒为跑秒)
一个页面可以有多个倒计时实例,可以停止和开始,它没有提供太多的功能,但时间格式和输出的尺寸都可以自定义。
目前最新版v2.0.4,官方地址http://hilios.github.io/jQuery.countdown/
例如:
输出结果:50 周 01 天 07 小时 18 分 41 秒

输出结果:00 days 00:08:21

输出结果: 89 时 20 分 12 秒

注意:如果需要一共还有多少天数用%D,参数说明:
Y: "years"
m: "months"
w: "weeks"
d: "days"
D: "totalDays"

H: "hours"
M: "minutes"
S: "seconds"


2、显示格式:距离结束时间还有:00天05小时25分30秒(秒为跑秒)


3、 显示格式:已运行0 年 1 天 0 小时 4 分钟 35 秒(秒为跑秒)

Tmail登录失败问题 不指定

Rinald 本站原创 Mail服务器 2014/01/14 23:45
之前安装的是Tmail5.0.1,最近邮件服务器有时登录提示登录失败,有时在登录状态下刷新时提示MySQL链接数超出等,时好时坏,经过查找发现tmail安装完成后没有创建my.cnf配置文件,于是重新创建了一份MySQL配置文件my.cnf并对MySQL的连接数做了适当配置后,发现问题没有再次出现过。
关于MySQL寻找my.cnf配置文件的顺序过程可以参考本博客相关文章。

CSS样式优先级 不指定

Rinald 本站原创 WEB前端 2014/01/14 23:33
一、CSS样式选择器优先级
ID选择器(形如#divMain{})  >  类(形如.divSpecial{})  >  标签(形如body{})

二、CSS文件的优先级
1、标有”!important”的规则有最高优先级
一个样式规则可以有一个”important”附带标签,表示该样式规则具有最高优先级。例如下面例子中,前景色被标为important。
注意:这种声明容易引起混乱,因此通常使用得较少。

2、创作者规则优先级高于浏览者规则
浏览器允许浏览者创建样式规则以覆盖系统缺省值。在此情况下,由网页创作者明确设定得样式优先级较高,而浏览者设置得样式规则优先级较低。

3、更特殊得规则优先于不够特殊的规则
在决定特殊性时,selector中的ID属性有最高优先级。基于ID selector的优先级可通过计数Selector中类属性的数量确定,数量越多优先级越高。假如规则仍然无法确定优先级,则HTML元素名的数量决定了特殊性。

4、在同一个级别的情况下,最后指定的规则有优先权
假如两个或更多的规定在应用了前三个规定具有相同优先级,则后给出的规则优先于早先给出的规则。
如果在网页的HEAD标记中同时使用了STYLE标记符(指定嵌入式样式)和LINK标记符(指定链接式样式),并且这两个样式指定中同时应用了具有同一优先级别的样式,则STYLE标记符和LINK标记符的先后顺序将决定样式的优先级。

例如,如果在LINK所链接的样式表(mycss.css)中定义了以下一条样式规则:

同时在嵌入式样式定义中也定义了一条规则:

在网页中的样式定义如下所示:
由于style标记符中定义的样式后出现,因此它具有更高的优先级,所以网页中H1标记符的内容将显示为黄色(yellow)。同样,如果将link标记符的位置移动到标记符之后,则网页中H1标记符的内容将显示为红色(red)。

另外,由于直插式样式(使用html标记的style属性设置的样式)的位置最接近于样式作用的标记符,因此它通常具有高优先级。

MySQL子查询常见格式 晴

Rinald 本站原创 MySQL 2014/01/14 23:17
MySQL常见的几种子查询形式
mysql从4.1版开始支持子查询功能,在此版本前,可以用join写连表查询来进行替代,但不推荐这么写,相当的麻烦。mysql子查询的几种常见写法:
该句法可分为加关键词和不加关键词的写法,当不加关键词的时候,子查询语句返回的是一个离散值(注意是一个),查询语句将以子查询语句的结果作为自己 where子句的条件进行查询,该句法可以在子查询语句前加入any、all、some等关键字,此时子查询语句返回的是一组离散值。any则表示,查询语句是以子查询返回的值作为一个范围,在此值范围内进行查询,其与in关键字相像;all关键不太好了解,表示起全部匹配啥的。

该 句法相当的明了,就是查询语句的where子句是以子查询语句的结果作为其范围的,与上一种语法的any相似;

该语句的执行实质是:子查询语句的执行所得的结果与查询的结果集匹配,若能找到匹配的返回真,否则返回假,并且两边的结果集都是一组离散值;

该语句比较蹩脚,其执行是这样的:当子查询进行操作,有返回结果的时候,该语句才会执行,而且有多少个结果,语句就执行几次;

该句法,在平时用的比较少,而且并不好理解。其实是这么一回事,通过子查询执行的结果来构造一张新的表(这个表是一张衍生数据表,是一张虚拟的表),其用来作为主句的查询的对象,该句法功能非常强大,在一些复杂的查询中会经常用到。

子查询虽然挺方便,但其有不少缺点,其不支持limit,而且经实验证明其执行效率相当不理想,在一般的情况下,还是不推荐是用子查询。
本文介绍了PHP会话控制,主要阐述以下几点内容:
会话控制的产生背景/概念
cookie的维护与生命周期(有效时间)
session的维护与生命周期(回收机制)
cookie与session之间的区别与联系
问题1:禁用cookie后session为什么会失效?
问题2:IE浏览器下丢失session,每次刷新页面,都会生成新的sessionID(Firefox浏览器正常)
session、cookie简单实例

▶ 本文最后更新:2014-01-23(更新内容‘问题2’

● 理解会话控制的概念
理解一个概念就需要理解他的背景及产生的原因,这里引入WEB环境及其HTTP协议。会话控制产生的背景:
阅读过HTTP协议相关资料的同学都会知道HTTP协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议,所谓无状态,指的是不会维护http请求数据,http请求是独立的,不持久的。也就是说HTTP协议没有一个内建的机制来维护两个事务之间的状态或者说是关系吧。当一个用户在请求一个页面后再去请求另外一个页面时,HTTP将无法告诉我们这两个请求是否来自同一个用户。

由此我们就会觉得很奇怪了,平时我们在论坛逛帖子或电商网站购物时,只要我们在这个站点内,不论我们怎么跳转,从一个页面跑到另一个页面,网站总会记得我是谁,比如告诉你购买了哪些东西。这是怎么做到的呢,估计大家猜到了,这就是运用了HTTP会话控制。在网站中跟踪一个变量,通过对变量的跟踪,使多个请求事物之间建立联系,根据授权和用户身份显示不同的内容、不同页面。

PHP Session会话控制:
PHP的session会话是通过唯一的会话ID来驱动的,会话ID是一个加密的随机数字,由PHP生成,在会话的生命周期中都会保存在客户端。我们知道客户端(也就是浏览器)保存数据的地方只有cookie,所以PHP的会话ID一般保存在用户机器的cookie中。了解cookie后我们知道,浏览器是可以禁用cookie的,这样会话就会失效。所以PHP会话控制还有一种模式,就是在URL中传递会话ID。如果在浏览网站时我们稍加留心的话,有些URL中有一串看起来像随机数字的字符串,那么其实很有可能就是URL形式的会话控制。

讲到这里,有些人可能会有疑问了,客户端只是保存一个会话ID,那么会话控制中保存的会话变量比如你购物时买的物品列表等,它们是存放在哪个地方的呢?很显然,会话变量是在服务器端使用的,那么这些会话变量必定存放在服务器端。默认情况下,会话变量保存在服务器的普通文件中(也可以自己配置使用数据库来保存,可以Google一下),会话ID的作用就像是一把钥匙,在服务器端保存会话的文件中找到该会话ID对应的会话变量,比如购买物品的列表。

那么会话控制的整个过程可能就像这个样子,用户登录或者第一次浏览某个站点的页面时,该站点会生成一个PHP的会话ID并通过cookie发送到客户端(浏览器)。当用户点击该站点的另一个页面时,浏览器开始连接这个URL。在连接之前,浏览器会先搜索本地保存的cookie,如果在cookie中有任何与正在连接的URL相关的cookie,就将它提交到服务器。而刚好在登陆或第一次连接时,已经产生了一个与该网站URL相关的cookie(保存的会话ID),所以当用户再次连接这个站点时,站点就可以通过这个会话ID识别出用户,从服务器的会话文件中取出与这个会话ID相关的会话变量,从而保持事务之间的连续。


接下来我们了解下两个重要的概念:cookie和session
● 关于cookie的维护与生命周期
cookie是在服务器端被创建并写回到客户端浏览器,浏览器接到响应头中关于写cookie的指令则在本地临时文件夹中
创建了一个cookie文件,其中保存了你的cookie内容,cookie内容的存储是键值对的方式,键和值都只能是字符串。例如:
文件:Cookie:administrator@localhost/
内容格式:voteID100101localhost/15361167667230343893360385046430343691*

cookie的创建:
setcookie()函数设置cookie,函数原型如下
setcookie(name, value, expire, path, domain);
注释:cookie标题头必须在发送其他标题头之前发送,否则就无效(这是cookie的限制,而不是PHP的限制)。在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。

cookie的维护:
cooke有四个标识符:cookie的name,domain,path,secure标记。要想在将来改变这个cookie的值,需要发送另一个具有相同cookie name,domain,path的Set-Cookie消息头,这将以一个新

的值来覆盖原来cookie的值。然而,如果仅仅只是改变这些选项的某一个也会创建一个完全不同的cookie,如只是更改了name值。

cookie失效时间:
可以设置过期时间,如果不设置则是会话级别的,即关闭浏览器就会消失。当cookie创建时包含了失效日期,这个失效日期则关联了以name-domain-path-secure为标识的cookie。要改变一个cookie的失效日期,你必须指定同样的组合。当改变一个cookie的值时,你不必每次都设置失效日期,因为它不是cookie标识信息的组成部分。例如:
在cookie上的失效日期并没有改变,因为cookie的标识符是相同的。实际上,只有你手工的改变cookie的失效日期,否则其失效日期不会改变。这意味着在同一个会话中,一个会话cookie可以变成一个持久化cookie(一个可以在多个会话中存在的),反之则不可。为了要将一个持久化cookie变为一个会话cookie,你必须删除这个持久化cookie,这只要设置它的失效日期为过去某个时间之后再创建一个同名的会话cookie就可以实现。

需要记得的是失效日期是以浏览器运行的电脑上的系统时间为基准进行核实的。没有任何办法来来验证这个系统时间是否和服务器的时间同步,所以当服务器时间和浏览器所处系统时间存在差异时这样的设置会出现错误。

cookie自动删除:
cookie会被浏览器自动删除,通常存在以下几种原因:
会话cooke(Session cookie)在会话结束时(浏览器关闭)会被删除
持久化cookie(Persistent cookie)在到达失效日期时会被删除,如:
如果浏览器中的cookie限制到达,那么cookies会被删除以为新建cookies创建空间。

● 关于session的维护与生命周期
+阅读全文

如何面对生活 晴

Rinald 九九文章网 随笔/分享 2013/12/25 12:48
  人活在这个世上,不可能都是一帆风顺的,有时遇到困难,有时遇到挫折,有时遇到变故,有时遇到不顺心的人和事,这些都是人生前进中的正常现象。但是,有的人遇到这些现象时,心烦意乱,痛苦不堪,悲观失望,甚至失去面对生活的勇气。
  
  当你遇到不顺时,它会让你的头脑更加理性,让你面对不顺时,不是悲观失望,而是反思自己的做事方法,做人原则,让你有则改之,无则加勉,更上一层楼。
  
  如果没有人陪,学着一个人听音乐看书写字。这是个好习惯。
  
  不要对人随便发脾气。
  
  如果一个人怠慢你,请你离开他。不懂得珍惜你的人不要为之不舍,更不必继续付出你的友情,爱情。
  
  如果可以不抽烟,别抽。如果可以不喝酒,别喝。
  
  再郁闷也不要去泡酒吧。一个孤独的人手握高脚杯和抽烟,会更添寂寞感和忧伤。
  
  闲下来的时候,放一段柔情音乐,翻阅几页好书,然后睡个懒觉,快哉。心情不好的时候也可以睡一觉。
  
  从现在开始,聪明一点,不要问别人想不想你?爱不爱你?若是要想你,爱你自然会对你说,但是从你的嘴里说出来,别人会很骄傲和不在乎你。
  
  有固定的消遣场所,比如固定的咖啡馆,书店。让那个人地方的服务生认识你,这样,你会在孤单时有个温暖的去处。
  
  不要为了任何人任何事折磨自己。比如不吃饭,哭泣,自闭,抑郁,这些都是傻瓜做的事。当然,偶然傻一下有必要,人生不必时时聪明。
  
  任何情况下,背后不说他人是非。如果一定要说,说好话。
  
  一定要有几个异性朋友,没有非份之想。就是关键时候,帮你出出主意。
  
  学会承受痛苦,有些话适合烂在心里,有些痛苦,适合无声无息的忘记。当经历过,你长大了,自己知道就好。很多改变,不需要你说,别人会看得到。
版本:PHP4, PHP5
string implode ( string $glue , array $pieces )
string implode ( array $pieces )
implode() 函数将一个一维数组元素合为一个字符串,并返回该字符串。其内容为由 glue 分割开的数组的值。

参数说明:
glue:默认为空的字符串
pieces:你想要转换的数组
备注:4.3.0开始glue 变为可选参数。

范例:
第12页 / 共35页 第一页 « 上一页 7 8 9 10 11 12 13 14 15 16 下一页 » 最后页 [ 显示模式: 摘要 | 列表 ]