トップページphp
1001コメント413KB

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん02/08/01 18:19ID:???

#================================
# スレッドの説明
#================================

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

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

(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化済み)
087987203/02/23 21:38ID:???
#最後に発言用フォームを改造。569行目付近の
569: <td nowrap bgcolor=$table_color_1 align=center>お名前</td>
のすぐ下、570行目付近から

570: <td bgcolor=$table_color_2 colspan=3>$name
571: <select name=status><option value="">(なし)</option>
572: EOD
573:
574: foreach (@status){ print "<option value=$_>$_</option>\n"; }
575: print "</select>";
576:
577: print<<"EOD";
578: </td></tr>
と記述。
#状態の言葉を長くしすぎると画面が激しく崩れます。
#まだまだ良い方法があるとは思いますが、とりあえず同じ処理をば。
088087203/02/23 21:43ID:???
>>879 訂正。

570: 「<td bgcolor=$table_color_2 colspan=3>$name」
のすぐ下(571行目くらい)から
571: <select name=status><option value="">(なし)</option>
::::::(略)
579: </td></tr>
と記述してくださいな。
088187203/02/23 22:36ID:???
>>877自身の手による改造のために簡単に説明を。
@status = ・・・で状態を配列に代入しているが、これを使って後で
foreach ・・・でプルダウンメニューを作る。
メニューで選ばれた「状態」はCGIに送信されてくる。
それを名前を受け取る処理と同じように行い、名前と状態を連結して同じ変数Bに格納する。
で、もとの名前を表示する変数Aの代わりに変数Bを用いて、その後の処理を行う。

