喜欢技术,喜欢努力的人
如果是在 linux 服务器上,一般写个 cronjob 就可以了。
1.验证是否AJAX请求。如PHP代码:
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
2.频率限制。针对IP的限制,可以在服务器层做(Tengine就有这样的功能)。针对已登录用户的频率限制,豆瓣就是这样做,超出频率就要输入验证码。
3.csrftoken的方式,个人觉得意义不大。
session依赖于cookie---session是通过cookie传递的,你如果有这个要求,就要设置session-cookie的生命周期。
void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )
session_set_cookie_params — Set the session cookie parameters
看下有调用session_name()
没,这个函数可能会导致生成两个session文件
防范XSS一种最简便的策略便是过滤相应字段或者代码。但是对于富文本编辑器来说实在太多不寻常的字段。
因此,为了正常显示,每次都得把一些双引号之类的进行转义或者过滤掉
时间戳总是UTC。
本地时间看需要。如果应用涉及多时区的,其实应当在php程序里把时间相关的东西封装一下,不应当依赖php的时区设置
当方法与实例关系不大时,也就是当你希望摆脱实例化的限制直接使用类中的一个方法或属性时,可以定义为 static。
此外在效率上:
类名访问静态方法 > 实例访问静态方法 > 实例访问非静态成员方法
但是,过多地定义静态方法或属性无疑会对类的封装性和安全性造成一定影响。
btw,如果属性与实例的关系几乎为0时,建议定义为 const 常量。
omposer 兼容,框架中包含的开源项目,甚至是框架自身,都可以用 composer 更新。
使用了 PHP 次新稳定版特性(目前最新 5.5, 次新就是 5.4),完全的面向对象(接口、命名空间等),作者编码习惯不怪异,友好的迎合多数人习惯, 能遵循 psr 更好。
强大的脚手架功能,可以根据设计的数据表生成默认CRUD、表单、控制器等代码,解放双手。
完善的缓存和数据库支持,包括又不限于oracle nosql pgsql 那些
有自己的设计理念, 提到你能让人立刻想到重点特色
完整的测试支持,单元,回归,持续集成,便于团队开发和敏捷开发
对静态文件的部署非常友好,能支持云存储就更佳
好的日志和异常处理机制,方便开发,出错时能不用ide就定位到代码、
就想到这些、mvc之类就不说了大家都在用
再加个依赖注入吧、有方便用户开发,降低耦合方面的实现和支持,前卫框架的作者一定善用设计,并糅合多个框架甚至多种语言的特色。
再加一条,兼容 hhvm。
echo json_encode(array('code'=>201,'message'=>'数据已存在'));
js里面的success回调函数里面就可以
cURL有一个range选项,计量单位是字节,可以通过如下方式来设定:
curl_setopt($ch, CURLOPT_RANGE, '0-799');
但是这个不一定管用的,它只是发送了一个请求头,具体如何返回数据还是由发送方决定的,如果发送方支持分片返回则会生效,否则还是完整返回。通过stream也可以实现,也是发送range的头信息,所以结果应该是一样的:
`$context = stream_context_create(array('http' => array ('header'=> 'Range: bytes=0-799')));
$data = file_get_contents("http://example.com/file.html", FALSE, $context);`