Archive for the ‘ PHP ’ Category

爱的最高境界

有一天,女人问男人“你说,爱的最高境界是什么?”
  
男人想了想,说:“是生与死吧~!
  
你想啊~!一个人可以为另一个人去死
  
舍去生命中最重要的一却,还不是爱的最高境界吗?”

女人点了点头,又摇了摇头
  
开始时她也是这么认为的
  
因为许多的爱情最壮烈的时候总是会和生与死联系在一起的
  
那些流传千古的爱情无一不是生生死死,总之悲情者居多
  
可是,更多的俗人之间的爱情却只有平常的爱与恨
  
只有平常的悲伤与快乐
  
“那你说是什么?”男人问
  
女人笑了,“是习惯,当你习惯了一个人生活中的习惯
  
你就真的爱上他了

爱情是一个人对另一个人习惯的认同
  
爱到最高境界就是认同了他的习惯
  
一个女人习惯了一个男人的鼾声
  
从不适应到习惯再到没有他的鼾声就睡不着觉,这就是爱
  
一个男人习惯了一个女人的任性、撒娇,甚至无理取闹、无事生非,这就是爱
  
一个人会为了另一个人去改变、去迁就,这就是爱

爱情的哲学有时候就是这么简单,就在生活的点滴里
  
你如果始终不能适应一个人,适应他的所有习惯,那只说明你没有爱他
  
或者说你还未到爱的境界,因为爱就在这些细节里
  
当你已经习惯你的爱人所有习惯
  
比如他衣服的烟草味,比如他干净的衬衣,比如他半夜起来看足球
  
如果这些你都已习惯,那么不要再问爱是什么这样愚蠢的话题了

爱,有时候就是这么简单、朴素
  
它像一杯在我们身边的白开水
  
伸手可及,喝了,让我们觉得凉爽舒服”

Google pagerank引发的安全问题

今天浏览一个国外的SEO网站,里面有一个功能,就是插入一段代码,就可以在你网页上显示你网页的PageRank值,这个功能很好啊,可是请大家仔细看看下面的代码。

<a href=”http://www.pagerank.net/” title=”Search Engine Optimization” target=”_blank”><img src=”http://www.pagerank.net/pagerank.gif” alt=”Search Engine Optimization” style=”border: 0;”></a>

你会发现这段代码里没有调用任何的程序文件,分析一下感觉只有那个pagerank.gif可以做手脚了。尝试着将gif改成php,例如 http://www.pagerank.net/pagerank.php,运行成功。用源码查询器看,确实接收到的是一个gif图片。
问题是:为什么调用一个图片可以调用程序呢?
解决思路如下:

引用
1.apache设定该网站根目录下的gif文件重定向到同目录下的php程序;
2.用php程序生成gif图片输出。

老外这样做,可能是避免很多人调用一个外站程序感觉不安全,所以做成调用一个伪图片,以增加用户安全感,这种方法值得我们借鉴。

Still loving you

Still Loving You

作者:jino-kang
歌曲名称:Still loving you

Love, only love! 爱,只有爱!
Can bring back your love someday. 可以在某天带回你的爱情。
I will be there, I will be there! 我将在那里,我将在那里!
If we’d go again. 如果我们必须再走一遍。
All the way from the start. 我们以前曾走过的所有道路。
I would try to change. 我将会去尽力改变。
The things that killed our love. 那些毁掉了你我间的爱情的事物。
Yes, I’ve hurt your pride,and I know. 是的,我曾伤害了你的尊严,我明白。
What you’ve been through. 你曾经经历的一切。
You should give me a chance. 你应该给我一个机会
This can’t be the end. 这一切不应该结束。
I’m still loving you! 我依旧爱你!

转载:老婆的最后一条短信

珍惜自己的所爱

世界上没有後悔药

妻子是个小尾巴,我走到哪里她都要问到哪里。我厌烦,她却乐此不疲。可是,这个小尾巴却在那个下着大雨的深夜永远消失了……

我的心情非常难过,内心充满了内疚和痛楚,我无法原谅自己的过错。

