php条

996.ICU出自程序员的梗!其实程序员之间还有这样一条“鄙视链”

对于程序员这个职业,现在网络上是经常被人关注到,甚至因此出现了不少的梗,像是当程序员会脱发、工作996生病ICU之类的梗都是出自程序员这个群体,而这一次要说的是一场程序员中已经维持了很久的编程语言的战争,PHP是最好的语言?

对于PHP是最好的语言这个梗,据说只要在程序员面前说起就能刺激到他们,让他们抓狂,那么这个梗是怎么来的呢?其实这个梗最早出现的时候是在PHP的官方文档上出现的,在2001年PHP的官方文档上出现了一句超级嚣张的话:“PHP是有史以来最好的语言,没有之一。它快速,非常强大,而且免费”。

所谓文无第一,程序员说到底还是拥有技术的读书人,掌控着众多编程语言的他们对于PHP的这种嚣张态度肯定是忍不了,自然就要开始怼PHP了。在这个时候,那一群以PHP为生的程序员自然也不会忍耐别人对PHP的攻击,于是就开始反击,而程序员的主要战场就是在网络上,作为备受瞩目的一个职业,PHP之战很快的就被网友们知道。虽然看不懂他们是在争什么,但是看热闹不嫌事大,网友很愉快的就将原来只是程序员之间的PHP之战变成了一个梗,时至今日虽然已经没有人注意这件事的来源了,但是这不妨碍网友拿来调侃程序员。

程序员之间的鄙视链

梗玩的多了,一些网友不禁就会好奇PHP是一种什么样的语言,为什么会引起程序员们这么激烈的变化呢?其实在说到这个问题,那么就要说到程序员之间的鄙视链了,无论在哪一个行业之间都存在着一条鄙视链,而程序员之间的鄙视链就存在于编程语言之中,PHP就存在于鄙视链的最低端。

按照程序语言的大致划分的,程序员之间的鄙视链链大概就是:汇编语言>C语言>C++工程师>JAVA工程师、C<工程师>PHP工程师。当然,按照程序员之间的终极鄙视链,汇编语言并不是处于程序员的最顶端,最顶端的是有女朋友的那个,有女朋友的程序员就算是一个PHP工程师也可以鄙视所有人。

PHP真的有那么差吗?

在看多了对于PHP的鄙视,很多人不禁就会有疑问,作为编程语言之一的PHP真的有这么差吗?如果是,那么PHP为什么还有这么多人会使用PHP来编程的?对于这一个问题,不要对PHP抱有太大的误解,PHP语言或许真的没有其他的编程语言厉害,但是它的优点是所有的编程语言都比不上的。

PHP相对于大部分程序员来说,几乎是一点用处都没有,但是对于想要玩一下编程或者是简单的搭建一个博客或者是论坛的人来说,PHP就是最好的选择。PHP的入门相比起其他的编程语言来说,是最容易入门的,只要通过网络上的一些课程或者书籍就能学会,所以对于只是想要“玩”一下编程过过瘾的人来说,PHP是最好的语言这句话是没有太大的出入的。

当然,如果要是用PHP和其他的编程语言作对比就会显得有些不足,PHP作为一个入门最简单的编程语言,它有着自己的优点,但缺点更加不能忽视,特别是对于程序员来说。我们都知道除了PHP这个梗之外,能让程序员崩溃的还有bug这件事。对于程序员来说,找bug是一件足以让人崩溃的事情,而使用PHP编程的wed,别说是找bug了,就是看PHP的代码数据都能让程序员崩溃,而这才是程序员们这么反感PHP的真正原因所在,不在于它的简单,而在于它代码的混乱。

展开
收起

封面新闻-华西都市报反侵权公告NO.100

封面新闻、华西都市报的原创稿件,一直被大量网站、移动客户端等平台转载,通过封巢智媒体的全网数据监控、文图及视频对比分析、稿件来源追踪、传播路径分析、以及媒体白名单筛选等技术手段,现将7月23日-8月5日期间未经授权转载封面新闻、华西都市报原创稿件的部分平台予以公布,请相关侵权网站、移动客户端等平台立即停止侵权行为,封面新闻、华西都市报保留进一步追究其相应侵权责任的权利。

部分侵权转载平台如下:

