WordPress は危ない?!

勝手に作られたindex.phpファイル
勝手に作られたindex.php
現在利用しているさくらインターネットのクイックインストールで、WordPress が簡単にインストールできるので使ってみました。使い心地は悪くはなかったのですが、一ヶ月ほど経ったある日に自サイトが表示されていないことに気がつきました。えっ!って感じです。

その上 WordPress は開けるものの、ダッシュボードから投稿一覧・新規投稿などをクリックすると 403 Forbidden となってしまいます。WordPress はサブディレクトリにインストールし、サイトのトップページが www ディレクトリにある構造なんですが、トップページの index.html ファイルが消え、代わりに右上図のような index.php なるファイルが勝手に作られています。
この.htaccessが命令を出してる?
しかもサイトアドレス以下に実在しないファイル名を付け加えてアクセスすると、お皿とか DVD の通販のページが表示されます。え~っ!です。

詳しく見てみると、WordPress のディレクトリに左図のような .htaccess ファイルが出来上がっていました。このファイルに書かれたコマンドによって index.html が消え index.php ファイルが作られたようです。このファイル内の文字列で検索すると、今回わたしが遭遇した状態とほとんど同じ目に合われた国内・国外の方々の体験談的なサイトがいくつも出てきます。
勝手に作られたabout.phpファイル
これらふたつのファイルとは別に、右図のような about.php というファイルも自動的に作られていました。

WordPress 自体に脆弱性があるのか、さくらインターネットがクイックインストールで提供している WordPress に問題があるのか? 海外の同じ被害にあわれた方々の報告が多数あることを考えると、さくらインターネット特有の事象ではなく、やはり WordPress 自体の脆弱性に起因しているのかもしれません。

結局 WordPress の使用は諦め、さくらインターネットのクイックインストールの削除機能を使って削除し、残骸は FFFTP を使ってすべて削除。これでファイルが消えたり勝手に作られたりする現象は起きなくなりました。ブログはシックスアパートの古い Movable Type を使っていたのですが、データベースのMySQLの方のバージョンも古くなっていたのでこの際両方とも新しいバージョンに置き換えました。最初からこの方法にすれば良かったと今になっては後悔しています。

パソコンに文章を読んでもらうソフト SofTalk

晴れ
SofTalk は、パソコンに文章を読んでもらうソフトです
 今日は便利なソフトを紹介いたします。SofTalk というパソコンに、テキストを読み上げさせるソフトです。今まで富士通の Windows 98 についていたウェブトークというソフトを使っていたんですが、ウェブトークはその名の通りウェブページのテキストを読み上げるもので、ページに余分な文章があればそれも読むし、文字コードが対応していないと読めないという不便な点がありました。しかし SofTalk は、読んでもらいたいテキストのみコピーし、このソフトの読み上げ画面に貼りつければそれを読んでくれます。必要な部分だけ読んでくれますし、文字コードも気にする必要はありません。まぁ、読むことが苦にならない読書家には必要ないソフトかもしれませんが、ネットのサイトにはとても小さい字のサイトもあったりするので、役に立つこともあるかと思います。。

ツイートボタンの設置

晴れ  今日は晴れましたが、風が少しありました。午後先週お伺いしたお宅に、またPCサポートでお伺いしました。Office 2007から2010へのアップグレード作業です。

ツイートボタンの設置
 自分のウェブサイトのページの下に、ツイートボタンをつけたいと思ったことはありませんか。より多くの人たちに読んでもらえて、宣伝になりますよね。ツイッター社の ツイートボタン のページからツイートボタンのソースコードをコピーし、自分のウェブページの表示したい場所に貼り付ければツイートボタンを設置できます。いくつかオプションがあって、選択できるようになっています。

Avidemux で動画ファイルの音ズレ修正

曇り
後雨
Avidemux は超便利なフリーソフトです
 去年、ユ・マ室内合奏団のウェブサイト を依頼されて作ったんですが、演奏会の動画ファイルがDVD形式のものしか渡されませんでした。グループの誰かが撮影されたんですから、撮影した時のファイルをそのままくだされば加工も楽だったんですが…。しかたなくDVDからmp4に変換。使ったソフトがフリーのせいか音ズレが出ました。しかたなく、動画の音を mp3にして保存。Windows Live ムービー メーカーで、元動画ファイルの音は使わない設定にし、抜き出したmp3ファイルBGMとして動画のファイルの動きと合わせました。ところが最近知った Avidemux (わたしの Windows 7 64bit もOKです)というソフトを使うと、簡単に音ズレを修正できることが分かりました。図左側の Audio Output の下の Shift のチェックボックスにチェックを入れ、右の数値入力蘭に修正したい秒数を入力します。再生ボタンをクリックして具合を見、修正が必要でしたらまた数値を増やしたり減らしたりします。1,000分の1秒単位なので、音を1秒早くしたい時は -1000 と入力します。その際メニューバーの Edit で、Reset Edit をクリックして一度前の設定を削除した方がよいようです。また再生してみて、よければ Output Format のところを元ファイルと同じ形式にして保存すればOKです。このソフト、音ズレ修正には本当に便利です。