结婚那天,老婆用买戒指的钱给我买了一款手机。那天夜里,我们两人在被窝里一遍遍地调试着手机的响铃。我们觉得,生活就像这铃声,响亮、悦耳,充满着憧 憬和希望。从那天开始,我常常接到她的电话:“老公,下班了买点菜回家。”“老公,我想你,我爱你。”“老公,晚上一起去妈妈家吃饭。”我的心里十分温 暖。有一次,我忘了给手机充电,又恰好陪领导到基层,应酬到半夜才回到家,推开房门一看,我发现老婆早已哭红了眼睛。原来从我下班时间开始,她每隔一刻钟 就打一次电话,我都不在服务区。老婆更加着急,总以为发生了什么意外,后来每隔十分钟打一次,直到我推开家门,她刚把话筒放下。我对老婆的小题大做不以为 然:“我又不是小孩子,还能出什么事情?”老婆却说有一种预感,觉得我不接电话就不会回来了,我拍拍老婆的脑袋,笑了:“傻瓜!”不过,从此以后我一直没 有忘记及时给手机充电。

后来我升了职,有了钱,手机换了好几个。突然有一天,我想起欠着老婆的那枚戒指,便兴冲冲地拉她去商厦。可是她又犹豫了,说:“白金钻戒套在手指上有什么用啊?给我买个手机好吗?我可以经常跟你联系。”于是我就给她买了一个手机。

那天,我们一个在卧室,一个在客厅,互相发着短信息,玩得高兴极了。

一天夜里,我和同事到朋友家玩牌,正玩在兴头上,老婆打来了电话:“你在哪里?怎么还不回家?”“我在同事家里玩牌。”“你什么时候回来?”“呆会儿 吧。”输了赢,赢了输,老婆的电话打了一次又一次。外面下起了大雨,老婆的电话又响了:“你究竟在哪里?在干什么?快回来!”“没告诉你吗?我在同事家 玩,下这么大的雨我怎么回去!”“那你告诉我你在什么地方,我来接你!”“不用了!”一起打牌的朋友都嘲笑我“妻管严”,一气之下,我把手机关了。

天亮了,我输得两手空空,朋友用车子把我送回家,不料家门紧锁,老婆不在家。就在这时,电话响了,是岳母打来的,电话那头哭着说:她深夜冒着雨出来,骑着自行车,带着雨伞去我同事家找,找了一家又一家,路上出了车祸,再也没有醒来。

我打开手机,只见上面有一条未读留言:“你忘记了吗?今天是我们的结婚周年纪念曰呀!我去找你了,别乱跑,我带着伞!”她走在找我的路上,永远不会再醒来了。我泪流满面,一遍遍看着这条短信息,我觉得那一个晚上我输了整个世界。

老婆去世已经3个月,可我仍然无法从噩梦中醒来,我不想工作,整曰消沉萎靡,并且一次次想到了陪她而去……

转贴此文章的目的,就是要大家都学会珍惜!

不要让爱你的人受到一丝一毫的伤害!

不要等到失去了,才痛不欲生!

Zend Framework Zend_Validate_Date 验证方法

默认格式为 月/日/年 m/d/Y
$v = new Zend_Validate_Date();

自订日期格式
$v = new Zend_Validate_Date('d-F-Y');

自订日期格式+起始日期
$v = new Zend_Validate_Date('d-F-Y', '06-September-2007');

自订日期格式+截止日期
$v = new Zend_Validate_Date('d-F-Y', null, '06-September-2007');

Instantiating the validator with a custom date format and a start date of whatever day it is
$v = new Zend_Validate_Date('d-F-Y', Zend_Validate_Date::TODAY);

自订日期格式+起始日期+截止日期
$v = new Zend_Validate_Date('M-d-Y', 'Sep-01-2007', 'Sep-30-2007');

中国时间写法

$v = new Zend_Validate_Date('Y-m-d');

$v = new Zend_Validate_Date('Y-m-d', '2007-09-23');

$v = new Zend_Validate_Date('Y-m-d', '2007-09-23', '2008-09-23');

判断方法:

if($v->isValid($your_date))

论坚持

世界上没有任何事可以替代坚持。
才能不可以,无所作为的人比比皆是;
天赋不可以,碌碌无为的天才人尽皆知;
教育不可以,受过良好教育的没落者随处可见。

只有坚持和决心才是无所不能的!

圣经中关于两性关系的律

