プロが教えるわが家の防犯対策術!

kentさんの所の掲示板のsunbbsについてです。

自動で掲示板を1分おきとか2分おきに自動更新する方法を
探しています。
リフレッシュの文を入れればいいのかもしれませんが
どこにどのようにいれればいいのか分かりません。

よろしくお願いします。
下に関係のありそうなところをコピーいたします。
違うかもしれませんが。


#-------------------------------------------------
# HTML生成処理
#-------------------------------------------------
sub html_regist {
local($i,$next,$back,$data);
local($file,$page) = @_;

open(WR,">$file") || &error("Write Error: $file");
print WR &header('HTML');

# リンク部
print WR "<B><font color=\"$p_color\">$point2</font>";
print WR "<a href=\"$home\" target=\"_top\">Home</a>\n";

if (!$whatsnew) {
print WR "<font color=\"$p_color\">$point</font>";
print WR "<a href=\"$script?mode=form\">Post</a>\n";
}

print WR "<font color=\"$p_color\">$point</font>";
print WR "<a href=\"$script?mode=find\">Search</a>\n";

# 過去ログ
if ($pastkey) {
print WR "<font color=\"$p_color\">$point</font>";
print WR "<a href=\"$script?mode=past\">Log</a>\n";
}

print WR "<font color=\"$p_color\">$point</font>";
print WR "<a href=\"$script?mode=admin\">Admin</a></B>\n<div align=center>\n";

# タイトル部
if ($t_gif eq '') {
print WR "<font color=\"$t_color\" size=6><b style=\"font-size:$t_size\">$title</b></font>\n";
} else {
print WR "<img src=\"$t_gif\" width=$tg_w height=$tg_h alt=\"$title\">\n";
}

# ひとことメッセージを表示
$message =~ s/\r\n/<br>/g;
$message =~ s/\r/<br>/g;
$message =~ s/\n/<br>/g;

print WR "<P>$message</div><hr>\n";

# 記事を展開
if ($page == 2) {
$next = $pagelog+1;
$last = $max;
} else {
$next = 0;
$last = $pagelog;
}
$i=0;
open(IN,"$logfile") || &error("Open Error: $logfile");
while ($data = <IN>) {
$i++;
if ($i < $next) { next; }
if ($i > $last) { last; }
print WR &log_view($data, $page);
}
close(IN);
if (!$whatsnew) { print WR "<table align=left><tr>\n"; }

# 次/前ページのリンクを生成
if (@lines > $pagelog && $page == 1) {
print WR "<td><form action=\"$htm_url$nexthtm\">";
print WR "<input type=submit value=\"次ページ\"></td></form>\n";
} elsif (@lines > $pagelog && $page == 2) {
print WR "<td><form action=\"$htm_url$htmfile\">";
print WR "<input type=submit value=\"前ページ\"></Td></form>\n";
}
print WR "</table>\n";

# 削除フォーム
if (!$whatsnew) {
print WR "<table align=right><tr><td>\n";
print WR "<form action=\"$script\" method=\"POST\">\n";
print WR "記事No <input type=text name=no size=4>\n";
print WR "削除キー <input type=password name=pwd size=4>\n";
print WR "<input type=hidden name=mode value=userdel>\n";
print WR "<input type=submit value='記事削除'></td></form></table><br clear=all>\n";
}

# 著作権を表示(削除不可)
print WR "<div align=center style='font-size:10px;font-family:Verdana,Helvetica,Arial'><!-- $ver -->\n";
print WR "- <a href='http://www.kent-web.com/' target='_top'>SunBoard</a> -\n";
print WR "</div>\n</body>\n</html>\n";
close(WR);
}

A 回答 (3件)

エスケープ記号が全角(\←このように)なってます。


多分投稿する際に自動的に直されたのでしょうね^^;;

エラーはそこにきてるはずです。
その文字を半角に修正してみてください!

この回答への補足

全角になっていましたね。
そんなことも気づかずにすみません。

で半角に直したんですが。
自動更新はなったのですが、書き込みを書くところだけ(管理人限定の書き込むところ)しか更新されませんでした。
記事一覧がでているメインページは更新されませんでした。
場所が違うのでしょうか?

またよろしくお願いいたします。<m(__)m>

補足日時:2007/04/13 09:39
    • good
    • 0
この回答へのお礼

追記です。

他のページも更新されていました。
書き込みの認証画面、ワード検索画面も自動更新できています。

肝心のメインページだけ更新されていない状態です。

お礼日時:2007/04/13 09:45

もしHTMLの文法を間違えていたとしてもエラーは起きないものです。



