Recommended
PDF
PPTX
PDF
Symfony2 How to create your Bundle
PDF
PPTX
PPTX
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
PPTX
PDF
phpspecで学ぶLondon School TDD
PDF
PPTX
PDF
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
PDF
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
PDF
PDF
PDF
PDF
PDF
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
PDF
KEY
Mojoliciousをウェブ制作現場で使ってみてる
PDF
PDF
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
PDF
PDF
PDF
PDF
WTM53 phpフレームワーク いまさらcodeigniter
PDF
zend_parse_parametersと64bit環境
PPTX
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
PPT
More Related Content
PDF
PPTX
PDF
Symfony2 How to create your Bundle
PDF
PPTX
PPTX
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
PPTX
PDF
phpspecで学ぶLondon School TDD
What's hot
PDF
PPTX
PDF
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
PDF
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
PDF
PDF
PDF
PDF
PDF
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
PDF
KEY
Mojoliciousをウェブ制作現場で使ってみてる
PDF
PDF
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
PDF
PDF
PDF
PDF
WTM53 phpフレームワーク いまさらcodeigniter
Viewers also liked
PDF
zend_parse_parametersと64bit環境
PPTX
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
PPT
PDF
PDF
PHP&NewSQLで考える次世代アプリケーション
PDF
PDF
PDF
PDF
PPTX
PDF
PDF
お前は PHP の歴史的な理由の数を覚えているのか
PDF
Similar to よいことも悪いこともぜんぶPHPが教えてくれた
PDF
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PDF
PDF
PDF
PDF
Phpcon tokyo 20120_bigginer
PDF
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
PDF
デザイナー向け 初めてのPhp ~サイト制作に役立つtips~
PDF
【10人限定】1日でマスター!word pressのための「php:mysql講座」
PPTX
PPTX
PDF
Modern PHP Programming @ PFI Seminar
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
KEY
PDF
Phpのつたえかた (初心者編) #phpstudy
PDF
PDF
PDF
PPTX
More from Moriyoshi Koizumi
PDF
All I know about rsc.io/c2go
PPTX
PPTX
Pyramidのrendererをカスタマイズする
PPTX
Hacking Go Compiler Internals / GoCon 2014 Autumn
PDF
PDF
PDF
PDF
PDF
PDF
PHP language update 201211
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
よいことも悪いこともぜんぶPHPが教えてくれた 1. PHP Taught Me Good and Bad Things
いいことも悪いこともぜんぶ
PHPが教えてくれた
小泉 守義 <moriyoshi@php.net>
@moriyoshit
2. 3. 4. 5. PHPの生い立ち
1994 Personal Home Page Tools
1996 PHP/FI
1998 PHP3
2000 PHP4
2004 PHP5
Celebrate the 20th aniversary!
6. 7. PHPはWebアプリの
落とし穴を教えてくれた
<?php
$name = $_REQUEST['name'];
$sql = "INSERT INTO User (name) VALUES ('$name');";
mysql_query($sql, $dbconn);
?>
...
<form method="post">
<input type="text" name="name"
value="<?=$name ?>" />
</form>
8. PHPはWebアプリの
落とし穴を教えてくれた
<?php
$name = $_REQUEST['name'];
$sql = "INSERT INTO User (name) VALUES ('$name');";
mysql_query($sql, $dbconn);
?>
...
<form method="post">
<input type="text" name="name"
value="<?=$name ?>" />
</form>
9. PHPはWebアプリの
落とし穴を教えてくれた
<?php
$name = $_REQUEST['name'];
$sql = "INSERT INTO User (name) VALUES ('$name');";
mysql_query($sql, $dbconn);
?>
...
<form method="post">
<input type="text" name="name"
value="<?=$name ?>" />
</form>
10. PHPはWebアプリの
落とし穴を教えてくれた
<?php
$name = $_REQUEST['name'];
$sql = "INSERT INTO User (name) VALUES ('$name');";
mysql_query($sql, $dbconn);
?>
...
<form method="post">
<input type="text" name="name"
value="<?=$name ?>" />
</form>
CSRF!!
11. PHPはWebアプリの
落とし穴を教えてくれた
<?php
$name = $_REQUEST['name'];
$sql = "INSERT INTO User (name) VALUES ('$name');";
mysql_query($sql, $dbconn);
?>
...
<form method="post">
<input type="text" name="name"
value="<?=$name ?>" />
</form>
CSRF!!
12. PHPはWebアプリの
落とし穴を教えてくれた
<?php
$name = $_REQUEST['name'];
$sql = "INSERT INTO User (name) VALUES ('$name');";
mysql_query($sql, $dbconn);
?>
...
<form method="post">
<input type="text" name="name"
value="<?=$name ?>" />
</form>
CSRF!!
SQLInjection!!
13. PHPはWebアプリの
落とし穴を教えてくれた
<?php
$name = $_REQUEST['name'];
$sql = "INSERT INTO User (name) VALUES ('$name');";
mysql_query($sql, $dbconn);
?>
...
<form method="post">
<input type="text" name="name"
value="<?=$name ?>" />
</form>
CSRF!!
SQLInjection!!
14. PHPはWebアプリの
落とし穴を教えてくれた
<?php
$name = $_REQUEST['name'];
$sql = "INSERT INTO User (name) VALUES ('$name');";
mysql_query($sql, $dbconn);
?>
...
<form method="post">
<input type="text" name="name"
value="<?=$name ?>" />
</form>
CSRF!!
SQLInjection!!
XSS!!
15. 16. PHPは文字コードの問題を
教えてくれた
<?php
// That backslash does the trick
$name = “日本語能力検定”;
// One japanese character occupies
// two ordinary characters??
$c = substr($name, $i * 2, 2);
?>
...
17. PHPは文字コードの問題を
教えてくれた
<?php
Shift_JIS...
// That backslash does the trick
$name = “日本語能力検定”;
// One japanese character occupies
// two ordinary characters??
$c = substr($name, $i * 2, 2);
?>
mb_substr...
...
18. PHPは文字コードの問題を
教えてくれた
<?php
Shift_JIS...
// That backslash does the trick
$name = “日本語能力検定”;
// One japanese character occupies
// two ordinary characters??
$c = substr($name, $i * 2, 2);
?>
mb_substr...
...
19. PHPは文字コードの問題を
教えてくれた
<?php
Shift_JIS...
// That backslash does the trick
$name = “日本語能力検定”;
// One japanese character occupies
// two ordinary characters??
$c = substr($name, $i * 2, 2);
?>
mb_substr...
...
20. 21. PHPは一貫性が大事なこと
を教えてくれた
<?php
$index = array_search('c', ['a', 'b', 'c']);
var_dump($index); // int(2)
$index = strpos('abc', 'c')
var_dump($index); // int(2)
22. PHPは一貫性が大事なこと
を教えてくれた
<?php
$index = array_search('c', ['a', 'b', 'c']);
var_dump($index); // int(2)
$index = strpos('abc', 'c')
var_dump($index); // int(2)
23. PHPは一貫性が大事なこと
を教えてくれた
<?php
$index = array_search('c', ['a', 'b', 'c']);
var_dump($index); // int(2)
$index = strpos('abc', 'c')
var_dump($index); // int(2)
24. PHPは一貫性が大事なこと
を教えてくれた
<?php
$index = array_search('c', ['a', 'b', 'c']);
var_dump($index); // int(2)
$index = strpos('abc', 'c')
var_dump($index); // int(2) 引数が逆
25. 26. PHPは哲学がないという
哲学を教えてくれた
<?php
$di = DIContainer::getInstance();
$orm = $di->get('ORM');
$ormSession = $orm->getOrCreateSession();
$damnHotEmployees = $ormSession->find('Employee')
>where('age >= 50’)->all();
...
tr>
td><?=htmlspecialchars($damnHotEmployee->name) ?></td><?=htmlspecialchars($damnHotEmployee->age) ?></td><?=htmlspecialchars($damnHotEmployee->gender) 27. PHPは哲学がないという
哲学を教えてくれた
<?php
$di = DIContainer::getInstance();
$orm = $di->get('ORM');
$ormSession = $orm->getOrCreateSession();
$damnHotEmployees = $ormSession->find('Employee')
>where('age >= 50’)->all();
...
tr>
標準関数なのかフレームワークのコードかすぐわかる
td><?=htmlspecialchars($damnHotEmployee->name) ?></td><?=htmlspecialchars($damnHotEmployee->age) ?></td><?=htmlspecialchars($damnHotEmployee->gender) 28. 29.