1、搜狐

未经许可侵权转载封面新闻原创稿件《川大魔性招生视频火遍全网 创作者回应:灵感来自学校送快递的无人车》一稿,且修改了稿件标题及来源。侵权稿件链接为:

https://www.sohu.com/a/410764491_120785376

未经许可侵权转载封面新闻原创稿件《30秒 | 四川峨眉山山林间发现两具遗骸 警方暂时排除他杀》一稿,且修改了稿件标题及来源。侵权稿件链接为:

https://www.sohu.com/a/411263437_260616

未经许可侵权转载封面新闻原创稿件《钱立勇回应“家暴姐姐和母亲”:姐姐先动手自己没打老人,缪珂妍被操控夺家产》一稿,且修改了稿件标题及来源。侵权稿件链接为:

https://www.sohu.com/a/410994634_100191052

2、ZAKER客户端

未经许可侵权转载封面新闻原创稿件《川大魔性招生视频火遍全网 创作者回应:灵感来自学校送快递的无人车》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://iphone.myzaker.com/l.php?l=5f23bf4d8e9f09723b1254bb

未经许可侵权转载封面新闻原创稿件《武汉地铁停运期间站台门被撞碎 官方:维保施工造成站台门损坏正常运营》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://iphone.myzaker.com/l.php?l=5f28d0c88e9f093efb7e8f49

未经许可侵权转载封面新闻原创稿件《吉林公安厅副厅长著书《平安经》引质疑 群众出版社:不要打听,不能告诉你们》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://iphone.myzaker.com/l.php?l=5f2110d58e9f092445744a1d

3、东方头条

未经许可侵权转载封面新闻原创稿件《男子阻挡救护车不让行遭交警重罚:处罚款1900元 记13分》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://mini.eastday.com/a/200803145656458.html

未经许可侵权转载封面新闻原创稿件《武汉地铁停运期间站台门被撞碎 官方:维保施工造成站台门损坏正常运营》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://mini.eastday.com/a/200803210307811.html

未经许可侵权转载封面新闻原创稿件《惋惜!27岁小伙打球时猝死 新婚不久老婆已有身孕》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://mini.eastday.com/a/200802023615585.html

4、树人生活网

未经许可侵权转载封面新闻原创稿件《杭州女子遭丈夫杀害分尸并扔至化粪池 丈夫曾晒一家三口合影》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://www.nsfzsr.com/news/11266.html

5、热点资讯

未经许可侵权转载封面新闻原创稿件《杭州女子遭丈夫杀害分尸并扔至化粪池 丈夫曾晒一家三口合影》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://www.zz-qq.com/1/359448.html

6、FX186财经网

未经许可侵权转载封面新闻原创稿件《杭州女子遭丈夫杀害分尸并扔至化粪池 丈夫曾晒一家三口合影》一稿,且修改了稿件标题及来源。侵权稿件链接为:

https://www.fx168.com/fx168_t/2007/4041202.shtml

7、机器头条

未经许可侵权转载封面新闻原创稿件《30秒 | 四川峨眉山山林间发现两具遗骸 警方暂时排除他杀》一稿,且修改了稿件标题及来源。侵权稿件链接为:

https://news.ji-qi.com/sociology/motley/202008/80-1928652.html

8、北京联盟

未经许可侵权转载封面新闻原创稿件《川大魔性招生视频火遍全网 创作者回应:灵感来自学校送快递的无人车》一稿,且修改了稿件标题及来源。侵权稿件链接为:

http://ww.010lm.com/c/0I142001H020.html

9、今日热点

未经许可侵权转载封面新闻原创稿件《川大魔性招生视频火遍全网 创作者回应:灵感来自学校送快递的无人车》一稿,且修改了稿件标题及来源。侵权稿件链接为:

https://m2.china.com/taihai/13001828/20200731/38586248.html

10、中华趣闻网

未经许可侵权转载封面新闻原创稿件《钱立勇回应“家暴姐姐和母亲”:姐姐先动手自己没打老人,缪珂妍被操控夺家产》一稿,且修改了稿件标题及来源。侵权稿件链接为:

https://3g.china.com/act/art/13003932/20200802/38590157.html

为规范网络转载行为,制止非法侵权转载,现郑重公告如下:

