作者tkdmaf (皮皮快跑)
看板PHP
标题Re: [请益] 从php5.6跳到php7.1值得吗
时间Sun Nov 26 15:32:38 2017
※ 引述《miniear (Littlear)》之铭言:
: 他说我们是作为一个开发者,而不是使用者...(这边我就雾煞煞了
: 又举例好几年前接案的客户自己请人来协助开发,结果那个人只会用framework跟mysqli
: ,没多久就走了...(我师父因此蛮得意的~
: 而且许多客户伺服器也不能直接改用php7,
: 再者他深信php5是不会被淘汰的...
: 但也没有制止我继续去搞这些,
我还是用回文的讲一些事好了,当中会带出我写ios的经验。
你提到你师父对於使用框架跟mysqli的经验谈。
我想知道的是,他对mysqli有意见的话。
敢情他是使用pdo?
如果不是pdo而是mysql指令集的话。
那就表示关於sql injection的过滤他都要自己土炮了。
还是说……其实他并没有关注到sql injection的问题?
换个角度来看,php官方为什麽要在php7时拔掉mysql指令集。
又为什麽在php 5.6时就已经建议别在使用mysql指令集?
所以到底你觉得这边是该听你师父的?还是听官方的?
再来就谈框架好了。
我先说明,在ios的开发中,第三方元件库也是称之为framework。
其立意相当明白:听工程师直接解决繁锁而复杂的事。
如果没有这样的东西,就像我前阵子在刻的ios版的日历。
如果没有第三方元件库,我连底层都得自己来。
但因为有第三方元件库,引用之後我只要改好上层ui就好了。
就php来说,使用框架是有一些目的的。
1.以MVC架构来分离程式码和视图的分界,让程式设计师专注於开发,而网页设计师能
专注在画面的设计上。
2.提供良好的功能性类别及辅助函式来快速解决问题。
3.一致性的设计规范。
4.清析明确的统一架构内容。
5.官方统一制定的开发文件。
6.快速的设定。
7.方便的Active Record或ORM
8.第三方元件库的载入支援(composer)
9.较统一性质的命名原则。
10.良好的资料库迁移系统。
(後面就请大家继续补充吧!)
基本上,所谓土炮,也只是让你了解这些较核心功能的设计方法。
但前提是,你要有足够的时间来去研究,那都是在工作以外来再花时间的。
但如果你当下就要解决或满足客户的需求时。
你有那麽多的时间来研究?还是善於利用资源来立刻解决你手上的问题?
讲白的,我其实也算是土炮组的。
因为我很喜欢「浪费时间」去研究那些东西到底在核心是怎麽做出来的。
我也会想说要不要来「自干」一个一样的东西。
但问题是,真的在做客户的东西时。我还是会去找资源。
看什麽东西能最快把问题处理掉。
什麽东西都要自干出来其实是相当吃力不讨好的事情。
更重要的是:常常自干说得一口好方法的人………却常常到了新的专案还在自干。
徒然浪费更多的时间了。
我相信,等你跟着你师父越久……你就会发现越来越多问题。
但毕竟是前辈,你也不好直接反驳他。
只能说:那麽你就当现在是学习,然後把自己的能力提到一个程度就闪人吧。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.181.255.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1511681561.A.9AB.html
1F:推 miniear: 谢谢大大提点,今天才看你的pdo教学,这东西我是第一次 11/26 16:13
2F:→ miniear: 听到...对你来说应该很扯吧,哈哈 11/26 16:13
3F:→ shadowjohn: pdo都出好几年了...还没用过就打屁股了 11/26 16:49
4F:推 miniear: 呵呵,我学得都是$result=mysql_query($sql); 不过用这 11/26 17:35
5F:→ miniear: 个有比较差吗 11/26 17:35
6F:→ mimikillua: 比较不安全 11/26 17:43
7F:推 miniear: 看完t大的sql injection影片就明白了,谢谢~ 11/26 18:43
8F:→ shadowjohn: 标题都5.6->7.0,还在mysql_query…卡称天try 11/26 20:38
9F:→ shadowjohn: 7.1 11/26 20:38
10F:→ miniear: 我目前都是用5.6啊 7.1是想自己去学的 11/27 00:00
11F:→ crossdunk: ok 你师父连pdo都没教你 块陶啊 11/27 10:11
12F:→ newversion: 7.1用mysql_query ,不是杀鸡用牛刀,是杀蚂蚁用核弹@@ 11/27 18:07
13F:→ xdraculax: 客户环境很常连5.6都没有,我是都定在5.3 11/27 19:20
14F:→ tkdmaf: 不是吧?7.1用mysql_query就好比给你核弹……只有壳! 11/27 23:10
15F:推 bakedgrass: 你跟着你师父结果PDO跟Injection都不知道,他就让你用 11/28 09:20
16F:→ bakedgrass: mysql_query...这师父如果不是不专业就是不尽责 11/28 09:21
17F:→ bakedgrass: 7.1用mysql_query就是你身边有一堆好用的工具给你杀鸡 11/28 09:22
18F:→ bakedgrass: 结果你用一把随时会弹回来伤到你的小刀在杀 11/28 09:23
19F:→ tkdmaf: 重点是这把小刀还完全不利…… 11/28 11:39
20F:→ newversion: mysql_query injection 随便Google就一堆了~~ 11/28 12:48
21F:推 st1009: htmlentities($v,ENT_QUOTES,'utf-8'); 11/28 13:03
22F:推 st1009: 如果所有输入都用上面函式处理过,会不会安全点阿... 11/28 13:04
23F:→ st1009: 因为我把相关函数弄成包了,不知道怎改成PDO...没时间研读 11/28 13:05
24F:推 st1009: 其实最大的问题是$row = mysqli_fetch_assoc($result) 11/28 13:30
25F:→ st1009: 我其他地方都是用这样子的函式去叫,改成PDO,要改很多档 11/28 13:30
26F:→ st1009: 案的code... 不知道有没有可能PDO回传$result,可以这样叫 11/28 13:31
27F:推 shadowjohn: 有,快去看php manual,然後快去改 11/28 15:23
28F:→ MOONRAKER: 对,快改,反正想办法用prepared statement 11/28 15:53
29F:推 tsao1211: 现在学php,一定是要学pdo 11/28 17:51
30F:推 st1009: 所以一样可以用$row = mysqli_fetch_assoc($result)喔?! 11/28 19:41
31F:→ st1009: php manual有写怎用嘛...我研究研究... 11/28 19:41
32F:→ st1009: 我忽然觉得不该问有没有可能,应该问怎做 :P 11/28 19:42
33F:→ st1009: 是说htmlentities有任何破绽嘛?我自我测试感觉其实超安全 11/28 19:43
34F:→ jonlee: htmlentities 跟 sql injection 不相干~ :) 11/30 09:51
35F:推 st1009: 有关吧(?htmlentities($v,ENT_QUOTES,'utf-8'); 11/30 14:21
36F:→ st1009: 这样处理过之後,我这测试injection和XSS都pass 11/30 14:21
37F:→ tkdmaf: 其实对於输入有filter_input()这个函式可以用。 11/30 17:34
38F:→ tkdmaf: 所以在土炮状态时我都不使用$_POST来处理 11/30 17:35
39F:→ tkdmaf: 但不管怎麽说,对於任意来源还是用pdo或mysqli来prepare 11/30 17:36
40F:→ tkdmaf: 一定必须要这样处理,因为这已经是最後一道防线了 11/30 17:37