タグ

phpに関するam11opのブックマーク (35)

  • How to use ACL with Cake PHP 1.2.x? (Articles) | The Bakery, Everything CakePHP

    This tutorial will brief you on how to use Acl in CakePHP 1.2.x versions. I had tough time figuring this out. But with help of Gwoo, AD7Six & others, and doing debugging and reading code, here comes the tutorial. This tutorial assumes you know basic concept of ACL and what it is suppossed to be used for? If not then please read http://manual.cakephp.org/chapter/acl You can setup the databases nee

    am11op
    am11op 2007/12/17
    便利ぽ。ちょっと複雑。いや、絶望的に複雑。
  • [戯] PHP のデバッグが楽になる?変数の情報を見やすく表示する dBug

    PHP のデバッグが楽になる?変数の情報を見やすく表示する dBug 2006-02-13-3: [PHP][MySQL][Code] http://dbug.ospinto.com/ リンク先の説明には var_dump() と比較したみたいに書いてあるが,実際は print_r() を見やすくした感じ. 以前紹介した PHP 用のデバッグライブラリ Tulpes PHP4 Debug Helper (debuglib.php) と基的には同じ. 開発時にはもっぱら debuglib.php のお世話になっているが,dBug も使ってみた. サポートされている変数の型は 配列 クラス/オブジェクト データベースリソース XML リソース イメージリソース 実際の表示はどうなるかというと $variable = array( "first"=>"1", "second", "third"

    am11op
    am11op 2007/12/06
    print_t を見やすく
  • 第10回 スクリプトインジェクションが無くならない10の理由 | gihyo.jp

    SQLインジェクション対策は非常に簡単です。しかしブラウザに対する「スクリプトインジェクション」はなかなか無くなりません。スクリプトインジェクションが無くならない10の理由をあげてみます。 複雑な攻撃経路と対策 前回紹介したように、ブラウザに対するスクリプトインジェクション攻撃の経路は3種類あります。エスケープ方法も数種類あります。すべての出力を完全にエスケープできればセキュリティ維持も容易になりますが、タグや属性を出力したい場合もあるため、必ずしもすべての出力をエスケープできるわけではありません。さらに攻撃手法にも、サイトをまたがった攻撃、直接攻撃、間接攻撃などパターンがあります。エスケープできないデータへの不正なスクリプトの挿入を防ぐには、データの起源までさかのぼり安全性を確保しなければなりません。ブラウザに対するスクリプトインジェクション対策はデータベースサーバへのSQLインジェクシ

    第10回 スクリプトインジェクションが無くならない10の理由 | gihyo.jp
  • 配列をobjectにキャストする - Do You PHP はてブロ

    し、知らんかった。。。PHPマニュアルには説明があるみたいです。 $ cat -n cast.php 1 <?php 2 $arr = array('foo' => 1, 'bar' => 'hogehoge', 'baz'); 3 var_dump((object)$arr); $ php cast.php object(stdClass)#1 (3) { ["foo"]=> int(1) ["bar"]=> string(8) "hogehoge" [0]=> string(3) "baz" } $ これって当たり前ですか?当たり前ですか。そうですか。

    配列をobjectにキャストする - Do You PHP はてブロ
  • Implementing a Comma Separated Values (CSV) "webservice" (Articles) | The Bakery, Everything CakePHP

    A simple howto for beginners (by a beginner!) on rendering CSV output in a consistent manner with XML, RSS etc. I started with CakePHP a few weeks ago and have had great success redeveloping an intranet web application. One of the strong draws to Cake was the promise of "free" webservice provision which is very important. We have a number of other applications that tap into the data feeds from thi

    am11op
    am11op 2007/11/08
    CSV を「WEBサービス」で
  • ハタさんのブログ : PHP開発者のためのデザインパターン。Delegate

    ITT-WEB - XOOPSCubeにおけるDelegateとは何か?というエントリが上がっているので、ちょっとだけDelegateについて触れてみたいです。 Delegateとは、そのままの意味で「委譲」を示します。(集約ではないです) とある処理をそれまで行っていたクラスから、ちがうクラスに対して処理を行ってもらうようにします。 Delegateと書くとちょっと堅苦しいですが、proxyやTemplate Methodに近い存在です。 Delegateは慣れてくると色々なパターンに適用しやすい便利なパターンなので、是非身に着けたいものです。 以下にファイルのデータを書き込む処理の例を示します。 class DataWriter { public function write(Data $data){ $file = new File($data->getPath()); if(

  • ハタさんのブログ : PHP開発者のためのデザインパターン。Controller

    はてブコメントにて、「シリーズ化して欲しい」とあったので、もう少し書いてみます。 今回紹介するパターンは、Controllerパターン。 たぶん、デザパタ(GoFとかのヤツ)ではControllerパターンなんてものは存在しないのですが、よく見掛けるパターンなので紹介します。 よくあるControllerパターンは、FrontControllerパターンを使ったデータ遷移パターンですが、今回僕が紹介するパターンはCommandController(これもGoFとかのパターンにたぶん無いので勝手に命名)です。 何か実行したいCommandについて、Controllerが適切に実装を振り分けその後のActionを実行するためのパターンです。 よくある実装 例えば、以下にCommandインタフェースを実装した複数のクラスがあり、そのCommandによって、実行するActionを振り分けるCo

    am11op
    am11op 2007/11/06
    Controller, Command, Visitor
  • ウノウラボ Unoh Labs: PHPで暗号化・復号化あれこれ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    ウノウラボ Unoh Labs: PHPで暗号化・復号化あれこれ
  • CakePHP1.2で使える便利な5つの新機能 - yandod's blog

    おかげさまでCakePHPガイドブックの売れ行きは好調のようです。 今回の書籍は主にCakePHP1.1を対象として解説を行っています。 現在CakePHPを利用している方の多くは1.1を利用しているであろう事と、正式版のリリースまではまだ時間があるであろうというのがその理由です。 追記) CakePHPガイドブックの内容は1.1を基にしていますが、1.2の機能を利用する為の章も設けてあります。 とはいえ10月22日にはCakePHP1.2のpre-betaがリリースされ、その完成度は着々と上がっています。 まだ1.2を使った事がない方も多いと思いますので1.2から利用できるさまざまな新機能からいくつかを紹介します。 1.エラー発生箇所のフレンドリーな表示 実際に開発を行っていると一回の作業で正しい記述のコードが書けるとは限りません。 命令の名前や変数の指定を誤ったりした場合はエラーメッ

    CakePHP1.2で使える便利な5つの新機能 - yandod's blog
    am11op
    am11op 2007/11/01
    4,5は初見。βからかな
  • PukiWiki 【FrontPage】

    なんだかやけに長い説明ばかり検索に引っかかったので書きました。 Linuxのローカル環境でDockerコンテナ内のXアプリ(GUIアプリ)を利用するには $ xhost localhost + を実行した後に $ docker run --rm --net host -e "DISPLAY" container_image_name x_app_binary_path とすれば良いです。 もっと読む SSHなどよく知られたサービスポートで何も対策せずにいると数えきらないくらいの攻撃リクエストが来ます。不必要なログを増やしてリソースを無駄にし、もし不用意なユーザーやシステムがあると攻撃に成功する場合もあります。 SshguardはC作られており、flex/bisonのパーサールールを足せば拡張できますがカスタム版をメンテナンスするのも面倒です。必要なルールを足してプルリクエストを送ってもマー

    PukiWiki 【FrontPage】
    am11op
    am11op 2007/11/01
  • PHPプログラマにありがちだと思うこと - スコトプリゴニエフスク通信

    ふと思いついたので書き留めてみる。別に他意はありません。 みんな自分のフレームワークを作っている。 みんな自分のORMを作っている。 「でも結局はSQLを直接書くよね」と言う。 みんな自作のテンプレートエンジンを作りたいと思っている。 実際に作っちゃう人は少数。 Zend_CacheではなくCache_Liteを使う*1。PHPを自分でビルドするのが好き。 当然PHP4, PHP5は両方使えるようにしておく。 いろいろconfigureオプションを変えてビルドしてみる。 RCが出るたびにビルドし直す。 でもいずれ飽きる。Perlに関心がない。もしくは敵意を持っている。 焼肉大好き。 【追記】あるかなぁと思いつつ、自分だけのことかも・・・ということを一応列挙。Zend Frameworkを真剣に研究したわけではないのに、「Zend Frameworkって期待したほどのものじゃなかったよねー」

    am11op
    am11op 2007/10/30
    あるある
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    am11op
    am11op 2007/10/30
    本当は難しい Unicode
  • ふつうのリロード対策

    一般的な登録フォームの画面遷移は、 入力画面→入力確認画面→完了画面 であるかもしれないけど処理の流れとしては、 入力画面表示処理→入力確認画面表示処理→登録(メール送信)処理→完了画面表示処理 になる。 処理を分けることにより、完了画面でリロードされても、二度も登録処理が行われることはない。 個人的には、完了画面で登録(メール送信)処理を行うのは、あまり好きではない。 登録(メール送信)処理と完了画面表示処理を同一処理上で行おうとすると、面倒なリロード対策を行わなくてはいけない。 それで件のページの内容に行き着く。 すごいリロード対策 件のページの内容が『すごい』というのはCSRF(クロスサイトリクエストフォージェリ)対策を同時に行っている点でしょう。 CSRFは、通常のフローを通らずに登録処理だけを行おうとする攻撃である。コメントスパムなんかがよい例。 CSRF対策としては、『リファラ

    ふつうのリロード対策
    am11op
    am11op 2007/10/22
    デフォルトでワンタイムトークン取り入れなきゃならんもんかどうなのかと。ケース次第だと。
  • 58. すごいリロード対策

    まず、日のサイトにある一般的な登録フォームの画面遷移は 入力画面→入力確認画面→完了画面 となっている場合が多いようです。ここでリロード問題となるのは完了画面でのDBへのINSERT処理やCSV書き出し処理、メール送信処理など「一度しか行わない処理」です。例えば完了画面へ遷移した際にブラウザのリロードボタンが押された場合、確認画面よりsubmitした情報が再度submitされて上記の一度しか行わない処理が二度行われてしまいます。そうならないよう、リロード対策はスクリプトで制御します。 まずは確認画面のスクリプト 確認画面でチケットを発行し、セッションに保存しておきます。同時に完了画面へチケットがPOSTされるよう、hiddenにセット。こうして完了画面へ遷移させます。それでは完了画面のスクリプトを見てみましょう。 このように、確認画面で発行されたチケットは一度使い切ってしまえば2度処理さ

    58. すごいリロード対策
  • CakePHPにRSSフィードを組み込む [MT Systems]

    RSSフィードを利用したいので、オープンソースでPHPRSSフィードモジュールを探したところ、ドイツのKai Blankenhorn氏により、LGPLライセンスで「FeedCreator.class.php」が公開されていた。多くの人が利用しているようなので、このモジュールをCakeに組み込んでみることにした。もちろん、Cakeのフレームワークに、できる限りきれいに組み込みたい。結果は、CakeもFeedCreatorもどちらもすばらしいできで、思った通りにきれいに組み込むことができた。XMLの出力について最初に考えた事は、FeedCreatorのページのサンプルを見たところ、フィードしたいデータをオブジェクトにセットし、「saveFeed」関数でRSSフィード形式のファイルを書き出すようになっているので、Cakeでアクションのビューファイルとして出力すれば良いのでは、と言うことだった。

    am11op
    am11op 2007/10/04
    楽してRSS
  • PHPでExif情報を表示する

    187: /** 188:  * Exif情報を配列に格納する(下請け関数) 189:  * @param  String $fname 画像ファイル名 190:  * @param  Array  $exif  Exif情報を格納する配列 191:  * @return    0:正常に表示した 192:  *          (-1): ファイルが存在しない 193:  *          (-2): JPEG/TIFF以外の形式 194:  *          (-3): Exif情報がない 195: */ 196: function _getexif($fname, &$exif) { 197:     //ファイルの存在チェック 198:     if (fopen($fname, 'rb') == FALSE)   return (-1); 199: 200:     /

    am11op
    am11op 2007/10/01
    --enable-exif
  • 2007-09-20

    非常に単純で、コードをべた書きできないからだと思う。文字列として渡さなければならないので、$ や " や ' を一々丁寧にエスケープしないとならないのが非常に、面倒くさい。 Perlであれば、 eval { my $i = 0; ... }; die $@ if $@;みたく書けるし、また、無名サブルーチン/関数も my $lambda = sub() { my ($a, $b, $c) = @_; ... $a + $b; };と書ける。 続きを読む PHPのスクリプトは、 <?php ... ?>の枠の「外」については、HTMLを想定してそのまま出力する。つまり、使いようによってはPerlRubyのDATAセクションのような使い道ができるはず。これを逆手に取り、出力バッファリング関数で意図的にこの枠外の文字列を取得してしまう。 論より証拠。 hoge1.php : <?php $i

    2007-09-20
    am11op
    am11op 2007/09/21
    この発想はなかった
  • Mi Blog : Debugging test cases

    Hurray it's the middle of summer and obviously like most people I am quite focused on testing code. What? You mean that isn't a typical summer activity :D? I've written a few tests with the CakePHP test suite now and can safely say that after you have written your first one, it's very easy to write another. One thing that is a great help but not so clear how to do is how to debug a test while you

    am11op
    am11op 2007/09/13
    for test
  • p28n, the top to bottom persistent internationalization tutorial. (Articles) | The Bakery, Everything CakePHP

    For some developers, allowing a website to support multiple languages is essential. Luckily cakePHP 1.2 has the foundations available to make this possible. Before forging ahead, I'd like a disclaimer. I don't claim this tutorial to be uniquely mine, it's an amalgamation of techniques from several pages and sites. Neither is it the most comprehensive and in-depth guide. That said, I certainly ho

    am11op
    am11op 2007/09/13
    多言語化
  • CakePHP - validate

    CakePHPでのvalidateネタ。 validateは入力チェック正規表現をmodelの$validateに配列で設定しておくだけなんだけど、メールアドレスの重複チェックなんかはそのままではどうにもできない。 modelの$validateに正規表現ではなく、(入力チェック)メソッド名を入れとけばそれを呼んでくれたりするのかな、と思ったがそれはナシ。 マニュアルではcontrollerで重複チェックを行う方法が載っているだが、正規表現でのチェックはmodelにあるので一緒にmodel内に書きたいところ。 で、考えたのが以下の3つの方法。 model#beforeValidate()に書く 正規表現での入力チェックより先に呼ばれてしまう。 一意チェックなんかではDBアクセスが発生するから正規表現でのチェックを通過したものだけ処理を行う方が良い。 model#validates()に書く

    am11op
    am11op 2007/08/10
    統一しとかないと gdgd になりそう