highslide JS

晴れ 最近サムネイル画像をクリックすると、ハイスライド・ジャバスクリプトとかを利用し、お洒落にポップアップするサイトが増えて来ました。これは highslide.com というサイトで公開されている Javascript を利用したものです。わたしのサイトでも、ちょっと利用させていただくことにしました。こんな感じです。

- 藤野 芸術の道 に飾られたオブジェ -

限定と無限定 古郷秀一
限定と無限定 古郷秀一
射影子午線 加藤義次
射影子午線 加藤義次
森の守護神 佐光庸行
森の守護神 佐光庸行

あなたの標準体重は?

晴れ  良い天気ですが、やはり風が吹いてます。なんか目が痒く、鼻水も出るので、何か用事がないと外出する気になれません。「きょうは何をやりましたか?」と聞かれて、「はい、こういうことをしました。」と直ぐに答えられないような日です。宅配のお弁当が届き、前にパソコン教室に通われていた方が、わざわざ家まで様子を見に来てくださいました。室内歩行は24分ほど。夜は久し振りにプログラムを作って遊びました。

 身長から標準体重を計算する方法はいくつかあり、良く知られている方法は下の3つだそうです。下のプログラムは、BMIによる方法を使って計算しています。

BMIによる方法
標準体重kg = (身長cm/100)2 × 22

ローレル指数による方法
標準体重kg = (身長cm/100)3 × 13

より簡便な方法
標準体重kg = (身長cm?100) × 0.9


あなたの身長から計算した標準体重は?

身長を書き込んでください

どうでしたか。

magic_quotes_gpc の設定

曇り  昨晩久し振りに、PHPのプログラムをいじっていました。掲示板プログラムを改造して、様々な団体の広報的なウェブサイト用のプログラムにしました。投稿欄をタグ有効にしようとしたのですが、どうしてもできません。色々調べてみましたら、php.ini というphpの動きを制御しているファイルの magic_quotes_gpc という部分が、On の場合、GETやPOSTで送信された '(シングルクオート)、"(ダブルク オート)、\(バックスラッシュ) 、NULL には全て自動的にバックスラッ シュ入ってエスケープ処理が行われるということです。どうりでいくらプログラムをいじっても、タグ有効にならなかったわけです。
 きょうは家の中で30分、外でも30分ほど歩きました。右足の付け根辺りから腰の右側が痛いのですが、中々治りません。明日は湿布を買うつもりです。(^^;)

リファラーの文字化け対策

だんだん寒くなって来ましたね。先日インフルエンザの予防接種を受けて来ました。「今年は鳥インフルエンザが変化して、人にうつるようになったものが流行るかもしれないとか色々騒がれているので、受けておきます。」 とお医者さまに言ったら、「今回のインフルエンザの予防接種は、鳥インフルエンザには全く効きません。」 と言われてしまいました。(^^;)
それで、「あ?、バソコンのウィルスのワクチンと同じですね。」 と言ったら、先生は笑って 「その通りです。」 と仰っていました。何でもパソコンに例えると分かりやすくなっている自分が怖いです。(^^;)

自宅に設置しているサーバーで、色々なCGIプログラムを日本中の人にレンタルしています。今のところ掲示板から始めまして、画像スペース、webアルバム、メール送信CGI と種類を増やしましたが、今度アクセス解析CGI をレンタルしようとレンタル用のアクセス解析CGI を製作中です。製作といってもわたしのはいつも Kent さんの作られたものを元に、色々と改造をしているだけなのですが...。

アクセス解析CGI で一番苦労するところは、リファラーの処理です。普通のサイトからのリファラーでしたら、アルファベットとハイフォン、アンダーバーくらいなので問題ないのですが、検索サイトからのリファラーですと、リファラーの中に日本語、カナ・カタカナ・漢字が含まれます。それを読める日本語に処理したとしても、今度はそれでリファラーへのリンクを張ると、文字化けして上手く飛んでくれなくなります。それでアクセス解析CGI のページに表示するためのリファラーと、<a href="?">? の値とを別々な形でログファイルに記録することにしました。

