都道府県のプルダウンの制御を強引にやっちゃいます。


-- code -----------------

<?php

function is_same($val1, $val2, $ret){

if($val1==$val2){

return $ret;

}

return "";

}

$alt_val = "selected";

?>



<form method="post">

<select name="city">

<option value="北海道" <? is_same( $_REQUEST["city"], "北海道", $alt_val ) ; ?>>北海道 </option>
<option value="青森県" <? is_same( $_REQUEST["city"], "青森県", $alt_val ) ; ?>>青森県 </option>
<option value="岩手県" <? is_same( $_REQUEST["city"], "岩手県", $alt_val ) ; ?>>岩手県 </option>
<option value="宮城県" <? is_same( $_REQUEST["city"], "宮城県", $alt_val ) ; ?>>宮城県 </option>
<option value="秋田県" <? is_same( $_REQUEST["city"], "秋田県", $alt_val ) ; ?>>秋田県 </option>
<option value="山形県" <? is_same( $_REQUEST["city"], "山形県", $alt_val ) ; ?>>山形県 </option>
<option value="福島県" <? is_same( $_REQUEST["city"], "福島県", $alt_val ) ; ?>>福島県 </option>
<option value="茨城県" <? is_same( $_REQUEST["city"], "茨城県", $alt_val ) ; ?>>茨城県 </option>
<option value="栃木県" <? is_same( $_REQUEST["city"], "栃木県", $alt_val ) ; ?>>栃木県 </option>
<option value="群馬県" <? is_same( $_REQUEST["city"], "群馬県", $alt_val ) ; ?>>群馬県 </option>
<option value="埼玉県" <? is_same( $_REQUEST["city"], "埼玉県", $alt_val ) ; ?>>埼玉県 </option>
<option value="千葉県" <? is_same( $_REQUEST["city"], "千葉県", $alt_val ) ; ?>>千葉県 </option>
<option value="" <? is_same( $_REQUEST["city"], "", $alt_val ) ; ?>>▼お選びください</option>
<option value="東京都" <? is_same( $_REQUEST["city"], "東京都", $alt_val ) ; ?>>東京都 </option>
<option value="神奈川県" <? is_same( $_REQUEST["city"], "神奈川県", $alt_val ) ; ?>>神奈川県 </option>
<option value="新潟県" <? is_same( $_REQUEST["city"], "新潟県", $alt_val ) ; ?>>新潟県 </option>
<option value="富山県" <? is_same( $_REQUEST["city"], "富山県", $alt_val ) ; ?>>富山県 </option>
<option value="石川県" <? is_same( $_REQUEST["city"], "石川県", $alt_val ) ; ?>>石川県 </option>
<option value="福井県" <? is_same( $_REQUEST["city"], "福井県", $alt_val ) ; ?>>福井県 </option>
<option value="山梨県" <? is_same( $_REQUEST["city"], "山梨県", $alt_val ) ; ?>>山梨県 </option>
<option value="長野県" <? is_same( $_REQUEST["city"], "長野県", $alt_val ) ; ?>>長野県 </option>
<option value="岐阜県" <? is_same( $_REQUEST["city"], "岐阜県", $alt_val ) ; ?>>岐阜県 </option>
<option value="静岡県" <? is_same( $_REQUEST["city"], "静岡県", $alt_val ) ; ?>>静岡県 </option>
<option value="愛知県" <? is_same( $_REQUEST["city"], "愛知県", $alt_val ) ; ?>>愛知県 </option>
<option value="三重県" <? is_same( $_REQUEST["city"], "三重県", $alt_val ) ; ?>>三重県 </option>
<option value="滋賀県" <? is_same( $_REQUEST["city"], "滋賀県", $alt_val ) ; ?>>滋賀県 </option>
<option value="京都府" <? is_same( $_REQUEST["city"], "京都府", $alt_val ) ; ?>>京都府 </option>
<option value="大阪府" <? is_same( $_REQUEST["city"], "大阪府", $alt_val ) ; ?>>大阪府 </option>
<option value="兵庫県" <? is_same( $_REQUEST["city"], "兵庫県", $alt_val ) ; ?>>兵庫県 </option>
<option value="奈良県" <? is_same( $_REQUEST["city"], "奈良県", $alt_val ) ; ?>>奈良県 </option>
<option value="和歌山県" <? is_same( $_REQUEST["city"], "和歌山県", $alt_val ) ; ?>>和歌山県 </option>
<option value="鳥取県" <? is_same( $_REQUEST["city"], "鳥取県", $alt_val ) ; ?>>鳥取県 </option>
<option value="島根県" <? is_same( $_REQUEST["city"], "島根県", $alt_val ) ; ?>>島根県 </option>
<option value="岡山県" <? is_same( $_REQUEST["city"], "岡山県", $alt_val ) ; ?>>岡山県 </option>
<option value="広島県" <? is_same( $_REQUEST["city"], "広島県", $alt_val ) ; ?>>広島県 </option>
<option value="山口県" <? is_same( $_REQUEST["city"], "山口県", $alt_val ) ; ?>>山口県 </option>
<option value="徳島県" <? is_same( $_REQUEST["city"], "徳島県", $alt_val ) ; ?>>徳島県 </option>
<option value="香川県" <? is_same( $_REQUEST["city"], "香川県", $alt_val ) ; ?>>香川県 </option>
<option value="愛媛県" <? is_same( $_REQUEST["city"], "愛媛県", $alt_val ) ; ?>>愛媛県 </option>
<option value="高知県" <? is_same( $_REQUEST["city"], "高知県", $alt_val ) ; ?>>高知県 </option>
<option value="福岡県" <? is_same( $_REQUEST["city"], "福岡県", $alt_val ) ; ?>>福岡県 </option>
<option value="佐賀県" <? is_same( $_REQUEST["city"], "佐賀県", $alt_val ) ; ?>>佐賀県 </option>
<option value="長崎県" <? is_same( $_REQUEST["city"], "長崎県", $alt_val ) ; ?>>長崎県 </option>
<option value="熊本県" <? is_same( $_REQUEST["city"], "熊本県", $alt_val ) ; ?>>熊本県 </option>
<option value="大分県" <? is_same( $_REQUEST["city"], "大分県", $alt_val ) ; ?>>大分県 </option>
<option value="宮崎県" <? is_same( $_REQUEST["city"], "宮崎県", $alt_val ) ; ?>>宮崎県 </option>
<option value="鹿児島県" <? is_same( $_REQUEST["city"], "鹿児島", $alt_val ) ; ?>>鹿児島県 </option>
<option value="沖縄県" <? is_same( $_REQUEST["city"], "沖縄県", $alt_val ) ; ?>>沖縄県 </option>