1、封面传媒下属的封面新闻网、封面新闻客户端、封面新闻新浪微博、封面新闻微信公众号上发布的标题下方署名为“封面新闻”、“华西都市报”、“封面新闻-华西都市报” 的所有内容以及华西都市报下属的华西都市报纸质版、电子版、华西都市报新浪微博、华西都市报微信公众号上发布的标题下方署名为“华西都市报”的所有内容,包括但不限于文字报道、图片、音频、视频、直播等内容,均受《中华人民共和国著作权法》等有关法律法规中有关著作权或其他财产所有权的法律保护,为“封面传媒”、“华西都市报”及/或相关权利人专属所有或持有。

2、任何单位及个人,凡在互联网、移动客户端、微博和微信等平台上使用封面传媒或者华西都市报拥有版权的作品,须事先取得封面传媒或者华西都市报的授权后方可使用和转载,未经授权任何人不得复制、转载、摘编、发行、广播、信息网络传播、表演、建立镜像等。擅自使用封面传媒或者华西都市报版权作品,封面传媒、华西都市报将在其官网公告侵权人及其侵权行为。

3、本公告自发布后,侵权人继续侵权,封面传媒、华西都市报将采取包括但不限于向国家版权行政主管部门举报,向人民法院提起侵权诉讼等多种措施以维护著作权人的合法权益。届时产生的一切后果由侵权人承担。

4、对于未经许可的各类非法转载行为,任何单位及个人均有权举报,我们将对举报者的相关信息予以严格保密。

封面新闻-华西都市报版权事务联系邮箱:mp@thecover.cn

封面传媒 华西都市报社

2020年8月5日

展开
收起

laravel高性能地从mysql数据库中随机获取n条数据

laravel如何高性能地从mysql数据库中随机获取n条数据,有时候我们常常会需要从数据库随机获取数据,比如:给工作人员随机分配10个订单,随机从数据库中随机抽查100个用户;这样我们就需要随机从数据库获取数据。

一、使用原生SQL从数据库获取100条数据

从Mysql官网可以看到,可以让ORDER BY RAND()和LIMIT一起使用,可以用于从多行结果中选取随机的一部分。

SELECT * FROM table WHERE name="" ORDER BY RAND() LIMIT 100;

那么在laravel中使用原生SQL也很简单,如下所示:

$info = DB::select('SELECT * FROM table WHERE name="" ORDER BY RAND() LIMIT 100');

二、使用原始表达式从数据随机获取数据

我们都知道laravel的原始表达式,我们可以使用DB::raw('RAND()')从数据库随机获取数据。同时你还可以使用orderByRaw('RAND()')从数据库随机获取数据,和DB::raw('RAND()')效果一样

$info=self::where('dealing','<>','')->orderBy(DB::raw('RAND()')) ->take(5) ->get();

三、使用laravel的inRandomOrder方法随机获取数据

laravel中使inRandomOrder会对数据结果进行随机排序,达到我们随机从数据库获取数据的效果:

$info = DB::table('users')->inRandomOrder() ->take(5) ->get();

展开
收起

Ubuntu官方中国版!开源优麒麟20.04.1升级发布 多达418处更新

优麒麟(Ubuntu Kylin)是由麒麟软件公司主导开发的全球开源项目,也是Ubuntu的官方衍生版本,专注于研发“友好易用,简单轻松”的桌面环境。

今年4月份,优麒麟跟随Ubuntu的节奏,也发布了20.04 LTS长期支持正式版,之后根据用户反馈建议,针对存在的问题,先后发布了4次系统更新。

今天,优麒麟20.04.1发布了,这也是该系统的第一个更新镜像,包括x86版本、树莓派版本。

优麒麟20.04.1总共有多达418处更新,包括集成此前四次系统更新的269处修改,进行了全面的安全升级、Bug修复、稳定性提升,比如优化4K支持、3D显示性能提升46%、修复USN-4432-1(GRUB 2漏洞)、应用商店持续上新等。

10月22日,优麒麟20.10也将随同Ubuntu 20.10正式发布。

功能改进与BUG修复一览:

- 开始菜单

新增自适应透明度变化;

新增国际化翻译文件安装至本地;

修复软件列表部分软件图标缺失问题;

