idが付加されないので注意。start)しないと機能しない。$url);exit;とかした場合、$urlがhttp://foo.bar.com/hoge.html/hoge.htmlhoge.html2のときの挙動がmod_phpとCGIのphpとで違ってくる。http://foo.bar.com/hoge.htmlにリダイレクトされるが、CGIのときは2のときにURLはhttp://foo.bar.com/sample.phpのまま、hoge.htmlの内容が表示される。これは内部リダイレクトと呼ばれているみたいで、Locationヘッダ自体が出力されないらしい。OKwave:相対URLによるリダイレクトhttp://okwave.jp/qa/q2428571.html一部のブラウザやdocoomでは相対URLがNGみたいだが、絶対URLならすべての環境でOKというわけでもないらしい。@IT:モバイルWeb開発に失敗しない鉄則http://www.atmarkit.co.jp/fdotnet/aspnetmobile/aspnetmobile05/aspnetmobile05_02.htmlCGIの挙動の件は下記が詳しい。何?http://d.hatena.ne.jp/msakamoto-sf/20080802/1217662203splitsplit()は『大文字小文字を区別しない正規表現により文字列を分割し、配列に格納する』なのだが、正規表現にはまった。$str);これで$strに格納された文字列中の空白文字により分割されると思ったが、実際には機能しない。$str);というようになるようだ。$str);とすればいい。正規表現を必要としない、例えば改行で分割されればよい、というのであればexplodeを使ったほうが高速。Wikipediahttp://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BEpregとereg共に正規表現を扱う関数群。pregのほうが速く動作するようなので、基本はpregで。関数http://jp2.php.net/manual/ja/ref.pcre.php動作確認に便利なサイト発見。ONLINEhttp://www.php-seed.net/preg/mbstring日本語を扱う場合に設定するものだが、いまいち各設定の関係がよくわからなかったので試してみた。UTF-8まず.languageがneutralだと.internal_encodingのUTF-8が効かない。Onだと、HTTP入力に対して自動的に.internal_encoding(内部エンコーディング)の設定に変換しようとする。.encoding_translationが正常に機能する場合、EUC-JPのHTMLフォームからポストされてきたデータは$_POST['hoge'];に格納されている状態で既にEUC-JPから.internal_encoding(内部エンコーディング)のUTF-8に変換済みとなる。.languageがneutralだと.internal_encodingが効かないため、結果的に.encoding_translationも機能しないことになる。'auto');このautoも.internal_encoding(内部エンコーディング)が効かない状態だとうまく機能しない模様。UTF-8'のように指定する分にはOKらしい。Japaneseじゃないといろいろはまる。from_encoding)となっており、strにarrayを渡してしまうと空っぽのarrayが返ってくる。Array()上記のmbstring設定との絡みを考えてサンプルを作ってみる。$request)プロキシ経由かチェックレンタルサーバで共有SSLを利用可能とするコードを書く場合、クライアント〜共有SSL用プロキシはHTTPSでも、共有SSL用プロキシ〜Webサイトのあるサーバは内部でHTTPとなっている場合がほとんど。WebサーバーそのためWebサーバー側で処理される$_SERVER['HTTPS']でHTTPSかどうか判定できない。isset($_SERVER['HTTP_X_FORWARDED_FOR']))というような感じ。isset($_SERVER['HTTP_X_FORWARDED_FOR']))となる模様。実際には変数にセットされている値もチェックしたほうがいいのかな。画像認証を使いたいhttp://modxcms.com/forums/index.php?topic=32384.75;wap2MySQLとclientと文字化け文字化けの仕組みは割愛して(汗)。以前から気になっていたのはmy.cnfにある[client]の設定。[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]default-character-set=utf8となっている場合、[client]ってなんなのだろうか?ということ。MySQLがlatin1で、上記のようにmy.cnfの設定によりutf8になっているとする。このときPHPからMySQLに接続をかけると、[client]の設定に従いutf8で接続することになるのでは...と思ったが、事実は違ってlatin1での接続となる。この[client]はlibmysqlclientを使ってmysqldサーバに接続をかけるときの話らしい。改良版拡張モジュールだ。要するにPHP4の場合は使えない。改良版拡張モジュールhttp://jp.php.net/manual/ja/book.mysqli.phpで、PHP5だったとして、PEAR::DBでmysqliを利用できるが、コードを読むと普段はmysql_connect()で接続し、SSLで接続する際はmysqli_real_connect()を使うようになっていた。「mysqliを指定しているのにmysql_connect()を使ってる状態」になるので注意が必要。PEAR::MDB2ならOKだと思われる。mysqldという接続のときmy.cnfの[client]の設定が効いてくることになる。みたいなのもあって、かなり参考になった。Selfkleptomaniac:PHPのパフォーマンス改善(1)http://selfkleptomaniac.org/archives/43Selfkleptomaniac:PHPのパフォーマンス改善(2)http://selfkleptomaniac.org/archives/44Selfkleptomaniac:PHPのパフォーマンス改善(3)http://selfkleptomaniac.org/archives/45高速化のための書き方なるほど〜Otaxa:PHP、チョイ高速化テクニックhttp://otaxa.com/blog/others/php-faster-technics/?utm_source=twitterfeed&utm_medium=twitterマジックメソッドクラスの中で使用する、アンダースコア2つではじまる名前の特殊関数。定められたタイミングで起動する。Manual:マジックメソッドhttp://jp2.php.net/manual/ja/language.oop5.magic.phpflush()とob_flush()とob_start()のネストphpの出力バッファを任意のタイミングで吐き出すのがob_flush()で、webサーバーの出力バッファはflush()らしい。flush();}で、逐次出力されていく。ob_start()してる間のechoとかの出力がバッファに溜まって、途中でob_flush()、flush()しなければプログラムが終了したときに出力されるが、既にob_start()しているときに更にob_start()みたいなネストすることもできる。ob_end_flush();flush();となる。Perl5.008008。