■ プログラム自体の文字コードを euc-jp にして作る
今回、プログラム自体の文字コードを euc-jp にして作ってみました。ページに表示する方のリファラーは、Perl が 5.8 になって Encode.pm が使えるようになったので、下記のスクリプトを使って euc-jp に変換してログファイルに記録。<a href="?"> の値としてのリファラーは、アクセス解析対象ページに書かれた JavaScript によって、アクセス解析プログラムに $ENV{'QUERY_STRING'} の値として届けられたものをそのままログファイルに記録しました。

これでできたできたと、しばらくの間喜んでいたのですが、サーバーのエラーログをチェックしていましたところ、毎日何回かこのアクセス解析プログラムの インターネットサーバーエラー として記録されているものがあることに気がつきました。そのエラーログの内容は、ひとつでなく、いくつかありました。
  • Premature end of script headers
  • Can't locate object method "name" via package "shiftjis or utf8" (perhaps you forgot to load "shiftjis or utf8"?) at ...
  • Can't modify non-lvalue subroutine call at ...
  • Unknown encoding '0' at ...
それは検索サイトの決まった検索語句のページから来た時に、起こっていることが調査で分かりました。
  • http://search.yahoo.co.jp/search?p=HPの作り方&ei=UTF-8&fr=top&fl=0&vc=&x=wrt&meta=vc=
  • http://search.yahoo.co.jp/search?p=dion+cgi+カスタマイズ&ei=UTF-8&fr=top&fl=0&vc=&x=wrt&meta=vc=
また、 Google や MSN などからのリファラー時にもエラーになっているようでした。

これは悩みました。解決までにけっこうな時間を費やしました。結局、何の文字コードか分からない $stringeuc-jp に変換する下記のスクリプト中の
use Encode qw/ from_to /;
use Encode::Guess qw/ euc-jp shiftjis /;
$enc = guess_encoding( $string );
from_to( $string, $enc->name, "euc-jp" );


guess_encoding( $string ) で文字コードが判らなかったものに対して変換処理が行われず、下記の URL デコードの処理が行われた。
$string = s/%([a-fA-F0-9<][a-fA-F0-9])/pack("H2", $1)/eg;br> $string = s/&/&amp;/g;
$string = s/"/&quot;/g;
$string = s/</&lt;/g;
$string = s/>/&gt;/g;
$string = s/\r|\n|\0//g;

で、その中に、ログファイルに記録すると問題が起こるものがあり、その分がインターネットサーバーエラーとなっていたのか、あるいは、$enc の値が判らないのに、無理に
from_to( $string, $enc->name, "euc-jp" );
をしようとしてエラーが出ていたのか...?。だとしたら、
if( ref $enc ){
from_to( $string, $enc->name, "euc-jp" );}

としてあげればエラーにはならないのかも知れません。
あるいはこの Encode のスクリプト自体が機能しておらず、euc-jp 以外のリファラーは皆エラーになっていたのか...。追々検証してみたいと思います。(^^;)

その後、主な検索エンジンの文字コードを調べ、
主な検索エンジンの文字コード
 UTF-8
  ・ MSN
  ・ Google
  ・ Yahoo UTF-8

 euc-jp
  ・ OCN
  ・ goo
  ・ Yahoo
  ・ infoseek
  ・ Google euc-jp

 shiftjis
  ・ nifty
  ・ biglobe
  ・ exite
  ・ flrshEYE

リファラーの文字の中からキーワードを拾い出し、それが含まれていたら UTF-8 といった感じにリファラーの文字コードを分けて euc-jp に変換する形にして、
if ($string = /UTF-8/i || $string = /msn/i || ($string = /google/i && $string ! /euc-jp/i)) {
use Encode qw/ from_to /;
from_to( $string, 'utf8', 'euc-jp' );}
if ($string = /nifty/i || $string = /excite/i || $string = /SJIS/i || $string = /biglobe/i) {
use Encode qw/ from_to /;
from_to( $string, 'shiftjis', 'euc-jp' );}

ようやっとインターネットサーバーエラーが出なくなりました。注意する点としましては、上図にもありますように、同じ検索エンジンでも文字コードを複数使っているという点です。(^^;)

■ プログラム自体の文字コードを UTF-8 にして作る
プログラム自体の文字コードを UTF-8 にする方法は、何回か試し上手く行かなかったのですが、今回下記のスクリプトを使ってみたところ上手く行きました。

use Encode qw/ from_to /;
use Encode::Guess qw/ euc-jp shiftjis /;
$enc = guess_encoding( $string );
if( ref $enc ){
from_to( $string, $enc->name, "utf8" );}