修复开始菜单响应win快捷键问题;

- 文件管理器

新增进度动画,重构文件操作界面;

新增格式化功能;

新增常用快捷键(切换视图模式,改变图标大小,关闭全部窗口,拖动文件复制等);

新增卸载应用后,自动删除其对应桌面快捷方式;

修复桌面图标重叠,刷新显示异常等问题;

修复升级失败的包依赖问题;

修复开机首次打开计算机卡顿问题;

修复文件名包含部分特殊字符显示异常的问题;

修复用户反馈的列表视图下排序问题;

修复列表视图下,只能选中文件名拖动文件,拖动文件变复制,取消全选困难问题;

修复卸载光盘,光驱不能自动弹出问题;

修复设置禁用缩略图不能马上生效问题;

修复取消窗口置顶不生效问题;

修复重命名文件不能自动选中右括号问题;

修复不能创建与文件夹同名文本文件问题;

修复直接从回收站拖动文件复制到其他路径问题;

修复进入无权限文件夹一直转圈问题;

优化桌面底层代码,图标布局更加合理与稳定;

优化搜索体验,一键切换退出搜索,清空关键词后显示全部文件,添加WPS文件分类筛选;

- 文件管理器插件

新增peony-admin插件;

修复侧边栏挂载设备状态不一致问题;

优化计算机界面,离线即时刷新;

- 任务栏

新增任务栏跟随控制面板透明度变化;

修复更改鼠标主题后任务栏不生效;

修复日历界面周数显示错误;

修复更改系统时间后点击两次日历才更新时间;

修复锁定任务栏之后右键系统监视器无法打开;

修复低分辨率时日历显示在任务栏之上;

修复日历界面无圆角;

修复无法自动刷新gsetting问题;

优化4K支持;

- 控制面板

新增双击窗口顶部放大缩小功能;

新增鼠标双击间隔设置;

新增电源、盒盖设置;

新增无操作变暗设置;

修复多次恢复默认字体导致界面卡死;

修复设置锁屏壁纸在登录页面无效;

修复锁屏预览模糊;

修复从其他屏保切换到默认屏保后预览卡住未更新;

修复登录云账户后,屏保时间和壁纸设置不会自动同步;

修复高频率删除用户时导致控制面板崩溃;

修复无法设置头像,深色模式部分下拉框无选中效果;

修复最大化再恢复后,用户模块显示异常无法删除用户;

修复保留删除用户方式重新建立相同用户无法登录;

修复物理机设置屏幕配置重启不生效;

修复对于acc等格式的音乐文件选择打开默认应用无效;

修复打开时间和日期的时区地图未置顶;

修复高分屏下时间和日期的世界地图显示错误;

修复英文环境下CPU占用率高;

修复光标无法恢复默认;

修复新装系统选择时区与控制面板不一致;

修复台式机打开控制面板弹出插入网卡提示;

修复QWidgetlist无选中效果;

修复QCombox激活状态无边框;

- 软件商店

新增奇安信浏览器;

升级百度网盘;

升级WPS办公软件;

升级亿图项目管理软件;

升级极点五笔;

升级VSCode;

- 守护程序

新增4K缩放机制,支持GTK图标缩放;

修复触摸屏屏幕旋转时,鼠标位置和触点不匹配;

修复鼠标定位与快捷键冲突;

修复鼠标主题,设置为黑色,部分程序偶发不生效;

- 云账户

修复壁纸注销后重启丢失;

修复统一用户中心以及界面内部代码错误;

优化网络速度慢时的交互;

优化UI界面;

- 会话管理

新增关机界面键盘支持;

新增关机界面低分辨率时重新布局;

新增关机界面壁纸跟随桌面壁纸变化;

修复在关机界面执行关机/重启,授权验证无法输入密码;

修复inhibit阻止关机后,session仍会注销;

优化开机启动,去掉重复拉起;

- 主体框架

修改毛玻璃开启的协议;

修复右击菜单不可用字体颜色;

- 麒麟助手

新增主窗体的边框阴影;

修复CPU策略管理提示框异常;

修复无法打开麒麟应用商店;

- 麒麟影音

新增点击音量滑动条控件修改音量大小;

新增4K屏幕显示支持;

新增窗口最小化再恢复后,保存最小化之前的窗口状态;

