ラウンジ(兼FAQ掲示板)

同一ページ(CGI)内に複数の電光を設置する
過去ログ NO.1063459864
□ 異界探訪 [2003年09月08日02時17分]
はじめまして
とりあえず過去ログは探ってみましたが、当方の設置状況が特殊なためか、適切な答えを得られなかったので書き込ませていただきます。

まず状況説明としまして、あるページに電光を一つ表示させました。
これは正常に動作しました。
しかし、そのすぐ下に2つ目の電光を表示させるようにしたところ、エラーが発生してしまいました。
2つ目の表示をそのままに、上側(1つ目)を表示しないようにしたら、下側の電光は正常に動作しました。

同一ページ内に複数の電光を表示させる事は不可能なのでしょうか?
エラーメッセージはこうです。
 Webページに問題があるため、正しく表示または機能しなくなる可能性があります。
【詳細】
 ライン:57
 文字:2
 エラー:'document.denkoh_f.name'はNullまたはオブジェクトではありません
 コード:0
 URL:
http://www1b.sakura.ne.jp/~kuronekokan/ebs/ebs.cgi?LOGO

と、URLを見てもらえば判るかと思いますが、HTMLではなくCGI内に設置しようとしています。
電光の表示自体はされるのですが、上記エラーが出て、電光のコメント欄に何も表示されません。
ちなみに、denkoh1.cgi?htmlは普通に呼び出せ、rel.htmlも生成されます。
また、サーバにアップする前にローカルサーバでもテストを行いましたが、同様のエラーが発生してしまいます。
一応、cgi名、tempフォルダ、dataファイル名、全て変更しています。
以下にディレクトリ構造を示します。

├電光を表示させるページ
├denkoh
│ └image
├denkoh1
│ ├denkoh1.cgi
│ ├temp1
│ │ └data1.cgi
│ └jcode.pl
├denkoh2
│ ├denkoh2.cgi
│ ├temp2
│ │ └data2.cgi
│ └jcode.pl

パーミッションは全てりティさんのサイト内説明の通りに変更しています。

長文になり申し訳ございませんが、どうぞご助力お願いいたします。
最後になりましたが、当方のサイトと、電光を設置しようとしているアドレスです。
サイト:
http://www1.odn.ne.jp/kuronekokan/
電光設置ページ:
http://www1b.sakura.ne.jp/~kuronekokan/ebs/ebs.cgi
動作確認は、お手数ですが電光設置ページから、Continue>ID 電光、pass denkohと入力してログインしてください。
□ NXer [2003年09月08日21時31分]
はじめまして。NXerです。

>同一ページ内に複数の電光を表示させる事

同一掲示板を同一ディレクトリ内に置く場合の注意は、KENTさん(『裏ワザ大全
CGI/Perl』2002、p.223)が次のようにまとめています。
スクリプト名、記録ファイル名、ロックファイル名を別の名前にする、jcode.pl
などは共通して使用できます、と。

そちらはりティさんの設置方法を参考にされています。そのため、画像ファイルが共有
になっています。

確かに、
>一応、cgi名、tempフォルダ、dataファイル名、全て変更
されています。しかし、rel.htmlは共有されています。

そこでそちらのディレクトリ構成図を引用して、私なりに気付いた
ファイル(▲印)一部補います。(...は空白がズレないようにつけたもの)

|-▲index.html 電光を表示させるページ
|-▲rel1.html  (temp1からダウンロードして、ここにアップロード)
|-▲rel2.html  (temp2からダウンロードして、ここにアップロード)
|-/denkoh/
|.....└image  共有ファイル
|-/denkoh1/
|.....├denkoh1.cgi
|.....├temp1
|.....│...|−data1.cgi
|.....|...|ー▲rel1.html (..denkoh1.cgi?mode=open_relで作成)
|.....└jcode.pl
|-/denkoh2/
|.....├denkoh2.cgi
|.....├temp2
|.....│...│-data2.cgi
|.....|...|−▲rel2.html(...denkoh2.cgi?mode=open_relで作成)
|.....└jcode.pl


関連する初期設定の変更については、以下のようになりますでしょうか。
denkoh1.cgiの
$rel ="..略....../rel1.html";
$updir = "..略...../denkoh1/temp1/";
denkoh2.cgiの
$rel ="...略...../rel2.html";
$updir = "..略...../denkoh2/temp2/";

過去ログno.1043175474 に、るかさん(1月21日)が、同一サイト複数電光!
設置を報告されています。るかさんの場合html用サーバーとcgi用サーバーが
同一という条件です。るかさんのように同一サーバーである場合は、rel.html
の分だけ単純になります。
今回参考にされましたりティさんのプロバイダーniftyは、別サーバーです。
この場合、投稿/削除を電光!に反映するためにrel.htmlを作成します。複数
になると、当然、上の▲の補足とその操作(ダウンロード、アップロード)が必
要なことをご理解いただけるものと思います。
何分、下手な考え(苦笑)ですから、それを十分、机(画面)上で、検討してください。
また、ローカル・サーバーの環境にて動作保証のほどお願いします
□ 異界探訪 [2003年09月09日04時03分]
早速の回答どうもです^^
えっと、とりあえず

