【 スクリプト改造工房 PART 7 】
■ このスレッドは過去ログ倉庫に格納されています
0001sage
03/09/17 15:28ID:ZcvVdw5C#================================
# スレッドの説明
#================================
「スクリプトを改造したいけどやりかたわかんないよー」という人がいましたら
ここで聞いてください。ひょっとしたらアドバイス出来るかもしれません。
質問するときは以下の点に注意して書いて下さい
(1) そのスクリプトの内容と置いてある場所を明記する (txtファイルでUPすればなお良い)
(2) どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し)
(3) 出来るだけ詳しく書くこと。少しは自分で考えること。できれば御礼も言ったほうが良い
※答えてくれないからといって逆ギレする厨はお断り
過去ログ>>2
0558nobodyさん
03/12/13 23:04ID:???あーなんとなく判ってきた。
空表示の際のHTMLを眺めると判ると思うけれども、
<dl>
</tr>
となっているのでこの間が出力されていない。のが原因。
その要因は・・・
sub past_one の中にある、
while (<IN>)
ブロックが実行されていないから。
その要因は。
$file = sprintf("%s%04d\.cgi", $pastdir,$in{'pastlog'});
で、ファイル名を定義しているけれども、
open(IN,"$file") || &error("Open Error: $file");
で、エラーに飛んで逝ってないので、ファイルは存在するけれどもファイルの中身が空、もしくは、空行や0のみの行が含まれているのがそもそもの根元かと。
1779行目の
while (<IN>) {
を、
while (defined(my $line = <IN>)) {
$_ = $line;
の2行に差替えてみて、それでも何も表示されないのであるならば 「ファイルの中身が空」ということが確定するでしょう。
それはさておき、こんなグダグダのスクリプトと付き合っていると人間を辞める羽目になると思うので早急にほかのスクリプトに移行しましょう。改造してても疲れるだけでしょ?
ついでに吐き出される HTML も無茶苦茶だし。
0559未承諾広告※ ◆aiY4htt2.2
03/12/13 23:08ID:???次スレッドのテンプレートに、
「KENT が配布しているスクリプトについては却下します。」
の1行を追加しませんか?
♪久しぶりに出てきてみた。
0560nobodyさん
03/12/14 00:57ID:???http://pc2.2ch.net/test/read.cgi/tech/1071325838/
から誘導されてきました。
0561nobodyさん
03/12/14 04:58ID:???誘導されてきたからどうだっていうの?
誘導されたって言う報告をしに来たの?
それとも誘導されたという事について意見を求めているの?
君には決定的に何かが足りない。
それがわからなければ、永遠にスルーされるであろう。
0562nobodyさん
03/12/14 12:36ID:???過去ログの番号を past_oneサブルーチンに渡していないようですね。
過去ログ1ページ目が上手くいくのは
if (!$in{'pastlog'}) { $in{'pastlog'} = $no; }
のおかげ。
1713行目
× $script?mode=past_one&no=$no
○ $script?mode=past_one&no=$no&pastlog=$in{'pastlog'}
>>558
while (<IN>) { ... }
while (defined($_ = <IN>)) { ... }
この二つは等価ですよ。
http://www.perldoc.com/perl5.8.0/pod/perlop.html#I-O-Operators
0563505
03/12/14 14:34ID:Zb7A41+Xありがとうございました〜!!
きちんと表示されるようになりました!
ただ教えてもらっただけじゃなく、
それがどういう意味なのかを、本を買うなりして
きちんと勉強していきます!
>558
すみません。自分はまだKENTのスクリプトの
どこがどうグダグダなのかわかっていないレベルなもので^^;
今後も日々勉強し、自分で1から作れるように努力します。
0564nobodyさん
03/12/14 15:16ID:???俺もKENTにperlを習った口だ。
まだまだKENTの呪縛は抜けきらないが、日々精進して更生してるよ。
use strict;を心掛けるのが第一歩かな。
そうすればmyの使い方も自然と身に憑くし。
それ以前におまいはインデントが滅茶苦茶だったな。
インデントとコメント文をきちんと書くようにしろ。
自分があとで見てすぐにわかるようにしないといけないぞ。
0565505
03/12/14 15:42ID:Zb7A41+Xアドバイスありがとうございますm(__)m
おっしゃるとおり、インデントは無茶苦茶でした(汗
構文などを理解してないまま、見よう見まねで記述したため
大変醜いスクリプトとなってしまいました。
挙句、自分でもどこがどういう処理をしているのか
理解に苦しむ時が何度も・・・^^;
せっかく「ほんの少し」Perlを理解しはじめてきましたので
これを機に、きちんと本格的に勉強したいと思います。
0567nobodyさん
03/12/15 08:11ID:8LAW+/sT最近「Encode.pm」の存在を知り、使っているレンタルサーバーにも実装されている
亊が判明したので、自宅テストサーバーにもインストール(perlのバージョンを上げ
た)して、既に稼働しているCGI用perlスクリプトのjcode.pl使用部分をEncode.pm
用に書き直して実行してみたら日本語が見事に全部文字化けて困っています。
CGI実行スクリプトの文字コードをUTF-8にしないといけないのかな?などと考え
て試してみましたが化け方が変わっただけで文字化けている亊に変わりなしでした。
テストは自宅サーバー、レンタルサーバー上の両方で行ない結果はどちらも同じ結果でした。
念の為にJcode.pmを使うように記述を変えてみると正しく日本語変換されました。
環境は以下
自宅テストサーバー(Mac OS X 10.2.8にperl 5.8にインストール Encode.pm Jcode.pm 何れもCPAN経由での最新版)
レンタルサーバー(Linux perl 5.8 Encode.pm Jcode.pm 何れも実行ファイル一式インストールされている事は確認済み)
0568nobodyさん
03/12/15 09:26ID:???petitなんかはまだ少しずつマシになってるんだけど、
yyはもうちょっとしたカオス。
0569nobodyさん
03/12/16 06:25ID:???のi-shot掲示板が欲しいので、よろしこ
0570nobodyさん
03/12/16 11:40ID:tK0i3Zmz最新の写真だけファイル名を固定したいのですが(例:recent.jpg)、
何か方法があれば是非教えてください。
0571nobodyさん
03/12/16 16:19ID:QWGXWwLzこれにメール送信機能をつけようとしましたがうまく出来ません。複数人数が書き込みするためチェックが必要です。
とりあえず以下のようにしてみました。
$sendmail = '/usr/sbin/sendmail'; #sendmailのパス
$tomail = '[email protected]'; #送信先アドレス
を追加。
某メール送信CGIからコピー
------------------------
sub send_mail {
$message = <<_MESSAGE_;
Subject: 書き込みありました。
From: $in{'mail'}
To: $tomail
-----
〜ここに内容〜
_MESSAGE_
&jcode'convert(*message,'jis');
open(EMAIL,"|$sendmail $mail") || &error("プログラムエラー','SendMailがオープンできません");
print EMAIL $message;
close(EMAIL);
}
------------------------
これを、記事登録の前に実行するため
sub edit1 {
&send_mail;
〜〜
と言う風に挿入。
この状態で、記事は登録されるのですが、メールが届きません。アドレスの間違えではないとした場合、他に何が考えられますか?
よろしくお願いします。
0572nobodyさん
03/12/16 17:16ID:???> open(EMAIL,"|$sendmail $mail")
$mailって何が入ってる?
それにヘッダは出力してる?
0573nobodyさん
03/12/16 17:23ID:QWGXWwLz早速の返答ありがとうございます。
前にも書いてますが、コピペしただけなので基本的なことが理解できてないです。
>> open(EMAIL,"|$sendmail $mail")
>$mailって何が入ってる?
何も入ってないかと…
この場合、
open(EMAIL,"|$sendmail") でOKでしょうか?
>ヘッダは出力してる?
えーと、どこに入れる必要があるのでしょうか?メールフォームのコピー元を見ましたが、
ヘッダーを出力するような部分は見当たらないのですが…
再度よろしくお願いいたします。
0574nobodyさん
03/12/16 19:12ID:???受け取った際に、通常のファイル記録に加え、recent.jpgに上書きする処理を追加。
当然recent.jpgと同じ内容の画像が常に存在する事になるけどな。
recent.jpgをhtmlに貼り付けておきたい、とかの用途ならこれで充分。
>571
$mailを$tomailに書き換え。あるいは$sendmail -t にする。前者を個人的に推奨。
あと、文字化けの可能性を考慮してSubjectはFromやToのあとにするか、英字にするのが無難。
0576573
03/12/18 15:11ID:LRUrMskKありがとうございます。
ばっちり出来ました。
0577nobodyさん
03/12/19 14:22ID:???http://www.webclap.com/
にあるweb拍手ですが送れるメッセージ数を変えるにはどこを弄ったらいいのでしょう?
色々と調べてみましたがてんでわかりませぬ…
0582nobodyさん
03/12/20 00:40ID:???0583nobodyさん
03/12/20 03:29ID:uPFsfUPgIMAGE SRC="1×1ドットの画像" width="発言回数" という感じでグラフを
表示したいのです。今の下の処理だと、発言回数が増えるたびに無限にグラフが
右へ伸びていってしまうので、1位を150ピクセルに固定して、あとは
1位に対する比率で表示させたいのですが・・・どういう処理を追加したらいいのでしょうか。
ご教授お願いします。
0584583
03/12/20 03:31ID:???sub ranking {
open(IN,"$rankfile") || &error("Open Error : $rankfile");
@lines = <IN>;
close(IN);
print "<P>- 以下は $limit日以内の発言を対象としたランキング一覧です -<P>\n";
print "<table border=1 cellspacing=0>\n";
print "<tr><th>順位</th><th>おなまえ</th><th>発言回数</th><th width=\"150\">グラフ</th></tr>\n";
foreach $line (@lines) {
($name,$count,$times) = split(/<>/,$line);
$count{$name} = $count;
}
$rank1 = 0;
$rank2 = 1;
$count_tmp = 0;
foreach (sort { ($count{$b} <=> $count{$a}) || ($a cmp $b)} keys(%count)) {
($count{$_} == $count_tmp) || ($rank1 = $rank2);
print "<tr><td>No\.<b>$rank1</b></td><th>$_</th><th>$count{$_}</th><td><IMG SRC=\"log3.gif\" HEIGHT=\"15\" WIDTH=\"$count{$_}\"></td></tr>\n";
$count_tmp = $count{$_};
$rank2++;
}
print "</table><P>\n";
&footer;
exit;
}
0585nobodyさん
03/12/20 05:50ID:???$rank2 = 1;
$count_tmp = 0;
$count_max = 0;
foreach (sort { ($count{$b} <=> $count{$a}) || ($a cmp $b)} keys(%count)) {
($count{$_} == $count_tmp) || ($rank1 = $rank2);
($count{$_} > $count_max) && ($count_max = $count{$_});
$width = $count{$_} / $count_max * 150;
print "<tr><td>No\.<b>$rank1</b></td><th>$_</th><th>$count{$_}</th><td><IMG SRC=\"log3.gif\" HEIGHT=\"15\" WIDTH=\"$width\"></td></tr>\n";
$count_tmp = $count{$_};
$rank2++;
}
0586未承諾広告※ ◆aiY4htt2.2
03/12/20 09:16ID:???脳内でエラーが出ないことを前提にしているような。
メモリに溜め込むか一時ファイルにして、エラーがなければドバドバと表示させてあげた方がよいかと思うけれども。
0588nobodyさん
03/12/20 15:37ID:???エラーメッセージごときに、そこまで気を遣ってわざわざメモリーに溜め込んで、負荷を増大させるメリットがわからん。
って、ロジック見直せ。
0590nobodyさん
03/12/20 17:34ID:???あのね、前はずっと1を見るといつも怒っていたけど、
やっとわかってきた、1は本当の犠牲者
なぜ犠牲者かというと、
1の親は自由というものを結構入れすぎるから
こういうパソコンとかがいっぱい与えた
1はパソコン好きでたまらなくて引きこもった
それはいけないことです。
それはごはん親が運ぶ、ダメです。
というのは親のせいだけじゃなくて
この社会のえらい人々アイティ革命のせいだと私は思う
こういう2ちゃんねるは100パーセント間違い
もっときれいなホムページをすすめたい
例えばヤフー、あるいは首相官邸、
ああいうページはたくさんある
あなたは1ヶ月で100万のスレ荒らす、それは怖いよ
荒らしをしてる、あなたは荒らしをしてる
それはね荒らしまでね人の名前を煽って
キショヲタで自分の部屋にひきこもって
臭いは本当にきれいな人間とは言えない、以上、変わってください
0591583-584
03/12/21 01:14ID:???>>589氏
早速のレス、ありがとうございます。
書き込みの通りスクリプトを書き換えてうpしたところ、
500エラーが出てしまいました。
うーん、どこがおかしかったんでしょうか・・・
0593583-584
03/12/21 01:38ID:???あれから無事なんとか解決することが出来ました。
アドバイス、お礼申し上げます。
0594594
03/12/21 02:09ID:qIOjxN3h↑の掲示板はアイコンを選択してメッセージを投稿するタイプなのですが
これをアイコンではなく投稿したメッセージ欄の
背景選択として設定したいのですがどのように変更したらよいでしょうか?
イメージ>http://www.maiko-ism.com/sample.jpg
PHPソース>http://www.maiko-ism.com/ibbs.txt
スキン>http://www.maiko-ism.com/skin_main.html
スクリプト配布元>http://php.s3.to/ レッツPHP!
0595nobodyさん
03/12/21 13:34ID:???HTMLが理解出来ているならば簡単ではないかい?
スキンタイプなんだし。
完成イメージを画像でなく自分でHTMLで組み立てられれば
簡単ではない?
0596nobodyさん
03/12/21 18:10ID:vMd+LVbGある項目に入力された情報を保存して次にその項目に同じ文字を入力したらエラーが出るようにしたいんですが
どこを改造すればいいでしょうか?
教えて下さいお願いします。
0597nobodyさん
03/12/21 18:48ID:???Iconディレクトリに背景画像を入れる。
HTML表示用アイコン一覧
$html_icon = array('randam'=>'ランダム','cat1.gif'=>'しろねこ' ・・・
↓
$html_icon = array('randam'=>'ランダム','bk00.jpg'=>'背景00' ・・・
ランダムの画像候補
$rand_icon = array('cat1.gif','dog1.gif' ・・・
↓
$rand_icon = array('bk00.jpg','bk01.jpg ・・・
0598nobodyさん
03/12/21 18:56ID:???skin_main.htmlスキンを使う場合
<!--{each oya}-->以下の
<!--{def oya/icon}--><img src="{$oya/icon}"><!--{/def}--> を削除。
及びそれぞれの<td>に background={$oya/icon} を足す。
<!--{each oya/res}-->以下の
<!--{def oya/res/icon}--><img src="{$oya/res/icon}" align=middle><!--{/def}-->を削除。
及びそれぞれの<td>に background={$oya/res/icon} を足す。
レス書き画面とかも同じ要領でやっていけばいい。
0600596
03/12/22 00:42ID:???スレ汚しスマソ
0602nobodyさん
03/12/22 16:14ID:???0603nobodyさん
03/12/22 19:53ID:???でクッキー保存されないのですが、ここでJavaScriptを使ってクッキーを保存するにはどうしたらいいんですかね?
0604nobodyさん
03/12/23 01:57ID:???アフォか。
まず、>>1読め。
「ベースがKENT」って時点でソース読む気がないんだが……。
クッキーが保存できないようなタコなスクリプトなんぞ使うな。
しかもそれを余計に面倒くさいJavaScriptでの保存なんか考えるな。
0605nobodyさん
03/12/23 04:55ID:???0611nobodyさん
03/12/24 21:29ID:dajCswi4tackyさんの掲示板、えれべーたぁ(http://tackysroom.com/cgi_updown.htm)を、
2chのように記事のタイトルを上部に表示させるように改造するには
どうしたらよいでしょう。何卒宜しくお願い致します。
0612nobodyさん
03/12/24 23:40ID:???http://member.nifty.ne.jp/marsh/misya/java/parts/cookie1.html
http://useyan.pupu.jp/s/javas/java/aer_087.htm
JavaScriptでのクッキー保存の方法ね。
このへん読みながら工夫するといいかも。
0613nobodyさん
03/12/25 01:46ID:???オラの一日はまず、界王様のキスで起こされるんだ。そして、天津飯とヤムチャが二人がかりでオラをかつぎ上げ便所へ。
次は朝飯だ。兎人参家がもう用意している。グルドが助手だ。なぜかメイド服を着ているんだ。
オラおどれえたぞ。そんなにオラに気に入られたいのか?喉が渇いたんでサイバイマンの溶解液でも飲むか。
サイバイマンが頭をオラの口へ持って来るんだ。…まじい、飲めたもんじゃねえぞ!オラ、サイバイマンの頭をふっとばしちまったぞ!
歯はグルドに磨いてもらって、うがい用の超神水はカリン様が口移しなんだ。
んじゃ、ここも飽きたしオラもう一つの家へ行くぞ!って言ったら、皆ウルウルと目に涙浮かべながら
グルド「行かないで…」天津飯「行かないで…」ヤムチャ「行tyrくっで…」
ヤムチャだけ噛んじまったぞ!こんなやつらさっさと置いといて家を出ちまったんだ。
家の前には筋斗雲があって、運転手は8ちゃんだ。もう一つの家は瞬間移動で行けるけど、オラ気を使いたくねえぞ。
オラ、第二の我が家へ着いたんだ。出迎えは裸エプロンの牛魔王だ。それにしてもエロい体だぞー。
他の奴らも奥にいるんだ。そろそろ一発抜きたくなっちまったんでオラベッドに大の字になって皆を呼んだんだ。
右の乳首をメイド服のグルドが舐めて、左乳首をYシャツ一枚のナッパが舐めるんだ。右の腋や耳をダーブラが責めてきて、
左の腋や耳を第2形態のセルが責めてくるんだ。オラの両手はグルド、天津飯、ナッパ、ダーブラのちんちんを手コキだ。
オラ忙しいぞ!左足を牛魔王、右足をコルド大王が、おっぱいマンコで一生懸命さわさわだ。牛魔王は裸エプロンのままだ。
チャパ王はなぜか体操着ルーズソックスに着替えてきちまったんだ。ブルマは穿いてねえ。下半身丸出しだ。
それにしても幼児体型だぞー。シンバルのパイパンマンコはオラの顔へ持ってきてクンニだ。スポポビッチがアナルや玉袋を舐めるぞ。
そして16号の登場だ。騎乗位でオラに跨ってきたぞ。笑顔のくせに爆弾は原爆級じゃねえか。オラびっくりしたぞ!
牛魔王、セル、コルド、シンバル、チャパ王、16号がオラを責め立てるから、オラ超サイヤ人4になっちまったぞ…
いっつもの日課の修行が終わって、だりぃけどオラが居ないと宇宙が傾いちまうからここで元気玉打つぞ。これがオラの一日だ。
絶対見てくれよな!
0615nobodyさん
03/12/25 06:07ID:???>クッキーが保存できないようなタコなスクリプトなんぞ使うな
がかなり正解に近い。
0616505
03/12/27 13:36ID:VhlRAef5皆様のアドバイスのおかげでBBSの改造もほぼ完了することができましたm(__)m
今回お聞きしたいのは、以前改造した「レスは最新10件のみ表示する」
ことに関してなんです。
以前の改造方法ですと、一度ログを読み出してから、各ブロック(タイトル、アイコン、コメントなど)
に対して何度もif文で条件づけをしてやっていたという状況なのですが、
なにげに不効率に感じていました。
そこで、最初にログを読み出した時点で制限できないものかと思いまして・・
407行目にある
while(<IN>){
if((split(/<>/))[1] eq "") { $i++; }
if ($i < $page + 1) { next; }
if ($i > $page + $p_log) { next; }
push(@DATA,$_);
の部分で、まずTOPに表示する「親記事」の数を制限してるんですよね。
ここでさらにレス数もカウントして
--もしレス数が$syoryakuより小さければそのまま表示し、
大きければ「最新$syoryaku件」だけを表示せよ--
というふうにしたほうが記事表示部でifを多用するよりイイかなと思ったんですが・・^^
なにぶんどのように記述してよいかわからなかったもので、ご教授頂きたく投稿しました。
なにとぞ宜しくお願い致しますm(__)m
ソースhttp://lovely-aya.appletea.to/cgi/test/kaizou.txt
BBShttp://lovely-aya.appletea.to/cgi/test/yybbs.cgi#menu
0618nobodyさん
03/12/29 18:32ID:???Cookieの取得で日本語文字コードが上手く入ってくれない。(半角文字は大丈夫だった)
クッキー取得は以下の通り。ドコがいけないのかな?
sub get_cookie {
local($key, $val, *ck);
$ck = $ENV{'HTTP_COOKIE'};
foreach (split(/;/, $ck)) {
($key, $val) = split(/=/);
$key =~ s/\s//g;
$ck{$key} = $val;
}
@ck = split(/<>/, $ck{'YY_BBS'});
return (@ck);
}
ちなみに、cookie内にはちゃんとutf-8で文字列が格納されてまつ。
0619nobodyさん
03/12/29 19:15ID:???これに問題があるようでつね。ちと調べなおしてきまつ。
0620nobodyさん
03/12/29 20:37ID:???スレ汚しスンマソ
0621nobodyさん
03/12/29 20:40ID:???0622nobodyさん
03/12/29 21:00ID:4uq0QGbyhttp://www.pine-kz.com/camera/camera.html
ImageMagickでの自動サムネイル作成で、サーバのプロセスサイズから200万画素
という制限(jpegのサイズを色々変えて確認)をができちゃったのですが、なん
か良い回避策ないですかね?
open(IMG3,"$tmp_dir$attc");
$org_sz = newFromJpeg GD::Image(\*IMG3);
@bound = $org_sz->getBounds();
if ($bound[0] > $bound[1]) { $thumW = $img_width;
} else { $thumW = $img_width * $bound[0] / $bound[1];}
print DAT "original width: $bound[0] original height: $bound[1]\n thum: $thumnal $thumW\n";
system("/usr/bin/convert $org_img -scale $thumW -sharpen 80 $thumnal");
$org_sz = "";
close(IMG3);
0623620
03/12/29 22:05ID:???KENTのスクリプ�dって、Cookieでの文字化けは対応してないのね(「表示」とか)
0625nobodyさん
03/12/30 05:36ID:+KTyzjOj普段 GUIのImageMagickを使っていて、変換後の品質が非常に良いのでこれを
使いたいと思って組込んだんですが、622で質問した後、色々検索してみて、
1)GDでそのままやる
2)PerlMagickを呼ぶ
3)Imagerを呼ぶ
という方法を考えてみました。
メモリー(プロセス)サイズを一番節約できる=アップロードできる画素サイズ
を大きくできる、という方向ではどれが良いのでしょうか?
(jpegを刻んで変換してから連結するというのは見つかりませんでした)
0626625
03/12/31 05:47ID:Xbx5eY1F-limit memory 1 -limit map 1 を付け加えるとスクリプトエラーを起さずに
ただサムネイルを作ってくれなくなりました。
自分のパソコンだと、/tmp にテンポラリファイルを作成して作業完了すると
ちゃんと消去して終るのです。なんで?
0628622
04/01/04 15:26ID:Wl1FVx2lが少し古くて使えないのだった。
動かない理由は、GDを使って大きなファイルを開いてから更にgetBounds()で
操作しようとした所為だった。関数を呼んだ時点でメモリサイズがサーバの
制限を越えてる。
サーバにインストールされてるソフトを外部コマンドとして呼び出すほうが、
pmベースで操作するより断然有利だ。
・・・Web検索では GDでgetBounds()しか見つからなかったので、その通りに
やってみたのだけど、identifyを呼び出したらメモリ制限で止まらなくなった。
200万画素の制限もなくなりました。(ディスクスペースが大きいといっても
4MBの画像をアップし続けたら100枚足らずだから自粛しないとすぐ終ってしまうが)
0630622
04/01/05 22:07ID:FD26CFrGもっと減らしてどうにかすると、その先にあるのは?
ディスプレイ上で一覧できるサイズであれば可というのは昔ありました。
写真をクローズアップしてなお解像感が維持されることで、空間把握に繋がる
というのを意識してるんだが。
(プリント時のdpiがどうのというのとは別)
ああ、俺が変態なのかもしれんが。
一覧性というのは、構図とか構成とか意匠とかそういうものの評価に繋がって
いるのだけど、そうではなくてマクロ領域で撮影されたものをもっとクローズ
アップして見たくなるとかそういう欲求の話をしているの。
昔のちんけなスパイ映画かSF映画で撮影した画像をどこまでも拡大していくの
があったじゃない。インチキだってのはすぐ解ったけれど、状況は変りつつある。
(デジタル写真の現状をただ肯定しているわけではないが)
0631nobodyさん
04/01/05 22:15ID:???0632&rle;tset
04/01/07 23:18ID:???0633gorigori
04/01/08 01:52ID:???ここのver.2.3.3のスクなんですけど、
このスレッド式掲示板に、htmlタグを使えるようにしたいのですが、
いくらやっても出来ないんです。
ttp://www.civilizer.net/undef/perler/cgisec/502.html
こことかも見てやったんですがさっぱり…
申し訳ありませんがお教えいただけないでしょうか?
0634nobodyさん
04/01/08 04:12ID:???「いくらやっても出来ない」 とは、自分で改造してみたんだけど出来なかったという意味なのかな?
だったらどんな改造を試してみたのかここで報告してくれ。
0635gorigori
04/01/08 12:14ID:???申し訳ありません。
自分で改造してみたんです。でも出来ませんでした。
http://v.isp.2ch.net/up/a99bb3f01517.txt
↑スクリプト
タグ関連はsub form_decodeのところにあったので
$string =~ s/</\e/g;
foreach (@tmparray){
my($a,$b)=split(/=/,$_);
$b =~ tr/+/ /;
$b =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/chr(hex($1))/eg;
$b =~ s/</</g;
$b =~ s/>/>/g;
$string =~ s/\e\/?\s*$tags\s+/<$tags /ig;
$b =~ s/\t/ /g;
$b =~ s/\r//g;
なんて適当に…
ほかにもこんな感じでいろいろ試しました。
perlとか基本的なことくらいしか分からなくて
お手数おかけします。
0636gorigori
04/01/08 12:16ID:???$tagのところも
ttp://www.civilizer.net/undef/perler/cgisec/502.html
を参考にしてやりました。
0637nobodyさん
04/01/08 20:43ID:???foreach (@tmparray){
my($a,$b)=split(/=/,$_);# $aと$bは特殊な変数でuse strict対象外。$aと$bは使用しないほうがよい。
$b =~ tr/+/ /;
$b =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/chr(hex($1))/eg;
$b =~ s/</</g;# 2chでは、< は &lt; って書くといいよ。だけど、この行無意味
$b =~ s/>/>/g;# 2chでは、> は &gt; って書くといいよ。
$b =~ s/\e\/?\s*$tags\s+/<$tags /ig;# 上のほうで\eに置換されて無いので、この行無意味
$b =~ s/\t/ /g;
$b =~ s/\r//g;
しかも、
$b =~ s/\e\/?\s*$tags\s+/<$tags /ig;
は、
foreach $tag ( @allowtags )
{
$b =~ s/\e\/?\s*$tags\s+/<$tags /ig; # 許可タグとその閉じタグは許す
}
$b =~ s/\e/</g; # 許可タグ以外は <にする
0638nobodyさん
04/01/09 12:21ID:???foreach (@tmparray){
my($a,$b)=split(/=/,$_);
$b =~ tr/+/ /;
$b =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/chr(hex($1))/eg;
(削除)
(削除)
(削除)
$b =~ s/\t/ /g;
$b =~ s/\r//g;
要は<や>を&lt;や&gt;に置換してる部分を丸ごと捨てればいい。
許可したタグ以外は使用不能にしたいなら>637を参考にその方針で頑張れ。
0639nobodyさん
04/01/09 19:00ID:???何をどういじったのか良くわからないのですが、データの削除が出来ません。
本体のみ(txt)
ttp://www.geocities.co.jp/SiliconValley/9193/nc/nc.txt
全ファイル
ttp://www.geocities.co.jp/SiliconValley/9193/nc/nc.lzh
オリジナル
ttp://www.geocities.co.jp/SiliconValley/9193/nc/link.lzh
です。
sub edit{
下のほうでデータの削除が出来るようになっています。
削除チェックボックスにチェックを入れ削除ボタンを押すと
sub del{
に移動します。そこで削除されるようなのですが、どうもうまく行っていないようです。
どこを修正したらいいでしょうか?よろしくお願いします。
0640nobodyさん
04/01/09 22:19ID:???というか、どこをどう修正したか分からなくなるような奴はいじるな。
0641nobodyさん
04/01/09 23:33ID:hZGS3YnQ例えば
カテゴリABC:a-z (cate 0から5)
カテゴリあいう:あ-ん (cate 6から10)
カテゴリイロハ:イ-ン (cate 11から15)
の3カテゴリがあるとします。
本当は一つのサイトを各カテゴリに一つずつ登録させたいのですが、(例:B、か、ユ etc,.)
以下のスクリプトを繰り返しコピペしただけでは3番目のカテゴリのみの登録になってしまいます。
どうすれば、各一つずつ登録できるようになるのでしょうか?
先輩方よろしくお願いします。
<td>カテゴリ</td>
<td><select name="cate">
EOF
foreach (0 .. $#cates) {
if ($in{'cate'} eq "$_") { print qq(<option value="$_" selected>$cates[$_]\n); }
else { print qq(<option value="$_">$cates[$_]\n); }
}
print <<"EOF";
出所は taitai studio の Link & Rank (ver3.1) の regist.cgi です。
0642nobodyさん
04/01/10 00:05ID:???この場合、入力フォームだけではなく、記録部、記録直後の確認画面、表示画面も改造する必要がある。
ざっと見た感じカテゴリごとにフォルダを作ってログを管理してるので、そっちの形式もいじる事になる。
戦艦大和を海から引き上げて宇宙戦艦に改造する程の手間。他のCGIを探す事を薦める。
0643nobodyさん
04/01/10 08:44ID:xCRFiDNpご返答ありがとうございます。
他をあたってみます
お薦めなどがありましたらお知らせいただければありがたいです。
0644nobodyさん
04/01/10 19:46ID:???本文
と入力して、
<p>本文</p>
<p style="margin-top:3(←改行した数)em;">本文</p>
というように出力させるにはどうすればいいのでしょうか? 現在の掲示板では
# 複数の改行は段落に変換
$value =~ s/(<br \/>){2,}/<\/p><p>/g;
となっています。
0646645
04/01/10 23:57ID:???http://pc2.2ch.net/test/read.cgi/hp/1067286961/
0647nobodyさん
04/01/12 01:32ID:+TyesD9W一枚のphpで左にメニュー右に検索結果と出るんですが
これをフレームで分割できるように出来るでしょうか?
全ファイル
ttp://junk.s41.xrea.com/test/hysearch.zip
0648nobodyさん
04/01/13 12:41ID:???できるだろ。
そんな糞面倒なこと俺は絶対やらないが。
できるかできないかで聞かれたからそれだけでこたえてみたが、
やり方はきかれても教えるつもりはない。
他の連中も教えるつもりがないから今まで黙っている訳で。
まあ、なんだ。努力する気が見えない奴には知ってる奴も教えたくなくなるってこった。
0649647
04/01/13 20:24ID:???返答有難うございます
やっぱ面倒ですか。。。。
PHPの本片手に色々考えてみたんですが
僕の様なペーペーにはまだ無理ですね
もう少し勉強してきます<m(__)m>
0650nobodyさん
04/01/13 20:33ID:0tJfIYqX0651647
04/01/13 21:01ID:???検索とコピペで何とかなるんですか・・・
一通り調べて分割するところまでは自力で出来たんですが
左メニューのリンクをtargetで右に表示させる方法を何とか探してる最中です。
もう少し頑張ってみますです。
出来上がったらソースを提出するのでダメだしお願いできますか?
0652nobodyさん
04/01/13 23:54ID:???HTMLの理解はCGIをやる上での前提事項だ。
これが一通りできないのであれば、CGIはやるべきではない。
出直してこい。悪いことは言わない。
基礎がないのに応用ができるわけはない。
これは、マジな忠告だ。
0653未承諾広告※ ◆aiY4htt2.2
04/01/14 00:26ID:???もしかしてそのお陰?で、不思議マークアップを吐き出す CGI スクリプト類が氾濫しているのだろうか?
0656nobodyさん
04/01/14 07:03ID:???PHP的な処理で本当にフレーム分割しようとするとかなりの手間。
実はCSSとかJavaScriptでフレームっぽい外見/仕様にするだけなら比較的簡単。
http://www.42ch.net/UploaderSmall/source/1074031258.dat
(表示できない場合拡張子をhtmに)
もう少し練れば美しくできると思う。
ただ、ブラウザによっては小汚くなる。
0657nobodyさん
04/01/14 07:09ID:???で、美しさよりもフレーム分割っぽい外観に似せる事を重視してる。
美しくするにはどうすれば、とか、JavaScriptで実装するには?とかはweb製作板の人間に聞いてくれ。
■ このスレッドは過去ログ倉庫に格納されています