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 によるアクセス制限』のように複雑な仕組みを作ることとなります。やはり一番簡単な方法は、パスワードを作りそれが合っていれば秘密の部屋に行けるものなのですが、何しろ JavaScript はスクリプト自体を隠すことができないので困ります。そこで考えられるのがパスワードの暗号化です。まぁ、スクリプトが見え見えなので、 JavaScript に詳しい人が見ればいずれ分かってしまうのですが、一般の多くの人には効果があるということでご紹介いたします。これは先日ご紹介しました、文章・語句の Entity 変換のスクリプトを利用しています。
※ 下の例の場合、パスワードは abc です。
※ パスワードが合っていれば、秘密のページへのリンクが出ます。
ただこれだけでは秘密のページのアドレスも分かってしまうので、秘密のページにも直接呼び出された時に他ページに飛ばされてしまうスクリプトを書き込む必要があります。
ソース
<!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変換]ボタンをクリックします。
ソース
<!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>
気休めかもしれないけれどやってみようとお思いの方はご利用下さい。下のコピーボタンをクリックしますと、上のソースが一括してクリップボードにコピーされます。
レンタル掲示板始めました
♥ Ryos.info レンタルCGI ← ここをクリックしてね♪
にこにこ |
普通 |
初めまして |
ぐすん |
は?い! |
おいおい |
怒ったぞ! |
お眠です? |
びっくりー! |
やれやれ |
いやあ |
わからん? |
あわあわ |
こら?! |
やったーっ |
便利で楽しいレンタル掲示板です。利用者のパソコンの中の画像を送信して表示できる画像アップロード式(年間使用料1200円消費税込)のものと、タグを書き込むことで画像を表示できるタイプ(年間使用料600円消費税込)の2種類をレンタルしています。
どちらも親記事に対してレスがつけられます。ご利用される方(管理人)が設定変更画面から、タイトルやデザイン、パスワード、アイコンの有る無しなど設定を色々変えることができます。お試し用掲示板がありますので、お試し下さい。ご質問はご遠慮なく質問掲示板でお尋ね下さい。
設置してみようと思われましたら、お申し込み用送信フォームよりお申込み下さい。お申し込みされたその時点で設置され利用できます。お試し期間が2週間ございますので、その間に使用して頂き、お気に召しましたら使用料のお振り込みをお願い致します。2週間を過ぎてもお振り込みがございませんと、キャンセルされたこととなり掲示板は削除されます。詳しくは、ご利用方法・ご利用規約をご覧下さい。
名前を訊くスクリプト
ソース
<!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
さて今回レンタル掲示板を始めようと思ったきっかけは、前回書きましたようにサーバのスペックが上がったことも大きいのですが、CGI-designというCGIスクリプトの公開サイトで、複数掲示板なるスクリプトを見つけたことにもよります。これはひとつのスクリプトでいくつもの掲示板を動かすというスクリプトで、ある決められたディレクトリ内に掲示板用のディレクトリを作り、そのディレクトリ名を引数としてアクセスすると新たに掲示板が作られるというものなのです。ではそのディレクトリを自動的に作れないか。で、kent-web さんで配布されている postmail というメール送信CGI のスクリプトの中に、お客さまが申し込みの送信をする過程でサーバ内の決められたディレクトリ内に掲示板用のディレクトリを作れないかと考えました。(^^;)
下記のスクリプトでなんとかディレクトリ生成はできたものの、パーミッション 755 のところを 777 にしてもパーミッションが 755 になってしまった。
mkdir ("./bbs/$n", 0755) || die "ディレクトリ生成失敗 : $!";
何かいい方法はないものかな...、と悩んでいましたが、
chmod(0777,"./bbs/$n") or print "$!";
と書き足すことで解決しました。何となくスマートではないのですが...。(^^;)
また最初はメール送信フォームにユーザID欄を設け、そこに書き込まれた ID が掲示板のためのディレクトリ名になるように設定してみました。
<input type="text" name="id" size="35" style="ime-mode:disabled;">
とすれば、間違って直接入力以外の入力で送信されることもない。しかしよくよく考えてみると、お客さまに ID を決めて頂くと同じ ID が出て来る可能性がある訳です。それで勝手に1から順に2、3とディレクトリ名がつけられるようにしようと思いました。が、さてどうしたらそうなるか...。一日ほど考えたでしょうか、思いついた方法はパーミッション 666 にしたナンバーを参照するのと同時に書き込みできるファイルを作り、参照した数字プラス1を書き込むように設定してみました。始めこのファイルに0を入れておくとメールが送信される度に1、2、3という名のディレクトリが生成されていく仕組みです。お?、スクリプトって考えればなんでもできるのね。(^^;)
さて自分で改造したとはいえ、元は人さまの作られたスクリプトです。これをただで商売に使っては申し訳ない訳で、kent-web さんのスクリプト商用利用の事業者登録は昨年の7月に済ませてありましたので、今回は CGI-design さんのスクリプト商用利用の事業者登録を致しました。どちらも12000円をお支払いすると、永久的にスクリプトの商用利用ができるというシステムになっています。
Ryos.Info レンタルCGI
2003年7月、Kent Web CGI 商用利用の事業者登録。 | |
2004年8月、CGI-design CGI 商用利用の事業者登録。 |
ワンクリックでコピー その2
これですといちいちテキストエリアを作らないですみます。ページで紹介した文章・語句・タグ・ソースなど、この 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>
- 省略 -