2007年11月22日木曜日

CakePHPのhtmlヘルパーにて

現在、CakePHP1.1.18.5850を使っていますが、
htmlヘルパーのinputには、どうやら自動的にhtmlspecialcharsが入るみたいです。
で、油断していたのですが、textareaには入っていませんでした。
しっかりソース読んでおけばよかった・・・

一箇所だけだったので、下のように変更しておきます。

<?php echo $html->textarea($fieldname,array('value'=>$html->tagValue($fieldname,true)));?>



というか、tagValueもデフォルトではエスケープをしないようで、

$html->tagValue($fieldname,true)


と2番目にtrueを渡さないといけないようです。

2007年11月10日土曜日

scripts_for_layout

CakePHP1.2からdefaultのlayoutsにscripts_for_layoutという変数が追加されていた。
どうやら、View側からhead内に個別に書き込めることになるらしい。

今回は、CSSを使いたかったので下のコードをViewに追加してみた。

<?php echo $html->css('common',NULL,NULL,false); ?>



するとHTMLには

<link rel="stylesheet" type="text/css" href="/css/common.css" />



がhead内に書き込まれた状態で出力されていた。
これは便利。

他にもmeta,javascriptが使えるようだけど、また今度使ってみます。

2007年11月8日木曜日

モバイル向け AdSense

携帯サイトにAdSenseを張ろうとすると、
どうやら利用しているサーバーでは外部URLはrequireでエラーが出る模様。
というか、PHPでデフォルト設定らしい。
で、サーバー設定は変更不可と言う事なのに、
解決しないといけないというので、以下のように改変してみた。


$tmpfile = "/tmp/googlead.php";

$file = file_get_contents('http://pagead2.googlesyndication.com/pagead/show_ads.php');
$fp = fopen($tmpfile, "w");
fwrite($fp,$file);
fclose($fp);

$GLOBALS['google']['ad_type']='text';
$GLOBALS['google']['channel']='xxxxxxxxxx';
$GLOBALS['google']['client']='xxxxxxxxxx';
$GLOBALS['google']['format']='mobile_single';
$GLOBALS['google']['https']=$_SERVER['HTTPS'];
$GLOBALS['google']['host']=$_SERVER['HTTP_HOST'];
$GLOBALS['google']['ip']=$_SERVER['REMOTE_ADDR'];
$GLOBALS['google']['markup']='xhtml';
$GLOBALS['google']['oe']='utf8';
$GLOBALS['google']['output']='xhtml';
$GLOBALS['google']['ref']=$_SERVER['HTTP_REFERER'];
$GLOBALS['google']['url']=$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$GLOBALS['google']['useragent']=$_SERVER['HTTP_USER_AGENT'];

require($tmpfile);



要するに、外部ファイルを一度手元に保存して、そちらをrequireするようにしてみた。
中身読んで、http://pagead2.googlesyndication.com/pagead/ads?
に直接取得しに行こうかとも考えたけど、それはやめておいた。

どうかGoogleの中の人がこれを見ていても、これくらいは見逃してください。

2007年11月6日火曜日

VALUE DOMAINにて

ドメインはVALUE DOMAINで取得しました。
で、サーバーもVALUE DOMAINの無料サーバーを使うことに決定。

で、すぐに使えるかと思っていたけど、
DNSの設定をしないといけないみたいでヘルプを読みながら設定してみる。
反映に時間が掛かるみたいですぐにはアクセスできないため、
正しい設定なのかどうかが分からない。

PHPは書くことができるけど、サーバーについてはサッパリ。

今更ながらサイトが作れるかが不安に・・・

2007年11月1日木曜日

CakePHP1.2

唐突だけど、蔵書管理をしたいなと常々思っていたので、
AmazonのAPIを利用して蔵書管理サイトを作ってみようと考えている
既にコンセプトが同じサイトはいくつもあるけど気にしない

PerlよりPHPの方が慣れているので、もちろんPHPで
フレームワークはもちろんCakePHPを利用するけど、
バージョンはpre-betaの1.2を使ってみたい

挫けない様にドメインも取得したのでがんばってみる

2007年10月1日月曜日

get_defined_constants()

今度はPHP。

ライブラリやフレームワークなど自分以外が作っているソースを使う時に、
定義済みの定数にどんなものがあるのか気になる。

そんな時には、
get_defined_constants()
を使えばいい。
定義されている全ての定数の名前と値が返ってきます。


同日で別言語を使うと、記憶が曖昧になるので覚書。

HTML::Template

久しぶりにPerlを触ってみた。ずっと、PHPだったため、切り替えに時間がかかった
で、今回はモジュールにHTML::Templateをテンプレートを利用したのだけれど、

HTML::Template->output() : fatal error in loop output : HTML::Template : Attempt to set nonexistent parameter


と、エラーが出てかなり苦しんだ。

