[PR]血液型生年月日で運命診断:無料お試しも本格鑑定!
「すえぽんさいと」さんで無料配布されている電光!をiswebで設置する方法です。
(バージョンは5.10です)
JSモードに加えてiswebでSSIを使って表示させる方法とAAACafeとトクトク(バナー埋め込み型)でPHPを使って表示させる方法を追加しました。
こちらを御覧ください。より簡単に改造できるようになったと思います。
珪さんの回答をもとにしています。
【以下iswebサポート掲示板より引用】
[131] Re:76,Re:99 script命令によるcgiの呼び出しについて 珪 2002/11/09 18:35:22
JavaScriptを書き出す部分のContent-typeを空にしてみてください。
CGIスクリプト内をよく見ていくと
Content-type: text/plain\n\n
というような記述が見つかると思います。
そこの、text/plain という部分を消してやればうまく行くのではないかと思います。
(text/htmlという記述は消さないでください。
また、それ以外の部分を間違えて編集しないよう注意してください)
検索(クエリ)機能のあるテキストエディタを使えば見つけやすいですよ。
動作確認のため、「すえぽんさいと」さんの「電光!」を利用しました。
尚、このスクリプトでは317行目に同様の記述がありました。
Flashを利用した掲示板でも同様のことが起きるかもしれませんね。
QA掲示板の過去ログが早く移転されるとよいのですが。
【引用ここまで】
-------------------------------------------------------------------------------
sub js_output {
if ($buffer eq "html") {
$data_dir = $tmp;
print "Content-type: text/html\n\n";
print "<html>\n<head>\n<title>$title</title>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
print "</head>\n$html_body\n<script>\n";
}
elsif ($buffer =~ /\d\d\:\d\d\:\d\d/ || ! $buffer) { print "<script>\n"; $tmp = $data_dir; }
elsif ($buffer eq "js") { print "Content-type: text/plain\n\n"; }←ココが問題!!
else { &error("処理内容が不明です"); }
-------------------------------------------------------------------------------
320行目近辺にあるjs_outputというサブルーチンの記述を探して下さい。
Content-type: text/plain\n\nのtext/plainを削除して、
elsif ($buffer eq "js") { print "Content-type: \n\n"; }として下さい。
その上で例えば、
<script src="cgi-bin/denkoh/denkoh.cgi?js"></script>
のように表示させたいページに記述して、javascriptで呼び出します。
rel.htmlを作る必要はありません。
-------------------------------------------------------------------------------
うまく設置できない皆さんへ・・・
denkoh.cgiの設定部分のファイルやフォルダへのパスを確かめてみてください。
以下はトップページに表示させる場合の設定です、参考にしてください。
トップと同じ階層にcgi-binフォルダをつくって、
さらにその中にdenkohフォルダをつくり、
その中にdenkoh.cgiとjcode.plとtempフォルダとimageフォルダを置いています。
トップページからは、
<script src="cgi-bin/denkoh/denkoh.cgi?js"></script>
と記述して呼び出します。
で、cgiファイルの設定部分で注意が必要な部分。
(iswebIDをあなたのものに変えること)
# このスクリプトファイルをhttp:からのフルパスで記述
$script = "http://iswebID.hp.infoseek.co.jp/cgi-bin/denkoh/denkoh.cgi";
# 作業用ディレクトリ(/temp/フォルダ)
# 表示するページから見たパスで記述
$data_dir = "./cgi-bin/denkoh/temp/";
# 作業用ディレクトリ(/temp/フォルダ)
# このスクリプトファイルから見たパスで記述
$tmp = "./temp/";
# アイコン用画像
$img_dir = "http://iswebID.hp.infoseek.co.jp/cgi-bin/denkoh/image/";
# 画像設置ディレクトリ(http:からのフルパスで記述)
data.cgiが開けませんというエラーが表示される場合は、
先ず、tempフォルダのパーミッションが777になってるかどうか確かめて、
# 表示するページから見たパスで記述
$data_dir = "./cgi-bin/denkoh/temp/";
# このスクリプトファイルから見たパスで記述
$tmp = "./temp/";
この部分をもう一度みなおしてください。
設置できたのに、ボタンの画像等が表示されないという場合、
# アイコン用画像
$img_dir = "http://iswebID.hp.infoseek.co.jp/cgi-bin/denkoh/image/";
ここが間違ってるか、imageフォルダのパーミッションが755になっていないからと思います。
この設定の場合、
tempとimageのふたつのフォルダはdenkohフォルダの中(直下)にないといけません。
(↑かなり重要。。)
必ず設置できますので頑張ってください。。
-------------------------------------------------------------------------------
さらに投稿する時に開く別窓の広告が大きすぎて邪魔になりますので、
これを消すことにします。(これは許容されていると思います)
かなり下のほうにある
-------------------------------------------------------------------------------
sub header {
print "Content-type: text/html\n\n";
print "<html><head>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
&style(0);
print "<title>$title $_[0]</title>\n";
print "</head>\n<body>\n"; ←この部分を捜す
}
-------------------------------------------------------------------------------
を捜して、
print "</head>\n<body>\n";を、
print "<noscript><body></noscript></head>\n<body>\n";と書き換えてください。
そしてさらに、その近辺にあるサブルーチン、
sub menu sub gate sub error
及び、もうちょっと上のほうにあるサブルーチン、
sub input sub res sub regist sub delete1
以上7個のサブルーチンのそれぞれ最後の部分の、、
print "</body></html>\n";という記述をみつけて、
print "</body></html><noscript>\n";と書き換えてください。
上記の部分はサブルーチンによって少しづつ違うと思いますが、
要するに、</html><noscript>となるようにすれば良いです。
この方法は旧Q&A掲示板で活躍されていたやまちゃんさんの考案です。
簡単に広告を消せるので禁じ手とされていましたが、
今回のように開く窓が広告より小さい場合は広告のために返って閲覧しづらいですし、
たとえどんな方法でも悪用するかどうかは使う人次第ではないかと思い、
あえて、ご紹介しました。
----------------------------------------------------------------------------------------------------
ここより下は現時点での最新バージョンである5.20での改造方法です。
5.10でも同様にして改造できると思いますが、
本家もバージョンアップしたことですし、5.20を使ってください。
(投稿時の小窓の広告の消し方は旧バージョンと同じですので割愛します)
SSIモードでの表示は、iswebではexecコマンドが使えないので駄目だと思っていましたが、
sahfさんからのご指摘によって、
<!--#include virtual=""-->
を使って呼び出せることが分かりました。
また、AAA!Cafeに設置する場合、PHPに埋め込んで、
<?php virtual(""); ?>
で呼び出せるということも教えていただきました。
ただし、AAA!Cafeでは<noscript>によって広告を消すことは出来ないみたいです。
(おかしなことになるみたいですので<noscript>は使わないでください)
提供して頂いた資料をこちらにUPしてありますので、是非御一読ください。
また、sahfさんのサイトの該当ページへのリンクは、こちらです。
気が向いたらバージョンアップされるかも知れませんので(^^;
有益な情報を提供していただいたsahfさんに感謝します。
---------------------------------------------------------------------------------------------------
さて、改造方法ですが、
JSで呼び出す場合、旧バージョンではContent-typeを空にするようにしましたが、
今回それも含めて、sahfさんにヘッダーの切り替えを考えていただきましたので、
せっかくですから、それをそのまま別のパッケージにして使わせてもらうことにしました。
1:先ず、こちらからrental.plというファイルを入手してください。
zipで圧縮してありますので、適当な場所に解凍してください。
2:そのまま何もせずに、denkoh.cgiと同じ階層(場所)にrental.plをアスキーモードでアップロードし、
iswebの場合はパーミッションを604に設定します。(AAA!Cafe・トクトクのパーミッションは後述します)
3:denkoh.cgiの以下の部分を、書き換え又は加筆後にアップロードしてください。
denkoh.cgiの2行目に、require "rental.pl";と記述します。
これは、パッケージを読み込ませるためのものです。
これを忘れるとエラーがでますので、ここはかなり重要です。
次に、スクリプトの307行目からの、sub js_outputの最初の部分を
sub js_output{
# if ($buffer eq "html") {
# $data_dir = $tmp;
# print "Content-type: text/html\n\n";
# print "<html>\n<head>\n<title>$title</title>\n";
# print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
# print "</head>\n$html_body\n<script>\n";
# }
# elsif ($buffer =~ /\d\d\:\d\d\:\d\d/ || ! $buffer) { print "<script>\n"; $tmp = $data_dir; }
# elsif ($buffer eq "js") { print "Content-type: text/html\n\n"; }
# else { &error("処理内容が不明です"); }
if ($ul_mode) {
上のようにコメントアウトするか、思い切って削除してください。(ズバっと)
でその代わりに、&change;と記述します。
先程のrequire "rental.pl";と合わせて以下に簡単にまとめます。
-------------------------------------------------------------------------------------------------
#!/usr/local/bin/perl #(←AAA!Cafe・トクトクは#!/usr/bin/perl)
require "rental.pl";
#↑スクリプトの二行目でパッケージを読み込ませる
------------------------------------------------------------
sub js_output {
&change;
if ($ul_mode) {
#↑sub js_outputの最初の部分をこのように変更
#で、rental.plをdenkoh.cgiと同じ所にアップロードする
------------------------------------------------------------------------------------------------
iswebでの設置でしたら、以上の変更だけで、JSモードでもSSIモードでも一応は表示されるはずです。
JSモード呼び出しタグ例
<script src="cgi-bin/denkoh/denkoh.cgi?js"></script>
SSIモード呼び出しタグ例(必ず、?cgiというパラメータをつけて呼び出すこと)
<!--#include virtual="cgi-bin/denkoh/denkoh.cgi?cgi"-->
勿論、単体で表示(テストモード)させることも可能です。
http://iswebID.hp.infoseek/cgi-bin/denkoh/denkoh.cgi?html
------------------------------------------------------------------------------------------------
ここから先はAAA!Cafeやトクトク(バナー埋め込み型)での設置に必要な変更部分です。
上記での変更に加えて、スクリプトの516行目付近からの以下の部分を変更します。
denkoh_viw.document.open();
denkoh_viw.document.write("<html><head><scr","ipt>self.focus();self.moveTo(0,0);self.resizeTo(",rw,",",rh,")</scr","ipt>");
▼ ▼この行の ▼bodyを・・・
denkoh_viw.document.write("<title>",file,"</title></head><body bgcolor=#000000 marginheight=0 marginwidth=0 style=\\"margin:0px 0px 0px 0px;\\">");
▲ ▲この行の ▲bodyを・・・
▼ ▼ ▼このように直す
denkoh_viw.document.write("<title>",file,"</title></head><bo","dy bgcolor=#000000 marginheight=0 marginwidth=0 style=\\"margin:0px 0px 0px 0px;\\">");
▲ ▲ ▲このように直す
denkoh_viw.document.write("<img src=\\"$up_dir",file,"\\" width=",wid," height=",hei,">");
▼ ▼この行の ▼bodyを・・・
denkoh_viw.document.write("</body></html>");
▲ ▲この行の ▲bodyを・・・
▼ ▼ ▼このように直す
denkoh_viw.document.write("</bo","dy></html>");
▲ ▲ ▲このように直す
denkoh_viw.document.close();
(広告タグによるスクリプトエラーを防ぐ為)
次に、スクリプトの1059行目の、
print "<body></html>\n";
を
print "</body></html>\n";
に直してください。
これは、恐らく作者のタイプミスと思われますが、
直さないと、ここにも広告が挿入されますので。
--------------------------------------------------------------------------------------------------
ここまで出来たら、isweb同様にdenkoh.cgiとrental.plを同じ階層にアップロードします。
パーミッションは、
denkoh.cgi→700
rental.pl→600
jcode.pl→600
フォルダは全て701
--------------------------------------------------------------------------------------------------
AAA!Cafeの場合は、呼び出すファイルは拡張子を.phpにしてパーミッションを705にします
AAA!Cafeでは、cgi-binフォルダは必要ありません。
トクトクの場合は、呼び出すファイルの拡張子は.php3にしてパーミッションを705にします
トクトクの場合、サーバーの仕様でクッキーが有効になりません。
--------------------------------------------------------------------------------------------------
呼び出すPHPファイルの記述例(必ず、?cgiというパラメータをつけて呼び出すこと)
<?php virtual("./denkoh/denkoh.cgi?cgi"); ?>
--------------------------------------------------------------------------------------------------
AAA!Cafeとトクトクでは<noscript>で小窓の広告を消せないと前に書きましたが、
<body>→document.write("<bo","dy>");
のように変更することで、消せるかもしれません。(試してはいません)
rental.plってもうちょっとましな名前考えろ。とゆーツッコミはナシで・・・
最後になりますが、iswebでのSSIによる設置例です。