修复从播放列表中删除当前未播放文件导致的视频切换;

修复最小化后视频暂停播放;

优化界面上工具栏的图标;

优化全屏模式下自动隐藏标题栏和工具栏;

- 窗口管理器

3D性能提升46%;

- 用户手册

修复主页英文状态下的应用名称异常;

修复4K屏上图片不显示;

修复主页面应用板块显示卡顿;

- U盘管理工具

新增空光盘和普通光盘的分类识别;

新增跟随控制面板透明度调节;

修复未同步通过文件管理器卸载的移动设备;

- 搜狗输入法

新增4K屏显示支持(状态栏和输入法窗口);

修复已知五笔显示等bug;

- 电源管理

新增跟随控制面板透明度变化;

优化适应毛玻璃;

优化4K支持;

移除dbusglib的依赖;

- 声音管理

新增跟随控制面板透明度变化功能;

新增设置提示音开关;

修复切换网易云音乐至下一首时,应用音量自动减少;

修复打开控制面板导致系统无声音;

优化4K支持;

- 系统监视器

新增方法进程网络使用情况功能;

新增跟随控制面板透明度调节;

- 系统主题

新增声音、扫描仪、软件中心三款app图标;

新增google完整尺寸图标;

修复上百款图标在深色主题下无法识别;

修复文件夹及快捷菜单中的链接图标显示异常;

修复4K下的文件管理器中标签关闭按钮显示异常;

修复在桌面对文件夹、视频缩放时图标显示异常;

修复任务栏U盘图标模糊;

修复音频播放器界面中图标显示异常;

修复网络邻居与网络链接图标不匹配;

优化主题结构文件,删除512尺寸图标;

优化天气系列图标为彩色图标;

- 侧边栏

新增跟随控制面;板透明度变化;

修复剪贴板无滑动条时,鼠标悬浮剪贴条目按钮未显示;

优化文件和目录名称;

优化插件加载路径;

优化4K支持;

- 便签本

新增系统主题适配;

新增清空便签功能;

新增边框阴影效果;

修复时间显示不全问题;

修复黑色主题下menu图标丢失;

修复清空后计数不更新;

修复拖动重叠;

优化4K支持;

- 工作区

修复背景图片不跟随桌面变化;

修复处在非第一个工作区时,打开多任务视图会闪现第一工作区视图;

修复在多任务视图中选择工作区,退出视图后工作区不会切换;

- 网络工具

新增跟随控制面板透明度变化;

新增毛玻璃效果自启;

修复树莓派版本中有线网络无法连接;

修复有线网自动分配ip时,连接网络显示与ifconfig相同的ipv4与ipv6;

修复WiFi连接后再关闭WiFi,托盘仍显示WiFi连接;

修复在新建有线网络后,有线网界面未出现新增网络项;

修复部分笔记本电脑无法开启WiFi开关;

优化UI效果;

- 麒麟天气

修复按下Alt+F8,并拖动鼠标调整窗口大小,页面内容显示不完整;

- 闹钟

修复日期全部勾选取消会导致闹钟卡死;

优化4K支持;

用户反馈

优化4K支持;

上游更新:

https://wiki.ubuntu.com/FocalFossa/ReleaseNotes/ChangeSummary/20.04.1

版本详情:

http://distrowatch.com/table.php?distribution=ubuntukylin

更新方式:

1、通过官网下载20.04.1镜像安装:

x86下载:

https://www.ubuntukylin.com/downloads/download.php?id=73

树莓派下载:

https://www.ubuntukylin.com/downloads/download.php?id=75

2、从优麒麟官网下载安装20.04的用户直接升级:

$ sudo apt update

$ sudo apt full-upgrade

3、从低版本升级至20.04的用户,安装密钥包后升级:

a)下载密钥包(此步骤只需执行一次,已添加过的用户,跳过此步):

UKUI源:

https://github.com/ukui/ukui-keyring/releases/download/v2020.04.25/ukui-keyring_2020.04.25_all.deb

第三方软件源:

https://github.com/UbuntuKylin/kylin-software-keyring/releases/download/v2020.04.25/kylin-software-keyring_2020.04.25_all.deb

b)安装密钥包(此步骤只需执行一次,已添加过的用户跳过):

