手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

如何避免网站维护时被搜索引擎“误解” (一)

一般我们在网站维护的时候都会设定一个页面告诉用户,正在维护中,但是怎么样的使用最方便呢?
如果是框架程序的话,最方便了.因为.htaccess中都是指向到 index.php的.在index.php中header跳转一下就OK了

但,究竟怎样写比较好,header怎么写呢?

PHP代码
  1. <?php  
  2. // 301 Moved Permanently  
  3. header("Location: /foo.php",TRUE,301);  
  4.   
  5. // 302 Found  
  6. header("Location: /foo.php",TRUE,302);  
  7. header("Location: /foo.php");  
  8.   
  9. // 303 See Other  
  10. header("Location: /foo.php",TRUE,303);  
  11.   
  12. // 307 Temporary Redirect  
  13. header("Location: /foo.php",TRUE,307);  
  14. ?>  

看着,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...这是第一篇,介绍相对简单一点
还有第二篇,等 我转载好再说,哈哈

heredoc 的新用法?

事情的起因是这样的,神仙在群里贴了段代码:
.....
$lang = new Lang();
$code = <<<'EOF'
....
这是其中的两句,于是我对 <<<EOF上为什么加单引号感了兴趣,理论上,这是错误的用法。
神仙说,这是5.3的新用法,防止 定界符 中的变量被解析。

于是看了下手册,果然,<<<有了新的说法
<<<后面的字符串

  1. 如果是双引号:在PHP 5.3.0中还在Heredoc结构中用双引号来声明标志符【功能与原来一致】
  2. 如果是单引号:其实已经换了新名字,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

被QQ exmail的文档坑了下

尝试用qq的企业邮箱发一些邮件的时候,发现被文档坑了一小把(不是QQ的错,是我的错)

文档中说smtp发送的时候,得用SSL方式,同时端口为465或者587,于是我在phpmailer里设定了port = 465,于是直接发送。发现报错。老是说邮件地址有问题

1、检查phpmailer,发现。如果设置port为465,这时候其实是要设定SMTPSecure=ssl的
当设置了SMTPSecure='ssl'后,发送成功

2、其实,也可以不用SSL的,只要仍然使用 25端口发送就OK了,并非一定得用SSL来发送。。。

所以,通过QQ企业邮箱的smtp发送邮件就有两个方法 ,ssl和标准的smtp。
Over

Tags: 企业邮箱

yii with的排序

Yii在自己的AR中实现了relations,于是我们可以利用relations实现一些left join或者其他join能做的事情,常见的大家都懂,什么 belongs_to,has_one,has_many,many_to_many之类的
但用的最多的,一般都是has_one,has_many,毕竟查关联数据这个最方便了。

于是我们就会Table::model()->with('a','b')->findAll($cdbcriteria);
这个时候,如果需要用到a或b的排序,就有点痛苦,直接在$cdbcriteria中写的话,往往会报字段不存在,因此可以尝试这样
1、直接在relations中,在写成a时,直接加入'order'=>'id DESC'之类的内容
2、在with()中写: with(array('a'=>array('order'=>'id DESC'),'b'))

这样是不是就很方便了呢?
当然上面的代码是通过:

PHP代码
  1. public function with()  
  2. {  
  3.     if(func_num_args()>0)  
  4.     {  
  5.         $with=func_get_args();  
  6.         if(is_array($with[0]))  // the parameter is given as an array  
  7.             $with=$with[0];  
  8.         if(!empty($with))  
  9.             $this->getDbCriteria()->mergeWith(array('with'=>$with));  
  10.     }  
  11.     return $this;  
  12. }  

看了这段代码就基本上了解用法了,手册里也说了:
Specifies which related objects should be eagerly loaded. This method takes variable number of parameters. Each parameter specifies the name of a relation or child-relation. For example,

// find all posts together with their author and comments
Post::model()->with('author','comments')->findAll();
// find all posts together with their author and the author's profile
Post::model()->with('author','author.profile')->findAll();
The relations should be declared in relations().

By default, the options specified in relations() will be used to do relational query. In order to customize the options on the fly, we should pass an array parameter to the with() method. The array keys are relation names, and the array values are the corresponding query options. For example,
Post::model()->with(array(
    'author'=>array('select'=>'id, name'),
    'comments'=>array('condition'=>'approved=1', 'order'=>'create_time'),
))->findAll();
所以,有时候看看手册还是很重要的。

Tags: yii, with, cdbcriteria

Typecho Slug 拼音插件

用法很方便,功能也很简单,如果你的typecho不是以slug的方式显示的,那就没有意义了
如果以slug的方式显示,一般是自己主动写成英文的话,那也没有意义,我这个只是好玩罢了。

自动将标题转成拼音。
在编辑和保存的时候,会自动将它转成slug。如果slug为空,或者为数字(可能是文章ID)的情况下,自动转成拼音

因为,该插件不需要你改程序,也没有配置文件 ,所以就不多介绍了。

下载地址:[attach=923]

---update: 2020-04-14

怎么不解析attach信息了?

Tags: typecho