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

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

■ このスレッドは過去ログ倉庫に格納されています
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化済み)
0790nobodyさん03/02/09 14:34ID:???
>>789
ところどころ $$FORM になってるところがあるぞ。大丈夫か?
プログラムなんだから、1文字でも違ったら動かないよ。

あと、unlessは制御構文であって、ユーザー関数ではないんだが…。
Perlの基礎をこのスレで質問されても困る。自分で調べて学習すべし。
0791本7 ◆HON7/awDa. 03/02/09 14:42ID:???
逝ってきます・・・ショボーン
0792nobodyさん03/02/09 17:15ID:FJkJ4b09
こんにちは、ちょっとアドバイス頂きたく参上しました。
現在Kent-Webさんの「MT−Board」という2ちゃんねる風の掲示板を
使っています。 
http://www.trimmer-navi.com/cgi/mtbbs/mtbbs.cgi
http://www.trimmer-navi.com/mtbbs.txt (テキスト)

上記のプログラムなんですが、現段階では中段にある{新着スレッド}の
テーブルに現れるスレッド数と、それのテーブルの下にスレッドごとに
現れるテーブルの数が同じにしか設定できません。

2ちゃんねるの様に、「新着スレッドが表示されている数」と「その下に
続くテーブルの数」を変更できないものでしょうか・・

もしアドバイスいただけるようでしたら、よろしくお願いします。

0793れもん03/02/09 17:19ID:???
お前等いいか!!
ラーメソだぞ!!ラーメソ!!!!!
俺は30分でどんぶり3杯も食えるんだぞ!!!
博多の冬は寒かったんだぜ。
0794れもん03/02/09 17:19ID:???
脳内妄想が俺の技だぜ
0795nobodyさん03/02/09 17:35ID:???
>>792
214行目、メニュー部表示の「#新着スレッド」内の以下の部分

if ($i >= $menu) { last; }

この$menuを、スレ一覧で出したい数にすればいいみたい。
テーブルの数は従来どおり、冒頭の$menuで設定。

例:if ($i >= 100) { last; }

テストしてないんでうまく動くか分からんけど。
0796nobodyさん03/02/09 17:44ID:FJkJ4b09
>>795
返信ありがとうございます。
nobodyさんの例の様に、100でやってみました。が
新着スレッドもそれに続くテーブル数もやはり同じ100に
なってしまいました。
079779503/02/09 17:48ID:???
>>796
あっ、ごめん。
そこは読み込む行数を決めてるとこだから、そりゃ両方変わっちゃうわな。
ちょっと今考えるから。ただこのあと用事があるからあとになるかも……
0798nobodyさん03/02/09 17:49ID:FJkJ4b09
はい!よろしくお願いします。>nobodyさん
0799nobodyさん03/02/09 17:55ID:???
>>796
わかった。たぶんこれでいいと思う。
すぐ下に「#スレッドリンク」ってのがあって、 foreach (@num) { っていうのが
2つあるよね。
この2番目のほうをこう書き換える。