そのエラーはおそらくPerlの文法が間違っていたのだと思いますよ。
Perlで、値を 「"」を区切りに表記する場合、
"<meta http-equiv="refresh" content="10">";
と入力した場合、「"<meta http-equiv="」までが値、残りの「refresh" content="10">";」が意味不明になりエラーになります。
sunbbsのコードを見習って
$_ .= "<meta http-equiv=\"refresh\" content=\"10\">\n";
("という文字の前に\を入れることで、ただの文字だということを伝える)
とするか、
$_ .= qq|<meta http-equiv="refresh" content="10">\n|;
("以外の区切り文字で表記する)
などとすれば正しく記述できます。

入れる場所は、
$_ .= "<META HTTP-EQUIV=\"Content-Style-Type\" content=\"text/css\">\n";
$_ .= "<meta http-equiv=\"refresh\" content=\"秒数\">\n|;
$_ .= "<STYLE type=\"text/css\"><!--\n";
このようにすれば良いでしょう。

書き忘れましたが、リロードするだけならURLはいりません。
発言一覧ページをかならず表示させるならそのページを指定してください。
あ、そういえばふとおもったんですが、もしかしたら書き込みするページでもリロードが発生する可能性もありますね。書き込み用ページを別HTMLで用意すれば問題はないですが。^^;;

この回答への補足

回答ありがとうございます。
ただ、コピーして入れたのですがエラーになります。

前回で説明不足かと思いますので記載します。
この掲示板は、管理人のみ書き込み可能です。
エラーになるのは、 書き込みに行く為の承認のページとか
ワード検索のページです。
エラーは HTTP500内部サーバーエラーで
ページを表示できません
になっています。


自動更新の文を入れる前は正常に動いていました。
http://www.kent-web.com/bbs/sunbbs.html
この掲示板の書込みの管理者限定モードです。

何度も回答頂いて申し訳ないのですが、よろしくお願いします。
書き込みのページでリロードになっても、かまいません。
秒数で調整します。
今はテストで10秒にしています。
こちらのアドレス書いた方がいいですか?

$_ .= "<html lang=\"ja\"><head>\n";
$_ .= "<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">\n" if ($nocashe);
$_ .= "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n";
$_ .= "<META HTTP-EQUIV=\"Content-Style-Type\" content=\"text/css\">\n";
$_ .= "<meta http-equiv=\"refresh\" content=\"10\">\n";
$_ .= "<STYLE type=\"text/css\"><!--\n";
$_ .= "body,tr,td,th { font-size:$b_size; font-family:'MS UI Gothic'; }\n";
$_ .= "a:link { text-decoration:none; }\n";
$_ .= "a:visited { text-decoration:none; }\n";
$_ .= "a:active { text-decoration:none; }\n";
$_ .= "a:hover { text-decoration:underline; color:$al; }\n--></STYLE>\n";
$_ .= "<title>$title</title></head>\n";

補足日時:2007/04/12 19:19
    • good
    • 0
この回答へのお礼

この度は、回答頂きありがとうございました。
最終的には、SUNBBSでは、自動更新うまくいかなかったので
スキン式のBBSに変更して、お知らせいただいた文を入力しましたら、自動更新するようになりました。

何度も回答頂きありがとうございました。
本当に助かりました。感謝します。

お礼日時:2007/04/15 00:13

掲示板を自動更新にするならチャットの方が良いと思いますが・・。


若しくはどこかに更新ボタンをつけておくとか。

えっと、文句はこの辺にして、w
metaタグで吹っ飛ばすには、HTMLのヘッダー内に記述する必要があります。すなはち、
print WR &header('HTML');
の部分で、ヘッダが既にプリントされるのでこの関数でなく、header関数の中、(か、また別の場所)にある
<head>~</head>
部分の~にmetaタグを入れます。
<meta HTTP-EQUIV="Refresh" CONTENT="秒数; URL=http://...">
    • good
    • 0
この回答へのお礼

早速の返信ありがとうございます。場所違ったんですね。
チャットでもよかったんですが、
管理のみの発言の形式を取りたい&閲覧者が何人いるかを見られたくなかったので、掲示板がいいのかなと思いまして。

で回答いただいたところはここでよかったでしょうか?
URLは、掲示板の発言の一覧のページを指定すればいいのでしょうか?

先ほど、入力したらエラーになってしまったので。

#-------------------------------------------------
# HTMLヘッダ
#-------------------------------------------------
sub header {
local($_);
return if ($headflag);

if ($_[0] ne 'HTML') {
$_ .= "Content-type: text/html\n\n";
$headflag=1;
}
$_ .= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
$_ .= "<html lang=\"ja\"><head>\n";
$_ .= "<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">\n" if ($nocashe);
$_ .= "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n";
$_ .= "<META HTTP-EQUIV=\"Content-Style-Type\" content=\"text/css\">\n";
$_ .= "<STYLE type=\"text/css\"><!--\n";
$_ .= "body,tr,td,th { font-size:$b_size; font-family:'MS UI Gothic'; }\n";
$_ .= "a:link { text-decoration:none; }\n";
$_ .= "a:visited { text-decoration:none; }\n";
$_ .= "a:active { text-decoration:none; }\n";
$_ .= "a:hover { text-decoration:underline; color:$al; }\n--></STYLE>\n";
$_ .= "<title>$title</title></head>\n";

if ($bg) {
$_ .= "<body background=\"$bg\" bgcolor=\"$bc\" text=\"$tx\" link=\"$lk\" vlink=\"$vl\" alink=\"$al\">\n";
} else {
$_ .= "<body bgcolor=\"$bc\" text=\"$tx\" link=\"$lk\" vlink=\"$vl\" alink=\"$al\">\n";
}
$_;
}

お礼日時:2007/04/12 01:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!