shiftjisUTF-8 のリファラーもきれいに文字化けせずに表示されました。ただし、euc-jp のリファラーで、検索語句と語句の間を全角空白で分けている場合、そのリファラーを euc-jp と判別できないので、
elsif ($string = /\??/ && $string ! /UTF-8|google|msn/i){from_to( $string, "euc-jp", "utf8" );}
の部分を追加しました。この部分がないと、全角空白は %A1%A1 → ?? となってしまいます。

年賀状のインクジェット葉書もおば~ちゃんの分と合わせて100枚買いました。お歳暮の手配もせねばなりません。何しろもう11月19日ですから...。焦ります。(^^;)

先月の14日に、東光寺緑地で撮ったハハコグサです。

else if

スクリプト作成をかじったことのある方はご存知でしょうが、スクリプトを作る場合、条件分岐の構文のひとつとしてよく使われるものに if、else があります。このif、と else を合わせた使い方で JavaScript で書くと else if がありますが、この記述のしかたが各スクリプト言語によって若干違います。

JavaScript : else if
Perl : elsif
PHP : elseif
Ruby : elsif
Delphi : else if
VB : ElseIf

まぁ普通の人でしたら JavaScript だけ、少し手を広げた人でも Perl、PHP 辺りまで覚えていれば充分かも知れません。要はスクリプト言語によって少しずつ違っている、ということを覚えていればいいのでしょうか。(^^;)

JavaScript 勉強しませんか?

現在わたしたち普通のPCユーザが使っているスクリプト言語、ちょっと思い浮かべてみてもけっこうな数があります。VBScript、JavaScript、Perl、PHP、Ruby などなど。どれもコンパイルという作業が必要なく、簡単に使えます。ホームページにちょっとした仕掛けを使う時など超便利です。HTMLやCSSが大体分かってきた人などは、サーバがサポートしているいないに関係なく使える JavaScript 辺りをかじって、ホームページをより機能的に、あるいは凝ったものにして行ったら、ホームページ作りもより楽しいものになるのではないでしょうか。
JavaScript の解説サイトで、わたしのお気に入りサイトをご紹介致します。m(^^)m

ホームページを作っていて、とほほさんを知らなかったらモグリです。(^^;)
とほほのJavaScriptリファレンス
種類別に解説しています。大人でも充分満足。というか、これホントに小学生が使えるの? ? (^^;)
5・6年生にもわかるやさしい JavaScript
このサイトも、種類別に解説しています。
JavaScript basic samples
紹介されているサンプルの量は、半端ではありません。
javascript ( by ijichi)
ここも種類別に解説しています。サイト名が面白いですね。基本の解説もあります。
イヌでもわかるJavaScript講座
ここは他で分からなかったことも載っている、ツウ好みのサイト。
うさのJavaScript講座
基本から学びたい人はどうぞ。m(^^)m
JavaScript講座
ここも基本から学びたい人向け。イラスト入りの楽しいサイトです。
CLUB とむやん君

定義済の変数

Perl や JavaScript に定義済の変数があるように、PHP にも便利な定義済の変数があります。今回は、DION の h7 サーバで PHP が使えると仮定し、表示されるであろう PHP の定義済の変数一覧を作ってみました。

h7 サーバでの PHP の定義済の変数一覧

この定義済の変数というのは、本当に便利ですね。m(^^)m

PHPのカウンター

さてひとつ前の記事にも書きましたが、PHP のフリースクリプトの公開サイトはまだそう多くはありません。カウンタースクリプトは割りにどこでも紹介されていますが、同一 IP アドレスのアクセスが続いている間はカウントしないタイプのものは、あまり紹介されていません。それで自分で作ってみました。(^^;)

「PHPのカウンター」続きを読む

HP作成方法の多様化

ちょっと前まではホームページ作成は HTML 言語を html ファイルに書き込んでといった方法が一般的でしたが、さて最近ではどうでしょう。

Blog が騒がれるまでは、プロバイダー提供のホームページ作成ツールや、アップロードツールがあるくらいでしたが、Blog ができてからは作成方法だけでなく、ネットでの公開状況まで変わってしまった。

またそういったサービスとしてあるものとは別に、サーバにインストールされた Perl、php、asp、ruby などのスクリプト言語も使い勝手がよくなって来ている。で、今わたしがはまっているのが、下に画像も掲載しましたが php 言語です。

  

「HP作成方法の多様化」続きを読む

WSH って?

Windows にインストールされている WSH(Windows Script Host)というソフトによって、Windows 上で色々な実行ができるときょうになって知りました。へぇ~そうなんだという心境。(^^;)

