2009/12/1 火曜日

PHPのリロード対策

Filed under: 基本 — ne-zu @ 23:22:40 このエントリをはてなブックマークに追加

あきら×ひろこ=ゆう PHPのリロード対策を誤っていました!

PHPでこれを表示させないためには、パラメータをセッション変数に保存し、Location ヘッダーに自分自身を指定して送信するのが一般的だ。

少し前は、以下の様に実装していた。

if isset $_POST[ ‘command’ ] {
パラメータの処理

header ‘Location: ‘ . $_SERVER[ ‘PHP_SELF’ ] ;
exit ;
}

しかし、これだと以下のようなフォームでページが呼び出された場合にうまく行かない。

上記実装では command パラメータが与えられる事を前提としているのに、パラメータは何も渡って来ない。

正しい実装は以下の様にするべきだ。

if $_SERVER[ ‘REQUEST_METHOD’ ] == ‘POST’ {
パラメータの処理

header ‘Location: ‘ . $_SERVER[ ‘PHP_SELF’ ] ;
exit ;
}

なるほど確かにそうしがち忘れがちのメモ。

2009/8/31 月曜日

splitとexplodeの違い

Filed under: 基本 — ne-zu @ 18:36:37 このエントリをはてなブックマークに追加

split

使っちゃだめよ? - がるの健忘録
さて。まずマニュアルをちゃんと読んで見ませう。

http://jp.php.net/manual/ja/function.split.php

split ― 正規表現により文字列を分割し、配列に格納する

正規表現により文字列を分割し

正規表現により

正規表現

大切なところをちょっと繰り返してみました。

あっらー
splitなんてexplodeのエイリアスでしょ、ぐらいに思ってました。
いかんですね。
これからは特に正規表現を必要としていない場合はexplodeですね。

2009/5/23 土曜日

SimpleXMLElement オブジェクトは serializeできない

Filed under: XML, 基本 — ne-zu @ 12:35:14 このエントリをはてなブックマークに追加

SimpleXMLElement オブジェクトは serializeできない - phaのPHPとか自習室 - はてな自習室

なーんか、Zend_Cache_Classがうまく動かないなーと思ってたら、原因は別のところに。

SimpleXMLElement オブジェクトは serializeできないらしい。

OMG!
なんでそんな仕様に・・?

2009/2/28 土曜日

PHPのSort関数がおかしい件

Filed under: 基本 — ne-zu @ 10:10:39 このエントリをはてなブックマークに追加

PHPのsort関数は相当おかしい - hnwの日記

phpの罠の1つ、sort関数ですが、

$a=array(”1e1″, “1f1″, “9″);
sort($a);
var_dump($a);

$a=array(”9″, “1e1″, “1f1″);
sort($a);
var_dump($a);

を実行すると、

array(3) {

[0]=>

string(3) “1e1″

[1]=>

string(3) “1f1″

[2]=>

string(1) “9″

}

array(3) {

[0]=>

string(1) “9″

[1]=>

string(3) “1e1″

[2]=>

string(3) “1f1″

}

となるという。。。うーむ(^_^;)
ようは第二引数のFLAGをちゃんと立てようという話ですが、今までのProgに埋没してそう!

でも、調べたらちゃんと指定されてた!えらい!

2008/11/15 土曜日

コールバック関数でクラスメソッドを使う

Filed under: 基本 — ne-zu @ 20:03:24 このエントリをはてなブックマークに追加

PHP: 本ドキュメントにおける疑似的な型および変数 - Manual

配列で渡しますよ、と。

$obj = new MyClass();
call_user_func(array($obj, ‘myCallbackMethod’));

やりたかったのは静的クラスメソッドを渡す方法なのです。

call_user_func(array(’MyClass’, ‘myCallbackMethod’));

クラス名を文字列として渡せばよいのですね。
ちなみに、同じクラスから呼び出すなら

call_user_func(array(’self’, ‘myCallbackMethod’));

でも大丈夫です。
マニュアルの投稿を見ると、

$callback array(’parent’, ‘method’);

こんなのもいけるみたいです。ふむふむ。

2008/10/16 木曜日

PHPでFTPファイル送信する

Filed under: 基本 — ne-zu @ 19:05:28 このエントリをはてなブックマークに追加

PHPでFTPファイル送信するサンプルコード:phpspot開発日誌

PHPでFTP通信を行うコードが紹介されていますが、phpspot開発日誌さんが言われているPear::Net_FTPを知らなかったです(^_^;)
さすが、Pear。自分で組む前に探してみればよかった。。

2008/10/15 水曜日

PHPでExif情報を取得

Filed under: 基本 — ne-zu @ 18:40:11 このエントリをはてなブックマークに追加

PHPでExif情報を取得 | 5ive™.blog

phpの関数で、Exif関数なんてあるんですね。
これは便利。

2008/10/8 水曜日

PHPとデストラクタ - 日々是雑記

Filed under: 基本 — ne-zu @ 23:04:00 このエントリをはてなブックマークに追加

PHPとデストラクタ - 日々是雑記

PHPでデストラクタ、機能としてあるのは知ってるんですが、あまり使う機会が無いです。。

例外が発生している(つまりException型オブジェクトが居る状態)でtry~catchのブロックでデストラクタを定義しているオブジェクトをきちんと始末せずに処理を終わろうとして怒られました。

上記のような罠もあるみたいなので、使う際は気をつけたいと思います。

2008/10/7 火曜日

PHP最適化について検証する

Filed under: 基本 — ne-zu @ 22:53:41 このエントリをはてなブックマークに追加

徹底検証!PHP最適化Tips:第1回 世間で噂されるPHP最適化tipsについて検証する|gihyo.jp … 技術評論社

PHP最適化でよく言われる

・echoのほうがprintより速い
・@によるエラー制御は遅い

などをPHPのソースから検証されています。
ソースから検証されると納得せざるえないっ!

2008/10/6 月曜日

PHP の switch 文は判定が緩やか

Filed under: 基本 — ne-zu @ 23:58:07 このエントリをはてなブックマークに追加

PHP の switch 文は怖くて使えない - れぶろぐ (2008-10-02)

PHP:
  1. function filter($value) {
  2.     switch ($value) {
  3.     case 'abc':
  4.     case 'def':
  5.         return $value;
  6.         break;
  7.     default:
  8.         return '';
  9.         break;
  10.     }
  11. }

といったプログラムの場合、0を与えたら""が戻ってきてほしいものですが、

PHP:
  1. php> echo filter(0);
  2. 0

こうなってしまうらしい。。うーむ。確かにマニュアルコメントにも怪しそうな挙動が載ってますねえ。

PHP:
  1. <?php
  2.  
  3. $string="2string";
  4.  
  5. switch($string)
  6. {
  7.     case 1:
  8.         echo "this is 1";
  9.         break;
  10.     case 2:
  11.         echo "this is 2";
  12.         break;
  13.     case '2string':
  14.         echo "this is a string";
  15.         break;
  16. }
  17.  
  18. ?>

The swich-statement will halt on 'case 2'

Answer: this is 2

とか。うーむ。気をつけましょう。

次のページ »

Powered by PHP-SeeD and WordPress ME