input type="image"でフォームの中身をsubmitする

ルー語カルタもあるので、タイトルで遊んでみましたw
それはともかく、今日は寒いです。起きて即行で暖房つけました。
今日は久しぶりにPHPの話。

フォームの中身をPHPに送信するときですが、普段はOS標準のボタンでやってたり、ボタンが一つしかなかったので気にも留めていませんでしたが、この調子で画像のボタンでフォームを送信するとなかなかうまくいきません。

<input type="image" src="filename" name="name_value" />

上のサンプルでfilenameという画像ファイルを読み込ませて、name属性の値をname_valueとして、PHPに送信すると、下のようにクリックしたときの画像の座標がPHPに送信されてしまうようです。変数名だと配列のキーの部分に「_x」「_y」がつきます。

$_REQUEST['value_x']
$_REQUEST['value_y']

$_REQUEST['value']という環境変数はこのとき存在せずにNULLとなっていました。普段はあまり触らないのでメモメモ。ついでにいうと、IEでかつ、type="image"の場合、value属性の値は受け渡しできないみたいです。

参考URL

これを知るために参考になったページも載せておきます。

SunのページにAPIのまとめが存在してた

あまり目に留めていませんでしたが、Sunのサイト内にあるマッシュアップサイトのコンテスト、Mash up Awardで利用できるAPIが4ページに渡ってまとめられています。googleMapとかYahoo検索、楽天ぐらいしか知り得ていなかったので、こんなページがあると便利ですね。

Mash up Award 3rd - 開催概要 - サン・マイクロシステムズ

RSSを作成するフリーソフトとCGI・PHPスクリプト一覧

世の中にはブログに代表されるCMSツールが沢山ありますが、大体はRSSを自動的に出してくれます。けれど、RSSを手動で作るとなると、文字コードがUTF-8に対応しているエディタから探してハンドコーディング…ということになりますが、これでは管理の手間がかかってしまいます。そうならないために、RSSライターなるものが存在します。

今までCMSを使わずDreamweaverで構築しているサイトでもRSSを使いたいという声が最近出てきたので、自分の仕事を楽に、そして効率的にするために、ちょっと調べてみました。

Shift-JISは嫌われる子

やっとまともにPHPを勉強しようと思って、xamppを入れ直して、10日で覚えるPHP5を開いて、簡単な1行掲示板をとりあえず動かそうと、サンプルコードを打ち込んでみました。流れはこんな感じ。

  1. フォームから書き込む
  2. date関数で書き込み時間を変数に放り込む
  3. フォームからの値を変数にタブ区切りで放り込む
  4. 変数をファイルにfputs

ウォームアップのため、とりあえずデータを入力できるようにしようと思って、サンプルコードを入れてみましたが、データファイルを開いたら、「年」のところだけ文字化けですorz

それで、調べること約8時間(途中で他の作業してたりもしてましたがw)。やっとそれらしい答えがでてきました。
教えて!goo DATE関数でYが文字化けします
http://oshiete1.goo.ne.jp/qa2962218.html

どうも、これがダメでした。

<?php
date( "Y年 m月 d日");
?>

そのまま引用すると、

恐らくSJISでプログラムを書いているからだと思います。
SJISの「年」は、0x94 0x4e の2バイトです。
2バイト目の 0x4e は 「N」という文字と一致します。
date関数においては、「Y」が西暦四桁数字に置き換えられるように、「N」は曜日を示す数字に置き換えられます。
それによって文字化けが発生しているのだと思います。
そういうわけで、SJIS以外でプログラミングしましょう。

ということで、「年」の部分だけが文字化けしてしまうのは、「年」のところにdate関数で置き換えられてしまう「N」が入っているからみたい。ちなみに、Nっていうのは、PHP5から出てきた、曜日のことを示すようです。

やっぱりShift-JISは嫌われている訳なんですね。他の文字コードだと、Dreamweaverと他のエディタでよく読み直しされてしまって、気づけば文字コードが訳のわからないことになった経験があるので、微妙なところ。ほらほら、i-modeだってShift-JISだし;
実際のところ、WindowsでPHP開発してる人って、EUCがデフォルトなんでしょうかね。それともUnicode?

xamppで.htaccessの内容を反映するには?

メモ。
xamppという、ApacheとMySQLとPHPが一つになったパッケージを発見デス。という記事を以前書きかけて、書いている途中で消えてしまって、やる気がまったく出なくなったのは内緒で、やっとまともに書いていきます。

今日はマシンにインストール。apache2.x系のものが入っているので、ちょっとデフォルトの設定が変わってることに驚きです。今まで頑なに1.x系を使っていましたからね。さすがにCドライブにhtdocsは避けたいので、Dドライブに。

httpd.confのDocumentrootを弄って、Apacheを再起動させるなり、動かないわけです。正式には403のForbidden。Windowsではもちろん、パーミッションなんてないので「???」となっていました。

ここで以前は「めんどくさい!」と挫折しつつも、会社で多少なりともapacheは弄っているので、できないはずはないと思って見てみると、apacheのデフォルトのディレクトリ設定に、こんなものがありました。


Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all

Deny from allをあっさり削除して、再起動しました。そしたら、なんとか動いてくれました。セキュリティを考慮してのことでしょうか、おそらく近日OSの再インストールがあるので、覚えておきます。

このxampp、PHP4とPHP5を切り替えられるので、開発するときには便利そうだなぁ〜。

※追記
http://www.appservnetwork.com/ ついでに発見。CMSがアドオンとして提供されてるっぽです。

| 1/2ページ | >>