$ cd ~/下载

$ sudo dpkg -i ukui-keyring_2020.04.25_all.deb kylin-software-keyring_2020.04.25_all.deb

c)更新:

$ sudo apt update

$ sudo apt full-upgrade

展开
收起

一条命令,音乐随便下,果然是最好的语言

点击上方关注订阅黑码教主获取更多精彩内容

今天在github上看到一款工具,觉得还不错,推荐给大家。它可以让你只需一条命令就可以下载如:QQ、网易、酷狗、虾米、百度音乐。是不是很神奇,有需要的朋友可以下来玩玩。

music-php

地址:https://github.com/guanguans/music-php。

效果如下:

00:10

环境要求

PHP >= 5.6Composer安装

下载 music-php.下载地址:https://github.com/guanguans/music-php/releases

全局安装

$ composer globalrequire guanguans/music-php --dev

当前目录安装

$ composer create-project guanguans/music-php --no-dev

使用

$ ./path/music-php

如果你觉得本篇还不错,请点赞关注!

文章由黑码教主创作,仅代表个人观点,配图源于网络版权归原作者所有,如有侵权联系删除!

展开
收起

phpcms搜索结果数量怎么改为任意条

phpcms作为国内知名的开源cms系统,很多站长用这个系统做自己的网站,当然也避免不了二次开啊,今天小模童鞋介绍的就是修改搜索模块里面默认搜索结果只显示10条的问题。

phpcms

我们打开文件文件phpcms/modules/search/index.php找到下图的代码,把10修改为20这样就实现了搜索结果为20条,当然你也可以修改为其他数量。虽然是个小知识点,但是也有一定的价值。

然后打开网站调试是不是显示了20条。这样这个小教程的目的几达到啦

展开
收起

3分钟短文|Laravel blade模板里优雅地定义PHP变量

引言

Laravel秉持MVC的设计理念,在V = view 中放置视图相关的内容。特别是 blade 模板引擎带来了很强大的解析方式。

与传统的PHP与HTML写作一团方式不容,Blade 使用特定的语法结构,将变量数据渲染到视图内。

那么如何优雅地在视图文件里定义一个PHP变量呢?

学习时间

比如声明一个变量,你完全可以混杂PHP标签的内容:

<?php $old_section = "whatever"; ?>

这非常不优雅,不是吗?但是,像下面这样:

{{ $old_section = "whatever" }}

会直接输出变量值。这不是想要的结果。在laravel blade 模板里,你应该使用下面的标签

@php $i = 1 @endphp

这样把PHP书写的内容,使用特定的标识符隔开,就达到目的了。当然你还可以使用简写:

@php ($i = 1)

这与上方的结构块写法输出结果相同。

换一种思路,如果版本较早,不能支持php结构块,我们可以使用 if 语句块实现,在条件语句内使用赋值写法。如下:

@if ($variable = 'any data, be it string, variable or OOP') @endif

注意在判断语句内,使用了赋值语句,那么变量 $variable 就被声明且可外部访问了。

这也是曲线救国的一种方式吧。

困难的办法

laravel系统提供了模板的扩展使用系统不具备的标签。我们使用 ServiceProvider 注册一个先的 BaldeServiceProvider,在其中添加 Blade 模板的扩展方法。

首先创建文件

app/Providers/BladeServiceProvider.php

然后添加下面的代码:

我们使用自定义的标签 define 用于声明变量,使用 preg_replace 函数将其替换为 php 写法的字符串。

然后在 config/app.php 文件内加载此 ServiceProvider 文件:

最后需要手动清理已经生成的巨大的 compile 文件:

php artisan clear-compiled

这样就可以在程序里使用自定义的blade扩展标签了。

写在最后

本文提供了3种方法用于在laravel模板文件内定义全局变量。我们强烈推荐第三种,使用“服务提供者”加载 Blade::extend 的加载规则。这很符合laravel的编程风格。

Happy coding :-)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

展开
收起

能用就行?PHP不能再果奔了!8条铁律送给你

引言

哎,想要做到安全,真的很难。

大多数时候还真不知道怎么下手,而至于安全性所带来的效果,也总是模糊不清。这也难怪那么多开发者不重视安全性。

下面提供一个PHP安全最佳实践的列表,帮助大家厘清一些安全需要注意的点。

