paperen
作者詳細

Hi,我是paperen 以下是我发表的文章

109


稍微高级一点的SQL注入
14年前
  • 3
  • 0

稍微高级一点的SQL注入

正如之前paperen的 你是这样处理来自$_GET的数据吗 里面说的,还有很久之前的 小心sql注入漏洞 ,都是涉及到SQL注入的一些东西,其实您如果对SQL注入有兴趣的话不妨点击paperen友情链接中的习科论坛去那看看,里面很多帖子都是有关入侵的,而paperen在这个组织不知不觉间也都快4年了。废话也就不多说了,直接入话题。

还记得在“你是这样处理来自$_GET的数据吗 ”里面写到的那个SQL,

$sql = 'select * from goods where id='.$id;

不对传入来的数据进行任何过滤甚至不用单引号抱起来会导致的问题在那篇文章中已经说的比较明确了,如果您能猜到数据库其他表的话还能查到其他表的内容,而这次paperen想说一些使用这个漏洞更高级的一个技巧。

阅读更多
GooMa[纯属恶搞]
14年前
  • 2
  • 0

GooMa[纯属恶搞]

前几天paperen跟一位也是从事php行业的朋友聊天,之后他向paperen展示了他做的一个物质系统,那数据确实蛮多的,远程过去看他玩了会,paperen就看中了那个搜索提示功能,咦!当输入中文的时候也可以有提示哇~~从而又想起前前几天一位从事java的朋友问paperen一个中文索引的问题,咦!当时不就是想到一个如何对姓名排序的问题,就像paperen部索爱W550C的电话簿中输入L会找到李,梁的姓,当时看到那个搜索提示觉得很神奇(虽然google的时候也经常是有了……但是你总不能给google发个邮件问问你首页那个搜索提示是咋整的捏吧),paperen一直是以为用数据库来做这个功能,但是那位朋友说了一个神奇的功能“中文转拼音”。wow~~这次赚了,所以就有了这个“姑妈”啦。

中文转拼音的源代码去google一下就大把,这里随便放个链接,猛点here

good!总而言之,是一堆比较长的代码,看不懂就当养养眼吧。下面放出demo地址-猛点here,压缩包地址-猛点here

阅读更多
uchome中提示框的调用
14年前
  • 1
  • 0

uchome中提示框的调用

众所周知的事情,discuz的产品是被广泛使用的,大部分论坛都是使用discuz的,而uchome也作为discuz在sns领域的产品被广泛使用,充分扩展了论坛用户的联系,从一个论坛变为一个社区。而且关键是源代码公开的,也就是说你可以看它的代码并根据自己需要加入自己的代码与二次开发,或者二次开发discuz的产品能被作为php程序员的基本技能之一。

最近,也不能说是最近了……近一个月……paperen研究了uchome,虽然也并没有把所有功能都看完,但是整体的模式还是明白了,有MVC的味道。paperen主要看了cp.php与space.php的代码,还有它是如何处理ajax的请求的。而paperen发的这篇博文的主题就是一个很简单ajax的运用。

20101007104820

阅读更多
传说中的SPL
14年前
  • 3
  • 2

传说中的SPL

SPL,PHP 标准库(Standard PHP Library),paperen之前在《PHP高级程序设计:模式、框架与测试》一书中就见过这个词,但是那时貌似没有认真对待它,而今天paperen再重新查阅了spl相关的资料,证实了一样东西“值得一试并值得加以融入到以前的编码模式中”。放在前面,本文并不是要详说spl中的具体东西,而是纯属个人吹水……

可能您也没怎么了解有关spl的东西,但是建议您不妨查阅一下资料,在google输入php spl您会得到一些很吸引人的标题,比如“PHP SPL,遗落的宝石”,确实值得您浏览一番滴~~

”spl从 PHP 5.0 起内置的组件和接口,并且从 PHP5.3 已逐渐的成熟“,但目前spl貌似没怎被开发使用。当然啦,在使用spl之前还是得需要一定的代码基础,因为大部分都是与类或者接口打交道的,如果您连什么叫类都不是太清楚的话,相信阅读手册会可能会有点困难,您至少需要有些少oop(Object Oriented Programming)面向对象的基础。

阅读更多
paperenblog源代码下载
14年前
  • 206
  • 189

paperenblog源代码下载

之前都有想过将paperen的博客开源,不过最近到了深圳空余时间就越来越少了,而今天终于提早来公司将paperen的博客发布了。

本博客是PHP的,默认数据库为mysql。因为最近paperen的在线时间实在太少了,住的地方还没办上网,所以目前没有安装程序,也就说需要手动配置一下,请大家按照以下步骤进行手动配置。

将paperenblog.rar解压后:

1.登录到您的数据库并新建一个数据库,如果之前有数据库的话可以跳过这步(比如您现在新建了一个叫paperenblog的数据库)

