トップページphp
821コメント330KB

【 スクリプト改造工房 PART 6 】

■ このスレッドは過去ログ倉庫に格納されています
0001103/03/16 18:28ID:vOOsWTxU
#================================
# スレッドの説明
#================================

「スクリプトを改造したいけどやりかたわかんないよー」という人がいましたら
ここで聞いてください。ひょっとしたらアドバイス出来るかもしれません。

質問するときは以下の点に注意して書いて下さい

(1) そのスクリプトの内容と置いてある場所を明記する (txtファイルでUPすればなお良い)
(2) どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し)
(3) 出来るだけ詳しく書くこと。少しは自分で考えること。できれば御礼も言ったほうが良い

※答えてくれないからといって逆ギレする厨はお断り

#================================
# 過去のスレッド
#================================

【PART1】行方不明
【PART2】http://pc.2ch.net/test/read.cgi/perl/986986227/
【PART3】http://pc.2ch.net/php/kako/988/988808396.html (HTML化済み)
0003前田03/03/16 18:42ID:KSrtergb
http://www2s.biglobe.ne.jp/~geoph/download.html
こちらのサイトのポップアップ式の掲示板を使ってるのですが
開示版に書かれた最後の記事の時間をindexページに表示したいのですが
どのようにすればよろしいのでしょうか?
教えてください

↓こんなサイトみたいにです。
http://www.ayapro.com/board.html
0004nobodyさん03/03/16 23:51ID:???
>>2
sub deleteme{
#自分の発言消去
open (IO,"+<$logfile");
eval{flock(IO,2)};
while (<IO>){
 if ($_ =~ /<>$ip/){
  @y2=split(/<>/,$_);
  if ($y2[6] ne $ip){
   push(@log,$_);
  }else{
   $y2[0] = 'All Clear (^-^)v';  #消去後の名前
   $y2[5] = 'All Clear (^-^)v';  #消去後のメッセージ
   push(@log,"$y2[0]<>$y2[1]<>$y2[2]<>$y2[3]<>$y2[4]<>$y2[5]<>$y2[6]<>$y2[7]<>\n");
  }
 }else{
  push(@log,$_);
 }
}
truncate(IO,0);
seek(IO,0,0);
print IO @log;
close (IO);
&reload2;
}