圣经对两性关系有全面和深刻的分析,不仅道出了两性关系的律,还说出为什么要遵守这样的律,如果违背了这样的律会有什么样的后果。上帝从不勉强基督徒做什么,而是有理有据的进行说服,其中句句话语都带着智慧和能力,同时对遵守律的人也有极大的应许和祝福。
首先是婚姻中夫妻正常两性关系。在《创世纪》中,神说,那人独居不好,我要为他造一个配偶帮助他。2:24-25说:人要离开父母,与妻子联合,二人成为 一体。并不感到羞耻。上帝为人类设立了婚姻,是给人类最美好的祝福。给了人类情感,让夫妻彼此相爱,不离不弃。圣经也清楚的表明了夫妻在婚姻中应该扮演的 不同的角色。你们做丈夫的要做妻子的头,做妻子的要在基督里顺服丈夫。表明了夫妻相处的律:丈夫要在家里扮演头的角色,要爱护妻子,保护妻子,让妻子过幸 福的生活:做妻子的扮演帮助者,顺服者的角色。因为妻子是丈夫身上的肋骨,是他骨中的骨,肉中的肉。在基督徒的夫妻关系中,顺服是一个很重要的功课,需要 不断的学习和操练。很多有问题的家庭是因为夫妻都想在家里做头,有争竞的灵在里面,如果理解了上帝设立婚姻的目的,遵守上帝规定的在婚姻中的律,家庭必然 是和睦的。如果丈夫的决定明显错误,甚至违背了圣经,该怎么做呢?最智慧的办法是二人在爱里相互交通,给丈夫提出中肯的意见建议,并不断为他祷告。圣经中 说上帝造夏娃不是为了对亚当发号施令,是为了帮助他。又说二人是不可分离的;神配合的婚姻人不可分开。这是上帝的应许和祝福。但在现实的婚姻生活中,基督 徒的家庭也存在一些问题,最常见的是经济问题,信仰生命是否同步以及性和谐的问题。这些问题通过一些婚姻家庭辅导,遵循上帝的律,在基督的爱里可以得到解 决。而非基督徒常常扭曲婚姻中的律,比如妻子常常愿意做头,妻子是女强人,丈夫的能力得不到发挥,妻子越来越强,丈夫就变的越来越弱,男人扮演女人的角 色,女人扮演男人的角色,家庭关系扭曲和不正常,对后代的身心健康发展也会有一定影响。现代婚姻的稳固性越来越差,离婚率提高,导致很多年轻人迟迟不愿进 入婚姻,或对结婚离婚的态度比较轻率。这些是人们违背上帝对婚姻的律的后果。

圣经中,尤其在新约中多次提到上帝设立一夫一妻的婚姻制度,和夫妻间的彼此忠诚的律,这也是神对稳固婚姻祝福的奥秘所在。在心理咨询中有一个印象很深的案 例:一高中男孩因为看到自己的父亲与别的女人在一起,心理而受到伤害,用同时和四个女孩谈朋友来进行报复,最后弄得不可收拾,挨了女孩家人的打,对孩子的 前途造成了影响。所以做父母的如果不注意遵守一夫一妻的原则,不仅是几个成年人之间的问题,还会对孩子的心理造成很严重的影响。父母给孩子最好的礼物其实 就是夫妻间的真诚相爱。圣经中有一个典型的大卫的例子,很多传道人都用来引用。大卫用自己的权利夺取别人的妻子,并设计杀害了女人的丈夫。尽管他是上帝亲 自膏立的王,并恒切祷告上帝赦免他的罪,但是咒诅照样临到他儿子的身上,上帝说“刀剑必不离他的家”,他的儿子一个早亡,还有两个儿子互相残杀。从中可以 看到上帝的公义和信实。按圣经的话说,对婚姻的不忠不仅是对自己的一个咒诅,还会对后代造成咒诅。而约瑟则不同。因为他敬畏上帝,面对女主人的纠缠,面对 试探,他回答:我怎敢做这大恶得罪上帝呢?虽然受了冤枉而下监,却因祸得福,由管家升为宰相。所以圣经说约瑟是个义人,子孙后代都蒙大福。

圣经还对同性恋,乱伦有明确的说法。罗马书1:26-27说的很清楚,同性恋违背了上帝造男造女的初衷,和男女相处的律:男不能无女,女不能无男,所以“ 他们就在自己身上受这妄为当的的报应”。圣经甚至记载了一个乱伦的事件。罗得的女儿为了给他家留后,在罗得喝醉后从他生了儿子,起名摩押,后代称摩押人, 摩押地因为这个原因而受到咒诅。《路得记》中有记载,路得的公公一家由受祝福的地——伯利恒迁往摩押地——受咒诅之地,导致10年之间家里三个男人都相继去世,留下三个寡妇。说明上帝的咒诅是多么可怕。

所以上帝创造的两性关系的律要谨守,不能违背,要避免可能遇到试探的环境,这样上帝就会大大祝福基督徒的家庭和他们的后裔。