阅读更多
一个图片展览的效果
14年前
  • 2
  • 0

一个图片展览的效果

越来越觉得在网站开发中,前端的效果最不能忽视,包括用户体验与交互效果,当然还有CSS等等,刚看完了一本叫《Don't make me think》的书,说的是关于WEB用户体验等方面的东西,我们如何选择首页的说明文字,如何让浏览者不会在你的网站中迷失,如何让浏览者迅速了解你的网站,原来都是很有学问的~~总之也不简单,慢慢领会吧。

paperen也很久没发东西了,趁着有空,做了个图片展览的东西,还勉强过得去吧。

20100708005248

阅读更多
关于网站打开速度那点事
14年前
  • 2
  • 0

关于网站打开速度那点事

最近paperen我主要是在做新的博客,当然也会与宿友们打打机,所谓好好利用剩下的大学时间嘛~~而新博客也差不多了,前台基本可以了,现在正在修理后台。而在重修程序与整改的过程中确实也会有不少收获与进步,比如站点的框架,还有站点的性能上。?

而目前对于paperen而言,网站的性能主要是体现在站点打开速度上吧,固然这里说到的提升性能也只是程序上的方法,因为paperen对于服务器的配置真的接触得很少,什么图片与站点放在不同的服务器上,这种服务器上的部署paperen我就知道得很少了。所以如果您是想了解服务器方面提升站点性能知识的话,这篇东西应该就不是您所需的了,而此文章也不包括实际代码,或者以后会加上一些例子。?

首先paperen我想问问各位对于网站速度慢有什么看法?一个打开非常慢的网站是不会受欢迎的,苛刻地形容,如果你的网站在3秒后才能打开浏览者可能在2秒的时候就会叉掉,或者在1秒的时候就会叉掉……每个浏览者都喜欢快感,你不要让他们等得太久,也不要期望他们会去等待3秒,哪怕是1秒,paperen现在的博客在宿舍的环境中(805Kbps,有几个人在玩网游,有一个人在看视频)打开首页需要5,6秒。额……paperen我也不知道会不会曾经有浏览者会因为这个而停止访问我的博客,不过5,6秒这个也确实有点慢了,所以计划在新博客中将速度提升一下或者弥补一下。我们要知道让浏览者等待一秒是什么概念,更不用说让他们再等待多一秒了。?

阅读更多
一个上传文件的Class
14年前
  • 1
  • 0

一个上传文件的Class

今天终于算是可以来更新一下paperen的网站,嗯……因为写毕设论文写累了所以就发表一篇关于上传文件类的东东吧,这个类也是自己写的,不知道对大家有没有用,如果觉得可以就拿去用吧。不过在编码上面还是没做好,自己是在utf8的页面将数据进行提交的,所以生成的文件如果保持原来的中文名字的话在文件夹中看到就是乱码的名字,如果不想出现乱码的话需要进行一下编码的转换。?

代码地址?

随便说下这个类怎样调用吧,方法很简单?

阅读更多
岁月的童话
14年前
  • 205
  • 200

岁月的童话

其实是不想起这么深奥的一个标题的,但是此时此刻在听着罗嘉良的这首歌,记得这是以前翡翠台那部叫流金岁月电视剧的主题曲,paperen我最喜欢一开始口哨这段,听着这个旋律真的让我觉得岁月在流逝,还有想起了以前那些珍贵的时刻。?

今天确实点累了,好不容易才到了周末,本来下午也开始放假的,但是还是选择在公司度过,开发部的人员都在,他们都好勤奋,或者说做技术的都是这样吧。感觉paperen的工作已经开始慢慢上轨,这周也完成了几个分任务而目前还有一个个人项目在做。而这七天来paperen貌似都在重复一个节奏,生活貌似确实是很单调,下班了回来就是对着四面墙。?

paperen我真的是很难给自己定义一个生活标准,也很难去改变什么,即使明明觉得单调但是还继续这样下去,改变自己这个动作在我的字典中好像就是不存在,无聊的时候对着镜子看着里面的那个自己,paperen我是想成为一个综合能力很强的web developer,想做很多很多好的网站,这些就是我想到的目标了,程序员能做一辈子么?写代码能写一辈子么?你是不是会这样问我,其实paperen的答案也是不知道,虽然paperen听得出如果你这样问我的意思是说程序员不能做一辈子,但是我也没说自己会当一辈子程序员嘛,paperen只是想成为一个综合能力强的网站开发者。?

阅读更多
最近碰到的一些WEB安全问题
14年前
  • 2
  • 0

最近碰到的一些WEB安全问题

