スキップしてメイン コンテンツに移動

投稿

11月, 2011の投稿を表示しています

PHPで2重登録、2重ポスト、CSRF対策

こんな感じで実装できると思う。 ■ input.php ... 入力画面など <?php // セッションを開始する session_start(); // ワンタイムチケットを生成する。 $ticket = md5(uniqid(rand(), true)); // 生成したチケットをセッション変数へ保存する。 $_SESSION['ticket'] = $ticket; ?> <html> <head> <title>サンプル登録画面</title> </head> <body> <form action="regist.php" method="POST"> <input type="text" name="UserName" value=""> <input type="submit" value="regist"> <!-- 生成したワンタイムチケットを隠しフィールドとして、 登録処理へPOSTする --> <input type="hidden" name="ticket" value="<?=$ticket?>"> </form> </body> </html> ■ regist.php ... 登録処理など <?php // セッションを開始する session_start(); // ポストされたワンタイムチケットを取得する。 $ticket = isset($_POST['ticket'])    ? $_POST['ticket'] : ''; // セッション変数に保存されたワンタイムチケットを取得する。 $save   = isset($_SESSION['ticket']) ? $_SESSION[...

PHPの配列は

こんな感じで配列を作ると、添字は順番に振られるけど、順番には並んでいない。 $arrVar = array(); $arrVar[] = "a"; $arrVar[] = "b"; $arrVar[] = "c"; なので、添え字を使って処理するときは問題ないけど、例えば配列の並び順に従って二つ以上の配列を処理するときは、ksort()使って添え字でソートしておく必要がある。 $arrVar = array(); $arrVar[] = "a"; $arrVar[] = "b"; $arrVar[] = "c"; $arrTmp = array(); $arrTmp[] = "あ"; $arrTmp[] = "い"; $arrTmp[] = "う"; ksort($arrVar); ksort($arrTmp);

オブジェクトは参照渡し

マニュアル、ちゃんと読めってね。 PHP Manual オブジェクトと参照 http://php.net/manual/ja/language.oop5.references.php 引用 ここから オブジェクトと参照 PHP 5 でのオブジェクト指向プログラミングのポイントとしてよく言われるのは 「オブジェクトはデフォルトでは参照渡しとなります」ということです。 しかし、正確には少し異なります。 この節では、いくつかの例を用いてその誤解をといていきます。 PHP の参照は一種のエイリアスで、ふたつの異なる変数に同じ値を書き込めるものです。 PHP 5 以降、オブジェクト変数の値にオブジェクト自身は含まれなくなりました。 含まれるのはオブジェクトの ID のみで、 これを用いて実際のオブジェクトにアクセスできるようになっています。 オブジェクトが引数として渡されたり返り値となったり あるいは別の変数に代入されたりした場合、 それはエイリアスではありません。ID のコピーを保持し、 同じオブジェクトを指すようになるのです。 ここまで

kvmでvmvgaドライバ

Ubuntu 10.10 でKVM環境を構築したよ。 で、ゲストでWindows XP を動かしてみた。 vgaドライバがなかったので、vmvgaドライバを入れてみた。 で、rdesktopで接続して仕事していたら、起動後3時間すると、 ゲストのCPU使用率が100%になって にっちもさっちもいかなくなった。 最初は「何が悪いの」的な感じで、何が何だかだったけど、 最終的に、ビデオカードのモデルを「vmvga」から「vga」に戻したら、 何時間経過しても問題なくなった。