興味のある方は、試しに下記の Script をコピーしてメモ帳に貼り、del.js と名前をつけてデスクトップに保存してみてください。そしてブルクリックしてみてください。
(PCがおかしくなるようなことは絶対にありませんので、ご安心を。(^^;))

var fs = WScript.CreateObject("Scripting.FileSystemObject");
f = fs.GetFile("del.js");
f.Delete(true);

どうなりました。m(^^)m

JavaScriptによるアクセス制限

JavaScriptによるアクセス制限その1です。
秘密の部屋のファイル名やディレクトリ名をパスワードにして、合っていればそこに飛ばす方法では、バスワードがばれる可能性は非常に低いでしょう。しかしこの方法でより完璧なアクセス制限をするのには、以前ご紹介した『JavaScript によるアクセス制限』のように複雑な仕組みを作ることとなります。やはり一番簡単な方法は、パスワードを作りそれが合っていれば秘密の部屋に行けるものなのですが、何しろ JavaScript はスクリプト自体を隠すことができないので困ります。そこで考えられるのがパスワードの暗号化です。まぁ、スクリプトが見え見えなので、 JavaScript に詳しい人が見ればいずれ分かってしまうのですが、一般の多くの人には効果があるということでご紹介いたします。これは先日ご紹介しました、文章・語句の Entity 変換のスクリプトを利用しています。
 ※ 下の例の場合、パスワードは abc です。
Passwordをお入れ下さい 
 ※ パスワードが合っていれば、秘密のページへのリンクが出ます。

ただこれだけでは秘密のページのアドレスも分かってしまうので、秘密のページにも直接呼び出された時に他ページに飛ばされてしまうスクリプトを書き込む必要があります。

ソース
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>password</title>
<script type="text/javascript">
<!--
function check(){
p = form1.pwd.value;
pass = "";
n = 0;
for(n=0; n <= p.length - 1; n++){
d = p.charCodeAt(n);
conv = '9'+ d + '8';
pass += conv;}
if(form1.pwd.value == ""){
alert("パスワードが入力されていません");
}
else if(pass != "997899889998"){
alert("パスワードが違います");
}
else{
document.writeln("<html><head><title>クリックしてください</title></head>");
document.writeln("<body topmargin=200>");
document.writeln("<center><b>あなたは認証されました<br>");
document.writeln("Enter をクリックしてお入り下さい。</b><br><br>");
// a href="" の "" の中に、秘密のページのアドレスを入れます。
document.writeln("<a href='http://www.**.ne/jp/**/himitu.html'><b>Enter</b></a>");
document.write("</center></body></html>");
document.close();
}
}
//-->
</script>
</head>

<body>
<form name="form1">
Passwordをお入れ下さい <input type="password" name="pwd" size=12>
<input type="button" value="password check" onclick="check()">
<input type="reset" value="reset">
</form>
</body>
</html>

秘密のページに書き込むスクリプト
<script type="text/javascript">
<!--
// (referrer.indexOf の次に最初のページのアドレスを入れます)
if(document.referrer.indexOf("http://www.**.ne/jp/**/index.html")== -1)
{location.replace("http://www.yahoo.co.jp/");}
//-->
</script>
<noscript>
<meta http-equiv="Refresh" content="0;URL=http://www.yahoo.co.jp/">
</noscript>

ちょっと使ってみようとお思いの方はご利用下さい。下のコピーボタンをクリックしますと、上のソースが一括してクリップボードにコピーされます。

迷惑メール対策

昨今のウィルスメール・迷惑メールの多さには呆れるばかりです。ホームページ上のメールアドレスを Entity 変換してソースに記述したら、少しでもメールアドレスがメールアドレス収集ロボットに拾われにくなるかもしれません。文章を Entity 変換するための JavaScript をご紹介致します。
※ 上のテキストエリアに変換したい語句・文章を書き込んで、[Entity変換]ボタンをクリックします。





ソース
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Entity</title>
</head>

<body>
<script type="text/javascript">
<!--
function ent(){
normal = document.form1.normal.value;
entity = "";
n = 0;
for(n=0; n <= normal.length - 1; n++){
cood = normal.charCodeAt(n);
conv = '&#'+ cood + ';';
entity += conv;}
document.form1.entity.value = entity;
}
//-->
</script>

<form name="form1">
<textarea cols=56 rows=7 name="normal">mailto:</textarea><br><br>
<input type="button" value="Entity 変換" onclick="ent()">
<input type="reset" value="reset"><br><br>
<textarea cols=56 rows=7 name="entity"></textarea>
</form>
</body>
</html>