調べていくとHTML::Templateではデフォルトの状態だと
プログラム側で渡したパラメータはテンプレート側では必ず利用しないといけないらしい。

で、どう回避すればいいのかというと、

$template = HTML::Template->new('filename' => 'foo.tpl','die_on_bad_params' => 0);


die_on_bad_params
こちらのパラメータを0にすればいいらしい。

というわけで、覚書。

2007年7月16日月曜日

VMware Player

自宅でテスト環境を構築できたらな~と思い立ち、
とりあえずVMware Playerをインストールして見ようと思う

兎にも角にもダウンロードをしないと始まらないので、
http://www.vmware.com/
に行ってみる

で、ユーザー情報を登録しないとダウンロードさせてもらえないようなので、
よく分からないけど適当に入力

無事ダウンロードできたみたいなので、インストール開始!!
再起動がかかった

2007年6月4日月曜日

テーブルを空にする場合

良くあると思うので書いておく。
DELETE FROMとは違うので注意。

TRUNCATE TABLE table_name

3.23 では、TRUNCATE TABLE は COMMIT; DELETE FROM table_name にマップされる。 See 項6.4.5. 「DELETE 構文」。

TRUNCATE TABLE は次の点で DELETE FROM ... と異なります。

*切り捨て操作では、テーブルが破棄され、再作成される。この操作は、レコードを 1 つずつ削除するよりはるかに迅速に処理される。
*切り捨て操作はトランザクションセーフではない。アクティブなトランザクションやアクティブなテーブルのロックがあると、エラーになる。
*削除されたレコード数は返されない。
*テーブル定義ファイル table_name.frm が有効である限り、データやインデックスのファイルが破損しても、この方法でテーブルを再作成できる。

TRUNCATE TABLE は Oracle の SQL 拡張です。 このステートメントは MySQL 3.23.28 で追加されました。ただし、3.23.28 〜 3.23.32 では、キーワード TABLE を省略する必要があります。

2007年5月24日木曜日

IBMのサイトで

CakePHPを使う記事を発見。
早速、ユーザー登録を済ませて英語を読んでいく・・・

英語が思ったより難しいです

フレームワーク

PHPで、そろそろフレームワークを使ってみたいと思い立ち、
Mojavi、Ethna、Symfony、Zend Framework等数ある中から、
CakePHPを選択してみました。
理由は名前。きっと遊び心のあるフレームワークのはず。


簡単インストールかと思いきや、mod_rewriteを知らないために大苦戦。
そして、設定後はチュートリアルのブログ作成。
scaffoldで簡単に管理画面は作成終了!!


今回は設定に時間がかかったけど、実際のプログラミングはあっという間でした。
徐々に使っていってみようと思う。

2007年5月22日火曜日

get_magic_quotes_gpc

get_magic_quotes_gpc -- magic quotes gpc の現在アクティブな設定を得る

SQLインジェクションについて調べていて
get_magic_quotes_gpc()がTRUEを返すと
シングルクォーテーション、ダブルクォーテーション、バックスラッシュ、 NULLを
エスケープしてくれることが分かった

ただし、magic_quotes_sybase ディレクティブがONの場合には、ダブルクォーテーション、バックスラッシュ、 NULLはエスケープしてくれない

2007年5月17日木曜日

javascriptでクエリ取得

location.searchから取得できるとのこと

例えば、http://www.sample.com/?a=1の場合、
query = window.location.search
とすることで、「?a=1」と取ることができる

2007年5月7日月曜日

explode() と implode()

explode — 文字列を文字列により分割する(PHP 4, PHP 5)
implode — 配列要素を文字列により連結する(PHP 4, PHP 5)

自分の中でよく間違えてしまう関数のひとつ。

explode() の例
<?php
// 例 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
?>

implode()の例
<?php
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone
?>

2007年5月2日水曜日

新幹線

明日、生まれて初めて新幹線に乗ることになった
期待に胸を膨らますって感じなくらい楽しみにしている

しかし、GWのイベントが新幹線に乗るだけってのも寂しい話だ

2007年4月30日月曜日

とりあえずGW

世間はGW真っ最中
僕にも世間様と同じようにGWはやってくる
しかしながら、まったくもって予定がなかったりするものだ

この3日間でやったことは残念ながら、
ゲーム、アニメ、漫画・・・全部インドア

我ながら情けない

明日から2日仕事してから4連休
少しはましな休みにしたいものだな

2007年4月26日木曜日

黄金比

サイト作りにも黄金比を取り入れるといいらしい
比率は「1:1.618」

矩形やマージンに利用するとのこと

覚えておいて損はない

2007年4月25日水曜日

session.use_trans_sid

PHP 4.0.3 から利用可能

PHP <= 4.2.3
PHP_INI_ALL
PHP < 5
PHP_INI_PERDIR