タグ

ブックマーク / qiita.com/mpyw (14)

  • PHPオブジェクト指向入門(後半) - Qiita

    コンセプト オブジェクト指向プログラミング未経験者~理解を深めたい人、ノンケ~ホモまで幅広くカバーするつもり。多分。 クラスとオブジェクト(初級) クラスとオブジェクト(中級) クラスとオブジェクト(上級) 非常に長くなりそうだったので分けました。こっちは書くペース遅いと思います、あともう前半で出し尽くした感あるのでそんなに期待しないで( 遅延静的束縛 抽象クラス インターフェース オーバーロード トレイト 名前空間 オートロード use self static parent final キーワードに関するまとめ オーバーライド オーバーロード オートロード に関するまとめ ジェネレータ エラーハンドラ 例外スタック バージョン毎の差異の概要 暇人向けの考察 「配列」「オブジェクト」における「キー」「プロパティ」の扱い方の差異 どこまでアクセス権に配慮すべきか PHPのマジックメソッドは安

    PHPオブジェクト指向入門(後半) - Qiita
    b7968
    b7968 2017/07/26
  • PHPオブジェクト指向入門(前半) - Qiita

    コンセプト オブジェクト指向プログラミング未経験者~理解を深めたい人、ノンケ~ホモまで幅広くカバーするつもり。多分。 クラスとオブジェクト(初級) 唐突ですが、量産型のロボットの設計・製造について考えてみましょう。 ロボ太郎 ロボ次郎 イラストで初心者を釣る クラス まず、ロボットの設計図を クラス として定義します。設計図をもとにロボットを製造するには、 new 演算子を使います。製造された物体のことを オブジェクト や インスタンス と呼びます。ここではこれらの用語を区別せずに用いることにします。 Yahoo!知恵袋 - オブジェクトとインスタンスの違い

    PHPオブジェクト指向入門(前半) - Qiita
    b7968
    b7968 2017/07/26
  • 複数のRSSに並列リクエスト後マージして返す関数 - Qiita

    わりと需要のある機能なのでコピペして使えるように関数化しました。 ほとんど @Hiraku さんの記事のパクリです。 RSS2.0に準拠していないXMLが返されてきたときの挙動は未定義です。ちゃんと対応したい場合は全ての必要項目に関して isset 構文などを用いたチェックが必要です。 /** * fetch_rss_items * * @param $urls RSSのURLが記述された1次元配列 * @return マージして新しい順にソートされたitemの2次元配列(pubDateはtimestampに変換済み) * @link http://qiita.com/Hiraku/items/1c67b51040246efb4254 * @link http://qiita.com/mpyw/items/77288c948b64eab1a3b3 */ function fetch_rss

    複数のRSSに並列リクエスト後マージして返す関数 - Qiita
    b7968
    b7968 2017/06/13
  • お前は PHP 7 における Fatal Error / Catchable Fatal Error / Error / ErrorException / Exception の違いを言えるか? - Qiita

    お前は PHP 7 における Fatal Error / Catchable Fatal Error / Error / ErrorException / Exception の違いを言えるか?PHPポエム例外例外処理 導入 煽りタイトルすいません.PHP 7 のエラーや標準例外について,違いを整理し,使い分けを考察する記事です. 【引用】 PHP 7.0.0α2 の例外の例外の継承関係を可視化してみた by @ngyuki すべてを捕捉対象にする [Throwable] [Throwable] は, PHP 7 の throw 文でスロー可能なあらゆるオブジェクトが実装する基底インターフェイスです. [Error] および [Exception] はこれを実装しています.但し,PHPコードとして書かれるクラスが [Throwable] インターフェイスを直接実装することはできません. と

    お前は PHP 7 における Fatal Error / Catchable Fatal Error / Error / ErrorException / Exception の違いを言えるか? - Qiita
  • [PHP] まとめて例外をスローする小技 - Qiita

    Help us understand the problem. What is going on with this article?

    [PHP] まとめて例外をスローする小技 - Qiita
    b7968
    b7968 2017/05/12
  • PHP7で流行って欲しいリクエストパラメータの受け取り方 - Qiita

    みたいなコードの是非を巡ってPHPと闘ってきましたが… $_GET, $_POSTなどを受け取る際の処理 filter_input_simple filter_input_array_recursive いずれにも以下のような欠点がありました。 filter_input で一発処理出来るのは外部から受け取る値かつ文字列のみ 上記に該当しないものには isset と is_string / filter_var の処理がどこかで必要になってくる PHP7からは…? PHP7にはNULL合体演算子??が導入されており、任意の変数に対して 未定義でもNULLでもなければ左オペランドの値を採用 未定義またはNULLのとき右オペランドの値を採用 (内部でisset相当のチェックを行っているのでエラーが発生しない) という処理を記述することが出来ます。 文字列型のみ処理したい場合

    PHP7で流行って欲しいリクエストパラメータの受け取り方 - Qiita
    b7968
    b7968 2017/05/09
  • マルチバイト文字を扱う際に気をつけること - Qiita

    基礎知識 コンピュータで扱えるデータの最小単位は1バイト(8ビット:2進数8桁分)であり、これは符号無し10進数表記で0〜255(2進数表記で00000000〜11111111)を表すことが出来ます。 半角英数字や半角記号、改行コードなどの世界共通で多用される文字は1バイト文字として0〜127の範囲に割り当てられており、これらは「ASCII文字」と呼ばれます。 ASCII以外の文字コードでは余った128〜255の範囲を他の文字を表現するために利用しています。但しこれらを1バイト単位で使うだけでは残り128種類の文字しか表せなくなってしまうので、実際には複数桁組み合わせて用いられます。これらは「マルチバイト文字」と呼ばれます。 以下は参考リンクです。初学者の方は、この記事を読む前にひと通り目を通されることをおすすめします。 ASCII文字コード 文字コードについての俺的まとめ 日語文字コー

    マルチバイト文字を扱う際に気をつけること - Qiita
  • 【PHP入門講座】 XSS攻撃への対策 - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。PHP を分かった気になって書いていた不正確な内容が多いため,過去の情報として参考程度にご覧ください。また,完成にたどり着けなかったことをお詫びします。原則的には,公式マニュアルの参照をおすすめします。 目次に戻る XSS(クロスサイトスクリプティング) 。JavaScriptを実行するコードを制作者の意図していない場所に埋め込む手法であって、PHPを使って実際にプログラミングをしていくうえで真っ先に考えなければいけないのがこの攻撃に対する対策です。 XSS攻撃が成功するまでの流れ TwitterがXSS攻撃への対策を怠っていたと仮定します。 1. 悪意のあるユーザーの下準備 悪意のあるユーザー(A)が <?php $s = serialize(@$_GET['cookie']); file_put_contents('./

    【PHP入門講座】 XSS攻撃への対策 - Qiita
  • 画像アップロード処理サンプル集 - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。 前書き より一般化したものについては 「ファイルアップロードの例外処理はこれぐらいしないと気が済まない」 を参照。ここではそれを元に画像ファイルに限定して、いくつかのパターンで例を構成してみる。また、フォームの送信と受信を同一ファイルで行うとする。 1. exif_imagetype 関数を用いてチェックを行う これは、画像に関するMIMEタイプを整数として返す関数である。finfoクラスが使えない環境においても統一的にこちらの関数は使えるはず。但し、画像の形式を判別するために必要なだけのバイト数を読み込めない場合にエラーを発生するので、 エラー制御演算子 @ を用いて抑制する必要がある。以前ここでは getimagesize 関数を

    画像アップロード処理サンプル集 - Qiita
    b7968
    b7968 2017/04/17
  • ファイルアップロードの例外処理はこれぐらいしないと気が済まない - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。 脆弱性について 参考リンク PHPにおけるファイルアップロードの脆弱性CVE-2011-2202 PHP 5.4.1リリースのポイント 上記に対する補足説明 PHP 5.4.1以降 PHP 5.3.11以降 どちらかを満たしているならば,脆弱性は(今のところ)無い.どちらも満たしていないと, $_FILES 変数の構造を崩す攻撃 ../ をファイル名に含めて送信する攻撃 (ディレクトリトラバーサル) の何れか,もしくは両方の脆弱性を所持していることになるので要注意. 脆弱性対策と注意事項 $_FILES Corruption 対策 改竄されたフォームからの複数ファイル配列送信対策 脆弱性が修正された環境でも 改竄フォーム対策 も兼ねて

    ファイルアップロードの例外処理はこれぐらいしないと気が済まない - Qiita
  • PHPで各種バリデーション - Qiita

    $a = filter_input(INPUT_GET, 'a'); // "foo" $b = filter_input(INPUT_GET, 'b'); // false $c = filter_input(INPUT_GET, 'c'); // null $a = (string)filter_input(INPUT_GET, 'a'); // "foo" $b = (string)filter_input(INPUT_GET, 'b'); // "" $c = (string)filter_input(INPUT_GET, 'c'); // "" /* 1. 未定義や想定外の型の検出 */ $email = (string)filter_input(INPUT_POST, 'email'); /* 2. 値の形式に関するバリデーション */ if (false !== filter

    PHPで各種バリデーション - Qiita
    b7968
    b7968 2017/04/05
  • isset, empty, is_null の動作まとめ - Qiita

    ※ 未定義の変数は Notice: Undefined variable を発生しながら null として扱われます。 複雑な表を書き並べている記事が多いですが、実際は null であれば null でなければ 空値であれば 空値でなければ の4種類の内容しか取り扱っていないものがほとんどであり、覚えるのが難しいなどと悩む必要はありません。至ってシンプルです。但し、(空配列はまだ分かるとして) 文字列のゼロと空要素から成るSimpleXMLElementの扱いには特に注意してください。これはPHPにおいて直感的ではない、最もクセのある実装のひとつです。JavaScriptなどと比較してもこれらの点だけ異なっていたりします。 変数の存在を確認するショートコード これから紹介するissetやemptyは、未定義とnullを区別することが出来ません。issetやemptyについて紹介する前に、純

    isset, empty, is_null の動作まとめ - Qiita
    b7968
    b7968 2017/04/05
  • 「何故htmlspecialcharsを通すのか?」を一言でどうぞ - Qiita

    結論 Content-Type: text/plain な入力を Content-Type: text/html な環境の中に正しく出力させるため。 もう議論され尽くした内容だが、このような言い回しの人は見たことがなかったので敢えて記事にしてみる。 解説 ユーザがテキストボックスを通じて入力するのは text/plain、つまりただのテキスト。ただのテキストであるから装飾する機能は無い。 プログラマがユーザ入力を元にPHPで出力するのは text/html、つまりHTMLHTMLには見出しを示したり、太字にしたり、下線を引いたり、CSSJavaScriptを呼び出す機能もある。 htmlspecialchars は text/plain を text/html に変換する。< >を&lt; &gt;に変換するというのはあくまで一例に過ぎない、と考えるべきである。 通常、ユーザ入力は t

    「何故htmlspecialcharsを通すのか?」を一言でどうぞ - Qiita
    b7968
    b7968 2017/04/05
  • とっても簡単なCSRF対策 - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。 CSRFおよびその対策の仕組みに関してはこちら↓ これで完璧!今さら振り返る CSRF 対策と同一オリジンポリシーの基礎 - Qiita この記事は,PHPにおけるワンタイムトークンを用いた実装例を示すものです。執筆日が少々古いものになるのでご了承ください。 コメント欄の議論に関するまとめ 以下,XSS脆弱性が存在しない前提.この脆弱性があるとあらゆるCSRF対策がほとんど意味をなさなくなるので,まずここから潰しておくこと. セッション固定攻撃に対する対策 ログイン後にsession_regenerate_idを必ず実行する. ログアウト後にsession_destroyを必ず実行する. CSRF攻撃に対する対策 セッションIDを抜か

    とっても簡単なCSRF対策 - Qiita
    b7968
    b7968 2017/03/15
  • 1