このエントリは、PHP Advent Calendar 2021 の20日目のエントリです。19日目は @takoba さんによる PHPプロジェクトのComposerパッケージをRenovateで定期アップデートする でした。 SQLインジェクションやクロスサイトスクリプティング(XSS)の対策を行う際には「エスケープ処理」をしましょうと言われますが、その割にPHP以外の言語ではあまりエスケープ処理の関数が用意されていなかったりします。それに比べてPHPはエスケープ処理の関数が非常に豊富です。これだけ見ても、PHPはなんてセキュアなんだ! と早とちりする人がいるかもしれませんが、しかし、他言語でエスケープ処理関数があまりないのはちゃんと理由があると思うのです。 本稿では、PHPのエスケープ処理用の関数を紹介しながら、その利用目的と、その関数を使わないで済ませる方法を説明します。 SQL用
はじめに phpでvar_dumpで変数の値を確認するデバッグ手法があると思いますが、それをそのままhtml上で表示すると こんな感じになってしまいます。 このままでは中の構造が追いにくく分かりにくいので形を成形して表示する方法を3つ紹介します。 サンプルコード <?php $sample = array('first' => array('first_children1' => 'a', 'first_children2' => 'b', 'first_childeren3' => 'c'), 'second' => 'd', 'third' => array('third_children1' => 'e', 'third_children2' => array('grandchildren1' => 'f', 'grandchildren' => 'g'))); var_dump($
この記事は何か 挑発的な文言になってる箇所はあるものの、内容としてはそれなりにまじめに書いたつもり。むしゃむしゃしてやった。いまでは反芻してゐる。 PHPDocは必ず書け あらゆる再利用可能な手続きは、他人が容易に応用できるように型が明示的でなければいけない。メンバー全員が実装コード全てを把握できるものならそれが理想だけれど、残念ながら時間は有限だ。ヘッダだけを読んでメソッドの仕様が理解でき、またはコードを読む助けになるようなコメントが良い。 有名な事実を紹介すると、多くのコードは数か月(早ければ数日!)も経てば、他人が書いたコードに感じられるほど理解できなくなることがしばしばある。もちろん設計の練度にもよらうが、設計判断について注意を要した点などをコメントに残しておくことで、ひいては未来の自分の役に立てることができる。 お前の先輩は「PHPには型がない」などと知ったかぶって意味不明1なこ
2. アジェンダ • 例えば、PHPを避ける • htmlspecialchars 文字エンコーディングチェックの改善 • register_globalsが非推奨に • マジッククォートが非推奨に • 暗号学的に安全な擬似乱数生成器のサポート • セッションID生成の安全性強化 • ヌルバイト攻撃の防御機能の追加 • PDOのDB接続時の文字エンコーディング指定が可能に • header関数のバグ修正 • 安全なパスワード保存が簡単にできるようになった Copyright © 2016 Hiroshi Tokumaru 2 3. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計
▼ [PHP][Selenium] PHPUnit と Selenium2 を使ってブラウザベースの自動テストを実行するための最初の一歩的な何かを発表してきた 「(CakePHPとか)PHPのテストについての勉強会」で「PHPUnit + Selenium2 First Step Guide」と題した発表をしてきた。 「First Step Guide」としたのは、これを見ながら「Selenium 環境を整備して、簡単な PHPUnit コードを書く」ところまで実行できるようにしたかったため。 本当は発表よりもハンズオン的にやってみたかった話ではある。 発表資料 https://speakerdeck.com/suzuki/phpunit-plus-selenium2-first-step-guide サンプルコード https://github.com/suzuki/phpunit-se
使用方法 ログインできるかどうか // ここは使用するアダプタによって変わります。 $adapter = 【アダプタにID・パスワードを渡す】 $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($adapter); if ($result->isValid()) { // 認証成功(ログインできる。) } else { // 認証失敗(ログインできない。) } 認証に失敗した場合の詳しい情報はgetCode()メソッドでわかります。 結果コードには次のものがあります。 Zend_Auth_Result::SUCCESS Zend_Auth_Result::FAILURE Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND Zend_Auth_Result::FAILURE_I
私は結構エディタ難民で、HTML/CSS/PHP等をコーディングする際のエディタをWindows・Mac含め色々試してきましたが、最近は NetBeans IDE に落ち着いています。 NetBeans IDE は厳密にはエディタではなく、Windows・Mac・Linux用の無料で利用できるIDE(統合開発環境)の一種です。 ちなみに、↓のキャラクターは NetBeans IDE 日本語コミュニティの公式マスコットの「ねこび〜ん」です。 私はWordPressのテーマファイルを作成しているときに、PHPで独自のCMSを開発されている @kawagooch さんに勧められて使い始めたのですがとてもしっくりきたので、以後 HTML/CSS/PHP などWebサイトのコーディングには NetBeans IDE をメインで使っています。 私自身、NetBeans IDE を使うようになってからサ
先日ペコリンという Web サービスを公開したのですが、これが初めての WordPress との複合会員向けサービスだったためか、ログインが途中で切れたり、記事投稿時のリダイレクトがかかるタイミングなどで SESSION が切れてしまうことがありました。 しかし Twit Delay では長期的にログインが保持されていたり、mixi とかではログイン時間を指定できたりするので、なんとかできるものだろうと考えていたら Twitter で教えてもらいましたのでまとめておきます。 SESSION だけを使ったログインの保持では長期ログインは不可 私は今までログインの保持は以下のようにしていました。 1 2 3 4 5 <?php ini_set('session.gc_maxlifetime', 60*60*24); ini_set('session.gc_divisor', 10000); s
PEAR::HTTP_OAuth×RSS×SimplePieで作った「ニューすったー☆」とは 「ニューすったー☆」はTwitterへ新着情報やブログのRSSを自動投稿してくれるPHPスクリプト(ボット)になります。ニュース記事等を更新して、Twitterへ投稿するという作業を一度に行ってくれます。またRSSの記事タイトルに設定されているリンクURLを認識し、短縮URlとして各Tweet記事の文末に自動記載します。 動作環境 PHP 5.1.4 以上 Safe mode off 動作確認環境 PHP 5.3.0 設置方法 1.データダウンロード 「ニューすったー☆」をダウンロードしてZipファイルを解凍します。、Tweetフォルダ内あるtwitter.phpを開くと以下の内容が表示されています。 #!/usr/bin/php <?php $rss_list[] = "登録したいRSSのURL
「サイトマップ」ページを簡単自動作成 サイトマップの作成は、xmlベースで簡単に自動作成してくれる多様なサービスが充実しているのですが、htmlファイルベースのいわゆる『サイトマップ ページ』は、ファイルコーディングによって人力作成されるケースが殆どかと思います。また、『サイトマップ ページ』の場合、 ホームページ運営に応じて、マメに更新作業が求められる箇所でもあり、人によっては面倒な作業が多々発生するものです。 そんな、めんどくさい作業を一層のこと自動で作成してくれないもんかと、「QUICK SITE MAP」を作ってみました。 QUICK SITE MAPにできること 基本的にWEBサーバーにあるファイルを自動認識し、htmlファイルベースでサイトマップを出力します。もちろん、それだけでは、垂れ流し状態のサイトマップとなってしまうため、見出しリストの指定や表示・非表示の設定、或いは、表
GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠
最近個人ワークで Amazon を使ったモノを2つ程作っていますが、1つは Zend Framework を使用して開発中。 Services_Amazon の itemSearch を使用し商品検索を行っていましたが、Zend Framework 内で各ページ 10 件表示を PEAR Pager の GET の処理で行った際に少し悩んでしまったのでメモ。 Zend Framework の細かい仕様はここでは省きますが、Zend Framework は MVC パターンに基づいて Zend_Controller_Front が URL を分析しディスパッチ処理・ルーティング処理を行います。例えば今回の URL が http://www.test.com/amazon/search/ だとすると AmazonController class 内のsearchAction 関数内で処理を行う
This shop will be powered by Are you the store owner? Log in here
PCサイトと携帯サイトを同じURLで運営してると、フォームで送信した場合、データの文字コードの問題が出てくると思います。それなら、統一してしましょうと頑張ってみた。 やり方は2通りあると思います。一つは、Inputライブラリの CI_Inputクラスを拡張する方法。もう一つは、コアファイルをいじることなくフレームワークの内部動作を変更する方法(フック)です。個人的には CI_Inputクラスをいじりたくないので、フックする方法で文字コード変換処理を実現させてみたいと思います。 まずは、application/config/config.php の設定値を変更。 $config['enable_hooks'] = TRUE; 続いて、application/config/hooks.php に以下のコードを追加。$hook['post_controller_constructor'] はコン
Be careful with type hints in callbacks when using array-traverse functions. In some cases, this may silently cause the data type of elements to change. <?php declare(strict_types=1); // Missing fatal TypeError, No side effects $unexpected = array_filter(['123', (string) PHP_INT_MAX], fn (int $item) => true); var_dump($unexpected); // Missing fatal TypeError, Typecasting side effect $unexpectedTyp
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く