PHP一维、二维以及多维的数组排序方法

1、一维数组排序

a、sort–本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。注:本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序

<?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
    echo "fruits[".$key."] = " . $val . "\n";
}
?>

上例将输出:
# fruits[0] = apple
# fruits[1] = banana
# fruits[2] = lemon
# fruits[3] = orange

b、asort — 对数组进行排序并保持索引关系。本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

上例将输出:
a = orange
d = lemon
b = banana
c = apple

2、多维数组排序

<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>

本例中将把 volume 降序排列,把 edition 升序排列

现在有了包含有行的数组,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序

<?php
// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>

数据集合现在排好序了,结果如下:
volume | edition
——-+——–
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7

你或许尚未了解PHP的那10件事情

1.使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。

2.在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于 checkdnsrr(),用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 “joeuser@wwwphp.net” 而不是 “joeuser@php.net” 的家伙们,这个方法可以很方便的抓住他们。

3.如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。一个很好的功能就是你可以使用预处理语句,如果你在维护一个数据库密集型站点,这个功能能够加快查询速度。一些评估分数。

4.学会爱上三元运算符。

5.如果你在项目中感觉到有可复用的部分,在你写下一行代码前先看看 PEAR 中是否已经有了。很多 PHP 程序员都知道 PEAR 是一个很好的资源库,虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段,这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的,你总能找到帮你节省时间的 PEAR 包。(参见 PECL)

6.用 highlight_file() 来自动的打印出格式化的很漂亮的源代码。如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话,这个函数用起来非常的顺手。当然了,要小心不要意外的泄露出你的数据库连接信息和密码等。

7.使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。]在理想情况下,发布服务器应该在 php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php.ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。

8.在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。这个 PHP 内置函数使用 gzip 算法,可以压缩普通文本达 90%。在我每次要读写 BLOB 类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。

9.通过“引用”传递参数的方法从一个函数中得到多个返回值。就像三元运算符一样,大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下,从一个函数里返回多个值?”答案就是在变量前加上一个 “&” 符号,通过“引用”传递而非“值”传递。

10.完全理解“魔术引号”和 SQL 注入的危险性。我希望阅读到这里的开发者都已经很对 SQL 注入和了解了。不过我还是把这条列在这里,是因为这个确实有点难以理解。如果你还没有听说过这种说法,那么把今天剩下的时间都用来 Google、阅读吧。

Zend Framework 页面布局

Zend Framework 的页面布局模块——Zend_Layout——既可以跟 MVC 一起使用,也可以单独使用。本文只讨论与 MVC 一起使用的情况。

1. 布局脚本

在 application/views 下创建一个 layouts 的文件夹。主布局脚本 layout.phtml 代码如下:

<?php echo $this->doctype(‘XHTML1_STRICT’) ?>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<?php echo $this->headTitle() ?>
<?php
$this->headLink()->appendStylesheet(“/styles/main.css”);
// add more links …
?>
<?php echo $this->headLink() ?>
</head>
<body>
<div id=”header”>
<?php echo $this->partial(‘header.phtml’) ?>
</div>
<table>
<tr>
<td valign=top>
<div id=”leftcolumn”>
<?php echo $this->partial(‘leftcolumn.phtml’) ?>
</div>
</td>
<td valign=top>
<div id=”content”>
<?php echo $this->layout()->content ?>
</div>
</td>
</tr>
</table>
<div id=”footer”>
<?php echo $this->partial(‘footer.phtml’) ?>
</div>
</body>
</html>

除了 layout.phtml 之外,还需要编写 header.phtml,leftcolumn.phtml,footer.phtml,以及 main.css 等文件。

Zend Framework 的文档中用一个视图表示了页面布局的应用。

2. 设置页面布局

在 MVC 下设置页面布局非常简单,编辑 html/index.php,加入下面两行代码:

/** Setup layout */
require_once ‘Zend/Layout.php’;
Zend_Layout::startMvc($rootPath . ‘/application/views/layouts’);

注意:在启动页面布局后,要调整已有的各个页面,把不需要的 html 元素,如<header> <title> <body> 等去掉。另外,可以通过 $this->headTitle() 来设置页面的题头。

改变页面的布局也很简单,只需在控制器中用下面的代码即可:

$this->_helper->layout->setLayout(‘new_layout’);

如果一个控制器所有动作都使用同一个页面布局,可以通过控制器的初始化函数来设置:

public function init() {
parent::init();

$this->_helper->layout->setLayout(‘new_layout’);
}