916 :
896 :02/07/17 22:07 ID:???
} elsif($user_agent =~ /OSF1/i) { $platform = 'OSF1'; if($user_agent =~ /OSF1\s+([a-zA-Z0-9\.]+)/i) { $platform_v = $1; } else { $platform_v = ''; } elsif($user_agent =~ /CBBoard/i) { $platform = 'CBB'; $platform_v = '1.0'; } else { $platform = ''; $platform_v = ''; } elsif($user_agent =~ /CBBstandard/i) { $platform = 'CBB'; $platform_v = '1.0'; } else { $platform = ''; $platform_v = ''; } { return ($platform, $platform_v, $browser, $browser_v); } このように訂正しました。 まだ、間違ってますかね?
} elsif($user_agent =~ /OSF1/i) { $platform = 'OSF1'; if($user_agent =~ /OSF1\s+([a-zA-Z0-9\.]+)/i) { $platform_v = $1; } else { $platform_v = ''; } } elsif($user_agent =~ /CBBstandard/i) { $platform = 'CBB'; $platform_v = '1.0'; } # この行がおかしい? } elsif($user_agent =~ /CBBoard/i) { $platform = 'CBB'; $platform_v = '1.0'; }
918 :
896 :02/07/17 22:54 ID:???
} elsif($user_agent =~ /OSF1/i) { $platform = 'OSF1'; if($user_agent =~ /OSF1\s+([a-zA-Z0-9\.]+)/i) { $platform_v = $1; } else { $platform_v = ''; } } elsif($user_agent =~ /CBBoard/i) { $platform = 'CBB'; $platform_v = '1.0'; } } else { $platform = ''; $platform_v = ''; } elsif($user_agent =~ /CBBstandard/i) { $platform = 'CBB'; $platform_v = '1.1'; } return ($platform, $platform_v, $browser, $browser_v); } にしてみましたが動作確認とれません。。 } #を消しても見ましたけど‥
まだやってたんかい (前略) } elsif($user_agent =~ /OSF1/i) { $platform = 'OSF1'; if($user_agent =~ /OSF1\s+([a-zA-Z0-9\.]+)/i) { $platform_v = $1; } else { $platform_v = ''; } } elsif($user_agent =~ /CBBstandard/i) { $platform = 'CBB'; $platform_v = '1.0'; } elsif($user_agent =~ /CBBoard/i) { $platform = 'CBB'; $platform_v = '1.0'; } else { $platform = ''; $platform_v = ''; } } else { $platform = ''; $platform_v = ''; $browser = ''; $browser_v = ''; } return ($platform, $platform_v, $browser, $browser_v); }
920 :
896 :02/07/18 00:16 ID:???
どうも何度もありがとうございました(・∀・)!! 今まで、perlなどのCGIはパスを調べて置くだけだったのでさっぱり分かりませんでした。 今度ここに来るときはもう少し勉強してきます(^^; ありがとうございました
921 :
便乗 :02/07/18 13:41 ID:???
#!/usr/local/bin/perl の #の直後にある「!」ってどういう意味ですか? すれ違いな質問かもしれんが、教えてくだされ。
俺はそれよりも前に#があるのに何で一行目に書かないといけないんだろう、 の疑問が湧いたことあがる。
おまじない
924 :
nobodyさん :02/07/19 15:50 ID:ou++e83o
掲示板の表示される名前の部分だけ色をかえたいのですが、どうずればよいのですか?
>>924 誘導されてこのスレに書きこんだんだろうけど、
>>1 をよく読んでから書きこもうや。
>>929 もしかして管理人さんですか?w
ソースは滅茶苦茶だったけど見た目は良いんですよねー
931 :
nobodyさん :02/07/21 15:45 ID:75qq1PAw
>>931 半角スペースはサンプルのソースを見ると
<TR>
<TD ALIGN="right" BGCOLOR="#ffffff" NOWRAP> 10 </TD>
<TD ALIGN="center" BGCOLOR="#ffffff" NOWRAP>水</TD>
<TD BGCOLOR="#ffffff" WIDTH="100%"> テスト<BR><BR><BR><BR>テスト </TD>
</TR>
となっているから
コメントの前と後ろに を挿入しないように削除すればいい
スクリプトは見てないから自分で の場所を探すこと
>>931 ワリィ
' 'は のことね
つまり、CGIのソースからコメントを出力するところを探して コメントの前と後ろの を削除すればオケ
935 :
931 :02/07/21 16:11 ID:75qq1PAw
>932-934 ありがとうございます。さっそくやってみます。
936 :
:02/07/22 18:34 ID:na3eS/Vv
KENTさんのYYボードの改造についてですが、イメージのくまとか猫とかを別のものに することは出来たのですが、更にイメージの選択を必須項目にしたいのですが、 どうやってやったらよろしいでしょうか? ご教授お願いいたします。
937 :
nobodyさん :02/07/22 19:28 ID:8TyOV1qR
>イメージのくまとか猫とかを別のものに 上から順にスクリプトを見ていったらわかるよ
>>936 アイコンの先頭にダミーをいれる
@icon1の先頭に'shokichi'を@icon2の先頭に'アイコンを選ぶ'
# アイコンを定義(上下は必ずペアで)
@icon1 = ('shokichi','bear.gif',・・・,'usagi.gif');
@icon2 = ('アイコンを選ぶ','くま',・・・,'うさぎ');
こうするとアイコンを選ばずにそのまま送信すると icon の値が shokichi として送られるので
あとは $in{'icon'} が shokichi ならエラーを出せばよい
1423行目以降の「フォーム入力チェック」サブルーチンの末尾に追加
# 管理アイコンのチェック
if ($my_icon && $in{'icon'} eq $my_gif) {
if ($in{'pwd'} ne $pass) { &error("管理用アイコンは管理者専用です"); }
}
# アイコンが選択されているかのチェック
if ($in{'icon'} eq "shokichi") { &error("アイコンを選択してください"); }
}
940 :
936 :02/07/22 21:48 ID:BcsBm5TC
941 :
age :02/07/23 16:48 ID:???
age
=終了=
943 :
:02/07/23 16:57 ID:???
945 :
943 :02/07/23 17:11 ID:8GxTWX5C
last;を外したんですが、送信エラーになってしまいます。。。
946 :
:02/07/23 18:22 ID:???
age
=終了=
948 :
nobodyさん :02/07/25 22:04 ID:RlKaNd0u
KENTさんのjoyful掲示板の、ワード検索を改造したいのです。 現在ではアルファベットの大文字小文字は区別されるのですが、 区別無しでヒットするようにしたいのです。 できるものなら半角全角もいっしょくたにしたいのですが、可能でしょうか? どうか知恵をお貸しください。よろしくお願いします。
949 :
948 :02/07/25 22:05 ID:RlKaNd0u
ソースです。 sub find { &header; print <<"EOM"; [<a href="$script?">掲示板にもどる</a>] <table width="100%"> <tr><th bgcolor="#880000"> <font color="#FFFFFF">ワード検索</font> </th></tr></table> <P> <UL> <LI>検索したい<b>キーワード</b>を入力し、「条件」「表\示」を選択して「検索」ボタンを押して下さい。 <LI>キーワードは「半角スペース」で区切って複数指定することができます。 <P><form action="$script" method="POST"> <input type=hidden name=mode value="find"> キーワード:<input type=text name=word size=30 value="$in{'word'}"> 条件:<select name=cond> EOM if (!$in{'cond'}) { $in{'cond'} = "AND"; } foreach ("AND", "OR") { if ($in{'cond'} eq "$_") { print "<option value=\"$_\" selected>$_\n"; } else { print "<option value=\"$_\">$_\n"; } } print "</select>\n"; print "表\示:<select name=view>\n"; if ($in{'view'} eq "") { $in{'view'} = $p_log; } foreach (5,10,15,20) {
950 :
948 :02/07/25 22:06 ID:RlKaNd0u
if ($in{'view'} == $_) { print "<option value=\"$_\" selected>$_件\n"; } else { print "<option value=\"$_\">$_件\n"; } } print "</select>\n"; print "<input type=submit value='検索'></form>\n</UL>\n"; # ワード検索の実行と結果表示 if ($in{'word'} ne "") { # 入力内容を整理 $in{'word'} =~ s/ / /g; @pairs = split(/\s+/, $in{'word'}); # ファイルを読み込み @new=(); open(IN,"$logfile") || &error("Open Error : $logfile"); $top = <IN>; while (<IN>) { $flag=0; foreach $pair (@pairs) { if (index($_,$pair) >= 0) { $flag=1; if ($in{'cond'} eq 'OR') { last; } } else { if ($in{'cond'} eq 'AND') { $flag=0; last; } } } if ($flag) { push(@new,$_); } } close(IN);
951 :
948 txtでアップするべきでした。反省(;´Д`) :02/07/25 22:07 ID:RlKaNd0u
# 検索終了
$count = @new;
print "検索結果:<b>$count</b>件\n";
if ($page eq '') { $page = 0; }
$end_data = @new - 1;
$page_end = $page + $in{'view'} - 1;
if ($page_end >= $end_data) { $page_end = $end_data; }
$next_line = $page_end + 1;
$back_line = $page - $in{'view'};
$enwd = &url_enc($in{'word'});
if ($back_line >= 0) {
print "[<a href=\"$script?mode=find&page=$back_line&word=$enwd&view=$in{'view'}&cond=$in{'cond'}\">前の$in{'view'}件</a>]\n";
}
if ($page_end ne "$end_data") {
print "[<a href=\"$script?mode=find&page=$next_line&word=$enwd&view=$in{'view'}&cond=$in{'cond'}\">次の$in{'view'}件</a>]\n";
}
print "[<a href=\"$script?mode=find\">検索やり直し</a>]\n";
foreach ($page .. $page_end) {
($no,$reno,$date,$name,$email,$sub,$com,$url)
= split(/<>/, $new[$_]);
if ($email) { $name = "<a href=\"mailto:$email\">$name</a>"; }
if ($url) { $url = "<<a href=\"
http://$url\ " target='_top'>HOME</a>>"; }
if ($reno) { $no = "$renoへのレス"; }
# 結果を表示
print "<hr>[<b>$no</b>] <font color=\"$sub_color\"><b>$sub</b></font>";
print " 投稿者:<b>$name</b> <small>投稿日:$date</small> $url<br>\n";
print "<blockquote>$com</blockquote>\n";
}
print "<hr>\n";
}
print "</body></html>\n";
exit;
}
長くなってすみませんが、ワード検索のサブルーチン一通りです。
ぼくよくわかんないけど # 入力内容を整理 $in{'word'} =~ s/ / /ig; とかきいたことがあるよママ
953 :
nobodyさん :02/07/25 22:32 ID:bgz0ge4n
な ぜ あ げ る?
955 :
nobodyさん :02/07/26 01:49 ID:0BDmH9hb
age
>>952 全角空白文字に大小文字の区別は(以下略)
957 :
nobodyさん :02/07/26 19:45 ID:kVw69kF2
>>948 #大文字小文字区別無し
if (index($_,$pair) >= 0) {
↓
if($pair =~ /$_/i){
半角全角区別無しは一旦 &jcode'h2z_sjis(*value)とかで両文字列を
統一してから照合すりゃ良いんじゃないかな。重そうだけど。
958 :
948 :02/07/26 23:30 ID:???
>>957 ありがとうございます。
それは上の文を下の文に書き換えればよいのでしょうか。
書き換えてみたのですが上手く動かないのです…
(何も検出されなくなってしまいました)
とにかく辞書や勉強スレなども見て、自分でもいろいろやってみます。
大きく前進できたと思います。
ありがとうございました。
959 :
957 :02/07/27 00:03 ID:pvFK+xGB
>>958 ああごめん、逆だ。
if($pair =~ /$_/i){
じゃなくて
if($_ =~ /$pair/i){
だ。つーかそんなら
if(/$pair/i){
か。
掲示板にカキコがあった際、内容をメール通知してくれるような プログラムが欲しいわけだが。
963 :
948 :02/07/27 19:01 ID:???
>>959 =957
上手くいきました!ありがとうございます!
964 :
nobodyさん :02/07/27 23:40 ID:DH9H4W07
965 :
nobodyさん :02/07/27 23:46 ID:6EI34UHG
>965 ログファイル名を変えられるなら、 例えば"ffwatch.cgi"、"fflog.cgi"にするのが吉。 これなら.htaccess触らないで済む。
967 :
nobodyさん :02/07/28 04:02 ID:W8D+zAzJ
CSS で font-size を指定するとか。。
>>968 なんかやってたらできました(w
すんまそん。ありがとうございました。
>>967 font sizeいじっても変わらないなら
すでにCSSで固定されてんじゃないの?
見てないから知らんが。
つーかtxtでUPされてないもんは見る気もせんが。
Web製作板から来たって話だけど向こうで合ってるよ。
プログラムの部分じゃない以上、ここは板違い。
>>965 @enc = ('euc', 'sjis'); # 日本語コード
# --------------------------------------
# パスワード認証
$pass = '';#好きなパスワードを入れる
if ($pass ne "") {
&decode;
if ($in{'pass'} ne "" && $pass ne "$in{'pass'}") {
&error("パスワードが違います");
}
elsif ($in{'pass'} eq "") {
&header;
print "<center><h4>パスワードを入力して下さい</h4>\n";
print "<form action=\"$script\" method=\"POST\">\n";
print "<input type=password name=pass size=6>";
print "<input type=submit value=' 認証 '></form>\n";
print "</center>\n</body></html>\n";
exit;
}
}
# ======================================
# 手続き
# --------------------------------------
こんな感じに付け加える。
ログを書き込むファイルの拡張子もcgiにするといいかも
972 :
965 :02/07/28 14:52 ID:J7Vy5sYd
>966 ありがとうございます。ソース見るとファイル名で判ってしまうので…。 >971 ありがとうございます。お手数おかけしてすみません。。 リプトを追加したところffwatchの方に500エラーがでました。 エラーチェックスクリプトでチェックしたところ以下の部分が エラーと表示されました。 syntax error at (eval 1) line 37, near "? if ($in{'pass'} ne "" && $pass ne "$in{'pass'}") { &error("パスワードが違います"); } elsif ($in{'pass'} eq "") { ? print" Unmatched right bracket at (eval 1) line 44, at end of line syntax error at (eval 1) line 44, near "} }" どうしたらいいでしょうか…? 宜しくお願いします。
973 :
971 :02/07/28 20:15 ID:Di7q+S2L
今、スクリプトをダウソして試してみたけどそれで動いたよ よけいなトコを消したんじゃないの? @enc = ('euc', 'sjis'); # 日本語コード # -------------------------------------- から # ====================================== # 手続き の間をコピペすればいいんだけど、 もう1回確かめてみ
974 :
971 :02/07/28 20:20 ID:???
976 :
965 :02/07/28 22:17 ID:???
>971 度々すみません。 うーん…貼り付けて貰ったものをコピペして使ったのですが、 何がいけなかったのか…。見比べてみてもどうも判りません…。 アップして頂いたものを使わせて貰ったところ、正常に稼動しました。 どこがいけなかったのか、もう一度ちゃんと見直してみます。 本当にどうもありがとうとざいました!
文字コードが違ったのでコピペしたら・・・ って可能性は?
978 :
965 :02/07/28 22:47 ID:???
文字コード…かちゅを使ってるので、何も気にせずにそのまま コピペして…TeraPadで保存時にEUCにしてたんですが…。 そうか…文字コードの可能性もあるんですね…。 するとコピした部分だけ別のテキストに保存。 その後文字コードを確認すればよかったんですね…。 そうか〜。
>>975 古いsendmail の引数ですね。これで動いてるんですか。
$sendmail -t -oi -i -f $mailto
↓
$sendmail -t -f $from
にしとけ。
981 :
975 :02/07/29 19:42 ID:???
>980 さん 遅くなりました。 さっそく試してみます。
記念パピコV(^o^)V
すいません皆さん、まだ改造素人です。よろしくお願いします。 openしたデータファイル 10<>タイトル<>カデコリ<>本文<>2002/08/01 (Thu)<>100000<>hoge<> 9<>タイトル<>カデコリ<>本文<>2002/08/01 (Thu)<>100000<>hoge<> 8<>タイトル<>カデコリ<>本文<>2002/08/01 (Thu)<>100000<>hoge<> 7<>タイトル<>カデコリ<>本文<>2002/08/01 (Thu)<>100000<>hoge<> ・ ・ ・ 1<>タイトル<>カデコリ<>本文<>2002/08/01 (Thu)<>100000<>hoge<> の上の三行だけを取得したいのです。 どのようにしたらいいのでしょうか?よろしくお願いします。
#ログファイルを読み込み専用モードでオープン open(DATA,"$logfile") || exit; # @dataに格納し、ファイルを閉じる @data = <DATA>; close(DATA); すると$data[0]には1行目が、$data[1]には2行目が、$data[2]には3行目が格納されています
986 :
nobodyさん :02/08/01 04:16 ID:3u+0D44D
>>986 $com =~ s/(>>([\d+]))/<a href=\"$script?mode=ref_res&no=$2\" target=\"_blank\">$1<\/a>/g ;
ref_resのサブルーチンは自分で作ってね。
988 :
987 :02/08/01 13:20 ID:???
$com =~ s/(&gt;&gt;([\d+]))/<a href=\"$script?mode=ref_res&no=$2\" target=\"_blank\">$1<\/a>/g ;
989 :
987 :02/08/01 13:30 ID:???
$com =~ s/(>>([\d]+))/<a href=\"$script?mode=ref_res&no=$2\" target=\"_blank\">$1<\/a>/g ; ( ゚д゚)鬱
elsif ($mode eq 'ref_res') { &ref_res; }
sub ref_res {
&header;
open(IN,"$logfile") || &error("Open Error : $logfile");
while (<IN>) {
($no,$date,$name,$mail,$sub,$com,$url) = split(/<>/);
if ($in{'no'} eq $no) {
if ($mail) { $name = "<a href=\"mailto:$mail\">$name</a>"; }
if ($autolink) { &auto_link($com); }
if ($refcolor) { $com =~ s/([\>]|^)(>[^<]*)/$1<font color=\"$refcolor\">$2<\/font>/g; }
$com =~ s/(>>([\d]+))/<a href=\"$script?mode=ref_res&no=$2\" target=\"_blank\">$1<\/a>/g ;
print "<DL><DT><hr>[<b><a name=\"$no\">$no</a></b>] <font color=\"$sub_color\"><b>$sub</b></font> ",
"投稿者:<b>$name</b> 投稿日:$date ",
"<br><br><DD>$com";
print "<P><a href=\"
http://$url\ " target=\"_blank\">
http://$url</a >" if ($url);
print "<br></DL>\n";
last;
}
}
close(IN);
print "</body></html>";
exit;
}
991 :
nobodyさん :02/08/01 14:51 ID:ZXIYAq1T
>>985 読むだけで全部配列に入れるな
>>984 以下の全部、又は欲しいとこだけ考えて組み込みな
####
$start_no = 0;#何行目から取得するか
$last_no = 3;#$start_noから数えて何行目まで取得するか
####上二つは外部からの入力?####
####作業準備
$t_datcount = 0;#作業用カウンタ(トータル数
$datcount = 0;#作業用カウンタ(配列に加えた数
####作業開始
open(DATA,"$logfile");#データ開く
while(<DATA>){#一行づつ処理
$t_datcount++;#行数をカウント
next if($t_datcount < $start_no);#指定した行数までスルー
if($datcount < $last_no){#指定した行数まで取得
push(@log,"$_");#現在の行を配列に加える
$datcount++;#加えた数をカウント
}
last;#加え終わったら即抜け。全ログ行数も知りたきゃこれは外す
}#次の行へ
close(DATA);データ閉じる
#取得した行は@logの中
992 :
991 :02/08/01 14:56 ID:???
訂正 × last; ○ }else{last;}
記念パピコV(^o^)V
記念パピコV(^o^)V
996 :
nobodyさん :02/08/04 20:49 ID:exw5uZtl
a
i
998 :
:02/08/04 20:50 ID:???
u
999 :
:02/08/04 20:50 ID:???
e
1000 :
:02/08/04 20:50 ID:???
うんこ1000個
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。