メリット:改造箇所が少ない。ログの形式が変わらない。
デメリット:フォームが増える。入力内容はメニューの内容に限られる。
0882nobodyさん03/02/24 17:17ID:EnulMF3R
>>881
@status = ('@ROM', '@使用中','@離席中','@食事中','@すぐ戻ります');
これはichatにいれる時は↑らたへんに貼っとけばいいんですよね?
foreach ・・・でプルダウンメニューを作る。
とは、foreach (@status){ print "<option value=$_>$_</option>でいいんですか?
□それを名前を受け取る処理と同じように行い、名前と状態を連結して同じ変数Bに格納する。
comchatgと同様に同じようなやつといったら
$status = $text if $key eq 'status';
$name = $namet.$status;
そのやつをichatにいれるには#データ読みこみというところのどこにいれればいいんでしょうか?
□で、もとの名前を表示する変数Aの代わりに変数Bを用いて、その後の処理を行う。
これは、どういう意味なんでしょうか?
質問ばかりですいませんが、宜しくお願いします。
088387203/02/24 18:32ID:???
>>882
878のレス番間違えてました、スマソカッタ
>>878>>877へのレスです。。
088487203/02/24 18:47ID:???
>で、もとの名前を表示する変数Aの代わりに
ってのは、受け取った名前の変数($namet)の値と状態の値($status)をくっつけて、
名前の変数($name)にまとめて入れる、ってこと。
こうすると改造箇所が無駄に増えるのを防げるなと思った。それだけ。
連カキスマソ。鬱
0885nobodyさん03/02/24 19:59ID:80HVp5Lh
ん、とてつもなく難しいぃ
困ったなぁこんな難しいとはおもってなかったぁ・・。
第一どこにどういれるかとかまったくわからないぃ。
0886nobodyさん03/02/24 20:00ID:RRWzLh+f
そうは思わない!
http://hkwr.com/
088787203/02/24 21:18ID:???
>>885
行数表示するエディタ使ってないの?
0888nobodyさん03/02/25 07:04ID:???
行数表示できるエディタ見つけたよ

テキストエディタQX評価版021130
http://www2k.biglobe.ne.jp/~araken/beta.htm
そのまま使える
0889nobodyさん03/02/25 17:07ID:9GtyGnjs
変数とかってなんなんですか?
0890nobodyさん03/02/25 17:32ID:???
889の存在意義とかってなんですか?
0891nobodyさん03/02/25 21:49ID:???
>>889
わからなければ調べよう。
0892nobodyさん03/02/26 08:33ID:???
http://www.google.com/search?q=889%E3%81%AE%E5%AD%98%E5%9C%A8%E6%84%8F%E7%BE%A9&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0893nobodyさん03/02/28 18:50ID:???
>>892
http://web2000.kakiko.com/naruhodo/Obj.swf?InputStr=%81E%81E%81E%81E%81E%81B%81@%81@%81@%81@%81@%81@%81@%81@%81@%81@%81@%81@%83O%83O%83%8B%82%C8%82%E6w
0894nobodyさん03/03/01 22:34ID:???
http://www2s.biglobe.ne.jp/~cru/library/cgi/bbs.html
ここの投稿コード付き掲示板ですが、
桁数を増やすにはどうしたらいいでしょうか?
ヒントを頂けたら幸いです(;´Д`)
0895nobodyさん03/03/02 04:44ID:???
>>894
何の桁数よ。

質問者が手抜きをするのはいただけないな。
0896nobodyさん03/03/02 10:22ID:???
3桁の投稿コードを6桁位に増やしたいんです。
見た目的に荒らし防止になると思いまして・・・
0897nobodyさん03/03/02 16:29ID:???
スクリプトをちらっと見たけど、一応、
なんか意味があって3桁にしてるみたいだね。

下手にいじる必要はないんじゃない?
0898nobodyさん03/03/03 12:59ID:VIdRJxPn
すいませんお力貸してください
http://www.web-purpose.com/PMC/
のwebmail_i.cgi
を改造しています。本文に送り主のメールアドレスが表示されてるのを消したいのですが
どのようにすればよいのでしょうか?
少し改造済み(改造とはいわないな(^ ^;)のソースです
http://210.143.102.80/upload/source/d/0945.txt
http://210.143.102.80/upload/source/d/0946.txt
945がスクリプトで946がフォーム用のHTMLです
0899nobodyさん03/03/03 22:54ID:???
すんません、どうも行き詰まってます。
BBS Note 7.xにトリップ機能を付け加えようとしてるんすけど、いい塩梅にいかねっす。

テキストはこれなんすけど、
http://mage.free-city.net/bbsnote.txt

この中の 書き込み処理全般 のとこにトリップ処理の記述を追加したところ、
トリップ変換そのものは上手くいくようになったものの今度は名前の表示が
マトモに出んようになりますた。

よろしくご指南おながいします。
090089903/03/03 22:54ID:7VkorLNn
ちなみに追加した部分はこれっす。

#トリップ処理
{
$name =~s/◆/◇/g;

my ($key,$salt);
if($name=~/#(.+)/){
$key = $1;
$salt = substr($key."H.", 1, 2);
$salt =~ s/[^\.-z]/\./go;
$salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
$trip = substr(crypt($key, $salt),-11);
}

$in{'name'} =~ s/#.*//g;

if($trip){
$name=" "if($name);
$name=$trip;
}

$name =~ s/$trip/◆<\/b>$trip<b>/g;

}
090189903/03/03 22:56ID:???
訂正

誤  $trip = substr(crypt($key, $salt),-11);
正  $trip = substr(crypt($key, $salt),-10);
0902tantei03/03/03 23:53ID:???
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 直通  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  hentaimtt@k9.dion.ne.jp
   グローバル探偵事務局 

0903nobodyさん03/03/04 00:00ID:???
>>898
本文ってどこー?
0904nobodyさん03/03/04 01:44ID:???
>>900
$name =~ s/◆/◇/g;

my ($k,$s,$t,$n); # key salt trip name

$_ = $name;
if (/#(\S+)/){
$k = substr($name,index($name,'#')+1);
$n = substr($name,0,index($name,'#'));
$s = substr(substr($k,0,8).'H.', 1, 2);
$s =~ s/[^\.-z]/\./go;
$s =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
$t = substr(crypt($k, $s), -10);
if ($n ne ""){
$name = "$n </b>◆$t <b>";
}else{
$name = "</b>◆$t <b>";
}
}

スキン
# 名前に項目を付けて表示する。
$LOG_name = ($LOG_name ne "") ? "<b>$LOG_name<\/b>" : '';
# 名前に項目を付けて表示する。
$RES_name = ($RES_name ne "") ? "<b>$RES_name<\/b>" : '';
090589803/03/04 02:37ID:???
>>903
メールの本文のところです
print SMAIL "Content-Transfer-Encoding: 7bit\n";
print SMAIL "Content-Type: text/plain; charset=iso-2022-jp\n\n";
print SMAIL "";
for (0..$formco) {
print SMAIL "$VADATE[$_]\n";
}
#print SMAIL "\n";
#print SMAIL "==============\n";
#print SMAIL "Time : $TIME\n";
#print SMAIL "Browser : $agen\n";
#print SMAIL "Host : $host\n";
#print SMAIL "---------------\n";
この辺があやしいと思ってるんですが(^ ^;
今のままだと$VADATEにメアドが文章として含まれちゃうんですよ
よろしくお願いします
0906poor03/03/04 05:15ID:pSR3aMdf
2箇所機能的に動かなくて困っています。
誰かPerlに詳しい方はおられますでしょうか?
直されましたら5000円お支払います。
ご連絡おまちしております。
0907nobodyさん03/03/04 05:51ID:???
>>906
詳しいやつなどいくらでもいる。
内容もわからずにどうしろっていうんだ?
5000円で見合うかどうかもわからないのに。

そもそも、ここは改造スレ。
>>1をよく読め。
0908poor03/03/04 11:30ID:pSR3aMdf
では 正しく動くように改造してください。
メールアドレスを下さい。
添付でファイルを送ります
0909nobodyさん03/03/04 12:11ID:???
>908
失礼な香具師だな。
金出せば動くと思ってるボンボンか?


正しく動くってなんだよ!
エラー出してるとこ一戸ずつ削ってケや!
それで動いたら正しく動いてる。
0910nobodyさん03/03/04 12:15ID:???
>899

sub trip {
my $str = shift;
my $salt = substr($str, 1, 2);
$salt =~ tr/\x00-\x20\x7B-\xFF/./;
$salt =~ tr/\x3A-\x40\x5B-\x60/A-Ga-f/;
return substr(crypt($str, $salt), -10) ;
}

呼び出し方
$name =~ s/#(.*)$/trip($1)/eg;


これでトリップが入った$nameが出来上がるが、これじゃ駄目?
0911poor03/03/04 12:28ID:pSR3aMdf
でわスクリプトを見てください
0912nobodyさん03/03/04 12:34ID:???
しかもマルチか。
0913nobodyさん03/03/04 17:29ID:jIWPHT84
YYCHATで、
発言毎に日時の右側にIPを表示するようにしたいのですが、
どうすれば良いのでしょうか?
091489903/03/04 20:33ID:???
>>904
>>910
ご指南いただいた通りに直したら、ちゃんと名前とトリップ出せたっす。
どうもありがとうございますた。
0915nobodyさん03/03/05 16:20ID:???
>>897
そうなんですよね・・・
なのでどうしたらいいか分からなくて(;´Д`)

5,6桁のヤツを使っているサイトもありましたが
別の方法でコードを作成しているみたいでしたし、
0916nobodyさん03/03/06 01:26ID:???
>>897
だから変える必要はないし、桁数が多いのがいいのなら、そっちを使えばいい。
馬鹿?
0917nobodyさん03/03/06 13:39ID:???
>>873-874
すいませんこの改造の仕方教えてください。
http://cgi.2chan.net/up/src/f2522.txt
これなんですけど、改造拒んでるように見えるのは私だけですか?
091891703/03/06 13:45ID:???
すいません解決しました。
091987703/03/06 17:44ID:qrKweJNz
前書き込みさせていただいたものですが。
ichatはアイコンサイズ指定になってるんですが、このサイズ機能をとりたいのですが、
どのようにすればいいんでしょうか?教えてください。
ソース⇒http://csx.jp/~lgyec/ichat.data
092087203/03/06 20:18ID:???
>>919
いろんな大きさのアイコン使いたいんだと仮定。
226行目付近、
「@icon_size=(20,20);」
とある行をコメントアウト。

#あまり巨大な画像はやめれ
0921nobodyさん03/03/06 20:32ID:z1LbRXdZ
コメントアウトというのはそれをけせってことですよね?
0922nobodyさん03/03/06 20:33ID:z1LbRXdZ
その@icon_size=(20,20);をけしたらアイコンなどつかえなくなりましたよ。
0923nobodyさん03/03/06 21:29ID:???
>>919
965行目の
print "<td><img src=\"$icon_list[$y1[2]]\" width=$icon_size[0] height=$icon_size[1]></td>";

これのwidth属性とheight属性を消してみたら?

print "<td><img src=\"$icon_list[$y1[2]]\"></td>";
092487203/03/07 13:12ID:???
>>922
すまぬ、動作テスト忘れとった・・・鬱
0925nobodyさん03/03/07 18:01ID:s5GMjGcA
>>923のとうりにしたらアイコンが消えました。ありがとうございます。
もう一つ改造したいことがあります。
そのichatに”自分の発言を消去”というボタンがあるんですけど、KENTWEBにあるような
発言を消したらメッセージを自動で書かれる奴にしたいのですが、どうすればよいでしょうか?
例えばその自動メッセージに”クリアメッセージ・・・。”こんなかんじのやつをつけたいのです。
説明不足ですが宜しくお願いします。
0926nobodyさん03/03/07 18:20ID:???
>>925
説明不足どころか意味不明。
0927nobodyさん03/03/07 18:30ID:s5GMjGcA
>>926説明不足ですいませんでした。
KENTWEBにあるCOMCHATはclearとかけば文字がけせますよね?
その時に消したことを通知するメッセージを書きたいのです。comchatのように。
宜しくお願いします。
0928nobodyさん03/03/07 20:31ID:???
>>916
別のスクリプトは簡単に解析できるので。
>>894のが私が見つけた中で一番いいかなと思ったので、依頼してみたワケです。
後は自分でやってみます。
0929nobodyさん03/03/08 11:00ID:MqKsAecY
>>927をよろしくおねがいします。
0930nobodyさん03/03/08 14:17ID:???
「comchatのように」っつったって、こっちはcomchatがどんなのか知らん。
Perlに精通=CGIに精通、ってわけじゃないのよ。
0931nobodyさん03/03/08 17:15ID:Ee7k58Ji
すいませんでした、一応comchatのソースですみてください
comchatソース⇒http://csx.jp/~lgyec/comchat.data
0932nobodyさん03/03/08 21:21ID:b2yfloXL
お願いします。お知恵をお貸し下さい。

目的のスクリプトは、
2ch風の画像張付(返信にも画像投稿可能)掲示板なのですが、
記事の部分をSQLを使ってデータベースに記録しています。

これをSQLが使えないところで、使いたいので、
なんとか、テキストなりのファイルに記録するようにしたいのですが…

(ちなみに、XREAで設置してみましたが、
 すこし、なおして動くようになりましたが、最初の1ページしか
 表示されず、生成されたHTMLにアクセスできないという、
 よくわからない状態になってしまいました。)

よろしくお願いします。

http://moe.homelinux.net/soft/rev708.zip
093393203/03/09 01:56ID:jq/gPxKU
どうもすみませんでした。
自分でいろいろやってみたんですが、
あれから、全然進展しなくて。

それで、これの参考元をさがしたら…
ちょうど、自分の思ってたものがありました!
どうも、お騒がせしました。

ちなみに、「鏡のくに」ってとこのスクリプトです。(php)
0934nobodyさん03/03/09 12:22ID:57f77bEe
>>931よろしくおねがいします
0935nobodyさん03/03/09 12:53ID:hIa+sLU+
すいません、相談させてください。
今、
 「日記を増やせるタイプ」
 「左フレームに作者の日記タイトル、右に日記の内容」
 「各日記ごとに感想をゲストが投稿できる」
 「(できれば、一番最近に更新されたものがわかるようなものがいいです)」
上のような感じのものを探しているんですけど、見つかりません。(T^T)

http://www.t-okada.com/cgi/cgi_scripts/10_20_log.html
 (サンプルは→ http://www.t-okada.com/sh1_diarys/

今の所、↑が一番イメージに近いので、これにレスがつけられたら最高なんですが、
そういう風にはできないでしょうか?

今、20人位の日記のホームページに私も参加しているんですけど、みんなで1つの
日記を使っているので、ゴチャゴチャしていて、とっても使いづらくて…。(T^T)
(1個の普通の掲示板を日記代わりにみんなで使っています ^^;)

あと上のは、最後に更新された日付が最初の左フレームに表示されてとても見やすいと思うので、これにレスをつけられたら最高だなぁ〜って思うんですけど、どなたかお力をお貸しくださいませんでしょうか。

依頼で、すいません。
どうか、よろしくお願い致します。 m(__)m
0936nobodyさん03/03/09 13:18ID:???
>>935
ttp://www.t-okada.com/cgi-bin/sn_diary/sn_diary.cgi
じゃダメな理由はなんなんだYO(;´Д`)
093793403/03/09 13:27ID:hIa+sLU+
>>936
早速のレス、ありがとうございます。^^

20人位で使おうと思っていて、できれば、
日記が個人別に分かれて欲しいと思っているからです。

個別に分かれていてレスがつけらて、各人の最終更新時間が一覧でわかれば
最高なんです♪

だから、934で書いたタイプにレスをつけられたらいいなぁ〜って思っています♪

こういうタイプは見た事がないので、きっと無理なプログラムばんでしょうか…(T^T)
093893403/03/09 13:29ID:hIa+sLU+
すいません、訂正です

× プログラムばんでしょうか…
〇 プログラムなんでしょうか…

m(__)m
0939nobodyさん03/03/09 13:40ID:???
スレッド型掲示板で代用しる
0940nobodyさん03/03/09 13:45ID:57f77bEe
>>931よろしくおねがいいたします。
0941nobodyさん03/03/09 15:59ID:???
( ゚Д゚)ポカーン
094293403/03/09 18:22ID:pZsxM+bP
>>939
レスありがとうございます。

スレッド掲示板ですか…。
それだと、あまり日記っぽくなくなってしまう気がするので…^^;
(わがままいってすいません)

色々機能を満たすのを探すのは、やっぱり難しいですよね… (T^T)
094394003/03/09 18:29ID:KwWbXhd4
よろしくおねがいします!!
0944場違いでごめんね。よかったら教えってね。03/03/09 23:44ID:2uGjMOlZ
フォームの送信ボタンを作り、それを押すと別のウインドウを開くようにしたいのですが、うまくいきません。

☆送信ボタンがあるページ →場所:C:\HOMEPAGE\template\hyouzyun\h_1
☆開きたいページ(tizu)  →場所:C:\HOMEPAGE\template\hyouzyun\h_1

二つのページは同じフォルダに保存してあります。
送信ボタンは挿入→入力部品の送信ボタンを選択して作りました。
それからが問題なのですが、
その作成した送信ボタンを右クリック→イベントの設定をし、
★イベント = ON CLICK
★スクリプト =var winwindow.open("tizu.html","tizu","width=100,height=50")

と、入力し、OKを押して、送信ボタンに上のスクリプトを割り当てたのですが
"tizu"のウインドウが開きません・・。やり方がまちがってるでしょうか?
宜しくご指導ください!お願いいたします。
0945nobodyさん03/03/10 00:05ID:???
>>944
JavaScriptのことなら、Web製作板へどうぞ。
0946nobodyさん03/03/10 14:41ID:ZSUpGpYi
日記スクリプトの改造なのですが

↓このスクリプトだと
http://www.geocities.co.jp/Bookend-Ohgai/4692/tboard007.txt

↓このような表示になります
http://www.geocities.co.jp/Bookend-Ohgai/4692/moto.html

これを↓のような表示にするにはどうすればよいですか?
http://www.geocities.co.jp/Bookend-Ohgai/4692/kaihen.html

簡単に説明すると、現在 左=画像 右=本文 となってるレイアウトを
上=画像 下=本分 にしたいわけです。

よろしくご指導ください
0947nobodyさん03/03/10 16:28ID:???
>>946
print "</TR><TR>";

どこに入れるかくらいは自分で探すべし(゚Д゚ )
0948nobodyさん03/03/10 16:53ID:+NULa64Y
>>947
テーブルで画像と本文分かれてるからそれだと無理じゃない?
それ以上のことは俺にはわかんないけど
0949nobodyさん03/03/10 16:53ID:???
# ロック処理 #
sub lock {
local($retry,$mtime);
# 1分以上古いロックは削除する
if (-e $lockfile) {
($mtime) = (stat($lockfile))[9];
if ($mtime < time - 60) { &unlock; }
}
# symlink関数式ロック
if ($lockkey == 1) {
$retry = 5;
while (!symlink(".", $lockfile)) {
if (--$retry <= 0) { &error('LOCK is BUSY'); }
sleep(1);
}
# mkdir関数式ロック
} elsif ($lockkey == 2) {
$retry = 5;
while (!mkdir($lockfile, 0755)) {
if (--$retry <= 0) { &error('LOCK is BUSY'); }
sleep(1);
}
}
$lockflag=1;
}
# ロック解除 #
sub unlock {
if ($lockkey == 1) { unlink($lockfile); }
elsif ($lockkey == 2) { rmdir($lockfile); }
$lockflag=0;
}
KENTさんのファイルロックのルーチンなのですが、これにflock関数のファイルロックをつけるにはどうすればいいのですか?
0950nobodyさん03/03/10 17:24ID:???
>>948
HTMLを勉強汁!
095193103/03/10 20:32ID:wfQN1r0d
>>931ですが、その改造の仕方教えてください。
0952nobodyさん03/03/10 20:49ID:???
                    /:|.             /:|
                   / .:::|            /  ::|
                  |  ...:::|_          /   :::|
                 i       ̄ ̄⌒゙゙^――/   ::::::|
                /                  :::::::::\
                /|・\           ./・>    :::::::::\
               /ミ\ \         / /彡 i し./:::::::\
               /  ミ\.\ヽ|||liiiii||/ /./彡   ノ (::::::::::::::::::\
              /    ミ\\|||iii||l//彡     '~ヽ  :::::::::::::::\
             /        ̄    ̄,,、          /:::::::::::::::::.\
ファビョ━━━━━/  \ /  ,,____ _,/ ̄ \ \    /::::::::::::::::::::::::::::\━━━━━ソ!!!!!
           \    |.. | /└└└└\../\    /:::::::::::::::::::::::::::::::::/
             \    ∨.|lllllllllllllllllllllllllllllllllllllllll|  /::::::::::::::::::::::::::::::::::/
              \   |.|llllllllllllllll;/⌒/⌒  |    ::::::::::::::::::::::::/
                \ |.|llllllllll;   ./ .   . |    :::::::::::::::::::/
                /  |.|llllll|′  /    . |    | ::::::::/|
                /  |.|llll|    |     .∧〔   / ::::::::::::::::\
              / }.∧lll    |    ../ /  /   :::::::::::::::::\
             /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
           /    ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::         ::::::::::\
          /     ヽー─¬ー〜ー――― :::::::::::::
095393103/03/11 17:24ID:faQewhAO
>>931よろしくおねがいします。
comchatのソース⇒http://csx.jp/~lgyec/ichat.data
0954nobodyさん03/03/11 17:59ID:???
>>953
いくらおねがいしても誰もやる気ないようだ
自分でできるところまでやってみてそれを元にアドバイス求めれ
0955nobodyさん03/03/11 18:32ID:???
>>949
既に解決しているだろうと思うけれど、念のためにカキコすると
flock関数はopen関数で指定されたファイルハンドルで使用するため
指定のルーチンをそのまま置き換えるには無理があるYO
実際はもっと簡単にできる
flock関数を使用している他のソースを調べましょう
095687203/03/11 18:47ID:k4GIfrjV
>>949
$lockkey = '3';

#&lock内に追加
if ($lockkey == 3) {

for ($i; $i<=5; $i++) {
if (flock (FH, 2)) {
last;
} elsif ($i == 5){ &error('LOCK is BUSY'); }
sleep(1);
}

}

#同じく
sub unlock {
if ($lockkey == 1) { unlink($lockfile); }
elsif ($lockkey == 2) { rmdir($lockfile); }
elsif ($lockkey == 3) { flock(FH, 8);}
$lockflag=0;
}
095787203/03/11 19:18ID:k4GIfrjV
>>955
すいませんでした。。
0958nobodyさん03/03/11 20:23ID:???
>>957
ん? なんで謝るのYO
ファイルハンドルとサブルーチンを呼び出す位置を間違っていなければ
sleepする必要はない気がするけれど・・・構わないんじゃないの
095994903/03/11 20:41ID:???
皆さんレスありがとうございます。
>>956さん
試してみたんですが、LOCK is BUSYばかり出て書き込めませんでした。

>>955さん

とりあえず以下のように記述してみました。
open(IN,"$logfile") || &error("ログファイルが開けません");
flock( IN, 1 ); #ファイルを読み出しロック
@lines = <IN>;
flock( IN, 8 ); #ロック解除
close(IN);

open(OUT,">$logfile") || &error("ログファイルに書きこめません");
flock( OUT, 2 ); #ファイルを書き込みロック
print OUT @lines;
flock( OUT, 8 ); #ロック解除
close(OUT);

これで書き込めたんですが、あっているでしょうか? ファイルロックができているかチェックする方法とかありませんか?




0960nobodyさん03/03/11 20:54ID:???
flock( OUT, 2 ) || &error("失敗");

flock( OUT, 8 ); #ロック解除
はいらない
0961nobodyさん03/03/11 21:06ID:???
flock( OUT, 2 ) || &error("失敗");
??
0962nobodyさん03/03/11 21:57ID:???
>>959
あってるYO
ファイルロックのテストは、適当にfork関数で多数の子プロセス上で排他処理させるか
指定時刻にファイルの読み書きのループを一斉に開始するスクリプトなどで
気の済むまでやるしか無いでしょう
もちろん、後からでも正常に処理できたかは分るように、読み書きする内容はキチンとプログラムしましょう
0963nobodyさん03/03/11 21:58ID:???
あ・・・テストは自分のPC上でローカルでどうぞ
0964nobodyさん03/03/11 21:59ID:???
>>959
危なっかしいけど、まあいいだろ
ロック解除は不要
0965nobodyさん03/03/11 22:46ID:???
>>964
あなたは、随分と、偉そう、ですね?
096694903/03/12 18:36ID:???
皆様ご親切にありがとうございました。
>>964さん
この記述は危ないんですかね?
0967nobodyさん03/03/12 22:27ID:???
>>966
この部分だけじゃ$logfileがどの程度重要なものか
わからないけど、十分な安全性があるとは言えないな
0968nobodyさん03/03/13 01:28ID:???
>>967
$logfileが重要かどうかではなくて、その内容によるYO
>>966
ファイルロックトも兼ねてテストすれば、問題点はすぐに気が付くハズ・・・
0969nobodyさん03/03/13 01:29ID:???
>>968
なんだ・・・ファイルロックトって(w
ファイルロックだYO
0970nobodyさん03/03/13 01:54ID:???
open(OUT,">$logfile") ←この時点でファイルはクリアされる
              ←ここで別プロセスがファイルを操作する危険も
flock( OUT, 2 );
print OUT @lines;   ←この前までにプロセスが死んだらファイルは破損
flock( OUT, 8 );
              ←ここで別プロセスがファイルを操作する危険も
close(IN);        ←実際の書き込みが行われるのはここ(オートフラッシュなしの場合)
0971nobodyさん03/03/13 10:07ID:???
>>970
なるほど、open(FH, ">filename") でファイルを開いただけでは
ファイルは変更されていない状態だと思っていましたが・・・確かに危険ですね
">>filename"などでオープンして、turncateで0指定する方法をとるべきか・・・
良い事を教えてもらいました。ありがとうございます
失礼しました
0972山崎渉03/03/13 17:00ID:???
(^^)
097393103/03/15 11:29ID:???
>>954さんが言われたとうり自分でできるところまでやってみました。
改造した部分だけのソース⇒http://csx.jp/~lgyec/ichats.data
ichatのソース⇒http://csx.jp/~lgyec/ichat.data
こういう風にやっても、自分の発言を削除をクリックしても”クリアメッセージ”と自動的に発動しません。
援助お願い致します。
0974ひよこ名無しさん03/03/15 12:43ID:???

(,,゚Д゚)http://www.geocities.co.jp/HeartLand-Yurinoki/3749/dustbox.html
0975名無し03/03/15 16:35ID:55qzOCkc
KENTさんの掲示板
http://www.kent-web.com/bbs/fantasy.html?
に、”タイトル”を入力する項目を追加したいのですが
いざやってみたら、上手くいきませんでした。
この場合、どこをどういじればいいのでしょうか?
0976ウマー(゚Д゚)@Apw5yill☆2ch03/03/15 16:39ID:abzlUrYY
質問です。CGIで例えば、****.cgi?1111
みたいな、?1111を付け加えて表示させる物があります。そこで、
URL転送を使って、***.com/1111を入力すると、****.cgi?1111が表示
されるように、転送先を****.cgi?にしましたが無理でした。
なにかいい方法はありませんか?
097700703/03/15 16:48ID:???
タイトル入力するところあるぞぃ
# タイトル名
$title = "Fantasy Board";
ってやつが
0978nobodyさん03/03/15 16:53ID:???
>>973
while (<IO>){
 if ($_ =~ /<>$ip/){
  @y2=split(/<>/,$_);
  if ($y2[6] ne $ip){
   push(@log,$_);
  }else{
   push(@log,'All Clear (^-^)v');
  }
 }else{
  push(@log,$_);
 }
}
レス数が950を超えています。1000を超えると書き込みができなくなります。