看了一下5.5的更新。。原来5.5开始就放弃windows 2003了。那些想在2003上跑应用的人,要哭了
http://www.php.net/manual/en/migration55.new-features.php
Windows XP and 2003 support dropped
Support for Windows XP and 2003 has been dropped. Windows builds of PHP now require Windows Vista or newer.
添加了finally....
try-catch blocks now support a finally block for code that should be run regardless of whether an exception has been thrown or not.
foreach的时候,可以list了。不需要再$val[0]
The foreach control structure now supports unpacking nested arrays into separate variables via the list() construct.
empty() supports arbitrary expressions
Passing an arbitrary expression instead of a variable to empty() is now supported.
array and string literal dereferencing
Array and string literals can now be dereferenced directly to access individual elements and characters:
PHP代码
- <?php
- echo 'Array dereferencing: ';
- echo [1, 2, 3][0];
- echo "\n";
-
- echo 'String dereferencing: ';
- echo 'PHP'[0];
- echo "\n";
- ?>
还有一个:
New password hashing API
A new password hashing API that makes it easier to securely hash and manage passwords using the same underlying library as crypt() in PHP has been added. See the documentation for password_hash() for more detail.
额。难道以后的wordpress也可以直接用这个了?
笔记 ,phpmyadmin要管理多个数据库时,其实很方便 ,在config.inc.php里加入一行:
$cfg['AllowArbitraryServer'] = 1;
不过说实话,我现在都是直接用navicat的。navicat 确实方便。一般情况下,我都是用ntunnel.php来管理。自己用的时候,我是用shell方式的,方便轻松
其实sqlog其实也可以,也支持http方式 的连接。
不过,有时候没办法,还是得使用phpmyadmin所以,做了这个笔记 。
顺便说一下navicat,我的左侧管理已经满了。。。。
昨天写了一个用header处理跳转,防止被搜索引擎误解的方法,其实就是301和302的关系.今天要转载一篇相对处理方法较多,且更实用的方法
原文来自:http://www.eamonning.com/blog.php?id=309
回到主题,有些网站常常因为需要进行常规维护或者因为某些原因(黑客)而不得不临时关闭,如果用户或者搜索引擎在这个时候访问临时关闭的网站,这将会影响网站的声誉或者排名流量。因此做好网站临时关闭的一些工作。
下面我将教大家怎么处理好网站临时关闭时跟用户还有搜索引擎的一些三角关系!
让用户与蜘蛛知道网站正在维护
当一家餐厅的老板,因为某些原因不得不临时关闭餐厅,老板会在餐厅门口贴公告,告知顾客餐厅临时关闭以及恢复营业的时间,这样顾客就不会误以为 餐厅倒闭,而不再次光临。同样的道理也可以套用在网站上,如果一个网站因为某些原因必须临时关闭,那么站长有责任通知蜘蛛还有用户,并告知恢复的时间,这 样蜘蛛还有用户才会再次访问网站,而不是误以为网站已经永久关闭。
网络的世界比较复杂,因此告知用户与蜘蛛是一名艺术,下面我们列举两个站长朋友经常犯的错误。
错误一,网站关闭没有告知
有些网站没有做好告知工作,随随便便就把网站关闭,导致用户以及蜘蛛访问时,显示404页面。

