PHP 安全编程建议
**简介** 要提供互联网服务,当你在开发代码的时候必须时刻保持安全意识。可能大部分 PHP 脚本都对安全问题都不在意,这很大程度上是因为有大量的无经验程序员在使用这门语言。但是,没有理由让你因为对你的代码的不确定性而导致不一致的安全策略。当你在服务器上放任何涉及到钱的东西时,就有可能会有人尝试破解它。创建一个论坛程序或者任何形式的购物车,被攻击的可能性就上升到了无穷大。...
**简介** 要提供互联网服务,当你在开发代码的时候必须时刻保持安全意识。可能大部分 PHP 脚本都对安全问题都不在意,这很大程度上是因为有大量的无经验程序员在使用这门语言。但是,没有理由让你因为对你的代码的不确定性而导致不一致的安全策略。当你在服务器上放任何涉及到钱的东西时,就有可能会有人尝试破解它。创建一个论坛程序或者任何形式的购物车,被攻击的可能性就上升到了无穷大。...
最近在开发一个PHP程序时遇到了下面的错误: > PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted 错误信息显示允许的最大内存已经耗尽。遇到这样的错误起初让我很诧异,但转眼一想,也不奇怪,因为我正在开发的这个程序是要用一个foreach循环语句在一个有4万条记录的表里全表搜索具有特定特...
下面列举了我曾经犯过的最严重的11个MySQL相关的错误。 1、使用MyISAM而不是InnoDB MySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。 MySQL默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。外键约束或者事务处 理对于数据完整性是非常重要的,但MyISAM都不支...
这里的CLI是指:CLI(command-line interface,命令行界面)是指可在用户提示符下键入可执行指令的界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。 有两种方法可以运行PHP CLI脚本。 第一种方法是使用php -f /path/to/yourfile.php。调用PHP CLI解释器,并给脚本传递参数。这种方法首先要设置p...
面向对象编程的三特点: 封装性,继承性(PHP支持单继承),多态性 PHP的一个类必须在一段代码段中,即一个`"<?php ...... ?>"` ```lang-php class PhpClass{ public $name; public function toString(){ return &quo...
**Generators (PHP 5 \>= 5.5.0, PHP 7)** 通过添加 yield 关键字支持了 generators,Generators 提供了一个更简单的方法实现迭代器,不需要实现 Iterator 接口。 ```lang-php <?php function xrange($start, $limit, $step = 1) { ...
我们有时需要记录用户或者后端的某个操作事件的运行情况,可以使用后端语言如PHP将操作结果记录到日志文件中,方便测试和查找问题。尤其是这些在后端运行的而前端不能直接看到运行结果的,那么就可以用日志文件记录下来,如果你经常跟一些接口开发如支付宝接口、微信卡券接口打交道的话,日志记录就必不可少了。 我们讲的PHP记录日志,就是将日志信息写入到一个日志文件中,区别于内存日志。写入日志...
提到 Nginx + PHP 服务的错误日志,我们通常能想到的有 Nginx 的 access 日志、error 日志以及 PHP 的 error 日志。虽然看起来是个很简单的问题,但里面其实又牵扯到应用配置以及日志记录位置的问题,如果是在 ubuntu 等系统下使用 apt-get 的方式来安装,其自有一套较为合理的的配置文件可用。再者运行的应用程序中的配置也会影响到日志记录...
需求背景: 有个调用统计日志存储和统计需求,要求存储到mysql中;存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮。 **问题分析** 思考: 应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择;但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试。 解决: 问题一:要求日志最好入库;...
Builder(构造者) 构造者模式主要在于创建一些复杂的对象: ```lang-php <?php class Product { private $name; public function setName($name) { $this->name = $name; } public function get...