- TOP
- Perl / PHP
$fruits = array( "apple" => "yummy", "orange" => "ah ya, nice", "grape" => "wow, I love it!", "plum" => "nah, not me" ); $veg = array("potato" => "chips", "carrot" => "soup"); $grocery = array($fruits, $veg); $obj = new ArrayObject( $grocery ); $it = new RecursiveIteratorIterator( new RecursiveArrayIterator($grocery)); foreach ($it as $key=>$val) echo $key.":".$val."\n";
出力
--------
apple:yummy
orange:ah ya, nice
grape:wow, I love it!
plum:nah, not me
potato:chips
carrot:soup
http://jp2.php.net/manual/ja/class.arrayiterator.php
まんまコピペだけどコイツは便利。似たようなのにRecursiveArrayIterator クラスもある。
ereg
// 以前 ereg("/pattern", $string); // 置き換え後 preg_match("/\/pattern/", $string);
eregi
// 以前 eregi("/pattern", $string); // 置き換え後 preg_match("/\/pattern/i", $string);
preg_matchでパターンにスラッシュなどが含まれる場合はエスケープする
ダウンロード・インストール
# ダウンロードする % curl -sS https://getcomposer.org/installer | php ## 別のダウンロード方法 # % php -r "readfile('https://getcomposer.org/installer');" | php # 任意の場所(ホームディレクトリ/local/bin/composer)にリネームして移動 mv composer.phar $HOME/local/bin/composer # 動作確認 $HOME/local/bin/composer # ______ # / ____/___ ____ ___ ____ ____ ________ _____ # / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ # / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / # \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ # /_/ # Composer version 1.3.2 20XX-XX-XX XX:XX:XX
必要なパッケージをインストール
ここではphp-pdfimagesの依存ファイルをインストールする
# php-pdfimages内のcomposer.jsonを以下へ記述 % $HOME/local/bin/composer.json # インストール % $HOME/local/bin/composer install # Writing lock file # Generating autoload files
ウェブAPIが使えたり、メールの送受信によってFAXを送れるサービスメモ。
たとえば
- フォームに入力・送信
- PHPとかで整形しメール添付でネットFAXに送信
- そのメール添付内容をFAXで送信
- フォーム・fax内容をデータベースに登録
的なものを目指す。
サービス名 | FAX番号 | 送受信 | WEB API | ページ単価 | 月額費用 | 初期費用 |
---|---|---|---|---|---|---|
秒速FAX送信(ToonesインターネットFAX) - 株式会社Karigo | 03、IP、他、既存利用可 | 送信 | JSON形式 | 7~10円/枚(月5000枚以下で10円) | 無料 | 無料 |
受信 | JSON形式(日時、fax番号、枚数、受信元番号、送信元番号、PDF) | 8円/枚・3円/枚・無料 | 498円・798円・980円 | 1,050円 | ||
InterFAX | 03、既存利用可 | 送信 | メール(添付ファイル) or XML-SOAP形式 | 22円/枚+税 | 1,000円+税(250円分送信無料) | 無料 |
受信 | メール(添付ファイル) or XML-SOAP形式(日時、fax番号、枚数、送信元番号、PDF・TIFF) | 10円/枚+税(1000ページ分無料) | 2,200円+税 | 1,500円+税 | ||
FaximoSilver | - | 送受信 | メール(添付ファイル) or XML-SOAP形式 | 12円/枚+税 | 940円+税 | 1,500円+税 |
原因
- SESSIONを使っている
- POSTでパラメータを送信
- ブラウザの「戻る」を押した
犯人はだれだ?
原因は、PHPでSESSIONを使うと(デフォルト設定では)自動でキャッシュ制御用のHTTPヘッダーが送出され、それによりクライアント側のキャッシュが使用不可にされるため。(参考:floatingdays: PHPでブラウザキャッシュを有効にする)
つまり、下記条件を全て満たした場合にこの現象が発生する。
PHPで 「Webページの有効期限が切れてます」となる時の傾向と対策 - floatingdays
- HTTP POSTで遷移してきた。
- SESSIONを使っている。(session_start()してるか、php.ini等でsession.auto_start=1に設定している。)
- 次のページに行ってから、ブラウザの履歴機能(JavaScriptのhistory.back()を含む)で戻ってきた。
対策
方法1
session_start()する前に、session_cache_limiter('none')を書く。SESSIONを利用しても余計なHTTPヘッダが送出されない。
session_cache_limiter('none'); session_start(); // フォーム
cache_limiterにnoneというパラメータは無いからパラメータエラーとなり、結果的にHTTPヘッダを送信しないという挙動になっているらしい。
PHP: session_cache_limiter - Manual
方法2 こっちが正解
header();に色々書いて、ブラウザキャッシュを表示させる。ただし、SESSIONの最新情報が入っていないので注意が必要。
session_start(); header('Expires:-1'); header('Cache-Control:'); header('Pragma:');