2015/10/03に開催されたPHPカンファレンスにおける発表資料です。PHPプログラマがウェブセキュリティの勉強をはじめるきっかけとして、OWASPの成果物をご活用してみては?と提案しつつ、その中から特にプログラマにご活用いただきたいOWASPの主要成果物(Top10、Cheat Sheet、ASVS、ZAP)の内容について簡単に紹介しています。 Speaker:@shonantoka
![OWASPよりPHPプログラマに贈るセキュリティ実装虎の巻](https://cdn-ak-scissors.b.st-hatena.com/image/square/9cdc6b3b196492093eba9ceef33aa2a11efcdd60/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fc5bd0b4ff83045adb3bfe2b9be64891c%2Fslide_0.jpg%3F5341208)
アンチパターンなので、見出しの内容はすべてバッドノウハウです。 前に書いたやつ PHPのモダンな開発環境を紹介する - Qiita PHP - Functoolsを作った - Qiita PHPのlist()はタプル展開のための機能 - Qiita 関係ないけどこれも: シェル、ターミナル、コンソール、コマンドライン 追記: 本文中でとりあげた「怖い話」について、ちゃんと説明しました PHP - namespaceとBOMに何の関係があるのさ - Qiita ファイルの最後に?>を書く PHPコードは<?phpで始まり?>で締める。それがPHPの常識(キリッ ……そんなことはもう綺麗さっぱり忘れよう。PHPはテンプレートエンジンではあるが、Webアプリケーションを書く上では、もはやテンプレートエンジンとしての機能は求められなくなりつつある。 不要な?>を書いてはいけない理由は明確で、<?p
「PHPで、どのようにオブジェクト指向プログラミングをしていくか」を解説する連載です。 PHPの基礎文法が知りたい方は、下記連載がお勧めです。 Web業界で働くためのPHP入門 PHPオブジェクト指向プログラミング入門(終): PHPにおけるインスタンスの永続化と参照渡し、コピー 「PHPで、どのようにオブジェクト指向プログラミングをしていくか」を解説する連載。最終回は、「永続化インスタンス」の必要性とserialize、unserialize関数、インスタンスと「参照」、「浅い」コピーと「深い」コピー、cloneキーワード、マジックメソッド「__sleep()」「__wakeup()」「__clone」などについて解説。(2015/12/24) PHPオブジェクト指向プログラミング入門(5): PHPにおけるインターフェースと抽象クラス、多重継承、トレイトの使い方 「PHPで、どのように
今日はPHP界隈で大人気のDependency Injectionと、それに関連する用語について整理しておこうと思います。 以下のような状況があるのではないか?と思ったからです。 多くのPHPユーザがDependency Injection(DI)をよくわかっていない、あるいは正確に説明できません。 そして、デザインパターンである「DIパターン」とDIをサポートするツールである「DIコンテナ」を混同しています。 また、「DIパターン」と「サービスロケータパターン」をうまく区別できていません。 Dependency Injectionとは何か? Dependency Injectionとは「Dependency」を「Injection」するというデザインパターンです。 日本語では何故か「依存性の注入」と訳されており、これが混乱の元ではないかと思います。 日本語で「依存性」と言うと、「依存性は
PHPにはlist表現というものがあるが、積極的に使われているのをあんまり見ない。 これはおそらくlistの以外な便利さが詳細まで知られていないからかと思う。 そこでこの記事ではPHPのlistの使い方を細かく説明していくことにする。 基本的な使い方 list表現は代入式の左辺で使われ、右辺の配列の要素を一連の変数に代入する事が出来る。 そのlistのごく基本的な使い方の例が以下。 <?php list($first, $second) = array(1, 2); 変数$firstに右辺の配列の0番目の要素が代入され、変数$secondに右辺の配列の1番目の要素が代入される。 listの外見は関数の呼び出しとほとんど変わらないので奇妙に見えるかもしれない。 上のコードは、以下とほぼ同じ意味を持つ。 <?php $arr = array(1,2); $first = $arr[0]; $s
PHPで既存システムに導入するのに手軽なORMとかActiveRecord探してて「Idiorm」と「Paris」を見つけたので、導入前に使用してみました。 Idiorm and Paris - object relational mapper (ORM), fluent SQL query builder and Active Record implementation for PHP http://j4mie.github.io/idiormandparis/ このページみるとだいたい使用した感じが伝わってきますね。 感想 ドキュメントしっかりしてるし簡単に読める。 軽量で既存システムにも導入しやすい。 一通り必要と思われる機能は揃っているし、書き方も嫌いじゃない。 テーブル名とか外部キーの名前とか辛いことになってるのにも対応できる。 使用した感じ ちょっと導入前に使用してみた感じです
June 27, 2015 PHPカンファレンス福岡2015の発表資料です。
printf("[Before] MEMORY USAGE: %0.2fMB\n", round(memory_get_usage() / 1024 / 1024), 2); /* ここにコードを記載 */ printf("[After] MEMORY USAGE: %0.2fMB\n", round(memory_get_usage() / 1024 / 1024), 2); Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
はじめに phpでvar_dumpで変数の値を確認するデバッグ手法があると思いますが、それをそのままhtml上で表示すると こんな感じになってしまいます。 このままでは中の構造が追いにくく分かりにくいので形を成形して表示する方法を3つ紹介します。 サンプルコード <?php $sample = array('first' => array('first_children1' => 'a', 'first_children2' => 'b', 'first_childeren3' => 'c'), 'second' => 'd', 'third' => array('third_children1' => 'e', 'third_children2' => array('grandchildren1' => 'f', 'grandchildren' => 'g'))); var_dump($
知る者は言わず、言う者は知らず — 老子 世界で最も有名なプログラムの 1 つに、 hello world というものがあります。 <?php echo 'hello, world'; 出力先に対して「hello, world」という 12 字を書き込むだけの単純なプログラムで、プログラミング言語やライブラリの利用例を最小限の形で示すものです。 この記事ではメジャーな Web プログラミング言語の 1 つである PHP 処理系が、hello world をどのように実行するのかについて、簡単に解説します。 以下の 4 節で構成されています。 「PHP スクリプト実行の大体の流れ」は実行時の概略を箇条書きでまとめたものです。 「SAPI」では、PHP 処理系の起動のされ方についての基礎知識を解説します。 「Zend Engine とオペコード」は PHP 公式処理系の仮想マシンの命令と、PH
PHPの勉強を始めたばかりの頃、条件分岐が良く分かりませんでした。今思えば、if文が何かわかっていないというより、if文で何を判断させて良いのか分からなかったような気がします。そんな条件分岐で困った時の為にすぐに使えそうな関数をピックアップしてみました。 値の有無 empty() 値が空かどうかを調べる関数です。こっちから覚えたので今でも使える時は大体迷わずこれを使いますが、変数に0や空文字がセットされている場合も値無しと判断されます。 isset() こちらは変数に値がセットされているかどうかを調べる関数です。空文字や0が変数にセットされている場合は値有りと判断されます strlen() こちらは変数にセットされた値の長さを調べる関数です 試しに動かしてみてください。入力に文字を入れて実行を押せば実行できます。 文字列一致 str_pos() こいつはややこしい関数で、これを覚えるならp
ゴールデンウィークの休み中に2冊技術書を読破しようと思ってるtanakaです。 Microsoftの技術イベントBuild 2015についての報道をいくつか見ました。手っ取り早く試せるVisual Studio Codeを試してみて、なにか記事にできそうなことないかな〜と考えたところ、コーディングスタイルチェックツールのPHP_CodeSnifferと連携できたのでやり方を紹介します。環境はMac OS Xです。 注意 以下のやり方はプレビューリリース版(0.1.0)での方法なので今後変わる可能性があります。 前提条件 PHP_CodeSniffer がインストール済みで phpcs コマンドで呼び出せる。 適当なPHPプロジェクトを用意する 設定方法 今回紹介する方法は、グローバルな設定ではなく、プロジェクトごとの設定になりますので、とりあえず適当なPHPプロジェクトを開いてみましょう。
こんにちは!ChatWork CTOの山本です。 ChatWorkでは一年前に、PHPの独自フレームワークでつくられた大規模システムを、Scalaを使ってゼロベースでつくりなおすという決断をしました。 Scala採用までの経緯を三行で: カウボーイ開発で約4年間積み上げてきたPHPのシステムがもはや限界ゼロベースでつくりなおそうと開発合宿を開催。満場一致でScalaに決定!しかし社内にScalaを書ける人は誰もいないのであった・・(どうすんの・・?)参考記事: チャットワークの新しい開発言語とフレームワークを決める開発合宿を開催!その全貌を丸公開します。 というわけで勢いのままScala採用を決めたはいいものの、ここからどうしよう・・・という状態でした。 そこから約一年。ChatWorkのScala開発はどうなってるの?とご質問いただく機会も増えましたので、現在の状況含め、Scalaってど
【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース
cURL as DSL¶ github repository Target: Curl Command: Generate Code Reset Result code is printed here. Usage¶ Select target envirionment and type curl command in above text box. You get source code that works as same as curl command. Enjoy! Supported Options¶ It doens’t support fully options of cURL. It supports only options for http 1.x in the following list: [supported options:] --basic Use HTTP
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く