近来paperen总想写点东西但又写不出来,每月一篇还真"月经"似的……最近对公司的WEB项目进行一些安全测试,又提及到一些WEB安全的问题,改了那个烂摊子差不多半年了才终于来到了安全测试的份上,阿叔用了不少软件来检测这个web项目,结果正如paperen想象中一样,N多漏洞提示。之前的代码写得确实不太严谨呢,对一些参数就明显没有过滤,这样导致的问题会比较严重,比如一个叫Cross Site Scripting的漏洞(就是一个能注入javascript的漏洞无论在URL还是提交的表单里面注入),严重的是SQL Inject漏洞(sql注入是在参数中构造特殊的字符串从而爆出数据库重要信息或者能执行一些危险的操作),除了程序本身导致的漏洞外还有一些服务器配置的漏洞也需要修复,但是60%的漏洞主要是由程序导致的,这确实是程序员要明白的,一个好的web程序不应该只是从可运行性上去分析,重视质量你会得到更多。

阿叔使用了好几个测试工具,其实测试出来的结果基本都是差不多的,以下的漏洞主要是使用一个叫iiscan(亿思公司的)的来扫描站点得到的漏洞报告,还是蛮不错的。

在此说下碰到的几个漏洞。

阅读更多
js日历控件 扒自Discuz
14年前
  • 2
  • 0

js日历控件 扒自Discuz

一直一直以来就想整理出一个js控件,每次paperen要弄js日历控件就得上网找,当然jquery-ui的可以但是又觉得貌似需要的引擎有点多本身就需要jquery的框架又要引入ui的js文件还有图片与css,重要的是它那个改起来不会……而一些不兼容浏览器的控件也有(干脆就不用了不兼容不能拉出来见人的)。而今天终于有机会让paperen我扒了discuz的下来(在ie,火狐,opera下测试没问题,其他的就不知道了),并最终整合到只有一个js文件就能调用,当然也需要一些css文件的支持,不然会不好看。

DEMO地址 http://paperen.com/demo/js-calendar/

20101017140222

阅读更多
你是这样处理来自$_GET的数据吗
14年前
  • 0
  • 1

你是这样处理来自$_GET的数据吗

最近看恶心代码太多了,也写了太多垃圾代码了……真是哦弥陀佛……感觉paperen变垃圾……

唉~~不多说了,直接开始正文算了。放代码,对比一下下面两个sql变量,然后入库查询,你觉得有问题么?

$id = isset($_GET['id']) ? $_GET['id'] : '';
if ($id) {
$sql = 'select * from goods where id='.$id;
echo $sql.'
';

$r_1 = $db->select($sql);
print_r($r_1);

echo '----
';

$sql = "select * from goods where id='$id'";
echo $sql.'
';

$r_2 = $db->select($sql);
print_r($r_2);

echo '----
';
}

表面上看上去都是可以的,当test.php?id=1时输出sql这个变量都是一样的,但是如果我随意改变一下这个id呢?改为test.php?id=1 or 1=1,你就会看到区别了。

阅读更多
换行符与header
14年前
  • 0
  • 0

换行符与header

顶~~N久没发表东西了,近来paperen除了工作还是工作,paperen对于公司目前的项目管理有一大堆意见~~不过新来就不要太激进了,前段时间已经因为自己对于目前开发的那个项目首页的性能而弄了一个小会,我提的意见主管老是说好,但是结果还是没有落实,唉,算啦~~竟然他们都不理会,paperen会用代码与实例来证明给他们听的啦。

今天自己将本机中的后台代码传上本地网络的一台测试服务器上(因为他们要在局域网中测试项目),但是遇到了一个header的问题,让paperen郁闷了一会。自己用下面这个函数来重定向(有js模式的重定向与直接使用header),比如后台某些操作成功后会自动跳转之类的功能,当然也会直接跳转。

function dheader($location, $isjs = false, $timer = 1){
if(empty($location)) return '';
if($isjs){
$timer = $timer*1000;
echo "<script type='"text/javascript"'>setTimeout("window.location.href='$location'", $timer);</script>";
}else{
header("location:$location");
exit();
}
}

而结果在直接header时总出现警告。

阅读更多
无题
14年前
  • 4
  • 3

无题

毕业了上工作了就真的不一样,对于paperen来说好像每天都是为了工作,而生活对于paperen来说也就是花在公交车上与吃饭睡觉的时间而已,一切一切都很单调,在深圳我目前没有任何朋友。这些天在深圳的日子给paperen的感觉也真的够复杂的了,貌似离开了青岛就仿佛一下子从自己的生活中失去了半个世界,之前4年来都离不开我眼中的舍友们与学校的朋友们,paperen的大学就是这样一下子过去了。

当初6月30日离开了学校,然后7月1日离开了青岛,记得30日那天下午paperen是宿舍第一个离开的,本来觉得应该不会太激动的,但是在临离开宿舍的一刻感情爆发了……真的很不舍得大家,与paperen一起回广东的智同学还竟然为自己落泪感到惊奇~~或许确实应该惊奇~~

