[原创]我写的最短的微博程序(PHP)
May/16th 2010

写了个微博程序。基本需求是:1.无乱码(最好UTF-8)。 2.有输入框可以发布新信息。3.提交后马上可以看到新发的内容。4.必须使用POST方式提交。5.信息后面要有时间标记。6.不能发布任何HTML标签。

<?php
header("content-type:text/html; charset=utf-8");
$a=@file_get_contents(l);
($p=$_POST[s])&&file_put_contents(l,$a='<hr>'.htmlspecialchars($p).date(' Y-m-d H:i').$a);
echo '<form method=post><input name=s></form>'.$a;
?>

运行效果如图:

注释一下:

<?php
header("content-type:text/html; charset=utf-8"); //发送utf-8声明
/*
* 从名叫l的文件里面读取数据。
* php里面的常量如果没有先声明,那么默认值是等于常量本身的那个字符串。
* 也就是说没有声明过的l=="l" , ABCD == "ABCD"
*/
$a=@file_get_contents(l); 
/*
* a && b; 貌似是php特有的语法结构。 大概意思是 先执行a,
* 然后判断a是否为true,如果是,那么继续执行b
*
* ($p=$_POST[s]) 是先把$_POST[s]的值赋给$p,
* 然后括号的值为$p转换为布尔型。也就是说,只要$p不是空字符串,
* 或者false,或者0,或者null。就会继续执行后面的语句
* 
* 后面操作是把刚刚读出来的$a的前面加上新的数据,然后写入l文件
*/
($p=$_POST[s])&&file_put_contents(l,$a='<hr>'.htmlspecialchars($p).date(' Y-m-d H:i').$a);
/*
* 显示html语句,用于构造一个可以post提交的输入框,没有提交按钮,直接按回车提交。
* 由于页面是用utf-8编码,所以提交的数据也是utf-8编码
*/
echo '<form method=post><input name=s></form>'.$a;//#注释2
?>

 

 

大家有什么看法?



9045 read 26 comment(s)
#1
宇博   2010年05月16号 11:59       回复
不知道是否兼容火狐,当时测试当文本框在form内,即使回车也不会提交。也有可能火狐改进了。
确实很短...不过每次提交都要读比以前更多的数据...哈哈..
突然发现邮箱里多了N多回复提示....
#2
宇博   2010年05月16号 12:17       回复
不过很短,兼容问题肯定不能考虑
感觉可以做手机围脖程序了...
#3
longbill   2010年05月16号 12:25       回复
@宇博 兼容性我在mac下面测试了safari ,firefox另外还有ie6都没问题
#4
宇博   2010年05月16号 12:42       回复
看到了久违的Jquery,难道这个染色代码是EndCMS带的吗
#5
longbill   2010年05月16号 13:26       回复
@宇博 
代码高亮是jquery的一个插件做的。
把pre标签里面的东西高亮~~
#6
SLJ   2010年05月18号 09:09       回复
很好很强大,那么精简
#7
hplonline   2010年05月20号 13:07       回复
error4
#8
hplonline   2010年05月20号 13:07       回复
不懂php唉,。。
----
10    * a && b; 貌似是php特有的语法结构。 大概意思是 先执行a,
11    * 然后判断a是否为true,如果是,那么继续执行b
----
这个好像很多语言都有的嘛。C的逻辑表达式本身有短路求值的特性,所以用&&连起来可以达到这种效果。类似的还有||,当第一个失败的时候执行后面的。dos批处理文件和linux的脚本里面也有对应的用法。
#9
longbill   2010年05月20号 13:11       回复
@hplonline PHP里面可以用&&操作符,不能用|| 操作符,而js里面可以用||而不能用&&。。。
#10
longbill   2010年05月20号 13:15       回复
@hplonline 出现了error4 ? 我这个评论做了很多验证,必须要开启cookie才可以发评论的。你看这个页面的cookie里面应该有一个叫PHPSESSSID的md5值。
#11
hplonline   2010年05月20号 18:40       回复
@longbill 是有这么个东西。我最先点的好几次都是error4,最后刷新页面两次,就留进去了。
#12
风色   2010年05月26号 17:40       回复
php支持&&也支持||

a && b:
a成立时,才执行b

a || b:
a不成立时,才执行b

其实这个和用于条件判断(if)中原理是一样的,在条件判断中,也会遵循这样的规则
#13
jadesoul   2010年05月27号 11:40       回复
博主很强悍
#14
longbill   2010年05月27号 14:17       回复
@风色  哦,我又测试了下。果然php和js都支持&&和 ||, 看来是我以前的测试有问题。
#15
Dc   2010年05月28号 16:53       回复
07年去四川时为了用手机快捷记录,也写了个类似的小东西。:)
#16
昌江社区   2010年05月29号 14:18       回复
<input type="submit" value="记录">   添加按钮!免得手机怎么回车呢!呵呵 不错,longbill,你的聊天程序我提出了解决过夜的问题,你写两句代码吧!就是有人打开聊天界面时,都自动发送欢迎语,而不是只发送第一个人!
#17
昌江社区   2010年05月29号 14:21       回复
加了按钮,速度快些,你们测试一下!时间差8小时!这个改改
#18
命运的陶醉   2010年06月25号 13:26       回复
Notice: Use of undefined constant s - assumed 's' in C:\Program Files\PHPnow\htdocs\weibo.php on line 4Notice: Use of undefined constant l - assumed 'l' in C:\Program Files\PHPnow\htdocs\weibo.php on line 4这是什么问题?
#19
jason   2010年06月26号 11:25       回复
好短好微薄啊。。
#20
hinadong   2010年08月23号 12:13       回复
date_default_timezone_set('Asia/Shanghai'); 设设时区。
#21
vodo   2010年08月23号 21:24       回复
http://www.myvodo.com

迷你微博,采用了您的设计的哦,谢谢咯
#22
longbill   2010年08月24号 01:01       回复
@hinadong 呵呵。的确。有的服务器没有设置默认时区的时候会报warning...
#23
longbill   2010年08月24号 01:03       回复
@昌江社区 按照你楼下下@hinadong 的方法设置一下默认时区就可以了。
#24
longbill   2010年08月24号 01:04       回复
@命运的陶醉 这个是你的php报错打开了notice级别。请修改php.ini去掉notice或者在程序开始加上一句话 error_reporting(E_ALL ^ E_NOTICE);
#25
hit9   2011年09月30号 16:27       回复
实用性很小.不过基于最小俩字,还是很好玩的。1充当了数据库
#26
Dianso   2012年05月23号 04:55       回复
好东西啊,收藏
添加新的评论
称呼:*
邮件:*
网站:
内容:

Copyright © Longbill 2008-2024 , Designed by EndTo , Powered by EndCMS