for ($i = 0; $i < 10; $i++) {

10の部分が、テーブル表示数。スレ表示数は$menuで設定(さっきと逆)。
これでいいはずなんだけど……
0800nobodyさん03/02/09 18:00ID:FJkJ4b09
foreach (@num) {    →    for ($i = 0; $i < 10; $i++) {

に書き換えるのですか?
0801nobodyさん03/02/09 18:03ID:FJkJ4b09
http://www.trimmer-navi.com/cgi/mtbbs/mtbbs3.cgi

書き換えたら上記のプログラムの様になりました。
下に続くテーブルの2段目からの文章が消えてしまいます。
0802nobodyさん03/02/09 18:12ID:???
>>801
またごめん……
追加した次の行にこれを追加。

$_ = $num[$i];

なんかミスが多くてすまんです。
0803nobodyさん03/02/09 18:13ID:FJkJ4b09
ちなみに $menu = 5 です。
0804nobodyさん03/02/09 18:26ID:FJkJ4b09
なんどもありがとうございます。
かなり理想に近いのですが・・今度は新着スレッドの中に謎の「()()()」
なるものが表示されてしまいます。
http://www.trimmer-navi.com/cgi/mtbbs/mtbbs3.cgi
0805nobodyさん03/02/09 18:40ID:KhuXu5ko
nobodyさんへ

できました!本当に感謝します。ありがとうございました。
多分OKだと思います。
0806nobodyさん03/02/09 18:49ID:KhuXu5ko
すいません。805です。
少し問題が生じたのでよろしくお願いします。
スレッド一覧の部分で、下のテーブルに表示されている数の分はリンク
できているのですが、それ以上のリンクになると飛んでくれません。
どうでしょう?
0807nobodyさん03/02/09 18:50ID:???
>>804
よく見たら、スレ一覧でテーブルの出てないスレは、クリックしても無反応に
なっちゃってる。(アンカーが同じページ内のテーブルになってるせい)

こりゃCGIのもっと奥のほうから直さないとダメかもしれんね。
お役に立てずにすまんこ。
0808nobodyさん03/02/09 19:23ID:???
>>806
これでなんとかなるんじゃないの。

# スレッドリンク
print "<table border=3 cellpadding=10 bordercolor=#FFCCCC bgcolor=#FFEEEE width=\"90%\"><tr><td>\n";
print "<b>- 新着スレッド  ※他のスレッドは「スレッド一覧」の中です</b><P>\n";
$thread_count=0;
foreach (@num) {
($num,$sub,$res) = split(/<>/);
$thread_count++;
if ( $thread_count <= 10 ){
print "<a href=\"$script?mode=view&no=$num\">$thread_count:</a> <a href=\"\#$num\">$sub ($res)</a>  \n";
} else {
print "<a href=\"$script?mode=view&no=$num\">$thread_count: $sub ($res)</a>  \n";
}
}
print "<div align='right'>[<a href=\"$script?mode=alltree\">スレッド一覧</a>]</div>\n";
print "</td></tr></table><br>\n";


補足
if ( $thread_count <= 10 ){
にでてくる数字の 10 は 799 の書いた
for ($i = 0; $i < 10; $i++) {
の 10 ね。別の数字に変えてるなら合わせておいて
変数使って管理したほうがいいと思うが、そのへんは自分でなんとかしる
あと書籍添付スクリプトなんで、これで悩み事解決なら txt は削除したほうがよいと思われ
0809nobodyさん03/02/09 19:27ID:???
あー、より2ちゃんっぽくスレタイトルの前に数字つけたけど、いやならこれで

if ( $thread_count <= 10 ){
print "<a href=\"\#$num\">$sub ($res)</a>  \n";
} else {
print "<a href=\"$script?mode=view&no=$num\">$sub ($res)</a>  \n";
}
0810nobodyさん03/02/09 20:01ID:???
俺もやってみたけど先を越されてしまったのでフォローだけ。
>>808-809 に加えて #スレッドリンク の少し上、@numを取得するところの
if ($i >= $menu) を if ($i >= 10) に、
スレッドを表示しているところの foreach (@num) { を
for (my $i = 0; $i < $menu; $i++) {
$_ = $num[$i];
とすればいけると思う。
0811本7 ◆HON7/awDa. 03/02/09 20:16ID:???
おかげさまでなんとかトリップ機能が動きました。
でもまだ問題があってindexを開いた際にクッキー情報の名前もトリップ変換してしまい名前欄を
はみだしてしまいます。
396行の名無しさん処理のunless()のあとelse{}で398行〜425行のトリップ処理を加えました。
これを何行目あたりに入れることでこのバグを回避できますか?
自分でも悩んでるんですどうも全体の流れがつかめないもので・・


こちらでソースは更新しました。
http://hon7.hp.infoseek.co.jp/cgi-bin/test/bbs3.txt

よろしくお願いします

0812nobodyさん03/02/09 20:26ID:???
>>811
マルチポストすんなぼけ!
0813nobodyさん03/02/09 20:50ID:???
>>811
クッキー発行の処理してからトリップ変換すればいいんじゃないの?




試してないけど
0814本7 ◆HON7/awDa. 03/02/09 20:52ID:???
>>813
具体的に行番号とか構文で言っていただけるとうれしいです。
流れがわからないんで
0815nobodyさん03/02/09 21:25ID:???
プログラムに慣れてる人でも、他人の書いたソースの流れをつかむのは一苦労なんだよ。
0816nobodyさん03/02/09 21:44ID:???
>>814
見出しだってちゃんとでてるのに。世話のかかる子ね。

これでなんとかならんか。試してないけど
クッキー発行の処理してからトリップ変換をする。


#==================================================
# 情報の修正(名前)
#==================================================
{
foreach $key ('FROM', 'MESSAGE', 'mail') {
$FORM{$key} =~ s/</&lt;/g;
$FORM{$key} =~ s/>/&gt;/g;
$FORM{$key} =~ s/\"/&quot;/g;
$FORM{$key} =~ s/\r\n|\r|\n/<br>/g;
}
}

(中略)

#==================================================
# クッキー発行 (440行目付近)
#==================================================
{
(中略)
}

#==================================================
# トリップ変換 (クッキーの処理終わった後に挿入)
#==================================================
0817nobodyさん03/02/09 21:44ID:???
>>816の続き
#==================================================
# トリップ変換 (クッキーの処理終わった後に挿入)
#==================================================
{
my $trip = $name;
$FORM{'FROM'} =~ s/◆/◇/g;
if ($FORM{'FROM'} =~ /#(.+)/){
my $key = $1;
my $salt = substr($key."H.", 1, 2);
$salt =~ s/[^\.-z]/\./g;
$salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
$trip = ' ◆</b>' . substr(crypt($key, $salt), -8) . '<b>';
}

# トリップを名前に追加
$FORM{'FROM'} =~ s/#.+/$trip/ if ($trip);
}

#==================================================
# パス情報(名前)
#==================================================
0818本7 ◆HON7/awDa. 03/02/09 22:09ID:???
すんません。
恩にきります。何かこのスレに役立てるよう俺もがんがって覚えます。
0819本7 ◆HON7/awDa. 03/02/09 23:39ID:???
まだindexで名前欄にトリップが」めりこんで残ります。
なぜでしょうか?

更新しました
http://hon7.hp.infoseek.co.jp/cgi-bin/test/bbs3.txt
082081603/02/10 13:00ID:???
> まだindexで名前欄にトリップがめりこんで残ります。

フォームの名前欄に変換後のトリップが残ってるってこと?
「めりこんで残ります。」って表現の意味がわからないです。

実際に動いてるとこ見せてくれます?
それか元のスクリプトってどこで配布してるやつ教えてください。
どうなってるのか自分の目で見てみたい。
0821nobodyさん03/02/11 08:01ID:???
すみませーん
取り込み中みたいですけれどスクリプトをいじくって貰いたく来ました

えーとこれです
http://mint363.ddo.jp/slx/ulx.cgi

このあぷろだのUPリストのコメント欄をブラウザの表示サイズに関係無く
スタイルシートみたいな物で固定する(サイズ固定)にはどうしたらいいのでしょうか

upロダのスクリプトはこれです
http://mint363.ddo.jp/so.txt
ついでにこれがうぷろだに必要な物+うぷろだ本体スクリプトです
http://mint363.ddo.jp/isiki.zip

ちなみにスタイルシートで文字サイズを固定しようとして1022行目にある
print "<td><b><MOMO><font size=2>$comment</font></td>\n" if($commente);
の<font size=2>を削ったら
スクリプトの155行目で(<BODY><TD>)指定してあるサイズになりました

それで1022行目のスクリプトから<td>を抜いて、他の文字列でサイズを指定しようとしたのですが
<td>を抜いた事によってうぷろだの表示がずれてしまいます
スタイルシートの方法じゃ無理なのでしょうか

話が脱線してしまいましたが
どうかもし暇な方が居られたら、よろしくお願いします
0822nobodyさん03/02/11 08:22ID:R89Bia6B
>821
スクリプトじゃなくてhtmlの段階だと思うんだけど、
文字サイズじゃなくてテーブルの幅を固定したいってことで良いのかな?
print "<th>Comment  [[[この↓部分です]]</th>\n" if($commente);
ってところの<th>を<th width=\"300\">とかにしたら良いんじゃない。
300の部分は勝手に変えるよろし。
0823nobodyさん03/02/11 09:50ID:???
>>822
説明の仕方が悪くてすみせまん、テーブルの幅ではなく 文字サイズです
具体的に言うと
[[[この下の部分です]]]の下にある場所の
CNN スペースシャトル と表示されている場所の文字の大きさ(サイズ)を固定したいのです

えーとわかりやすくhtmlであぷしてみました
http://mint363.ddo.jp/test.html
これだとブラウザの表示サイズが「大きい」だとずれてしまうので
表示サイズ中で見て下さい
何がしたいのかというと
観覧者のブラウザに関係無く
どのブラウザで見ても上にupしたhtmlのように見せたいのです

長くなってすみせまんでした、助言頂けると幸いです




0824nobodyさん03/02/11 12:45ID:???
>>823
print "<td><b><MOMO><font size=2>$comment</font></td>\n" if($commente);

print "<td class=\"comment\">$comment</td>\n" if($commente);

こうでもしといて147行目からの CSS の設定に
td.comment { font-size:13px ; font-weight:bold ;}
とか適当に追加

これでご要望どおりになると思う。ネスケだと変るけどね。これはブラウザの仕様。

どのブラウザで見ても上にupしたhtmlのように見せたい、そのために文字の大きさを
固定したいという考え方には言いたいことあるけど、そういうスレじゃないのでやめとく。
082582103/02/11 15:06ID:???
>>824
できました!
どうもありがとうございます!!
自分ではcgi作成(1から)の経験が無いので本当に助かりました

>どのブラウザで見ても上にupしたhtmlのように見せたい、そのために文字の大きさを
>固定したいという考え方には言いたいことあるけど、そういうスレじゃないのでやめとく。

やっぱりそうですよね
html勉強時代何処かで固定は良くないとかありました
けれどやっぱり自分のこだわった大きさで見てみたいなーと思ったり
何はともあれ教えてくれてありがとうございました
0826nobodyさん03/02/11 18:05ID:???
なんかさ、最近勉強する気がない覚える気が無いお願い厨が多い気がするんだが・・・。
0827nobodyさん03/02/11 18:11ID:???
ていうかWebProgじゃないよな…
0828nobodyさん03/02/11 19:57ID:DLCyWGmC
&get_date;
if(!$name){$name = "名無し";}
if(!$subject){$subject = "無題";}
if(!$pass){&error("削除パスが記入されていません");}
if(!$comment){&error("コメントが記入されていません");}

このようなエラーサブルーチンに投稿バイト制限を付けるにはどうやったらいいんでしょうか?
082982803/02/11 20:02ID:DLCyWGmC
厳密には1KB以上の投稿を受け付けないようにしたいのですが。
0830本7 ◆HON7/awDa. 03/02/11 20:05ID:???
たびたびすんません。
cgiの生ログの閲覧禁止とパーミッションに関してはどこで質問したらいいですか?
0831nobodyさん03/02/11 20:11ID:???
>>830
DocumentRoot以下には置かないようにするとか、suEXECが有効になっているのならば所有者以外の権限を全て奪うとか。
0832本7 ◆HON7/awDa. 03/02/11 20:14ID:???
infoseekなんでかどうかわからないんですがパーミッションをffftpでオーナーだけ実行できてグループとその他は
呼び出しだけにすると403なんですよ
0833nobodyさん03/02/11 20:16ID:???
>>828
if (length($comment) > 1024) { &error("コメントが長すぎます"); }
0834nobodyさん03/02/11 20:20ID:???
>>832
セキュリティを気にするならinfoseek(isweb)はやめましょう。
0835nobodyさん03/02/11 20:23ID:???
>>832
パーミッションは実際に設定した数字で書くこと。
その文章だと744になるが。
つーか、質問の意味が全然わからん。
083682803/02/11 20:24ID:???
>>833
ありがとう、がんがります!
083782803/02/11 20:36ID:???
>>833
ちゃんと走りました、感謝の極み。
0838本7 ◆HON7/awDa. 03/02/11 20:57ID:???
>>835
すみません。
700、744、705、755、を試しましたがCGIから書きこみができません。
サーバ規定的な問題みたいなんでレンタル板で手っ取り早く借りれる
無料CGI鯖探してきます。それでまだだめならまた寄せてもらいますわ。
どうもありがとうございました。ペコリ
0839nobodyさん03/02/11 21:19ID:???
>>838
阿呆だなあ。
それログファイルのパーミッションか?
あと、infoseekはCGIがnobodyで動くの知ってる?
基本を理解してなきゃ、鯖変えても同じだよ。
0840nobodyさん03/02/11 21:41ID:???
http://www.maido3.com/はアダルトでやるのはよくないって聞いたけどなんでですか?
0841nobodyさん03/02/11 23:21ID:???
>>840
スレ違いどころか板違い。失せろ!
レン鯖板いけ!
0842初心者03/02/12 14:44ID:pNFQ2drR
@改造したいスクリプト
ttp:/www.abi-station.com/の会社型掲示板
Aどう改造して欲しいか
toripodに対応させて欲しい。
色々なサイトで勉強しつつやってはいるのですが、何度やってもエラーが出てしまいます。
過去ログを使わない場合は消せば良いらしいのですが、よろしくお願いします。
0843nobodyさん03/02/12 19:47ID:???
php(Aki-web ttp://aki.adam.ne.jp/)の「info board(ttp://aki.adam.ne.jp/php/samples/infoboard/infoboard.php)」というスクリプトを改造してるのですが、
別ウィンドウで取得した画像URLデータを表示させたいのですが、JavaScripを使うと
クロスサイトスクリプリングの問題で引っ掛かってしまいます。

取得したデータをジャバスクリプトに読み込むのには問題があるのですが、
データを取得する際に、
初めの文字7文字でhtmlかどうか判別(絶対URLでないと受け付けない)、終りの4文字で画像データかどうか判別、違った場合は受け付けないでエラーを返す。

表示する際にhtmlspecialcharsで特殊文字をHTMLエンティティ化、その後str_replace(文字列変換)で切り取り。
としているのですが、まだ問題があるでしょうか。

084484303/02/12 19:49ID:???
ソースの一部は
======================ジャバスクリプト=====================
ヘッダー部分に
<script language="JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
//-->
</script>
HTML表示部分
<form name=form1><input type=button name=hyousi2 value=見本を見る onClick=MM_openBrWindow(\"$mihon\",'hyousi','width=260,height=350')></form>
==========================================================
084584303/02/12 19:50ID:???
===================================php====================
表示の時に
$mihon = htmlspecialchars($record_data[9], ENT_QUOTES);
$mihon = str_replace("&", "", $mihon);
$mihon = str_replace(" ", "", $mihon);
$mihon = str_replace("<", "", $mihon);
$mihon = str_replace(">", "", $mihon);
$mihon = str_replace(""", "", $mihon);
$mihon = str_replace("?", "", $mihon);
$mihon =str_replace(",", "", $url);
取得の時に(エラー表示時)
if($mihon!=""){if (substr($mihon, 0, 7) == "http://" || substr($mihon, 0, 8) == "https://") {
} else {
$string .="見本URLが間違っています<br>";
}
if (substr($mihon, -4) == ".jpg" || substr($mihon, -4) == "jpeg" || substr($mihon, -4) == ".png"|| substr($mihon, -4) == ".gif") {
} else {
$string .="見本URLが間違っています<br>";
}}
==========================================================
target=_blankにするしかないでしょうか?
新しくサイズ指定でウィンドウを開く方法他にありますでしょうか?
良い案がありましたらご意見お願い致します。
0846nobody03/02/12 21:29ID:???
新語誕生ッ
0847nobodyさん03/02/13 14:12ID:???
http://mypage.naver.co.jp/momoco/readme_momoco4b.html
の掲示板にHP宣伝できるように投稿フォームにURLを登録できるように
改造してログにURLを書きこむのには成功したんですが
http://members.tripod.co.jp/bbscgi/log.txt
掲示板を開きトピック一覧は表示されるんですがトピックの内容が表示されないんです。
ログに書きこまれてるURLを消すと正常に表示されます。
何かいいアドバイスがありましたらお願いします。
スクリプト http://members.tripod.co.jp/bbscgi/momoco.txt
       http://members.tripod.co.jp/bbscgi/topic.html
0848nobodyさん03/02/13 15:12ID:???
☆★☆★第3回2ちゃんねる全板合同迷惑メール業者訪問祭り!★☆★☆

 シャットアウトしても送って来る未承諾メールにブチキレてるあなた!
 何度も何度もしつこく送って来る非常識なメールにイライラしませんか!?
 
 私達は今夜、そんな出会いサイトに「訪問」(※注)する祭りを盛大に開催します!
 2ちゃんねる全板合同です!是非とも皆様お誘い合わせの上、ご来場ください!
 老若男女問いません!初心者大歓迎!一緒に彼氏・彼女をつくりましょう!!!
                            (↑本音とタテマエ)
 訪問開始予定時間  午後9時00分決行予定!
 総本部URL  http://jbbs.shitaraba.com/news/938/

 (※注)あくまで「訪問」です。(笑)
    物騒な事を書くと削除されちゃいますから。(←この意味わかります?)  
 それから「訪問」の主旨と無関係ですが、各種「訪問道具」も取り揃えております。(笑)
 スレ汚し失礼しました。
084984303/02/13 20:35ID:???
エンティティ…(悶)
他にも間違いが…どうもすみません。
やっぱりJavaScriptは使わない事にしました。
お騒がせ致しました〜とほほ
0850nobodyさん03/02/17 22:52ID:???
なんかむちゃくちゃだな・・・。
0851nobodyさん03/02/19 01:59ID:???
#タグの使用禁止
$value =~ s/</</g;
$value =~ s/>/>/g;

タグを禁止にして、特定のタグだけを使用可能にするにはどうすればいいんでしょうか?
0852nobodyさん03/02/19 12:03ID:???
>851

$value =~ s/<//g; #タグを一度無効化
$value =~ s/font(.*)>(.*)\/font>/<font$1>$2<\/font>/ig; #FONTタグを復活
$value =~ s/([biu])>(.*)\/[biu]>/<$1>$2<\/$1>/ig; #B、U、Iタグを復活

漏れはこうしてるが?
一度<を全部消して、閉じタグ付きでちゃんと書かれてたら復活させる方法。(B、U、I、FONTのみ有効)
閉じ忘れで壊れるのも同時に防げます。
増やすならfontのとこの行をコピペで増やしてfontを別のに変えればいいと思うよ。
$value =~ s/a(.*)>(.*)\/a>/<a$1>$2<\/a>/ig;
こんな感じ、これはAタグを復活、後は自分で考えて。
0853nobodyさん03/02/19 17:41ID:???
http://ame.x0.com/upload.html
http://ame.x0.com/upload_script.txt

ファイル表示のないアップローダなのですけれど、最大登録件数と最大ファイルサイズを変更したいのですが、
どこを変更すればよいのかわかりません。
どなたか教えていただけませんか?
0854nobodyさん03/02/19 19:37ID:???
>>853
最大登録件数なんかねえじゃねえか。脳内仕様もいい加減にしろ。
最大ファイルサイズ変えたけりゃ、スクリプトの最初に出てくる数字をいじれ。
085585103/02/19 19:39ID:???
>>852

大変参考になりました。ありがとうございました。
後は自分で考えて改造に励みます。
085685103/02/21 08:01ID:???
すみません、考えてもどうしてもわからなくて、また質問します。

#タグの無効化
$value =~ s/</&lt;/g;
$value =~ s/>/&gt;/g;
#<del>の許可
$value =~ s/&lt;del&gt;(.*)&lt;\/del&gt;/<del>$1<\/del>/g; #<del>を許可

このように記述してみたんですが、この記述だと文章中のタグ一つしか変換しないみたいです。
何回も変換するようにするには、どうすればいいんでしょうか?
0857 03/02/21 12:55ID:???
>851

#<del>の許可
$value =~ s/<del>([\w\d\s\t\+\*\.\,\(\)\!\"\#\$\%\'\=\~\`\@\{\[\^\]\}\:\;\/\\\_\>\<]*)<\/del>/<del>$1<\/del>/ig; #<del>を許可
これで一応は動くけど文中に&は使えなくなる。
何か一個全角に・・・「文中に&(半角)があったら&(全角)にする。」っていう対策で一応はクリアできる臭い。
$value =~ s/\&/&/g; #コレ

ゴメン漏れの力じゃ<を除外してマッチングさせるのは解らなかった・・・道場かどっかで聞いて・・・。
085885703/02/21 12:58ID:???
ゴメン、&消すのが一番早いわ・・・。
つかなんか犠牲にしれ、もしくはエロイ人来るまでまってれ。
0859nobodyさん03/02/21 13:06ID:???
すごい正規表現やね。。
単に>>854は最長マッチになってるだけなんぢゃ・・・・・・
0860nobodyさん03/02/21 13:08ID:???
あら、、>>856だったYO
0861nobodyさん03/02/21 14:39ID:???
>>856
お兄さん最長マッチしてやすぜ。
$value =~ s/<del>(.*?)<\/del>/<del>$1<\/del>/g;
0862nobodyさん03/02/21 14:39ID:???
かぶったな・・・
0863nobodyさん03/02/21 14:44ID:???
被ったままじゃいかんと思ったのでついでに、
複数のタグを許可するときは

$regexp = "(del|b|small|em|strong)";

$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/<$regexp>(.*?)<\/$regexp>/<$1>$2<\/$3>/g;
0864nobodyさん03/02/21 15:42ID:???
>>854 スマソ。ありがとう御座いました。
0865nobodyさん03/02/21 15:43ID:???
ついでにisoも追加汁
0866nobodyさん03/02/21 15:46ID:???
括弧と全角&もw
086785103/02/21 19:19ID:???
>>861 さん
ありがとうございます。この方法で解決しました。
レスを下さった皆様、本当にありがとうございました。
0868nobodyさん03/02/21 21:01ID:/aoYgsJG
http://buyou.bbzone.net/comchat.dataこのスクリプトに
現在の状態というものを付けたいのですが。どうすればできるでしょうか?
例:健太@ROM
など、ヨロシクお願いします。
0869nobodyさん03/02/22 12:22ID:???
>>868
どこに表示したいの?
たとえばフレームとか別な窓とか
0870nobodyさん03/02/22 16:58ID:I8wQ3PSP
下のフレームです。
参加者(1): 健太@ROM

0871nobodyさん03/02/22 23:46ID:???
>>870
いつ状態をCGIに引き渡すかにもよるな。
それを教えれ
0872nobodyさん03/02/23 00:17ID:???
>>870
ttp://40ch.no-ip.org/comchatg.cgi
こんな感じで良ければスクリプトうpします。
087387203/02/23 09:13ID:???
>>872は脳内あぼ〜んしてくださいw

長いので少しずつ。
#まず、43行目から。状態の種類をここに入力。増やすことも可能
43: @status = ('@ROM', '@使用中','@離席中','@食事中','@すぐ戻ります');

#次に、状態を入力するプルダウンボックスを作る。
#240行目付近に「<b>名前</b>:」とあるので、その行のすぐ下から
237: HTML
238: print "<b>状態</b>:<select name=\"status_form\">\n";
239: print "<option value=\"\">(なし)</option>\n"
240:
241: foreach(@status){print "<option value=\"$_\">$_</option>\n";} #状態を選択するメニューを出力
242: print<<"HTML";
243: </select>
087487203/02/23 09:23ID:???
#最後にCGIに送られてきたデータを受け取る。
450行目付近に、「$name = $FORM{'name'};」
とある。これを、状態の情報を受け取るために

450: $nametemp = $FORM{'name'};
451: $status = $FORM{'status_form'};
452: $name = $nametemp.$status;

に入れ替える。
0875nobodyさん03/02/23 11:23ID:9SQ36OP6
>>873-874ありがとうございます、やってみます!
0876改造列車03/02/23 17:27ID:???
2ちゃんねるの記事を定期的にDLしてヘッドライン化して読めるようにするシステムみたいなものを作っています。
http://2ch.eucaly.net/monazilla/bbs/のread.cgiを読み専用に改造したのはいいのですが、
記事のアンカータグ(>>2など)が記事をDLした時点で既にリンクされてしまっているので、それを分解して<a href=#$st>>>番号</a>
のような感じに表示させたいのですが、何度やっても出来ません。
ちなみに、$stは記事番号です。説明が下手でスマソ・・。
どなたか教えて下さい。よろしくお願いします。
0877nobodyさん03/02/23 20:22ID:OjosXiHY
>>873-874と同様この改造をichatにするにはどうすればよいのでしょうか?
ソースはhttp://csx.jp/~lgyec/ichat.dataです
教えてくださると幸いです。
087887203/02/23 21:31ID:???
>>876
上から順番で。
#まず19行目に↓を挿入。同じく増やすことが可能です
19: @status = ('@使用中','@すぐ戻ります');

#次にデータ受け取りの部分。
262: $name = $text if $key eq 'name';
上を

262: $namet = $text if $key eq 'name';
263: $status = $text if $key eq 'status';
264: $name = $namet.$status;
に書き換える。
#いちいち連結するのは改造箇所を減らすためと思ってくらさい
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
変数とかってなんなんですか?
■ このスレッドは過去ログ倉庫に格納されています