消去後の名前とメッセージをそれぞれ好きなのに変えれ。
消去しないほうはコメントアウトしれ。
0005203/03/17 02:02ID:TTdi1HRW
>>4
いやです。
0006AR03/03/17 13:44ID:DC9PFXA+
>>5は放置でお願いします。
0007nobodyさん03/03/17 13:48ID:VODuniq+
オロオロ(゚ロ゚;))((;゚ロ゚)オロオロ
http://hkwr.com/
http://hkwr.com/bbs
0008nobodyさん03/03/17 14:10ID:???
せっかくやってやったのに、いやですだとー?
0009AR03/03/17 14:48ID:DC9PFXA+
エラーがでたので見てください
ソース⇒http://csx.jp/~lgyec/ichats.data
援助お願いします。
0010nobodyさん03/03/17 15:18ID:???
>>9
ふざけてんのか?
全角スペースを置き換えれって言っただろうが!
0011nobodyさん03/03/17 16:59ID:???
スペースが見えるエディタを使ったほうがいいね。
0012AR03/03/17 18:06ID:DC9PFXA+
>>11スペースが見えるエディタでオススメな奴ありますか?
ちなみにいつもはメモ帳でやってます。
0013nobodyさん03/03/17 18:27ID:???
秀丸でも使え
0014nobodyさん03/03/17 18:30ID:E6NZQVv8
>>12
秀麻呂を知らんのかっと、。
0015nobodyさん03/03/17 19:33ID:???
つうか大抵のエディタなら全角スペースを見えるようにできるんじゃない?
とりあえず聞く前に自分で適当なエディタを探して試すべし。
(秀丸は有料だから、フリーのを……なんて質問は却下だよ)
0016nobodyさん03/03/17 20:12ID:???
sakura
0017nobodyさん03/03/19 11:51ID:???
掲示板などの最新書き込み者とか日付が表示されるページを作ったのですが、うごかないです。
#!/usr/bin/perl
#ユーザー設定
$bbs = './i-modebbs/imodebbs.dat'; #BBSログファイル
$bbsurl = 'http://www.*******/cgi/i-modebbs/imodebbs.cgi'; #BBSのURL
#設定終了

#bbsログファイル読込み#
open (BBS, "$bbs");
@bbsfile = <BBS>;
close (BBS);
($bbs_number,$bbs_date,$bbs_name,$bbs_title,$bbs_mail,$bbs_hpurl,$bbs_mhost,
$bbs_magent,$bbs_com) = split(/,/,$bbsfile[0]);

#html部分#
print <<HTML;
<html>
<head><title>掲示板</title></head>
<body>
<a href="$bbsurl">掲示板</a> [$bbs_number]<br>
[$bbs_name]<br>
[$bbs_date]
</body>
</html>
HTML

下のサイトのやつです。
ttp://xx.alpha-sv.com/vf4/cgi/update_bbs.cgi
0018nobodyさん03/03/19 13:24ID:???
>>17
「動かない」だけじゃわかんないよ。
「どう動かないのか」を書いてくれ。
0019sage03/03/19 14:16ID:Z36WfgQa
ttp://www.kent-web.com/variety/calen.html に検索機能をつけたいのですが
ファイルが月ごとになっているのでほかのスクリプトから移植することができませんでした。

できれば検索にかかった記事の全文を表示し該当ワードを太字にするような検索結果にしたいです。

わかる方がいましたらよろしくお願いします。
0020nobodyさん03/03/19 14:31ID:???
>>18
エラーがでてしまいます…
0021nobodyさん03/03/19 14:49ID:wSFZE8Gs
★男はココを見るべし★女と金と???★
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
0022sine03/03/19 14:58ID:mSaoA1aL
やっぱり
VBスプリクトだよね!
0023nobodyさん03/03/19 15:46ID:???
open (BBS, "$bbs");
@bbsfile = <BBS>;
close (BBS);
($bbs_number,$bbs_date,$bbs_name,$bbs_title,$bbs_mail,$bbs_hpurl,$bbs_mhost,
$bbs_magent,$bbs_com) = split(/,/,$bbsfile[0]);

この中に原因があると見た!って、オリジナルのソースもわからんから
推測だけどな。
0024nobodyさん03/03/19 16:11ID:???
>>17

一番上の行を抜き取るならこれでいいんじゃない?
open(BBS, "$bbs");
while (<BBS>) {
($bbs_number,$bbs_date,$bbs_name,$bbs_title,$bbs_mail,$bbs_hpurl,$bbs_mhost,$bbs_magent,$bbs_com) = split(/,/);
last;
}
close(BBS);
00251703/03/19 17:15ID:???
やっぱエラーでちゃいます…
初心者のほう逝って勉強してきたほうがいいですよね…
0026nobodyさん03/03/19 17:28ID:???
>>25
ソース晒せって
0027nobodyさん03/03/19 17:32ID:???
ただ単にヘッダがないからエラーになってんでしょ。
0028nobodyさん03/03/19 18:13ID:???
もしかして、あれで全部だったのか・・・
0029nobodyさん03/03/19 19:31ID:???
>>20
どんなエラーが出るんだよ

お前の脳内エラーなんか知るかハゲ
0030nobodyさん03/03/20 19:32ID:???
>>25
print <<HTML;
の後に
>Content-type: text/html
>(空行)
>(空行)
入れてみれ
0031nobodyさん03/03/20 23:08ID:???
>>25

>>30の言っていることをようく考えろよ。
CGIをまともに動かしたいんなら、ヘッダーをきちんとしなきゃな。
0032nobodyさん03/03/21 02:31ID:Q30fXesm
表示結果の部分を10コずつに分けて次のリンクで10コずつ表示させたいんですが、どうすれば良いんでしょうか?お願いします!
0033nobodyさん03/03/21 02:40ID:???
>>32
>>1
0034nobodyさん03/03/21 02:54ID:???
>>32
お願いしますって言われたって、何を改造すればいいのさ?
0035nobodyさん03/03/21 03:48ID:NS9P8WQ3
http://www.agemasukudasai.com/bloom/
0036nobodyさん03/03/21 05:15ID:b07vwTax
ここしかないでしょ?
http://homepage3.nifty.com/digikei/
0037nobodyさん03/03/21 07:18ID:???
>>32
とあるスクリプトの該当部分

if ($listnum > $pageview){
if ($page >= 2){
$bpage = $page - 1;
print "[<A HREF=\"$script?page=$bpage\">前のページ</A>] ";
}
if ($listnum % $pageview == 0){$lpage = int($listnum / $pageview);}
else {$lpage = int($listnum / $pageview) + 1;}
for ($i=1; $i<=$lpage; $i++){
if ($i == $page){print "<B>[$i]</B>";}
else {print "[<A HREF=\"$script?page=$i\">$i</A>]";}
}
if ($page < $lpage){
$npage = $page + 1;
print " [<A HREF=\"$script?page=$npage\">次のページ</A>]";
}
print "<BR><BR><BR>\n";
}
else {print "<BR><BR>\n";}

あとは自分の都合のいいように改造すれ
0038AR03/03/22 15:47ID:WjvvL6Ft
また挑戦してみたのですが、エラーが起こりました。
ちなみに秀丸をつかってやりました。
ソース⇒http://csx.jp/~lgyec/ichat.data
おかしい部分を教えてください。
0039nobodyさん 03/03/22 15:50ID:???
>>38 倍角文字が入ってる
perl -wc hoe.cgi

でエラー箇所でるからちっとは自分で調べれ・・・
0040nobodyさん03/03/22 16:52ID:???
>>38
お前なぁ・・・
同じこと何度目だよ?(゚Д゚#)

秀丸なら その他→ファイルタイプ別の設定→表示 で
全角空白を記号で表示 にチェック入れてみれ

できたという報告をするまで二度と来るな!
0041nobodyさん03/03/22 17:57ID:O6IB41Gf
掲示板の表示をhtml化したいんだけど、
どうやるのか見当がつかない。
なんかヒントがあったら教えてオクレ。
0042nobodyさん03/03/22 18:01ID:???
>>41
意味不明
ブラウザで見てるなら、普通はhtmlになってるだろ
0043nobodyさん03/03/22 18:05ID:???
>>41
>>1
0044AR03/03/22 19:01ID:gauSJKrI
無事できたのですが。
自分の発言を削除押したらそのメッセージがでるんですけど。
名前のところにまでそのメッセージがでます。
援助お願い致します。
0045nobodyさん03/03/22 19:22ID:???
>44
氏ね

二度とくんなヴォケ!
0046nobodyさん03/03/22 23:59ID:???
>>42
連邦の板みたいhtmlに吐き出して
負荷を減らしたいってことじゃないの?
0047nobodyさん03/03/23 02:05ID:???
>>42
過疎板なんだからお客さんは大切にw
意図は46が言うとうりに汲み取れるけどな〜
カルシウム取って落ち着きなさい。
0048nobodyさん03/03/23 02:47ID:???
htmlをファイルに書き出したいって言えばいいのに
なんかこの板は質問のへたなのばかりだな
0049nobodyさん03/03/23 08:57ID:???
>>47
質問下手の相手をする気はねぇよ。

ただでさえ、実生活で顧客の曖昧な要求の処理に苦労してんのに、こんなとこまで来てやってられるか。
0050nobodyさん 03/03/23 09:19ID:???
>>49まだニュアンスとしてはわかる範囲だと思うが・・・・
>>44の"そのメッセージ"ってのあたりになると解らんけど・・・

で、htmlとしてソースを吐こうとするのは、普通のCGIじゃ無理かと。
無論、自分で作れば問題ではない
0051nobodyさん03/03/23 13:04ID:???
>>49
じゃあこんなスレに出入りすんなよ。
カチンと来る気持ちもわかるが、
そうやって雰囲気悪くされるとそれも頭に来る。
というわけで、馬鹿相手にしたくないときはレスしないか、
そおれが出来ないならスレを覗かないかどっちかにしてくれ。
0052AR03/03/23 13:15ID:7sODWzUz
>>4さん無事削除後メッセージがでました。
自分の発言を消去を押すと自分の発言した文字すべてにAll Clear (^-^)vが付いてしまうので、それを付かずに一番上に'All Clear (^-^)v'をつける改造をお願いします。
援助宜しくお願い致します。
00534903/03/23 21:22ID:???
>>51
ああ、すまない。確かに見ていて気持ちのいい書き込みじゃなかった。
しかしながら、>>52 には別の意味でカチンと来てしまったよ。

ただ、こういう書き込みがあると、他の質問者もこのレベルになるんじゃないかと心配でならない。
できれば、もうちょっとマシな質問の仕方を学んで欲しいと思うのだけれども、
俺の考えることじゃないのかな。
0054nobodyさん03/03/24 00:48ID:???
というわけで、質問者はもう少し具体的な質問を心がけるように。
回答者ももう歩み寄ってナマアタタカイ視線の送るということで。
0055nobodyさん03/03/24 00:49ID:???
送りがな滅茶苦茶…逝ってきますズサー
0056AR03/03/24 15:53ID:YcFPejc4
援助お願い致します。
0057nobodyさん03/03/24 15:57ID:???
>>56
(3) 出来るだけ詳しく書くこと。少しは自分で考えること。できれば御礼も言ったほうが良い
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~
0058nobodyさん03/03/24 16:55ID:???
>56
もうくんなっつっただろうが!
なぁ〜にが援助だヴォケ、稲!!
0059nobodyさん03/03/24 17:22ID:???
もちつけ〜 >>58
努力しる〜 >>56
0060nobodyさん03/03/24 18:39ID:???
>>56
みんな君の努力の跡が見えんからこんないわれ方をするんだよ。
どんな改造をしてきたか、スクリプトをここに晒せ!
0061nobodyさん03/03/24 22:21ID:???
春休み突入企画!援助改造を求める子供達
0062nobodyさん 03/03/25 02:45ID:???
ネタか電波じゃないのかと思えてきとるわけだが・・・
0063nobodyさん03/03/26 01:43ID:???
&jcode'convert(*value, "euc", "", "z"); #変換前
Jcode::convert(\*value, "utf-8"); #Jcode.pm変換後

&jcode'convert(*sub, "euc", "", "z"); #変換前
Jcode::convert(\*sub, "utf-8"); #変換後

文字コードをユニコードにしたいのですが、これであってますか?
0064nobodyさん 03/03/26 02:48ID:???
>>63
Jcode::convert(\$value, "utf-8");
0065nobodyさん 03/03/26 02:50ID:???
>>64
間違った
Jcode::convert(\$value, "utf8");
00664103/03/26 04:41ID:Ri6qLnoQ
表現ヘタでごめんね。
整理すると、つまり負荷負荷のために表示を.cgiではなく.htmlにしたいの。
ぐぐってみたんだけど情報が見つからなくて、
なにかヒントがあればなぁと思ってこのスレに来たんだよ。
でも慌てすぎてて舌足らずだったね。
勘弁してちょ。
もちっと自分で試行錯誤してから出直すよん。
00674103/03/26 04:41ID:Ri6qLnoQ
負荷負荷→負荷軽減
00686303/03/26 05:17ID:???
>>65さん

ありがとうございました。この記述でちゃんとUTF-8にエンコードできました。
0069nobodyさん 03/03/26 16:22ID:yvUoj8Wi
http://www.futomi.com/library/accp.html
http://www.futomi.com/cgi-bin/dlrank/dlranklog.cgi?dl=accp_zip
このアクセス解析を改造したいです。

このアクセス解析はログ内に
20030326155753 ***.docomo.ne.jp 210.153.84.***.1048661873 - http://*** - "DoCoMo/1.0/N504iS/c10/TB" "-" "-"
と言ったログを残すのですがH"ではログが
20030326124628 pdxcgw.pdx.ne.jp 210.168.199.42.1048650389 - - - "" "-" "-"
となってしまいUser Agentは残らないようです。
そこでacc.cgiを
} elsif($user_agent =~ /^PDXGW/) {
から
} elsif ($ENV{'REMOTE_HOST'} eq 'pdxcgw.pdx.ne.jp') {
とホストでの判別できるように
記述し直しましたが
これだけではダメのようです。

ホストでの判別、もしくはUser Agentによる判別をしたいのですが。。。
http://specters.net/cgipon/labo/c_dist.html
http://specters.net/cgipon/labo/c_env.cgi?c=h
http://specters.net/cgipon/labo/h_spec.html

このあたりを参考にしたんですが。。。
0070nobodyさん03/03/26 17:24ID:NtHaVELZ
   。  *    。  ☆   。  +  。  + ☆  *
 ☆ http://www5b.biglobe.ne.jp/~ryo-kyo/osu.html ☆
 。 ☆ 。 * ☆   + 。   。  +  +  ☆  ☆

おすすめの無料オンラインゲームは↓ vector
http://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/278022/pack/win95/game/table/pachinko/majo_.lzh
0071nobodyさん03/03/26 21:00ID:???
>>69
H"の有識者が現われる前にスレ汚し。

えーと、要は、
1. H"ではログに UserAgent が残らない
2. acc.cgi をホストで判別できるように直したがダメだった

で、
Q1. ホストで何を判別したいの?
Q2. ソースを直した箇所って条件に合致した後、どんな処理をするの?
Q3. H" のリモートホストって、'pdxcgw.pdx.ne.jp' で固定なの?
Q4. どうダメだったの?いや判別できなかったんだろうけど、具体的はどーなのよ
0072nobodyさん03/03/26 21:52ID:???
>>66
亀レスだが、perl/CGIなら
$bbsdata = (掲示板のHTMLすべて);

open (FH, +<$filename);
print FH $bbsdata;
close(FH);

でいいんじゃないの?
00736903/03/26 21:52ID:???
A1.ログから出て、アクセス解析に表示されるようにしたい
A2.それが分からないから困ってる。
A3.そう、固定。
A4.書き換えても変化無し、エラーも何も起きない。

以上です。
00747203/03/26 21:54ID:???
補足。
>>72(書き込み処理含む)の後で、locationヘッダでhtmlに飛ばすとか。
書き込みだけCGI使うことになるから、かなりLOM多いなら有効だとオモフ。
00756903/03/26 21:55ID:???
スタンダード版
http://www.futomi.com/library/accs.html
でも処理は似ているからそれでもいいんですが。。。。

ようはホストでの認識か、UserAgentの取得が正常に出来れば解決するのですが。。
0076nobodyさん03/03/26 22:00ID:???
>>73

でも、
>20030326124628 pdxcgw.pdx.ne.jp 210.168.199.42.1048650389 - - - "" "-" "-"
のように、UserAgent欄には表示されないが、RemoteHost欄に出てるじゃん。

UserAgent欄とRemoteHost欄に同じ"pdxcgw.pdx.ne.jp"という文字列を出したいわけ?
0077nobodyさん03/03/27 07:00ID:???
RemoteHostが"pdxcgw.pdx.ne.jp"なら、UserAgent欄はH" って事にしたいのかな?
0078nobodyさん03/03/27 07:29ID:???
見てるとイライラするね。>>49の気持ちが分かる(ワラ

>>69の elsif ($ENV{'REMOTE_HOST'} eq 'pdxcgw.pdx.ne.jp') {
の中に入れないってことかなぁ。
>>73 の A4.書き換えても変化無し、エラーも何も起きない。
って具体的はどーなのよ

それとも>>76-77が言ってるみたいに表示だけの問題かい?
0079nobodyさん03/03/27 08:08ID:???
イライラしたら負けなのです。テヘテヘ
ま、次の返答が来たら大体意図が解る気もするけど。
# でも大抵の質問者はその前に逃げちゃう
0080nobodyさん03/03/27 12:33ID:???
elsif($user_agent =~ /^PDXGW/) {
を、
elsif($ENV{'REMOTE_HOST'} =~ /pdx.ne.jp/i){
0081nobodyさん 03/03/27 13:46ID:???
>>80
. が任意の文字になるから正確には

elsif($ENV{'REMOTE_HOST'} =~ /\Qpdx.ne.jp\E/i){
か、
elsif($ENV{'REMOTE_HOST'} =~ /pdx\.ne\.jp/i){
やね・・・

マッチはするけど・・・
00826903/03/27 13:55ID:???
>>80
うーん、変化無しです。
H"のuser agentは
PDXGW/1.0
なんですがこれがうまく取得できていないようなんです。
これを修正する方法が1つ目

ホスト情報はしっかりと残っていて、
pdxcgw.pdx.ne.jp
で固定なので、こちらで判別するのが2つ目の方法です。
/logs/access_log.cgi
のログ内には
>20030326124628 pdxcgw.pdx.ne.jp 210.168.199.42.1048650389 - - - "" "-" "-"
の様にREMOTE HOSTだけ残っているのでなんとか、pdxcgw.pdx.ne.jpのリモートホストから
acc.cgi
のアクセス解析に反映させる方法を悩んでいます。

まあ、どうして取得できないか分からないuser agentを取得するよりもRemote hostからの取得の方が改造しやすいのかな?
と思い相談しました。
00838103/03/27 14:28ID:???
>>82
ソースざっと見だけど
elsif($HostName =~ /pdx\.ne\.jp/){

ぐらいでなんとかんない?
0084nobodyさん 03/03/27 14:57ID:???
そもそも、金とるようなcgiだから作者に聞くのが筋のようなきもするが・・・
00858003/03/27 15:22ID:???
>>81
訂正サンクス

>>82
リモホとエージェントがわかってるなら、
if($ENV{'REMOTE_HOST'} =~ /pdx\.ne\.jp/){
$エージェント = "PDXGW\/1\.0";

でいいんでない?
00866903/03/27 16:53ID:???
>>81については無変化、
>>83 >>85については500エラーになります。

一応、作者にも聞いては見たのですが。今のところ返答はないです。
有料といっても試用期間が∞なので。。。
H"の仕様自体も特殊でわかりにくいようですね。
H"の場合、厳密に言えばブラウザではなく、Eメールの送受信を利用してページを表示している形式だそうです。
http://specters.net/cgipon/
ですべての携帯でみれる掲示板があるのですが、こちらはuser agentからの取得をしているようですね。
0087nobodyさん03/03/27 18:41ID:WYrKGZij
>有料といっても試用期間が∞なので。。。
意味不明
0088nobodyさん03/03/27 18:57ID:???
>>86
あいかわらず君が何をしたいのかわからんが…
H" のUserAgentの取得をしたいでよろしいか?
でもUserAgentが取得できないので、次善の策として、$ENV{'REMOTE_HOST'}がpdxcgw.pdx.ne.jpならUserAgentにH" を代入するでよろしいか?

> acc.cgiを
> } elsif($user_agent =~ /^PDXGW/) {
> から
> } elsif ($ENV{'REMOTE_HOST'} eq 'pdxcgw.pdx.ne.jp') {
って書いてあるが、おそらく$ENV{'REMOTE_HOST'}ではホスト名が返ってこないと思われ。

じゃ、なぜログにホスト名が記録されているっていうのは、gethostbyaddrを使っていると思われ。

あとは自分でできるね?
0089nobodyさん03/03/27 19:02ID:???
>ま、次の返答が来たら大体意図が解る気もするけど
ゴメン、わからなかったね。
0090nobodyさん03/03/27 19:08ID:???
>>86
>>83 >>85については500エラーになります。
って書いてあるが、$HostNameや$エージェントって言う変数名そのまま使ったんじゃねーか?
0091bloom03/03/27 19:15ID:LJULTLGK
http://www.agemasukudasai.com/bloom/
0092nobodyさん03/03/28 00:16ID:???
>>69は逃げたかな……
00936903/03/28 00:33ID:???
>>92
いるよ。
まったくもって理解できない。。。。
0094nobodyさん03/03/28 00:54ID:???
そもそも 500エラーに対処できるだけのスキルはあるのかな?
これ結構重要なことよ?
0095nobodyさん03/03/28 01:12ID:???
>>69
いるんだったら、>>90をはじめとする全ての自分に向けられた質問に回答しろ。
余すところ無く詳細に回答しろ。

#いい加減にしろよこの野郎。
00966903/03/28 13:29ID:???
>>94
CGIに関しては設置やせいぜいCGI内のHTMLを書き換えるくらいの知識しかありません。
だから>>90の$HostNameや$エージェントら何を代入するのか、分からないし、gethostbyaddrが何のことか分かりません。。。
申し訳ないです。なので>>88のやり方でどこを書き換えたらいいのか教えて欲しいんですが。。

あと、CGIを勉強するのにいい本ってありますかね?
0097nobodyさん03/03/28 14:59ID:???
勉強汁!
0098nobodyさん03/03/28 15:12ID:???
>>96

勉強すべきは、CGI じゃなくて言語でしょうな。
で、改造したいソースの流れを追っかけていくだけでも
十分、その言語の勉強になると思う。

> >>88のやり方
gethostbyaddr とはなんぞや?とすかさず Google 様に
お尋ねするようでなければ、こいつホントに勉強する気あるのか?
と疑われても仕方が無いと思う。# もうここまでで散々叩かれちゃってるけど

あと題材も悪かったな。H" のアクセス解析の改造でしょ?
実際H"を所持していて、しかも通信費払ってまでテストしてくれる人、
そう多くはないと思うんだなぁ。
だから、ちったぁ自分が頑張ってくれないと。
00996903/03/28 19:53ID:???
一応、いろいろ調べてみました。
gethostbyaddrというのはIPからのリモートホストの取得の様ですね。
しかし、説明文のソースについてはさっぱりでした。

ログ内は
20030328015624 p7003-adsao03yokoni-acca.kanagawa.ocn.ne.jp 219.161.128.*.1048784184 - http://ime.nu/******/ "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; (R1 1.3))" "ja" "1024 768 24"
20030328015643 pdxcgw.pdx.ne.jp 210.168.199.42.1048784203 - - - "" "-" "-"
20030328020133 ahproxy4.ezweb.ne.jp 61.117.0.**.1048784493 - http://******/i/ - "UP.Browser/3.04-KC13 UP.Link/3.4.5.6" "ja" "120 128 8"
20030328020229 N043207.ppp.dion.ne.jp 211.126.68.***.1048365261 - - http://ime.nu/*****/ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)" "ja" "1024 768 24"
20030328020333 pdxcgw.pdx.ne.jp 210.168.199.42.1048784613 - - - "" "-" "-"
20030328024028 wacc2s2.ezweb.ne.jp 218.222.1.***.1048786828 - http://*****/i/ - "KDDI-TS24 UP.Browser/6.0.8.1 (GUI) MMP/1.1" "ja-jp" "144 140 16"
20030328024332 pdxcgw.pdx.ne.jp 210.168.199.42.1048787012 - - - "" "-" "-"
の様に連続して保存されています。

DDIポケットに問い合わせたのですが、IPも「210.168.199.42」で固定らしいです。
IPからの方が処理はしやすいのですかね?
0100nobodyさん03/03/28 20:05ID:???
>>99
君はまだ、>>88 の前半に答えてない。
だからほとんどの人間は君が望むものをきちんと把握できていない。

>IPからの方が処理はしやすいのですかね?
gethostbyaddr をさっぱりとか言っちゃう君には、確かにその通り。
01016903/03/28 20:49ID:???
>H" のUserAgentの取得をしたいでよろしいか?
>でもUserAgentが取得できないので、次善の策として、$ENV{'REMOTE_HOST'}がpdxcgw.pdx.ne.jpならUserAgentにH" を代入するでよろしいか?
はい、その通りです。今回IPが同一だということが分かったのでそれでも構いません。

>って書いてあるが、$HostNameや$エージェントって言う変数名そのまま使ったんじゃねーか?
はい、使いました。$エージェントは$agentにしましたが。。。。


やりたい処理というのは>>99の様に記述されたaccess_log.cgiからH"だと言う情報を読みとり
http://www.futomi.com/cgi-bin/sample/accp/acc.cgi

OS/ブラウザー分析

OSやブラウザー
と言う欄に
DDI POCKET
H"
とOSランキングに表示させる処理です。

この際、オリジナルのacc.cgiでは
PDXGW/1.0
というUserAgentに指定されていますが、access_log.cgiのログにはUserAgentがなぜか残らないためacc.cgiがH"のログを無視してしまうという症状です。

@UserAgent欄とRemoteHost欄に同じ"pdxcgw.pdx.ne.jp"という文字列を出す。
AUserAgentを頑張ってログに残す処理を考える
Bpdxcgw.pdx.ne.jpという固定のリモートホスト名から判断する
C210.168.199.42という固定のIPから判断する
以上のような処理の仕方がいろいろ考えられますが、アクセス解析に表示されて正常に動作すればどの方法でも構いません。
簡単に直すことが出来る物でお願いします。
01028803/03/28 20:58ID:???
>>99
今もって君が何をしたいのかわからんが…
H" のUserAgentの取得をしたいでよろしいか?
でもUserAgentが取得できないので、次善の策として、リモートホストがpdxcgw.pdx.ne.jpならUserAgentにPDXGW/1.0を代入するでよろしいか?

君があんまりあれなんで、ソースを落としてみますた。
ずばり正解を言うと君の勉強にならないから、ヒントだけ言う。
ソースの中にgethostbyaddrが使われているから、その前後を見渡して、リモートホストが入っているであろうと思う変数名を$ENV{'REMOTE_HOST'}と置き換えると幸せになれる。

それと、君に足りないのはCGIの知識じゃなくPerlの知識ね。
勉強が必要なのは、Perlだよ。間違えないでよ。
■ このスレッドは過去ログ倉庫に格納されています