Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
$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の教科書」 「初めてのPHP5」 「パーフェクトPHP」 「体系的に学ぶ安全なWebアプリケーションの作り方」 「PHPスーパーサンプル」 「プロになるためのWeb技術入門」 インターネット上で情報をやりとりするということは、大事な内容をはがきに書いて相手に送るようなもの。その情報が相手に届くまでに誰に見られるかわからない。 #概要 HTTPはステートレスなプロトコル。「状態」を持てない。 例えば、「ログイン」ページの場合、「ログインしているかどうか」のチェックをする必要がある。 NG例) http://www.littleforest.jp/itemlist?login=ok loginパラメータを調べてokかどうかを調べる。 →→パラメータを容易に改変できてしまう。 解決策として、Cookieとセッションを使う。 Chromeで、Cookieを確認す
リリースが間近になったPHP5.5ではジェネレータが導入される予定です。これはイテレータを簡単に記述する文法を導入するもので、Pythonのジェネレータに非常に良く似ています。 もう少し詳しく説明しましょう。PHP5.5では、yieldというキーワードが導入されました。これはジェネレータで値を受け渡すための構文です。このyieldを含む関数はジェネレータ関数と呼ばれます。関数がジェネレータ関数かどうかは、PHPの解釈のタイミングで自動的に判断されます。 ジェネレータ関数が呼ばれると、ジェネレータ関数に対応するジェネレータオブジェクトが返されます。関数呼び出しの時点ではジェネレータ関数の中身は1行も実行されません。ジェネレータオブジェクトから値を取り出すタイミングで初めてジェネレータ関数の先頭からyield文までが実行され、yieldされた値を取り出して停止します。イテレータから次の値を取り
User_Centric_Tests Codeception provides high-level domain language for tests. Tests are represented as a set of user's actions. Learn More Browser_Testing Tests can be executed using Firefox, Chrome, Safari or Cloud Testing services with Selenium WebDriver. Browser can be emulated with HTTP-requests through CURL with PhpBrowser. Learn More Framework_Testing Tests can be executed inside a PHP frame
テスト・開発に使用するデータ生成の必要性 動作確認テストや開発時に使用するデータベースのデータ、どのように準備していますでしょうか?毎回手動で作成している、本番環境から持ってくる。これらは一番良くない例ですよね。 毎回手動で作成していては、開発環境構築の度に、テスト実行の度に作業コストがかかり、オペレーションミスも発生しやすくなります。知っていないと用意できないデータ項目などもあるでしょう。それらを毎回一つ一つ確認するのは大変な作業です。 本番環境のデータを使用することが危険であることは言うまでもないと思います。個人情報を扱っているシステムであれば、情報保護の点から大変なリスクを犯す行為です。メールアドレスを保存してあるシステムであれば、オペレーションミスにより不要なメールを実際に送信してしまう危険性も伴います。 特に、動作確認の際に自動テストを実行する場合、想定通りのデータが入って
2. アジェンダ • SQLインジェクション対策もれの責任を開発会社に 問う判決 • PHP入門書のSQLインジェクション脆弱性の状況 • O/RマッパやSQLジェネレーターのSQLインジェク ションの話題 – Rails SQL Injection Examplesの紹介 – Zend FrameworkのSQLインジェクション – JSON SQL Injection – Drupageddon(CVE-2014-3704) Copyright © 2008-2015 HASH Consulting Corp. 2 3. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何
アンチパターンなので、見出しの内容はすべてバッドノウハウです。 前に書いたやつ PHPのモダンな開発環境を紹介する - Qiita PHP - Functoolsを作った - Qiita PHPのlist()はタプル展開のための機能 - Qiita 関係ないけどこれも: シェル、ターミナル、コンソール、コマンドライン 追記: 本文中でとりあげた「怖い話」について、ちゃんと説明しました PHP - namespaceとBOMに何の関係があるのさ - Qiita ファイルの最後に?>を書く PHPコードは<?phpで始まり?>で締める。それがPHPの常識(キリッ ……そんなことはもう綺麗さっぱり忘れよう。PHPはテンプレートエンジンではあるが、Webアプリケーションを書く上では、もはやテンプレートエンジンとしての機能は求められなくなりつつある。 不要な?>を書いてはいけない理由は明確で、<?p
PHPでアルゴリズムを勉強しました やはり、アルゴリズムは写経、コードを読むだけでは駄目で、 実際手で流れを書きながらではないと理解できないです。 以下、アルゴリズムのコードです リンクはGitHubに飛びます。 探索 チェインハッシュ法による探索 バイナリサーチ リニアサーチ 深さ探索 文字列探索 Boyer Moore法 2分木 ソート マージソート クイックソート シェルソート 単純挿入ソート 単純選択ソート バブルソート その他 fizzBuzz リングバッファ 階乗の計算 ハノイの塔 ユークリッドの互除法 7パズル 8個王妃問題 ダイクストラ法 ナップザック問題 フィボナッチ数列 (メモ化再帰含む) 1時間以内に解けなければプログラマ失格となってしまう5つの問題 問題1 問題2 問題3 問題4 問題5 参考書籍 明解 Javaによるアルゴリズムとデータ構造 プログラミングの宝箱
仕事で使っているPHPアプリケーションをPHP7 beta1で動かしてみたらそのままでは動きませんでした。 私が実際にはまった点を紹介します。 なお、PHP7の変更点についてはhnwさんの記事に詳しく網羅されているのでご一読ください。 PHP7で変わること - hnwの日記 Apacheのモジュール名が変わっていた ApacheにPHPを組み込むためのモジュール(俗にいうmod_php)のモジュール名・ファイル名が変更になっていました。 LoadModule php5_module modules/libphp5.so ↓ LoadModule php7_module modules/libphp7.so memcache extensionがインストールできない PHPからMemcachedを使うためのExtensionには2つあります。 memcache memcached memca
PHP7では無名クラスが導入されます。 PHP7調査(26)無名クラスの導入 - Qiita これ、単に構文だけの話にせず、「クラスの第3の能力が単独で切り出された」と捉えると面白いのかなと思いました。 クラスが持つ3つの役割 クラスが持つ3つの役割 - 西尾泰和のはてなダイアリー 「コーディングを支える技術」の西尾泰和氏によると、クラスには ユーザー定義型 実装の再利用の単位 インスタンス生成器 の3つの役割があるといいます。 クラスが扱いづらい概念だとすれば、それはこの3つの能力をまとめて持っているからです。 PHPのユーザー定義型、インターフェース PHPの場合、タイプヒントがありますし、定義したクラスは後から拡張することができません(オープンクラスではない)。 if ($obj instanceof FooClass) { //... } この「$objがFooClassのインスタ
if(preg_match('/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?: \x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2 F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C [\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22( ?:[\x01-\x08\x0B
昨日夜中にごちゃごちゃやりまして、メモでございます。 github.com 最速httpdとなるであろうH2Oについて、最近fastCGIサポートが載った(まだstableリリースではなく、betaか、masterブランチ)のですが、まだ公式サイトに設定がのっていないので、うごかしてみたメモですね。 追記:今朝、リリースされてたそうです、めでたい! 設定ファイルを こうするんじゃ(抜粋なので、サンプルから必要そうな所だけ修正してください) file.custom-handler: extension: .php fastcgi.connect: host: 127.0.0.1 port: 9000 type: tcp hosts: "127.0.0.1.xip.io:8080": paths: /: file.dir: /var/www/htdocs やったぜ H2OでPHP7うごいたゾー
class TwitterClient { public function tweet($message) { return true; } } $hoge = new TwitterClient(); $hoge->tweet('大心なう'); // trueが返る class ClientContainerTest extends PHPUnit_Framework_TestCase { public function test_モックを書いてみる() { $hoge = $this->getMock('TwitterClient', array('tweet')); $hoge->expects($this->any()) ->method('tweet') ->will($this->returnValue(true)); $hoge->tweet('大心なう'); // true
PHPカンファレンス関西2015に行ってきました。 今回から場所が変わったり、初の有料化だったりとスタッフの皆さんは色々と大変だったかと思います。本当にありがとうございました。 今回はセッションのトラックが5本で、内容的にも初心者用から濃いものまで充実しており、非常に満足できました。 見られなかったけど気になるセッションが数多くありましたので、ネットで公開されているセッションのスライドをまとめてみました。 とりあえず見つけられたものを掲載させて頂いておりますが、これからアップされるもの等もあるかと思いますので、また見つけ次第更新させて頂きます。 セッションのスライド 基調講演『PHP7で変わること 言語仕様とエンジンの改善ポイント』 PHP7で変わること ——言語仕様とエンジンの改善ポイント from Yoshio Hanawa www.slideshare.net 『ビッグウェーブ到来!
Object-oriented programming advanced tutorials. What Are Abstract Classes? - A tutorial explaining abstract classes in PHP. Abstract Classes and Interfaces (►) - Introduction about abstract classes and interfaces. When should I code to an Interface? - A tutorial explaining what is and when to use interfaces in PHP. Understanding and Applying Polymorphism in PHP - A tutorial explaining about abstra
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く