タグ

ブックマーク / xtech.nikkei.com (73)

  • 22. str_replace、便利な所と注意点

    指定した文字列を置換してくれるstr_replace()関数。この関数、全ての引数に文字列だけではなく配列も使用でき、とても便利です。ただ、便利だからとあんまり調子に乗ると・・・? 今回は、str_replace()関数の使用法と、その際のちょっとした注意点について 紹介します。 str_replace()に関しては以前のTIPSメーリングリスト(http: //www.phppro.jp/phptips/archives/vol2/)でも少し触れられていますが、引数 を配列に使用した際の挙動について、簡単におさらいしておきましょう。 以下のように、第1引数に配列、第2引数に文字列を指定すると、配列の各値に 該当する文字列が全て、第2引数に指定した文字列に置換されます。 <?php $search = array("a", "b", "c", "d"); $replace = "Z"; $

    22. str_replace、便利な所と注意点
    milkya
    milkya 2007/03/29
  • 19. マルチバイト文字とXSS脆弱性

    比較的新しい攻撃方法に、不完全なマルチバイト文字列を送信することでHTMLに 記述されているクォートを無効化する方法があります。この攻撃はHTML エス ケープのみでは防げない事に注意が必要です。では、どのように対策をすれば良 いのでしょうか? まずは、不完全なマルチバイト文字を利用してクォート(")を無効化できるこ とを確認しましょう。次のスクリプトをブラウザから実行して下さい(最後の ダブルクォテーションとPHPタグの間にスペースを入れないで下さい)。 <?php $str = urldecode('%81'); header('Content-Type: text/html; charset=SJIS'); ?> <?php echo htmlentities($str, ENT_QUOTES, 'SJIS') ?>" コードが分かりづらいので注意してください。PHPタグを2つに大別

    19. マルチバイト文字とXSS脆弱性
  • 18. PEAR::Calendarで簡単にカレンダーを作る

    PHPを使ってカレンダーを表示したい、作りたいという場合、皆さんだったらど のようにして実現しますか?日付を計算して作るのもいいかもしれません。しか し、計算するのが面倒、あまり手間を掛けたくない、そんなとき強い助けになる ものがあります。PEAR::Calendarです。今回はこのPEAR::Calendarを使ったカレ ンダー作成を紹介します。 このライブラリはベータ版なので、pearコマンドを使用して pear install calendar-beta で、インストールすることができます。 では、早速使ってみましょう。以下のスクリプトを実行してみてください。 <?php require_once 'Calendar/Month/Weekdays.php'; $calMonth = new Calendar_Month_Weekdays(2006, 8, 0); $calMonth-

    18. PEAR::Calendarで簡単にカレンダーを作る
    milkya
    milkya 2007/03/16
  • PHPの脆弱性を毎日公表するプロジェクト,ユーザ会のメンバーが日本語訳公開

    PHPセキュリティに関する活動を行っているプロジェクト「Hardened PHP Project」が3月1日から,PHPの脆弱性(セキュリティ・ホール)を1日1,1カ月間にわたって公表する「Month of PHP Bugs(MoPB)」を行っている(関連記事:3月は「PHPバグ月間」,元開発者がバグを毎日公開へ)が,日PHPユーザー会のメンバーがこの脆弱性情報の日語訳を公開している。 日語訳を公開しているのは日PHPユーザ会のメンバーであり,PHPのPostgtreSQLモジュールのメンテナ(責任者)でもある大垣靖男氏。同氏のブログ上に日語訳を掲載している。 日語訳は,大垣氏が,Month of PHP Bugsを行っているStefan Esser氏の許可を得て行っている。ただし,日PHPユーザ会ではなく,大垣氏が個人としてボランティアで行っているものであることを理解し

    PHPの脆弱性を毎日公表するプロジェクト,ユーザ会のメンバーが日本語訳公開
    milkya
    milkya 2007/03/07
  • 14. 携帯サイトを作るためのPEAR::Net_UserAgent_Mobile

    携帯サイトを作る場合、機種判定が必要になる場合が多いと思います。 今回は、機種判定を簡単に行ってくれるライブラリ、PEAR::Net_UserAgent_Mobileをご紹介します。 まず、PEAR::Net_UserAgent_Mobileをインストールします。このライブラリはベータ版なので、pearコマンドを使って pear install Net_UserAgent_Mobile-alpha で、インストールすることが出来ます。 インストールできたら、さっそく使ってみましょう。以下は、アクセスしてきた端末のキャリアと型番を表示するサンプルプログラムになります。 <?php // ここのインクルード指定は、Net_UserAgent_Mobileの配置場所に応じて適宜変更して下さい。 include_once('Net/UserAgent/Mobile.php'); $agent = 

    14. 携帯サイトを作るためのPEAR::Net_UserAgent_Mobile
    milkya
    milkya 2007/03/01
  • 13. $_SERVER['PHP_SELF']とXSS脆弱性

    皆さんは同じスクリプトへのリンクを貼る時、どの様に記述していますか? $_SERVER['PHP_SELF']を用いることがあるのではないでしょうか。これを直接用 いることは危険です。なぜならば、$_SERVER['PHP_SELF']にはクロスサイト・ス クリプティング(XSS)脆弱性が存在するからです。 $_SERVER['PHP_SELF']はしばしば次のように使われます。 <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> このページ(ここではhttp:/www.example.jp/example.php)へ下記の様にリンク を貼り、クリックしてみて下さい。 <a href="http://www.example.jp/ example.php/%22%3E%3Cscript%3Ealert(%27XS

    13. $_SERVER['PHP_SELF']とXSS脆弱性
    milkya
    milkya 2007/02/27
  • 12. JavaScriptをPHPで記述しよう

    JavaScriptを使用したスクリプトを記述していて、条件による分岐を いちいち記述していくのが面倒だなーと思ったことはないでしょうか。 そんなときにちょっぴり役に立つ技を紹介したいと思います。 それは読み込むJavaScriptファイルをPHPで記述してしまう方法です。 これを使えば、面倒なJavaScriptPHPスクリプトで動的に変化させる ことができるようになります。 たとえば、test.phpJavaScriptを生成するには以下のようになります。 テンプレート内 <script type="text/javascript"src="test.php?flag=1"></script> <script type="text/javascript"> a(); </script> test.php内 <?php echo "function a() {"; if ($_GET

    12. JavaScriptをPHPで記述しよう
  • PHPの「守護神」Suhosin

    PHPは,数え切れないほどのWebサイトで使われている非常に有名なプログラミング言語である。基的にはスクリプト言語であり,実行時にコンパイルされる。PHPは非常に多くのコミュニティによって支えられており,様々な機能を提供する膨大な数のオープン・ソース・ライブラリが公開されている。「WordPress」といった人気アプリケーションも,PHPで記述されている。ただし,PHPにもセキュリティの問題は存在する。 PHPセキュリティ問題は,長年にわたって多くの開発者が問題の修正に取り組んできた。しかし,常に迅速な対応が行われてきたわけではなく,被害を受けるユーザーも存在した。2006年末には,PHP開発者のStefan Esser氏が,この状況に嫌気がさして,PHP Security Response Teamを辞任した。 Esser氏は自身のブログで,「(辞任した理由は)いくつかあるが,最も決

    PHPの「守護神」Suhosin
  • 「HTML画面をそのまま仕様書に」,5カ月で1000画面を構築した就職サイトPuffの高速開発手法:ITpro

    上段左からティーアンドエフカンパニー 事業推進統括責任者 情報化戦略コンサルタント 西岡祐弥氏,ティーアンドエフカンパニー 代表取締役社長 佐藤裕司氏,パフ 代表取締役社長 釘崎清秀氏,下段左よりティーアンドエフカンパニー 最高技術責任者 出羽健一氏,パフ 取締役兼株式会社プロシンクワーク代表取締役社長大場京子氏,パフ 事業サポートグループ グループマネージャー 保坂光江氏 Webシステムを開発する際にはほとんどの場合,ユーザーとの打ち合わせのためにHTMLによるモックアップを作る。「このHTMLがそのまま仕様書になれば」と思ったことはないだろうか。就職情報サイトPuffの再構築プロジェクトでは,まさにモックアップをそのまま仕様書した。「十数人の開発者で,5カ月で1000画面のシステムを開発する」必要に迫られたからだ。 HTMLに仕様とメモを埋め込み,CSSで切り替え 「この未体験のスピー

    「HTML画面をそのまま仕様書に」,5カ月で1000画面を構築した就職サイトPuffの高速開発手法:ITpro
  • 10. PHPのイースターエッグを見つけ出そう

    PHPを長年使っている方には結構有名なことですが、PHPを使用しているページ に特殊なクエリを渡すと、面白い画像やPHPのクレジットを見ることができます。 PHP Logo http://php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 Zend Logo http://php.net/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 PHP Credits http://php.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 PHP Logo http://php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 画像は上記以外にも何種類か存在しており、またバージョンによって表示される ものが違うようです。それらの画像を

    10. PHPのイースターエッグを見つけ出そう
    milkya
    milkya 2007/02/15
  • 9. continueとbreak、使いこなしてますか?

    switch文やループの操作をする際に使用される制御構造に、continueとbreakが あります。 大概の入門書で登場し、動作自体は非常に単純なものなので、意外とこれらのマ ニュアルを省みない人も多いのではないでしょうか。 しかしマニュアルをよく見ると、ちょっと便利な動作をしてくれることがわかり ます。 ご存知のとおり、continueはループ内の残り処理をスキップして条件式判定まで 戻り、breakはループ処理を終了します。 動作の違いはありますが、いずれも現在のループを抜ける制御構造です。 しかし、これらは単に現在のループを抜けるだけでなく、以下のように指定する ことで現在のループとその上のレベルのループの、2重ループを抜けることが可 能です。 $count = 0; echo "start\n"; while (true) { $count++; echo "one : $cou

    9. continueとbreak、使いこなしてますか?
    milkya
    milkya 2007/02/13
  • 8. 2038年問題

    32ビットPCでは数値を扱う限界があります。 PHPで日付を扱う事が多いと思いますが、UNIXタイムスタンプを利用すると数値 の限界に引っかかる事を知っておく必要があります。 32ビットPCで扱う数値限界は 2の31乗-1 で、 2147483647 です。 これをUNIXタイムとして日付に直すと、 <?php $unixtime_max = pow(2, 31) - 1; echo date('Y-m-d H:i:s', $unixtime_max) . "\n"; $unixtime_overflow = $unixtime_max + 1; echo date('Y-m-d H:i:s', $unixtime_overflow) . "\n"; ?> 2038-01-19 12:14:07 1901-12-14 05:45:52 となり、2038-01-19 12:14:07 以降の

    8. 2038年問題
    milkya
    milkya 2007/02/08
  • 7. MagpieRSSで簡単にRSSを操作しよう

    ブログを始めニュースサイト等などで更新情報を配信する手段としてRSSが使わ れています。皆さんはそれらRSSをどのように活用していますか?RSSリーダを 利用してそのRSSを読むというのが一般的だと思います。既製のRSSリーダを利 用して楽しむのも良いですが、PHPを使うとこれらRSSを取得し自分好みにアレ ンジして表示するということが簡単にできます。 今回紹介するのは、それをPHPで簡単に実現することができるライブラリ 「MagpieRSS」です。 MagpieRSSは、GPLで開発されているRSSを解析するライブラリ、いわゆるRSSパ ーサです。PHPでリモートからRSSを取得して解析、キャッシュを行います。 対応しているRSSRSS 0.9からRSS 1.0とRSS 1.0のモジュールと、RSS 2.0と Atomの一部になります。 では早速使ってみましょう。MagpieRSSのサ

    7. MagpieRSSで簡単にRSSを操作しよう
    milkya
    milkya 2007/02/06