最糟的情况是,用户以及蜘蛛会误以为网站已经倒闭,而不会再次光临,就跟餐厅一样,关门,没有贴公告,同样的其顾客会以为餐厅已经倒闭了,下次不会再来了。
错误二,单一页面告知
有些站长则会制作一个单一页面,告知用户网站正在维护,并将全站其他的页面都指向这一页面。
这也是非常不智的行为,因为这样做只告知了用户,而没有通知蜘蛛,这样蜘蛛只会以为其他页面被删除了,只剩下这个页面。
我们先复习下几个最常碰到的HTTP状态码
- 200 - 服务器成功返回网页
- 301- 请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。
- 302 -请求的网页临时移动到新位置。搜索引擎索引中保存原来的URL。
- 404 - 请求的网页不存在
- 503 - 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
如何告知用户以及蜘蛛网站正在维护?
如果我们网站临时关闭,必须告知用户以及蜘蛛,让用户跟蜘蛛知道网站只是临时关闭,而不是永久关闭,这样用户跟蜘蛛就会隔断时间再次访问网站,具体做法是创建一个返回503状态的文件。
1. 创建一个503.php的文件,并把它放到服务器的根目录
PHP代码
- <?php
-
- header("HTTP/1.1 503 Service Temporarily Unavailable");
- header("Status: 503 Service Temporarily Unavailable");
- header('Retry-After: Sat, 8 Oct 2012 18:27:00 GMT");
- ?>
-
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>网站名称</title>
- </head>
- <body>
- <h1>网站名称</h1>
- <p>网站维护中</p>
- <p>将于2012/10/8恢复</p>
- </body>
- </html>
第一二句告知搜索蜘蛛网站处理暂时关闭状态,第三句告知搜索蜘蛛,网站将于2012年10月8日18:27从新开放,注意:这里用的是格林威治标准时间。
但是光放一个503信息到服务器里还是不够的,蜘蛛会访问网站不同的页面,因此我们必须引导所有的蜘蛛到503.php这个页面,让蜘蛛知道,整个网站处于临时关闭中,而不是个别页面。
如果站长使用的是Apache/Linux服务器,我们只需在.htaccess设置一下,引导所有的蜘蛛到505.php页面,这里我们要使用302跳转,注意:在这里千万不要使用301跳转,因为301是永久的,在这种情况下会毁灭掉整个网站。
2.引导蜘蛛到503.php
将下面这段代码保存到.htaccess文件,并上传到网站根目录
XML/HTML代码
- Options +FollowSymLinks
- RewriteEngine On
- RewriteBase /
- RewriteCond %{REMOTE_ADDR} !^00.00.00..00
- RewriteCond %{REQUEST_URI}!^/503.php [NC]
- RewriteRule ,* /503.php [R,L]
最后一行的[R, 告知蜘蛛,这个是302跳转,属于暂时的。
这样我们就完成了网站临时关闭的部署,可以放心关站了!
---EOF---
上述的方法其实会更实用一些,关于nginx,就不仔细写了nginx其实还更方便呢...
一般我们在网站维护的时候都会设定一个页面告诉用户,正在维护中,但是怎么样的使用最方便呢?
如果是框架程序的话,最方便了.因为.htaccess中都是指向到 index.php的.在index.php中header跳转一下就OK了
但,究竟怎样写比较好,header怎么写呢?
PHP代码
- <?php
-
- header("Location: /foo.php",TRUE,301);
-
-
- header("Location: /foo.php",TRUE,302);
- header("Location: /foo.php");
-
-
- header("Location: /foo.php",TRUE,303);
-
-
- header("Location: /foo.php",TRUE,307);
- ?>
看着,header是有第三个参数的,为什么要指定参数呢?
The HTTP status code changes the way browsers and robots handle redirects, so if you are using header(Location:) it's a good idea to set the status code at the same time. Browsers typically re-request a 307 page every time, cache a 302 page for the session, and cache a 301 page for longer, or even indefinitely. Search engines typically transfer "page rank" to the new location for 301 redirects, but not for 302, 303 or 307. If the status code is not specified, header('Location:') defaults to 302.
当然,一般情况下,都是302...这是第一篇,介绍相对简单一点
还有第二篇,等 我转载好再说,哈哈
事情的起因是这样的,神仙在群里贴了段代码:
.....
$lang = new Lang();
$code = <<<'EOF'
....
这是其中的两句,于是我对 <<<EOF上为什么加单引号感了兴趣,理论上,这是错误的用法。
神仙说,这是5.3的新用法,防止 定界符 中的变量被解析。
于是看了下手册,果然,<<<有了新的说法
<<<后面的字符串
- 如果是双引号:在PHP 5.3.0中还在Heredoc结构中用双引号来声明标志符【功能与原来一致】
- 如果是单引号:其实已经换了新名字,nowdoc,
就象heredoc结构类似于双引号字符串,Nowdoc结构是类似于单引号字符串的。Nowdoc结构很象heredoc结构,但是 nowdoc不进行解析操作 。 这种结构很适合用在不需要进行转义的PHP代码和其它大段文本。与SGML的 <![CDATA[ ]]> 结构是用来声明大段的不用解析的文本类似,nowdoc结构也有相同的特征。
一个nowdoc结构也用和heredocs结构一样的标记 <<<, 但是跟在后面的标志符要用 单引号括起来,就像<<<'EOT'这样。heredocs结构的所有规则也同样适用于nowdoc结 构,尤其是结束标志符的规则。
不象 heredocs结构,nowdocs结构可以用在任意的静态数据环境中,最典型的示例是用来初始化类的属性或常量。
官方解释:http://www.php.net/manual/zh/language.types.string.php
如果你觉得翻译的不好,还是看英文版 吧:http://www.php.net/manual/en/language.types.string.php