Advertisement

よいことも悪いこともぜんぶPHPが教えてくれた

N/A at ...
Oct. 11, 2014
Advertisement

More Related Content

Advertisement
Advertisement

Recently uploaded(20)

よいことも悪いこともぜんぶPHPが教えてくれた

  1. PHP Taught Me Good and Bad Things いいことも悪いこともぜんぶ PHPが教えてくれた 小泉 守義 <moriyoshi@php.net> @moriyoshit
  2. 自己紹介 PHPの開発に携わって10余年 PHPのビルトインWebサーバを実装しました 現在Python、Ruby、Go、C#、C、C++を書いて生 計を立てています 今回は自分の思いをまとめて共有したいという願い でLT
  3. PHPの生い立ち 1994 Personal Home Page Tools 1996 PHP/FI 1998 PHP3 2000 PHP4 2004 PHP5
  4. PHPの生い立ち 1994 Personal Home Page Tools 1996 PHP/FI 1998 PHP3 2000 PHP4 2004 PHP5 この辺から使い始めた
  5. PHPの生い立ち 1994 Personal Home Page Tools 1996 PHP/FI 1998 PHP3 2000 PHP4 2004 PHP5 Celebrate the 20th aniversary!
  6. PHPの教えてくれたこと PHPはWebアプリの落とし穴を教えてくれた PHPは文字コードの問題を教えてくれた PHPは一貫性が大事なことを教えてくれた PHPは哲学がないという哲学を教えてくれた
  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. PHPはWebアプリの 落とし穴を教えてくれた 今は認知されているが、2000年前後には常識ではな かった 多くの入門書で脆弱なサンプルが より高度な解説書を読むにつれて自己否定されるつ らみ
  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. PHPは文字コードの問題を 教えてくれた 主に東アジア圏外の開発者の体験と思われる PHPの開発者には当初全く文字コードの意識がなか った 多くの入門書では、なぜmb_XXXを使わないといけ ないのか、ごまかしているものが多い
  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. PHPは一貫性が大事なこと を教えてくれた array_searchの名誉のために言うと、in_arrayと引 数の順序を一致させたのがこの問題の由来 (◯◯ in △△...) 一貫していないのは、黎明期にPHP「を」開発して いるコミッタが少なかったから
  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. PHPは哲学がないという 哲学を教えてくれた PHPそのものに哲学はない プログラマに哲学を与えるのはライブラリやフレー ムワーク PHPはそのための部品に徹している
  29. 考察 PHPが他の言語と違うのは剥き出しの生き様だから Webを取り巻く環境の変化とともにPHPもPHPプ ログラマも成長してきた PHPから卒業するのもPHPをより成長させるのもプ ログラマ次第ではないか
Advertisement