カテゴリー: Server Side

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP] 文字列中の波括弧記法が気持ち悪すぎる

PHPでは、二重引用符 (") で括った文字列の中で、波括弧 ({}) を使って変数を展開できたりするわけだが、この波括弧記法があまりにも強力すぎて気持ち悪かったので書いてみる。

続きを読む

スポンサーサイト

Zend_View with HTML_Template_Flexy が意外と簡単だった件

Zend_ViewからSmartyを使うクラスはネット上を検索すると結構出てくるんだけど、Zend_ViewとHTML_Template_Flexyを組み合わせたクラスはなぜか全然見つからない。

Zend_View + Flexyを使いたい人っていないのかなーとか思いながら、適当にZend_ViewとFlexyを組み合わせてみたら、思った以上に簡単に作ることができてしまって驚いた。

とりあえず、↓のようなクラスを使えば、一応動くものができてしまう。

<?php
require_once 'Zend/View.php';
require_once 'HTML/Template/Flexy.php';

class My_View extends Zend_View_Abstract
{
    protected function _run()
    {
        $flexy = new HTML_Template_Flexy();
        $flexy->compile(func_get_arg(0));
        $flexy->outputObject($this);
    }
}

続きを読む

[mod_rewrite] URLにヌル文字が混ざると書き換えに失敗する

たまたま見つけたのでメモ。

mod_rewriteを使ってるサイトにアクセスするときに、

http://example.com/%00

みたいな感じにヌル文字をURLに含めると、なぜか404 Not Foundが返ってきてしまう。ネットで検索しても全然情報が見つからないんだけど、これって常識だったりするのかな?

再現方法

↓のようなindex.txtと.htaccessをサーバーの適当なディレクトリに置く。

index.txt
helloworld
.htaccess
RewriteEngine on
RewriteRule .* index.txt

このように設定すれば、どのようなURLでこのディレクトリにアクセスしても、単にhelloworldと出力されるだけなはずで、実際にその通りになる。でも、URLに%00を含めると↓の画面。

Object not found!

WinXP + XAMPPで走っているローカル環境でもこの現象は起きたし、XREA.COMのサーバーでも起きた。

なんなんだろう、これ。null文字で挙動が変わると、インジェクション攻撃されるんじゃないかと若干不安になるんだが。

[PHP] 配列の+(プラス)演算子は便利

久しぶりにPHPの話題。

確かにPHPの配列の加算演算子はとても醜い仕様だと思う。

問. 配列を+(プラス)演算子で加算すると? : アシアルブログ

<?php
$fruit1 = array('apple', 'banana', 'cherry');
$fruit2 = array('kiwi', 'lemon', 'melon');

$fruit = $fruit1 + $fruit2;
?>

$fruitの値は次のA~Cのどれになるでしょうか?

A. array('apple', 'banana', 'cherry')
B. array('apple', 'banana', 'cherry', 'kiwi', 'lemon', 'melon')
C. array('kiwi', 'lemon', 'melon')

(中略)

正解は「A」です!

(中略)

ちなみに、私はてっきり「B」になるものと思ってました……。

+演算子の不思議な挙動も、配列と連想配列を一緒くたに扱うことから始まるPHPの悲劇の一つだと思うが、個人的にはとても大好きな仕様だったりする。特に↓のような使い方を頻繁に使うようになると手放せなくなる。

続きを読む

[PHP] foreach ($array as &$value)形式が使えたなんて

foreach文で参照が使えるってさっきはじめて気づいた。

<?php
$array = array(array(), array(), array());

foreach ($array as $value) {
	$value[] = 'foo';
}

print_r($array);

foreach ($array as &$value) {
	$value[] = 'bar';
}

print_r($array);

続きを読む

自分のiモードIDを知るためのスクリプト

iモードIDというのが利用可能になったらしい。

「iモードID」が提供開始、一般サイトでもユーザー情報を取得可能に:モバイルチャンネル - CNET Japan

NTTドコモが3月31日、一般サイトでもユーザ情報を活用したサイトを制作できる「iモードID」の提供を開始した。NTTドコモのサイトで、iモードIDを利用するための方法が公開されている。

ということで、自分のiモードIDを調べるスクリプトを書いてみた。

続きを読む

[PHP] Zend Framework 標準コーディング規約について

なぜかZend Frameworkのコーディング規約突然ブックマークされまくってる。最近PHP叩きが流行ってるからその流れで票が集まったのかな?

Zend Frameworkのコーディング規約は、PHPでプログラムを書くなら一応目を通すぐらいはしておくべきものだと思っていたのだが、意外とみんな読んでなかったのかも。

と言いつつも、仕事でコーディングするとき以外は自分もあまり守っていない。

まず、インデントにスペースを使うのが好きではないので、一人でコードを書くときは全部タブで統一してしまう。

続きを読む

[MyMiniCity] 街の状況に応じて自動的にアクセスを振り分けるPHPスクリプト

MyMiniCityで、街の状況に応じて自動的に必要なURLにリダイレクトするPHPスクリプトを書いてみた。既に同じことはいろんな人がやってるけど。

http://lab.liosk.net/MyMiniCity.php?city=liosk

?city=lioskの部分を書き換えれば別の都市にアクセスできます。

続きを読む

独自ドメインを取ってみた

独自ドメインを取ってみた。

http://liosk.net/

今のところ特に使い道があるわけではないんだけど、あればあったでいろいろとおもしろいかなと思って。

[PHP][mod_rewrite]ユーザーエージェントでPCとケータイを判別

HTTP_USER_AGENTの文字列を判断して、PCからのアクセスなのかケータイからのアクセスなのかを判別するというのは、広く使われているテクニック。

例えばDoCoMoのケータイならば、ユーザーエージェントの先頭に必ずDoCoMoの文字列が入ることになっているから、それを見てドコモのケータイだと判断すればよい。

先ほど、各キャリアのユーザーエージェントを調べたのでメモ。

続きを読む

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。