1 - 筛选并验证所有数据

无论数据来自何处,无论是配置文件、服务器环境、GET和POST,还是其他任何地方,都不要信任它。

过滤 + 验证!

可以使用高效可用的库来实现,比如zend-inputfilter。

2 - 使用参数化数据库查询

为了避免SQL注入攻击,永远不要用外部数据链接或插入SQL字符串。而是使用参数化查询和准备好的语句。

这些可以与特定的第三方库一起使用,也可以使用PDO。

3 - 设置open_basedir

open_basedir指令限制PHP可以从open_basedir目录向下访问文件系统的文件。不能访问该目录之外的任何文件或目录。

这样,如果恶意用户试图访问敏感文件,比如/etc/passwd,访问将被拒绝。

4 - 检查您的SSL / TLS配置

通过定期扫描,确保服务器的SSL/TLS配置是最新的和正确配置的,并且没有使用弱密码、过时的TLS版本、没有弱密钥的有效安全证书等。

5 - 使用TLS或公钥连接到远程服务

在访问任何数据库、服务器或远程服务(如Redis、Beanstalkd或Memcached)时,坚持使用TLS或公钥。

这样做可以确保只允许经过身份验证的访问,并且对请求和响应进行加密,并且不会以明文传输数据。

6 - 不要在header中发送敏感信息

默认情况下,PHP将在HTTP header 中设置版本号。一些框架也是这么做的。

7 - 能写的尽量都写上日志

无论您是否记录失败的登录尝试、密码重置或调试信息,都要确保您记录的是易于使用的成熟包,比如Monolog。

8 - 要有内容安全策略

无论你是只有一个页面、静态网站、大型静态网站,还是复杂的基于web的应用程序,都要实现内容安全策略。它有助于缓解一系列常见的攻击,比如XSS。

写在最后

当应用上规模之后,这些都用得到 。别说一直都在开发小应用,小数据量的系统,想要进阶,系统安全很考验开发人员的功底哦。

Happy coding :)

展开
收起

PHP丨PHP基础知识之条件语SWITCH判断「理论篇」

Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择。以PHP来说,switch(开关语句)常和case break default一起使用

典型结构

switch($controllingExpression){

case 'constantExpression1':echo 'statement1';

case 'constantExpression2':echo 'statement2';

case 'constantExpression3':echo 'statement3';

default:echo 'statement';

}

语法

PHP Switch 语句

如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。

使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。

语法

switch (expression){case label1:code to be executed if expression = label1;break;case label2:code to be executed if expression = label2;break;default:code to be executedif expression is differentfrom both label1 and label2;}

工作原理:

对表达式(通常是变量)进行一次计算

把表达式的值与结构中 case 的值进行比较

如果存在匹配,则执行与 case 关联的代码

代码执行后,break语句阻止代码跳入下一个 case 中继续执行

如果没有 case 为真,则使用 default 语句

下面的例子使用两种不同方法实现同样的事,一个用一系列的 if 语句,另一个用 switch 语句:

1 、switch结构

2、 switch结构可以用字符串

为避免错误,理解 switch 是怎样执行的非常重要。switch 语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。仅当一个 case 语句中的值和 switch 表达式的值匹配时 php 才开始执行语句,直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话,php 将继续执行下一个 case 中的语句段。例如:

这里如果 $i 等于 0,php 将执行所有的 print 语句!如果 $i 等于 1,php 将执行后面两条 print 语句。只有当 $i 等于 2 时,才会得到“预期”的结果――只显示“i equals 2”。所以,别忘了 break 语句就很重要(即使在某些情况下故意想避免提供它们时)。

在 switch 语句中条件只求值一次并用来和每个 case 语句比较。在 elseif 语句中条件会再次求值。如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么用 switch 语句可能会快一些。

在一个 case 中的语句也可以为空,这样只不过将控制转移到了下一个 case 中的语句。

一个 case 的特例是 default。它匹配了任何和其它 case 都不匹配的情况,并且应该是最后一条 case 语句。

case 表达式可以是任何求值为简单类型的表达式,即整型或浮点数以及字符串。不能用数组或对象,除非它们被解除引用成为简单类型。

switch 支持替代语法的流程控制。更多信息见流程控制的替代语法一节。