> |-▲rel1.html  (temp1からダウンロードして、ここにアップロード)
> |-▲rel2.html  (temp2からダウンロードして、ここにアップロード)
> $rel ="..略....../rel1.html";
> $updir = "..略...../denkoh1/temp1/";
> $rel ="...略...../rel2.html";
> $updir = "..略...../denkoh2/temp2/";

に関して修正アップしてみましたが、エラーは消えませんでした。
どうも、書き込み自体は出来ているようで、画面上に表示されないだけのようです。
そして、何故か上と下でログが共有されているみたいです……

エラーメッセージをグーグル検索にかけたりしつつ調べたところ、denkoh.cgi内の↓の部分に引っかかっているようなのですが。

          (334行辺り)
if (a[8]) {
document.denkoh_f.inf.style.background = a[8];
document.denkoh_f.name.style.background = a[8];
}
else {
document.denkoh_f.inf.style.background = def_background;
document.denkoh_f.name.style.background = def_background;
}
if (a[9]) {
document.denkoh_f.inf.style.color = a[9];
document.denkoh_f.name.style.color = a[9];
         (以下略)

denkoh_f を denkoh1_f のように書き換えたりもしてみましたが一向にダメです。
そして一つ判ったこととして、エラーの対象になっているのは下側の電光(denkoh2.cgi)だけのようです。
この辺に関して詳しい方とかいらっしゃいませんかねぇ。
おとなしく一つだけにしとけって事なんでしょうか(-_-:
□ 異界探訪 [2003年09月09日05時09分]
追記です。

上フレームにも電光を設置したところ、正常に動作しました。
同一ページというよりは、同一フレーム内に複数設置できないのでしょうか?
現在、下フレームの2個目の電光ははずしています。
□ NXer [2003年09月13日22時31分]
同一の目的をよりエレガントに処理する方法として別窓やフローティングフレーム
もあるかと思います。今回訪問させていただいた上のウェブページのフレームで同
一画面上に複数の電光!表示を実現されていますことと、
> どうも、書き込み自体は出来ている
ことから、この件について終わらせていただきます。

次の点の追記は、NXerの素人の愚案としてお笑いください。
-----------------------------------------------------
おとなしく一つだけにしとけって事なんでしょうか(-_-:
-------------------------------------------------------
1)cgi用サーバーとhtml用サーバーとが同一で電光!の複数登載は、るかさん
の報告やKENTさんの提案通り、可能です。では、どうして別サーバー
で異なるrel.htmlを複数使う時、一方の電光!にrel.htmlを介して反映され
ないのでしょうか。それを可能にする変更は、あるのでしょうか。
私なりの「おとなしく」しておれない理由を以下にまとめてみました。

2)過去ログ
http://suepon.com/lounge/data/1019776107.html 
にすえぽんさん(2002・4・26)は、JavaScriptエラーの原因を三つ挙げています。
その2「他のJavaScriptとの変数などの競合」。解決は変数名の確認、そして変更
ということです。
そこで、特定化していただいた
行365(そちらでは334、行番号はその付近とご理解ください)の文字列の配列を
探ってみました。およそこんなところでしょうか。
---------------------------------------------------------------
c[0]  c[1]  c[2] c[3] c[4] c[5] c[6] c[7] a[8] a[9]
$number,$coment,$name,$mail,$url,$upfile,$wid,$hgt,$bgcol,$txcol
-----------------------------------------------------------------
このあたりで2つの電光!その1とその2が、競合する様子を詳しくお知らせいただき
ました。おかげでこれまでは意味が分からなかった点を次のように理解すること
ができました。
if (a[8]) ・・・・・新規投稿で背景マットリックスで背景色指定の場合
document.denkoh_f.inf.style.background = a[8];
document.denkoh_f.name.style.background = a[8];
}
else {・・・・・・・指定がない場合、初期設定の背景色 
document.denkoh_f.inf.style.background = def_background;
document.denkoh_f.name.style.background = def_background;
}
if文の場合分けから、a[8]か、もしくは初期設定のbackground値
のいづれか、またはどちらも競合の原因になりえます。

すえぽんさんは、変数を一つ一つ削除して、問題発生源を特定化するのが
解決の近道といわれます。このif文を外し、次のa[9]文で同一の不具合が
発生すれば、a[i]の文字配列かdef_backgroundの競合と考えられます。

更らに先の行で次の代入があります。
485 ,,,, c[i] = a[i];

これを利用して

(1) a[8]を c[8]と変更してみる、
   (c[7]までは競合していないからという単純な理由です。)
(2) backgroundの初期設定をdenkoh1.cgiでは$disp_bg1、denkoh2.cgiで
   は$disp_bg2
   として競合をさける(もしこれが競合の原因なら)。

a[9]についても同様の対策を施す、などが解決策かと思います。

3)広告の自動挿入では、余分な文字型の混入も発生しています。電光!の表示すらできません。電光!1、電光!2、さらに、異界探訪さんのゲームで、ご使用中の文字型変数の現われ方や、文字列用の配列領域や変数領域などの使用方法など、専門
的なことは、当方にはまったく理解できません。お手上げということで失礼します。
一定時間書込が無かったので過去ログに移りました

suepon.com | CGI作成/CGI制作 | JavaScript | ドメイン検索 | バナー自動作成 | Google ダンスツール | 松浦亜弥 | H.P.memo | パソコン | ネイル

Copyright (C) 2002 - 2008 suepon , All rights reserved. Powered by CGI Script Market.