唉,放个排比句感叹一下~那些可以约几个朋友去踢球的日子啊~那些可以与舍友一起玩游戏的日子啊~那些可以听着高频课看课外书的日子啊~生活现在都是由自己说了算,早上7点起床然后去搭公交,8点多到公司然后就一直待到晚上的8点才回“蜗”,9点多回到“蜗”冲凉然后看会书就ZZZ了,嗯,偶尔也用手机放几首歌来唱唱那也就是唯一的娱乐方法了。

阅读更多
新版博客的面世
14年前
  • 215
  • 211

新版博客的面世

paperen终于在休闲中完成了新版博客,关于新版博客的皮肤趋向于简单型吧……paperen的美工功底也就那个水平~~~现在自己看了几眼怎又觉得以前那个皮肤貌似挺不错的~~~不过既然都做好新版的就先试用着吧,在这个版本的博客中paperen也重整了文件框架与程序的框架,应该为了以后的扩展性做了一些准备,包括皮肤的更换还有插件的引入。

对于日后可能会将旧皮肤做回来,因为paperen也为此想好了。一般来说还皮肤肯定需要更改视图文件,但是应该不会涉及到模型文件,目前使用的皮肤是blue,而当制作了新皮肤后在皮肤目录下建立一个新文件夹。

1.关于换肤功能,paperen在程序中对于视图的路径思路是这样的

阅读更多
两个Correcting Orphans的方法
14年前
  • 1
  • 0

两个Correcting Orphans的方法

哇塞!看到这个题目或许就让人糊涂……连paperen自己都看不懂是什么意思,“更正孤儿”其实这是一个关于css布局的问题,例如你想做一个效果是,左边是一张小图片右边是一堆文字,就是半图半字的布局,那么这篇或许正是你需要的。?

在paperen琢磨自己新设计的皮肤时,也抽点空先尝试一下设计图中一些布局中的css技巧,而也正是有使用这个布局的地方,而在sohtanaka的博客那也找到了一篇关于这个css技巧的文章,而文章名字就是Correcting Orphans,paperen所以在这里也用了这个名字,所谓站在巨人肩膀上嘛~~?

解决方法1:sohtanaka说的?

阅读更多
IP To Location
14年前
  • 1
  • 0

IP To Location

IP to location就是ip地址转为实际地址啦,近来paperen在公司的一个任务是做一个叫防同行的插件,其实就是实现网站屏蔽被某个地区ip或者城市,甚至是国家的人浏览的功能,在网页中放上一个script的调用就可以,在这个项目中paperen终于体会到大数据量的数据库是怎样一回事……嗯……多余的就不说太多了,直接说这个iptolocation算啦。(声明一下这篇文章的IP to location并不是在公司那个项目所使用的技术)?

今天为博客加上了一个接口,功能只是来获得浏览者的所在地,这个接口的实现主要难在实现ajax跨域,而数据主要是使用了www.webxml.com.cn的webservices来获得,它的接口的地址是

http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp?theIpAddress=127.0.0.1

阅读更多
关于MVC模式
14年前
  • 0
  • 1

关于MVC模式

对于这个三个字母组成的这个专业名词,paperen我就不具体解析太多了,因为自己也不是十分十分的掌握。对于初学者而言或许你不用过分地从这个名词开始你的php之路,但是如果你走在php的道路上时就不可不知道这个名词了,因为这种思想对于开发网站而言是十分有利的,充分体验就是它将一个站点的分离成三个大体部分,M(模型),V(视图)和C(控制器),而正是这样使之可以使用具有不同专长的人员进行整个站点的开发,比如你是一个优秀的网页设计师,那么好简单你的工作就是去写好你的css,js还有html结构,当然他还要学一种模板语言,或者是开发小组自定义的一种模板语言,他不用理会过多关于php的东西甚至数据的组织问题。至于模型应该是算法最为之集中的地方,与数据库交互并处理数据,而这个部分就交由程序工程人员吧,而他们也不用处理任何页面表现的东西。而(C)控制器就是衔接V与M的一个桥梁吧,通过浏览者的动作去触发相应的响应进而通知相应模型获得数据之后再放入视图进行显示,那么一个页面就是如此完成了。?

当然啦,开头说了这些都只是一个很模糊的描述,paperen我也不是理解得很深刻,但是看了一下《php高级程序设计》一书还有看了一些开源的代码,也使用过qeephp这个框架就不多不少有了点了解。有这个思想是很重要的,所以在开发中就要向这方面去靠。?

对于模板语言,当然你可以使用smarty,还可以自己定义自己的一套,在paperen看的一些开源程序中就经常使用一些正则去将这些模板语言翻译成能被php解析的语言。而显然这一部分是很好理解的,如果真的还是不那么了解你可以去看看phpcms的那些视图文件。?

阅读更多