switch语句注意事项

switch语句执行时会从上到下根据括号中表达式的值作比较,当某个case语句中的表达式与此值相同时,就执行这个case语句或语句序列,直到遇到break为止。 break语句是必须有的,它用来结束switch语句的执行。如果所有case语句后面的表达式都不等于switch语句的表达式expr1的值川0执行default后面的默认语句序列。不过,default部分是可选的。如果没有这一部分,并遇到所有case语句都不匹配,那么,就不作任何处理而进入后续程序段的执行。

可见,一个switch语句可以代替多个if-else语句组成的分支结构,而switch语句从思路上显得更清晰。

使用switch语句时,要注意expr1必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,//(也不能为一个字符串)。 (jdk7后,允许String)

1 、switch(colorNum){

2 、case 0:

3 、setBackground(colo. red);

4 、break;

5 、case 1:

6 、setBackground(color.green) ;

7 、break;

8 、default:

9 、setBackground(color.black);

10 、break;

11 、}

switch还有一个用法:

1 、switch(colorNum){

2 、case 0:

3 、case 1:

4 、setBackground(color.green) ;

5 、break;

6 、default:

7 、setBackground(color.black);

8 、break;

9 、}

文章收集与网络,辛苦收集转载请备注出处一只大脸猫博客!

PHP丨PHP基础知识之条件语IF判断「理论篇」

PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

PHP丨PHP基础知识之流程控制for循环「理论篇」

展开
收起

PHP丨PHP基础知识之条件语IF判断「理论篇」

if语句是指编程语言(包括c语言、C#、VB、java、php、汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。

if语句概述

if语句是指编程语言(包括c语言、C++、C#、java、php、VB、汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if的返回值为真或假,可以用bool型变量进行存储,占用一字节。

条件语句作用

以编写脚本为例,在编写脚本中,条件语句是非常有用的。与其按照脚本内容执行每一行代码,不如只有当特定条件满足时,才执行脚本中的某些代码。甚至可将单个条件扩展为条件语句的集合,用于决定某些代码是否执行。

使用条件语句,可以告诉JavaScript做到像下面的事情:

·如果变量youmame等于Jonh,那么将“hello to John”输出到页面。否则输出“hello to Unknow Surfer”并将内容加粗。

·如果变量mycar等于Corvette或Mustang,那么向浏览器发出警告“Cool car”。如果变量mycar等于Covette,并且变量yourname等于Marty,那么向浏览器发出警告“Marty is cool and drives a cool car”。否则,向浏览者发出警告“Unknown Surfer drives a car of some sort”。

我并不驾驶Corvette或者Mustang,所以请将我从很时髦的人群中排除。而这些例子显示了如何在执行操作之前通过检查某些条件,达到更多的目的。这些类型的语句在脚本中称为控制流。

if语句一般形式

if语句的一般形式如下:

if(表达式)语句1

[else语句2]

if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式。其中最直观、最容易理解的是关系表达式。所谓关系表达式就是两个数值进行比较的式子。

空悬else

问题描述

if-else 语句引入了一种二义性问题称为空悬else (dangling-else) 问题,这种问题出现在当if 子句多于else 子句时。问题是这些else 子句分别和哪一个if 子句匹配。例如:

if($str <= $arr[1])

if($str == $arr[1]) $num++;

else{

$str = $arr[1];

$num = 1;

}

程序的缩进形式表明程序员相信else 应该与最外面的if 子句匹配,然而在中空悬else 二义性由以下规定来解决:else 子句与最后出现的未被匹配的if 子句相匹配

解决方式

要想改变这种缺省的空悬else 匹配效果一种方法是把后来出现的if 放在复合语句中:

if($str <= $arr[1]){

if($str == $arr[1]) $num++;

}else{

$str = $arr[1];

$num = 1;

}

编码风格建议

总是使用复合语句括号以避免在以后修改代码时可能出现的混淆或错误。

比较运算符

equ - 等于

neq - 不等于

lss - 小于

leq - 小于或等于

gtr - 大于

geq - 大于或等于

文章收集与网络,辛苦收集转载请备注出处一只大脸猫博客!

PHP丨PHP基础知识之流程控制for循环「理论篇」

PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

展开
收起