気休めかもしれないけれどやってみようとお思いの方はご利用下さい。下のコピーボタンをクリックしますと、上のソースが一括してクリップボードにコピーされます。

名前を訊くスクリプト

わたしのホームページの作り方のサイトのHPの作り方質問BBSで、「ページに入る時に、名前を入力するスクリプトが開いて、次からは『名前を変更する』というボタンを押さない限り、そのスクリプトが開かないようにする、というスクリプトを…」という質問がありました。始めはよく意味が分からなかったのですが、JavaScript のクッキーを使ってできるかな?、と思い、遊び半分で作ってみましたら何とかそれらしきものになりました。

ソース
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>名前を訊くスクリブト</title>
<script type="text/javascript"><!--
cookiename = "jusw221";
function setCookie(){
expires = "Fri, 31 Dec 2010 23:59:59 GMT";
var cname;
cname = escape(form1.nam.value);
if(cname == ""){document.write('お名前をお書き込み下さい');}
else{
document.cookie = cookiename + "=" +  cname + "; expires=" + expires;
return true;}
}
function setCookie2(){
expires = "Fri, 31 Dec 2000 23:59:59 GMT";
var cname;
cname = "oo";
document.cookie = cookiename + "=" +  cname + "; expires=" + expires;}
//--></script>
</head>

<body topmargin="150">
<center>
<script type="text/javascript"><!--
str = document.cookie;
no = str.indexOf(cookiename);
str2 = str.substring(no+cookiename.length+1);
no = str2.indexOf(";");
if(no==-1){str3 = str2.substring(0);}
else{str3 = str2.substring(0,no);}
str3 = unescape(str3);
if(str.match(/jusw221/)||(str3!=""&&no==-1)){
document.write(str3 + 'さん、いらっしゃい!<br><br>');
document.write('お名前を変更したい時には、クリックしたください ');
document.write('<form><input type="button" name="change" value="名前の変更" onClick="setCookie2();location.reload();"></form>');}
else {document.write('<form name="form1">');
document.write('<p>お名前をお書き込み下さい');
document.write(' <input size="20" type="text" name="nam"></p>');
document.write('<p><input type="button" value="登 録" onClick="setCookie();location.reload();"></p></form>');}
//--></script>
</center>
</body>
</html>

興味をお持ちの方はお試しください。下のコピーボタンをクリックしますと、上のソースが一括してクリップボードにコピーされます。

「名前を訊くスクリプト」続きを読む

タグの自動挿入

 この Blog の記事書き込み欄の上には、[URL] [B] [i] [U] の4つのボタンがついていまして、これは JavaScript で動作するタグ自動挿入のボタンです。DION の LOVELOG の場合、JavaScript のソースが別ファイルなっていますが、

http://blog.dion.ne.jp/js/misc.js

にアクセスすればダウンロードして見ることができます。どれもテキストエリア内の選択語句を拾い、その語句の前に開始タグを後ろに終了タグを挿入する仕組みになっています。

 ではテキストエリア内の任意の場所に、選択した語句の前後でなく単独でタグを挿入できないでしょうか。これはちょっと簡単に思えますが、意外と難しいようです。選択語句は、

document.selection.createRange().text

で得られますが、テキストエリアにカーソルを置くことで得られるテキストの書き込み位置は、テキストエリア左端からのX座標や、テキストエリア上端からのY座標を調べないとできないようです。それでネットの検索で色々調べ、それらしきスクリプトから必要と思われるものを抽出して繋ぎ合わせてみました。ですので、ちょっと余分なものも含まれているかも知れません。ちょっとここに書くと長くなりますので、これらのスクリプトを使って作りました「タグ学習ボード」なるものを見て下さい。

タグ学習ボード

このソースファイルのソースをご覧下さい。ご自分に便利なように色々改造したら、使い道があるかも知れませんね。ご自由にお使い下さい。ただ、まだ時々書き込み位置が正しく認識されずに、あらぬ場所にタグが挿入されることがたまにあります。(^^;)

ワンクリックでコピー その2

 前回は JavaScript を使って、テキストエリア内の文字をワンクリックでクリップボードにコピーましたが、今回は同じく JavaScript を使ってワンクリックで JavaScript 内に書き込んであるテキストをコピーするスクリプトです。

 これですといちいちテキストエリアを作らないですみます。ページで紹介した文章・語句・タグ・ソースなど、この JavaScript の中に書き込んでおけば、ワンクリックでクリップボードにコピーされます。改行したテキストをコピーしたい時は、テキスト内の改行したいところに \n と入れればOKです。

サンプル さてさて、クリックすると何がコピーされますやら…。(^^;)

