これから PHP のプログラムを開始される方を対象とした PHP 入門です。 PHP での開発環境をローカル環境に構築する手順や、 PHP を使ったプログラミングの方法に関して実際にサンプルプログラムを作成しながら解説していきます。
「Paginationのために(CakePHP 1.1から)1.2にアップグレードしたい」と言う人がいるほど、Paginationは便利なものです。今回はPaginationの紹介と、サンプルコードを3つ紹介いたします。 Webアプリに欠かせない「ページ繰り」は自前でやるのは面倒! ページ繰りとは、「次のページ」や「前のページ」の基本的なリンクから、「1 2 3 4 5 …」といったページ番号でのリンクなどのことです(図1)。 図1 一般的なページ繰り表示 複数のデータを列挙するWebアプリケーションでは、必ずと言っていいほどこのページ繰りが必要になります。 しかし、ページ繰りをすべて自前でやるのは意外に面倒で、加減算や除算を駆使した計算をずらずら書かないといけません。表示のときにも場合わけが必要で、1ページ目なら「前へ」はリンクしませんし、最後のページなら「次へ」はリンクしません
約1年ぶりとなった本連載。これから数回にわたり、最新バージョン1.2にフォーカスして、技術動向をお届けします。 2009年1月、Cake PHP 1.2登場 前回の連載記事から約1年ぶりとなりました。この間、150人規模のCakePHPのイベントが開かれたり、多数のCakePHPの書籍が発売されたり、公式サイトのトップページが日本語化されたりと日本におけるCakePHPの「普及期」であったと言えるでしょう。 そして2009年の1月にはCakePHP 1.2のバージョン表記に待望の「Stable」表記が付けられました。Stableとは直訳で「安定した」という意味で、同一のバージョン系列上では互換性を大きく損なうような仕様変更は行われず、バグが無い状態を保っていることを(少なくともCakePHPでは)示します。なので、alphaやbetaとは安心感が格段に違います。今までに1.1を使ったことが
Zend Frameworkを利用したWebアプリケーションの構築の前に、開発環境を整えます。今回はZend Frameworkのインストールではなく、Zend Frameworkをインストールするための環境を整えます。 Linux/Windows/Mac OS Xでほぼ同じ環境で動作する構成を紹介します。Linux版(CentOS 5)のVMWareイメージは筆者のサイトで公開しています。これと同じ、環境の構築手順を紹介します。 本連載では基本的にLinux(CentOS 5)での環境を前提にZend FrameworkによるWebアプリ開発を紹介しますが、ここで解説する環境をWindowsやMacに構築すれば同じように開発できます。 Zend Frameworkの利用に必要な環境 Zend FrameworkはPHP5用のフレームワークです。当然、PHP5が必要です。Zend_Cont
今回は「第29回 SQLインジェクションの復習」で紹介したSQLインジェクションツールのsqlmapを紹介します。開発者や運用管理者のセキュリティ意識が向上しない原因の一つは、脆弱性がどのようなリスクを持っているのか理解していないことが原因であることも少なくありません。今回はSQLインジェクションのリスクの一部である自動化された攻撃ツールを紹介します。 sqlmapとは? sqlmapとはブラインドSQLインジェクション攻撃を実行するツールです。オープンソースで開発され執筆時点の最新版は2010年3月14日にリリースされたバージョン0.8です。 http://sqlmap.sourceforge.net/ 筆者は偶然、最初のリリースからこのツールを知っていたのですが、このツールの進歩には目を見張る物があります。 sqlmapの概要 記述言語:Python MySQL, Oracle, Po
SQLインジェクション脆弱性を狙った大規模な攻撃が繰り返し行われ、数万から数十万ページが改竄される事件が何度も発生しています。SQLインジェクションは簡単に対策できる脆弱性ですが、未対策のアプリケーションが多く利用されています。外部からの脆弱性の検出も容易であるため、現在でもWebアプリケーション脆弱性の代表的存在です。 SQLインジェクション脆弱性が無くならない理由には以下のようなものが考えられます。 過去のコードやアプリケーションの再利用 基本的なセキュリティ知識不足 セキュアコーディングプラクティスの未実施 コード監査の不在 SQLインジェクション脆弱性の発見だけを目的にコード監査を行うことはあまりありませんが、SQLインジェクション脆弱性のコード監査は比較的簡単です。MySQLモジュールまたはPostgreSQLモジュールを利用している場合を例に紹介します。 本題に入る前にSQLイ
rhacoとは rhacoはオープンソースで開発されているPHPのライブラリとセットアップフレームワークです。ほぼすべての機能をtokushima氏(http://tokushimakazutaka.com/)が開発しています。また、rhaco1.6 においてはそのほかに数人のメンテナがバグフィクスなどを行っています。開発者やメンテナは皆日本人なので、日本語でサポートを受けられるのも魅力的です。 公式にはあくまでライブラリという扱いではありますが、フレームワークとしての機能も持ち合わせているので、ほかのウェブアプリケーションフレームワークと同様、高速にアプリケーションの開発を行うことができます。 また、rhacoは後述するセットアップフレームワーク(セットアップアプリケーション)を内蔵しているので、rhacoを利用したアプリケーションは、デプロイ時の設定作業などをすべてブラウザ上で行うこと
今回解説するWebアプリケーションのバリデーションの欠陥はPHPに限った問題ではありません。多くのプラットフォームのWebアプリケーションで見過ごされているバリデーション仕様の欠陥です。それは文字エンコーディングのチェックです。 文字エンコーディングバリデーションの必要性 筆者の知る限りでは、2004年に相次いで今まで知られていなかったアタックベクタ(攻撃経路)が見つかりました。2004年に多く見つかった新しいアタックベクタとは不正な文字エンコーディングを利用した攻撃です。不正な文字列を利用したJavaScriptインジェクションやSQLインジェクションの攻撃手法が公開されました。 文字エンコーディングを利用した攻撃自体は当時でも新しい攻撃手法ではありませんでした。文字エンコーディングを利用した攻撃は、少なくとも2000年から広く知られていた攻撃手法でした。ブラウザが文字エンコーディングを
上記はキャリアが対応を発表している文字エンコードであり、機種によっては公式に発表している文字エンコード以外にも対応している場合もあります。上記の表から、携帯サイトで共通に使える文字エンコードは「Shift_JIS」であることがわかります。このことから携帯サイトでは基本的に「Shift_JIS」を使って画面の入出力を行うことになります。ちなみにSoftBankの3GC型などの端末では、「Shift_JIS、EUC-JP、ISO-2022、UTF-8」のそれぞれに対応していますが、「EUC-JP、ISO-2022」はキャリアのゲートウェイを通過するときに「Shift_JIS」に自動的に変換されてきます。そのため出力はできますが取り扱いはShift_JISとなるため、SoftBankのみの携帯サイトの場合はShift_JISかUTF-8に絞って対応するとよいでしょう。 絵文字を考慮に入れた文
今回は熟練したWebアプリ開発者なら常識のクロスサイトスクリプティング対策の落とし穴を紹介します。 JavaScriptを排除しているつもりで排除に失敗?! 最近はSanitize(サニタイズ)という言葉の代わりにValidation(検証)という言葉をよく聞くようになったと思います。Sanitizeの意味を辞書で調べると「汚れている物をきれいにすること」とされています。この意味の通り汚れた変数をきれいにして使えば安全に利用できるとする考え方に基づくのがサニタイズ手法です。典型的な例は、「テキストを出力する前に"<"と">"を取り除く」方法があります。 例1 "<"と">"をereg_replaceで取り除く $safe_text = ereg_replace($_GET['text'], '[<>]', ''); この$safe_textを <a href="/script.php?t
PHP Class ScriptsFind useful PHP components Recommend PHP ScriptsGet expert advice about the best PHP classes scripts PHP TutorialsTechnical articles about PHP and related matters Remote PHP Jobs August 2024 OpeningsFind or post PHP jobs from everywhere in the world PHP ShopBuy the original PHP elePHPant, Post Urgent PHP Jobs, Get Remote PHP Jobs PHP AwardsAward initiatives to distinguish PHP deve
PHPの==は両辺を適当に型キャストしてから比較するような演算子です。この型キャストの規則は難解すぎる上にドキュメントも不十分なため、PHPプログラマでも完璧に理解している人はほとんど居ないくらいの印象です。バグの原因になりかねないため、なるべく==を使わないようにしているPHPプログラマも多いはずです。 ところで、この==演算子の挙動がPHP 5.4.4から変更されていることはあまり知られていません。本稿ではこの内容を紹介します。 Bug #54547 の騒動 まずはこの仕様変更の経緯を紹介します。 2年ほど昔、Hacker Newsで2^63付近の整数に対応する文字列をPHPで比較したときの挙動がおかしいというスレッドが盛り上がったことがありました。具体的には、PHPでは「'9223372036854775807' == '9223372036854775808'」がtrueになるとい
PHP でデータベースを利用するちょっとしたアプリケーションを作るにあたって、手軽に DB を操作できると良いなと思ってます。この辺も自分で作ってみようかなと思い立ち、まずはインタフェースを固めるべくそのプロトタイプを作ってみました。 $pq = new PQ(); $pq->dsn('mysqli://nobody:nobody@localhost/sample?charset=utf8'); echo $pq->query('users') ->where( array('age' => array('>' => 20)) ) ->where( array('mail' => array('-like' => '%@example.com')) ) ->fields("mail, name") ->order("updated desc") ->offset(0) ->limit(10
PHP 5.5.0が公開されました。オペコードキャッシュやジェネレータなど、言語仕様としても実行エンジンとしても挑戦的な内容が含まれています。 「PHP 5.5.0」が、2013年6月20日に公開されました。2012年3月1日に公開された「PHP 5.4.0」から数えて1年3カ月ぶりのメジャーバージョンアップになります。これまでのメジャーバージョンアップの例に漏れず、言語仕様としても実行エンジンとしても挑戦的な内容が含まれています。なお2013年7月18日にはバグ修正版の「PHP 5.5.1」が公開されており、本稿のサンプルコードは同バージョンで動作を確認しました。 PHP 5.5系列が公開されたことに伴い、PHP 5.3系はメンテナンスモードに入りました。同年7月11日に公開された「PHP 5.3.27」が5.3系列の通常の最後のバージョンとなり、これ以降はセキュリティ修正のみの対応とな
ユニークなのは、すでに市販されている書籍を「主教材」とし、これに基づいて試験を行う点だ。副理事長に就任予定の吉政忠志氏は、「市販本でローコストオペレーションが可能になる」と話す。「ざっと見渡したとき、すでに書籍がたくさんある。独自の教材を作る作るコストがもったいない」(吉政氏)。主教材は市場で評価の高いオライリーのものとしているが、既存のeラーニングや書籍も申請手続きを経ることで副教材として「認定」のお墨付きが得られる。また、すでに全国に38校あると見られるPHPを教えるスクールについても、認定スクール、認定コース、認定インストラクターとして登録できる制度を整える。 受験料を抑えるビジネスモデルを採用したのは、個々のエンジニアが自主的に学習してスキルアップできる環境を日本でも整えたい、という思いがあるからだという。ベンダが主体となって運営する資格試験や、企業がエンジニアに取得を推奨したり、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く