</select>

<input type="submit" vlaue="送信">

</form>



------------------


同じ値だった場合は、指定した値を返し、それ以外は空文字を返す関数を利用し、全部のOptionタグを出力する際にどの都道府県が選択されているか判断し、選択されている都道府県の場合は"selected"を返してます。


最初は値が入っていないので、「▼お選びください」が選択されるようになってます。


検証したわけではわからないのですが、PHPのsetcookieを用いてブラウザによってバグがでました。。。



そもそも、こちらのコーディングのミスだったんですが、まずは正しいソースを見てください。


-- code1 -----------

$limit=86400;

$path = '/';

setcookie('test", 'ok', time() + $limit, $path);

--------------------


まずはcode1でクッキーを設定します。別ページでクッキーを取得します。


-- code2 -----------


$cookie_test=$_COOKIE["test"];

echo 'cookie[test]=' . $cookie_test;


-------------------


これだと、code2のページでは”ok”という文字列が出力されるはずです。。。


が、私のコードミスとはcode1の$limitを定義した箇所を記載してませんでした。


code1が次のような感じです。


-- code1 -----------

$path = '/';

setcookie('test", 'ok', time() + $limit, $path);

--------------------


まぁ、$limitが宣言されていないので、+で計算ができてしまってるのも怖いのですが。。。


そしたら、IE6のSP1だと次のページでCookieを拾う事ができませんでした。


IE6 SP2、IE7だと問題なく値の引き継ぎができました。


そもそも、有効期間が発行した時間と同じという時点で、どのブラウザでも動作しなければいいのですが。。。


さらに元をただすと、自分が間違いなくコードを記載しておけば問題はなかったのですが。w



WEB上のリソースを取得し、解析したい人はたくさんいるのでは?・・・と思い次のサンプルコードを掲載してみます。


-- code ------------


System.Net.WebClient client = new System.Net.WebClient();

// ユーザエージェントの設定

string userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)";

client.Headers.Add("user-agent", userAgent);


// URLの指定

string url = "http://ameblo.jp/only-human/ ";


// バイトで取得

byte[] downloadBytes = client.DownloadData(url);


// 文字コード指定

System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("EUC-JP");


Console.WriteLine(encoding.GetString(downloadBytes));


-------------------


こんな感じですかね?


最初から文字コードがわかっている場合は、WebClientクラスのEncodingプロパティを指定し、DownloadDataメソッドの代わりに、DownloadStringを利用すれば、一回で文字列を取得するこも可能。


後は正規表現等を利用し解析すれば、色々とオリジナルの解析ソフトも自由自在に作れるはずでわ。