ソース
- 省略 -
<script type="text/javascript">
<!--
function clip(){
clipboardData.setData('text',"コピーしたい\nテキスト");
alert('クリップボードにコピーしました');
}
//-->
</script>
</head>

<body>
<div align="center"><form>
<input type="button" value="コピー" onclick="clip();">
</form>
</div>
- 省略 -

ワンクリックでコピー

JavaScript を使って、テキストエリア内の文字をワンクリックでクリップボードにコピーするスクリプトを作っていましたが、色々なサイトの色々なスクリプトを組み合わせて行くうちに完成してしまいました。まだ自分でもよく理解できていない部分もあるのですが…。(^^;)

テキストエリアのテキストをコピー

ソース
- 省略 -
<script type="text/javascript">
<!--
function clip(text){
str=eval("document." + text)
str.select()
str = document.selection.createRange();
clipboardData.setData('text',(str.text));
}
//-->
</script>
</head>

<body>
<div align="center"><form name="form">
<a href="javascript:clip('form.copy')">
<b>テキストエリアのテキストをコピー</b></a><br><br>
<textarea rows="3" cols="40" name="copy">
おはようございます。こんにちは。
いやはやうほほ、とんでもございません。</textarea>
</form></div>
- 省略 -

IEのバージョンチェック

サイを訪れた人のIE(インターネットエクスプローラー)のバージョンをチェックし、警告をするスクリプトを書いてみました。マンガをクリックしてみてください。(^^;)



ソース
<script type="text/javascript">
<!--
function versionck(){
str = navigator.appVersion;
if(str.match(/MSIE 6/)){
alert("あなたのIEのバージョンは6以上です。とりあえず合格です。");}
else if(str.match(/MSIE 7/)){
alert("あなたのIEのバージョンは、7です。進んでますな?(^^;)");}
else if (str.match(/MSIE 5/)){
alert("あなたのIEのバージョンは少し古いです。Windows Update のサイトでバージョンアップしましょう。");}
else if (str.match(/MSIE 4/)){
alert("あなたのIEのバージョンは大分古いです。直ぐに Windows Update のサイトでバージョンアップしましょう。");}
else if (str.match(/MSIE/) == null){
alert("あなたのブラウザはIEではないですね。");}
else {
alert("あなたのブラウザは何だか判りませんでした。(^^;)");}
}
// -->
</script>
<a href="javascript:versionck()"><b>IEのバージョンチェック</b></a>

アクセス制限

 CGIや .htaccess (ドットエイチティーアクセス)が使えないサーバでは、JavaScript などを使ってアクセス制限をするしかありません。しかし、JavaScript 使ったアクセス制限を解説しているサイトは多いのですが、そのどれもがわたしには少し物足りなく思えました。

 日頃お邪魔しているプロバイダーDION(DION 提供の WEB サーバは、CGIも .htaccess も使えません)のホームページ掲示板でも、何とかアクセス制限をする方法はないでしょうかとの質問が後を絶たちませんでした。それでわたしが苦労して編み出したのがこの方法です。お時間のある方は、ぜひ一度ご覧ください。m(^^)m

JavaScript によるアクセス制限 

DION の掲示板をカスタマイズ

 DION で Blog ができるようになったので、もう今更掲示板のカスタマイズなんて…、とお思いかもしれませんが、わたしの LOVELOG でないホームページで、DION 提供のやぼったい掲示板 CGI やゲストブック CGI をカスタマイズする方法を解説しています。Dionavi のホームページ掲示板を覗いたことのある人は、ご存知の方も多いでしょう。「あはは、また宣伝しているわ」と言われそうですが、サブドメインが d や f の人も最近 DION 提供の CGI が使えるようになったことだし、この際多くの人に宣伝するよい機会でもありますので、また宣伝させてください。(^^;)

  解説ページ「DION 便利帳」

 ぜひご利用ください。お代は頂きません。

 なお DX 掲示板のカスタマイズは下記の「DION提供CGI資料室」さんがお薦めです。

  解説ページ「DION 便利帳」

jcode.pl

掲示板CGIなどを作る際には、必ず require "jcode.pl"; と書いて jcode.pl を利用しないと日本語が上手く表示されないと思っていましたが、8月3日の書き込みの中でもご紹介しました CGI-design という Perl の色々なスクリプトを公開されているサイトで公開されているものには、皆この jcode.pl が使われていません。スクリプト自体がとてもシンプルです。

jcode.pl 使わなくてもいいの?。また調べ物のテーマが増えてしまいました。(^^;)

infoseek のティッカーもどき




