(Last Updated On: 2021年2月15日) 色々やることがあってブログを更新できていませんでした。久々のブログはPHPのOpenSSL関数を使ってAES-256-CBCを使って暗号化する例です。今時のハードウェアとソフトウェアならハードウェアAESが利用できるので普通はAES-256-CBCで構わないでしょう。 ”パスワード”だけで暗号化する例 暗号を利用する場合のポイントは以下の通りです。 IV(Initialization Vector ソースでは$iv)にはランダムな「バイト」を利用する。IVに16進数のハッシュ「テキスト」を使うと折角のIVの空間を半分にしてしまいます。IVには毎回ランダムバイトを設定する。鍵($key)には「バイト」を利用する。IVと同様にハッシュ「テキスト」などを使うと鍵空間が半分になってしまう。人に256ビットの鍵を要求するのは非現実的なので、
こんにちは、tomitaです。 一般的なwebサーバでは、静的ファイルに「Etag」「Last-Modified」ヘッダが付加され、サーバ <=> ブラウザ間で適切なキャッシュコントロールが行われます。 (参考:HTTP ETag - Wikipedia) しかし、PHP 等で生成した動的コンテンツには上記ヘッダが付加されないため、常に最新のデータがサーバから送られてきます。 当然動的ページなので下手にキャッシュされると困るのですが、更新頻度の低い動的ページではコンテンツキャッシュさせたいことがあります。 その場合は以下サンプルプログラムのように「Etag」「Last-Modified」ヘッダを生成・送信します。 <?php header( "Content-Type: text/plain; charset=UTF-8" ); // Last-modified と ETag 生成 $la
よく判らん。 先日仕事で作ったケータイサイトで、クレームがついた。 別にクレームでもないか。 要するにいわゆる「機種依存文字」が化けるんだけど?って。 ケータイサイトなんで、HTML側はShift-JISで、PHPはUTF-8です。 SJISのサイトからSJISで受け取った文字列をUTF-8に変換して、各種処理(入力チェックとか、内容の確認)をして、HTMLで表示する直前にSJISに戻すことをしている。 で、メールを送信する際に mb_language('ja'); を実行しているので、ISO-2022-JPで扱われることになる。 e-mail メッセージのエンコーディングとして使用します。有効な言語は、"Japanese", "ja","English","en", "uni" (UTF-8) です。 mb_send_mail() は、e-mail をエンコードする際にこの設定を使用しま
現在からの相対日付を求める計算例phpスクリプト <?php $x = array(); //現在 $x[] = "現在 " . date("Y-m-d H:i:s"); //現在からの相対日付(前) $x[] = "1日前 " . date("Y-m-d H:i:s",strtotime("-1 day")); $x[] = "1ヶ月前 " . date("Y-m-d H:i:s",strtotime("-1 month")); $x[] = "1年前 " . date("Y-m-d H:i:s",strtotime("-1 year")); $x[] = "1週間前 " . date("Y-m-d H:i:s",strtotime("-1 week")); $x[] = "1時間前 " . date("Y-m-d H:i:s",strtotime("-1 hour")); $x[] =
PHPのsimplexmlを利用して、 XMLファイルを読み込んで情報を出力させてみます。 更新したブログの情報を別のサイトやトップページに表示させたい時などに便利です。 サンプルで下記を読み込んでみます。 [sample.xml] <?xml version="1.0" encoding="utf-8"?> <rss> <channel> <item> <title>テスト01</title> <link>URL01</link> </item> <item> <title>テスト02</title> <link>URL02</link> </item> <item> <title>テスト03</title> <link>URL03</link> </item> </channel> </rss> [テンプレート] simplexml_load_file関数を利用して読み込みます。 ※s
以前書いたテキストエディタからPHPEclipseへ移行した決め手の 記事から一年たちました。 Eclipseも新バージョンが登場し、PDTも1.0正式版が出ましたし、 OSも社内ではVistaに切り替わりつつあります。 というわけで、開発環境一新プロジェクトが立ち上がり、 新しくでた環境の検証を行いました。 EclipseはFireFoxと同じようにプラグイン機構なのですが、 構成をいじろうとするとツールごとの相性の問題などで 頻繁にエラーがでてしまいます Eclipse本体のバージョンやプラグインのバージョンを とっかえひっかえしながら安定する環境をなんとか作成しました。(大変!) 最終的に作った環境は以下になりました。 Eclipse Platform 3.3 Europa Pleiades (日本語化プラグイン) PHPEclipse v1.1.8 (PHP開発環境) Subcli
問題 phpで画像付きツイートしたい。なるべく簡単に。 答え わかりやすいかどうかは人それぞれだと思うけど、何のライブラリも使わないでコピペで動く画像付きツイートスクリプトの例は以下の通り。 <?php //twitterのAPIを使うために必要なもの $consumer_key = 'xxxxxxxxxxxxxxxxxxxx'; $consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $oauth_token = 'xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $oauth_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //画像を用意する $content_type = 'im
昨日の続き。対処方法をググってコピペして動作確認した。対処の仕方は、 GETメソッドの場合は $_SERVER['QUERY_STRING'] を参照 POSTメソッドの場合は php://input を参照 となる。以下ソース。 なんとなく class にしたけど、function params(){} のほうが呼び出しは楽だろう。 あと、params() 呼び出すと GET と POST 両方もってきちゃうので、引数にGET/POST指定して該当するほうだけ取得、のほうがいい気がする。
Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su
switch (PHP 4, PHP 5, PHP 7, PHP 8) switch文は、同じ式を用いてIF文を並べたのに似ています。 同じ変数を異なる値と比較し、値に応じて異なったコードを実行したいと 思うことがしばしばあるかと思います。 switch文は、まさにこのためにあるのです。 注意: 他の言語とは違って、 continue命令は switch にも適用され、breakと同じ動作をします。 ループの内部で switch を使用しており、 外側のループの処理を続行させたい場合には、continue 2 を使用してください。 注意: switch/case が行うのは、 緩やかな比較 であることに注意しましょう。 次の二つの例は、同じことを二つの異なった方法で書いたものです。 一つは、if と elseif文を、 もう一つはswitch文を使っています。 どちらも、出力は同じです。
ジェネレータ ジェネレータ セーブ機能 ジェネレータ関数 シナリオ ジェネレータオブジェクト セーブデータ yield文 セーブポイント <?php // 何回呼んでも0が返る function func () { $i = 0; return $i; $i++; return $i; $i++; return $i; } <?php // yieldを使ったジェネレータ関数の例 // ジェネレータ関数 function gfunc () { $i = 0; // yieldは終了ではなく一時中断 yield $i; // 1回目は0 $i++; yield $i; // 2回目は1 $i++; yield $i; // 3回目は2 } // 前回の終了位置から実行を再開出来る // メインプログラム // オブジェクトを作成しなければならない。 // gfunc(); はNG $g =
Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su
ベーシック認証とは、事前に作成したユーザーとパスワードを持つ人にのみページを公開したい時 簡単に使用できるのが、ベーシック認証です。 ここでは、phpによる ベーシック認証 を紹介します。 ベーシック認証 の仕組みについては、次のページを参照してください。[ベーシック認証] Apacheによる ベーシック認証 は、次のページを参照してください。[Apacheによるベーシック認証 ] PHPによるHTTP認証のフック この機能は、Apacheモジュールとして実行した時のみ 有効で、CGI版では利用できません。 仕組みとしては、Apache等がクライアントとのやり取りを行うのと同様のことを php で実現することになります。 <?php function AuthenticateUser($user,$pwd){ //ファイルやDBを使ってユーザーをチェックします。 } if(!isset($
大垣靖男さんの連載から 第21回 文字エンコーディングとセキュリティ(3):なぜPHPアプリにセキュリティホールが多いのか?|gihyo.jp … 技術評論社 一見この動作は無害のように思えるかもしれませんが,ブラウザなど,“\”がエスケープ文字になっているシステムでは重大な問題となります。 <div height="<?php echo addslashes($height); ?>" width="<?php echo addslashes($width); ?>"> この記事が公開された当初,上記のechoが抜けていた。しかし,echoがないと,プログラムの正常系としても動作しない。どこかから,突っ込みが入ったのであろう,その後echoが追加された。 しかし,まだ根本的におかしい。 なぜなら,以下の部分が間違っているからだ。 ブラウザなど,“\”がエスケープ文字になっているシステム
このページについての説明・注意など PHP の mbstring 拡張モジュールについて調べてみました。mbstring 拡張モジュールは、PHP マニュアル : マルチバイト文字列関数 (mbstring) にも書かれていない機能や制約が多くあります。そのあたりをソースコードを確認しながらまとめてみました。 更新内容については、更新履歴を参照してください。 ソースコードの確認は主に PHP 5.2.5 〜 PHP 5.3.0 で行いました。PHP 4.x に対する記述もありますが、細かいバージョン等については十分に確認できていないものもあります。このページを読んで、間違い、誤字、脱字などがを見つけましたら、はてなの日記、または、メールなどで教えてください。 mbstring を使用する方法 静的ライブラリとして組み込む方法 共有ライブラリとして使用する方法 Windows 環境の場合 P
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く