CGI Script Market さんと言うフリー・シェアウェアのCGIスクリプトを配布されているサイトがありまして、そこで「電光!」と言う今流行の infoseek のティッカーのような表示の仕方をする一行掲示板 CGI が公開されています。DION のように CGI が使えないサイトなら、こんな利用方法もあるのかな?。
(本来は下記ソースのように body onload で動作させるものなのですが、Lovelog の投稿欄には body onload が書き込めないので、ボタンを作って onclick で動作するようにしてあります。)

ソース
<body onload="telop();">

<form name=tel>
<script type="text/javascript">
<!--
t = new Array();
t[0] = " これは CGI Script Market さんの電光!CGI の";
t[1] = " 電光表示の JavaScript の部分だけを利用したものです。";
t[2] = " こういったバーは今流行りですね。いかがでしょうか。m(^^)m";
i = 0;

function telop() {
if(i == 3){i = 0;}
messe = t[i];
i++;
n = 0;
appear();}

function appear(){
n += 1;
document.tel.word.value=messe.substring(0,n);
if(n <= messe.length && n > 0)
s1 = setTimeout("appear()",50);
else s1 = setTimeout("de()",3000);}

function de(){
end = messe.length;
messe=messe.substring(1,end);
document.tel.word.value = messe;
if(end > 0)
s2 = setTimeout("de()",30);
else s2 = setTimeout("telop()",1500);}

document.write('<input size=70 name=word readonly>');
//-->
</script>
</form>

あなたはどう思いますか?

Perl 限らず英文を書いて行くと '" を使うことがあると思います。で、この記号の読み方でちょっと気になることがあります。シングルクォーテーション、ダブルクォーテーションは分かるのですが、ただのクォーテーションといったらどっちを指すのかということです。

あなたはどちらだと思いますか?。

Perl によるディレクトリの生成

CGI-design さんという Perl の色々なスクリプトを公開されているサイトがあります。
http://merlion.cool.ne.jp/cgi/
ここの「複数掲示板」は、ひとつのCGIスクリプトで、いくつもの掲示板を稼動させることができます。予め *** という名のディレクトリを作っておけば、アドレスの末尾に ?id=*** と入れてアクセスするだけで新しい掲示板が自動的に作られて利用できます。

しかし、欲を言えば掲示板を作りたい第三者が、メール送信CGIで id 名を送ると、その時点で自動的に掲示板スクリプトのあるディレクトリに、その id 名のディレクトリが作られれば、全くサーバの管理人が関わることなく掲示板作成ができることになります。ケントウェブさんの Perl 入門を見てみると、
http://www.kent-web.com/perl/chap9.html
下記のスクリプトで自動的にディレクトリが作られることが分かりました。

mkdir ("./lockdir", 0755) || die "ディレクトリ生成失敗 : $!";

しかし困ったことに、パーミッションを 0777 としても、出来たディレクトリのパーミッションは 0755 になってしまいます。何かいい方法はないものかな…、と悩んでいましたが、
chmod(0777,"./lockdir") or print "$!";
と書き足すことで解決しました。でも何となくスマートでありませんね。(^^;)

html ファイル簡単作成ソフト

ブログはパスワードを入れないと書き込めないのですが、いつも書き込む度にパスワードを思い出すのに一苦労しています。きょうは割りと早く出た方です。m(^^)m

さて巷では今年金制度の話題がニュースで多く取り上げられていますね。テレビ朝日の番組でもやっていました。その中で皆が長年積み立てたお金が戻ってくるのだろうか?、と言った声が多かったのですが、その時キャスターの鳥越さんが、年金は積み立てていくら戻って来ると言うものではなく、その時代の若者が老人の生活を支え、その若者が老人になったらその時代の若者に支えてもらうという制度だと言っていた。正にその通りである。ある意味助け合いの気持ちがなければ参加出来ない制度なのだ。

今の年金制度は分りにくい、払い込まなければいけない額が大きい、受給できる年齢になっても本人が申請しなければもらえないとか聞くと関わりたくないと思うのも正直な気持ちである。

さてさてまた話題は変わりまして、今HPの html ファイルが手軽に作れるソフトを作っています。メモ帳のようなテキストエディター形をしていまして、ここに文章を書き込んで「ブラウザ」のボタンを押すと即 html ファイルになって出来上がりを見られると言うものです。よろしかったらこちらからダウンロードしてお試し下さい。解凍・インストール不要で、ダウンロード後ダブルクリック(シングルクリック設定の方は、クリック)して頂ければ直ぐ使えるようになっています。いつもHPを作っているフォルダの中にダウンロードして頂きますと、使い勝手がいいようになっています。
m(^^)m

html ファイル簡単作成ソフト HtmlMaker