トップページ⇒php
982コメント439KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001sage03/09/17 15:28ID:ZcvVdw5C
 
#================================
# スレッドの説明
#================================

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

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

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

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

過去ログ>>2
0558nobodyさん03/12/13 23:04ID:???
>>557
あーなんとなく判ってきた。
空表示の際の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:???
って事で、貴重な時間を費やした(wついでに提案。
次スレッドのテンプレートに、
「KENT が配布しているスクリプトについては却下します。」
の1行を追加しませんか?

♪久しぶりに出てきてみた。
0560nobodyさん03/12/14 00:57ID:???
「web拍手」をカスタマイズしよう!
http://pc2.2ch.net/test/read.cgi/tech/1071325838/

から誘導されてきました。
0561nobodyさん03/12/14 04:58ID:???
>>560
誘導されてきたからどうだっていうの?
誘導されたって言う報告をしに来たの?
それとも誘導されたという事について意見を求めているの?

君には決定的に何かが足りない。
それがわからなければ、永遠にスルーされるであろう。
0562nobodyさん03/12/14 12:36ID:???
>505
過去ログの番号を 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
056350503/12/14 14:34ID:Zb7A41+X
>562
ありがとうございました〜!!
きちんと表示されるようになりました!

ただ教えてもらっただけじゃなく、
それがどういう意味なのかを、本を買うなりして
きちんと勉強していきます!

>558
すみません。自分はまだKENTのスクリプトの
どこがどうグダグダなのかわかっていないレベルなもので^^;
今後も日々勉強し、自分で1から作れるように努力します。
0564nobodyさん03/12/14 15:16ID:???
>>563
俺もKENTにperlを習った口だ。
まだまだKENTの呪縛は抜けきらないが、日々精進して更生してるよ。
use strict;を心掛けるのが第一歩かな。
そうすればmyの使い方も自然と身に憑くし。

それ以前におまいはインデントが滅茶苦茶だったな。
インデントとコメント文をきちんと書くようにしろ。
自分があとで見てすぐにわかるようにしないといけないぞ。
056550503/12/14 15:42ID:Zb7A41+X
>564

アドバイスありがとうございますm(__)m
おっしゃるとおり、インデントは無茶苦茶でした(汗
構文などを理解してないまま、見よう見まねで記述したため
大変醜いスクリプトとなってしまいました。
挙句、自分でもどこがどういう処理をしているのか
理解に苦しむ時が何度も・・・^^;

せっかく「ほんの少し」Perlを理解しはじめてきましたので
これを機に、きちんと本格的に勉強したいと思います。
0566未承諾広告※ ◆aiY4htt2.2 03/12/14 18:41ID:???
>>562
なるほど、ありがとうです。
5.8系 かぁ。。。
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:???
KENTのYYはだいぶ前から更新停まってるよな。
petitなんかはまだ少しずつマシになってるんだけど、
yyはもうちょっとしたカオス。
0569nobodyさん03/12/16 06:25ID:???
http://techside.net/i_shot_p/vi.cgi
のi-shot掲示板が欲しいので、よろしこ
0570nobodyさん03/12/16 11:40ID:tK0i3Zmz
レッツPHPの「写メールBBS」で、
最新の写真だけファイル名を固定したいのですが(例:recent.jpg)、
何か方法があれば是非教えてください。
0571nobodyさん03/12/16 16:19ID:QWGXWwLz
ttp://www.lira.co.jp/t-room/re_cgi/history/index.html
これにメール送信機能をつけようとしましたがうまく出来ません。複数人数が書き込みするためチェックが必要です。
とりあえず以下のようにしてみました。

$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:???
>>571
> open(EMAIL,"|$sendmail $mail")
$mailって何が入ってる?

それにヘッダは出力してる?
0573nobodyさん03/12/16 17:23ID:QWGXWwLz
>>572
早速の返答ありがとうございます。
前にも書いてますが、コピペしただけなので基本的なことが理解できてないです。
>> open(EMAIL,"|$sendmail $mail")
>$mailって何が入ってる?
何も入ってないかと…
この場合、
open(EMAIL,"|$sendmail") でOKでしょうか?

>ヘッダは出力してる?
えーと、どこに入れる必要があるのでしょうか?メールフォームのコピー元を見ましたが、
ヘッダーを出力するような部分は見当たらないのですが…

再度よろしくお願いいたします。
0574nobodyさん03/12/16 19:12ID:???
>570
受け取った際に、通常のファイル記録に加え、recent.jpgに上書きする処理を追加。
当然recent.jpgと同じ内容の画像が常に存在する事になるけどな。
recent.jpgをhtmlに貼り付けておきたい、とかの用途ならこれで充分。

>571
$mailを$tomailに書き換え。あるいは$sendmail -t にする。前者を個人的に推奨。
あと、文字化けの可能性を考慮してSubjectはFromやToのあとにするか、英字にするのが無難。
057557003/12/16 21:31ID:???
>>574
なるほど。やってみます。ありがとうございます。
057657303/12/18 15:11ID:LRUrMskK
>>574
ありがとうございます。
ばっちり出来ました。
0577nobodyさん03/12/19 14:22ID:???
すんません、
http://www.webclap.com/
にあるweb拍手ですが送れるメッセージ数を変えるにはどこを弄ったらいいのでしょう?
色々と調べてみましたがてんでわかりませぬ…
0578nobodyさん03/12/19 18:55ID:???
>>577
Web拍手とやらが何だか全く知らんが。
作った奴に聞け。
0579nobodyさん03/12/19 19:03ID:???
>>578
ナウでヤングなwebサービスですよ
0580nobodyさん03/12/19 19:35ID:???
>>577
なぜ>>1に従わないのかわかりませぬ…
058157803/12/19 22:58ID:???
>>579
そんなことはきいちゃいねえ。
てか、こっちが言った内容は理解してんのか。
0582nobodyさん03/12/20 00:40ID:???
反抗期なんだろ
0583nobodyさん03/12/20 03:29ID:uPFsfUPg
チャットの発言ランキングを処理する部分なんですけど、
IMAGE SRC="1×1ドットの画像" width="発言回数" という感じでグラフを
表示したいのです。今の下の処理だと、発言回数が増えるたびに無限にグラフが
右へ伸びていってしまうので、1位を150ピクセルに固定して、あとは
1位に対する比率で表示させたいのですが・・・どういう処理を追加したらいいのでしょうか。
ご教授お願いします。
058458303/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:???
$rank1 = 0;
$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:???
表示しながらの最中にエラーが発生すると、ヘッダとかもいっしょに出力しちゃいそうですよね。
脳内でエラーが出ないことを前提にしているような。
メモリに溜め込むか一時ファイルにして、エラーがなければドバドバと表示させてあげた方がよいかと思うけれども。
0587nobodyさん03/12/20 13:27ID:???
>>856
チミはWWWサーバをもっと勉強するべし!
0588nobodyさん03/12/20 15:37ID:???
>>586
エラーメッセージごときに、そこまで気を遣ってわざわざメモリーに溜め込んで、負荷を増大させるメリットがわからん。
って、ロジック見直せ。
0589nobodyさん03/12/20 17:18ID:???
>>585
$width = int($count{$_} / $count_max * 150); にしたほうがよかった
0590nobodyさん03/12/20 17:34ID:???
番組で1について話したゾマホンです。
あのね、前はずっと1を見るといつも怒っていたけど、
やっとわかってきた、1は本当の犠牲者
なぜ犠牲者かというと、
1の親は自由というものを結構入れすぎるから
こういうパソコンとかがいっぱい与えた
1はパソコン好きでたまらなくて引きこもった
それはいけないことです。
それはごはん親が運ぶ、ダメです。
というのは親のせいだけじゃなくて
この社会のえらい人々アイティ革命のせいだと私は思う
こういう2ちゃんねるは100パーセント間違い
もっときれいなホムページをすすめたい
例えばヤフー、あるいは首相官邸、
ああいうページはたくさんある
あなたは1ヶ月で100万のスレ荒らす、それは怖いよ
荒らしをしてる、あなたは荒らしをしてる
それはね荒らしまでね人の名前を煽って
キショヲタで自分の部屋にひきこもって
臭いは本当にきれいな人間とは言えない、以上、変わってください
0591583-58403/12/21 01:14ID:???
>>585氏
>>589氏
早速のレス、ありがとうございます。
書き込みの通りスクリプトを書き換えてうpしたところ、
500エラーが出てしまいました。
うーん、どこがおかしかったんでしょうか・・・
0592nobodyさん03/12/21 01:23ID:???
>>591
コピペしたんじゃないのか?
全角スペースでインデントしてあるんだぞ
0593583-58403/12/21 01:38ID:???
自己レスになりますが・・・
あれから無事なんとか解決することが出来ました。
アドバイス、お礼申し上げます。
059459403/12/21 02:09ID:qIOjxN3h
http://php.s3.to/bbs/temp/ibbs.php?
↑の掲示板はアイコンを選択してメッセージを投稿するタイプなのですが
これをアイコンではなく投稿したメッセージ欄の
背景選択として設定したいのですがどのように変更したらよいでしょうか?
イメージ>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:???
>>594
HTMLが理解出来ているならば簡単ではないかい?
スキンタイプなんだし。
完成イメージを画像でなく自分でHTMLで組み立てられれば
簡単ではない?
0596nobodyさん03/12/21 18:10ID:vMd+LVbG
kent氏のフォームメール(http://www.kent-web.com/data/postmail.html)で改造がしたいのですが
ある項目に入力された情報を保存して次にその項目に同じ文字を入力したらエラーが出るようにしたいんですが
どこを改造すればいいでしょうか?
教えて下さいお願いします。
0597nobodyさん03/12/21 18:48ID:???
>>594
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:???
>>594
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} を足す。

レス書き画面とかも同じ要領でやっていけばいい。
059959403/12/21 20:42ID:qIOjxN3h
>>595
>>597
>>598
指示通りにやったらできました。
どうもありがとうございました。
060059603/12/22 00:42ID:???
誰も答えてくれなさそうだったので、カウンタのIPチェックを参考にコピペで作ってしまいました。
スレ汚しスマソ
0601nobodyさん03/12/22 04:12ID:???
>>600
>1を読んでなさそうな香具師は放置だぎゃー
0602nobodyさん03/12/22 16:14ID:???
うん、その通り
0603nobodyさん03/12/22 19:53ID:???
MT-BOARD ver0.5 betaという2ch風cgi(例えばttp://cgi1.biwa.ne.jp/~platz/bbsa/mag/)
でクッキー保存されないのですが、ここでJavaScriptを使ってクッキーを保存するにはどうしたらいいんですかね?
0604nobodyさん03/12/23 01:57ID:???
>>603
アフォか。
まず、>>1読め。
「ベースがKENT」って時点でソース読む気がないんだが……。
クッキーが保存できないようなタコなスクリプトなんぞ使うな。
しかもそれを余計に面倒くさいJavaScriptでの保存なんか考えるな。
0605nobodyさん03/12/23 04:55ID:???
うん、その通り 
0606nobodyさん03/12/23 12:04ID:???
>>604
HTML表示だからJavaScriptしか保存はできないだろうが
060760403/12/23 14:40ID:???
>>606
いや、だからソースは読んでないって。
読む気もないって。
0608nobodyさん03/12/23 15:33ID:???
>>606
アホですか?
0609nobodyさん03/12/24 13:05ID:???
>>604
> 「ベースがKENT」って時点でソース読む気がないんだが……。
それはお前の都合じゃないのか?
0610nobodyさん03/12/24 15:16ID:???
>>609
俺はKENTのソース見たこと無い。
っつーか見る木にもならない。
0611nobodyさん03/12/24 21:29ID:dajCswi4
教えて頂きたいのですけども,
tackyさんの掲示板、えれべーたぁ(http://tackysroom.com/cgi_updown.htm)を、
2chのように記事のタイトルを上部に表示させるように改造するには
どうしたらよいでしょう。何卒宜しくお願い致します。
0612nobodyさん03/12/24 23:40ID:???
>>603

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になっちまったぞ… 
いっつもの日課の修行が終わって、だりぃけどオラが居ないと宇宙が傾いちまうからここで元気玉打つぞ。これがオラの一日だ。
絶対見てくれよな!
0614nobodyさん03/12/25 04:10ID:???
>>611
教えてやってもいいけど>>1嫁
君の場合『完成イメージHTML』は必須だな
0615nobodyさん03/12/25 06:07ID:???
>603
>クッキーが保存できないようなタコなスクリプトなんぞ使うな
がかなり正解に近い。
061650503/12/27 13:36ID:VhlRAef5
お久しぶりです。以前お世話になった505です。
皆様のアドバイスのおかげで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
0617nobodyさん03/12/27 20:32ID:???
>>616
あいかわらずインデントが滅茶苦茶だなぁ
やり直せ
話はそれからだ。
0618nobodyさん03/12/29 18:32ID:???
KENTのYY-BOARDをjcode.pmでutf-8化しようと思ったんだが、
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:???
$ck = $ENV{'HTTP_COOKIE'};
これに問題があるようでつね。ちと調べなおしてきまつ。
0620nobodyさん03/12/29 20:37ID:???
とほほのクッキー見て解決しますたつ∀`)
スレ汚しスンマソ
0621nobodyさん03/12/29 20:40ID:???
解決しますたつ
0622nobodyさん03/12/29 21:00ID:4uq0QGby
mini BBSの改造を続けてやっと公開に漕ぎ着けたのですが、
http://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);
062362003/12/29 22:05ID:???
つД`)
KENTのスクリプ�dって、Cookieでの文字化けは対応してないのね(「表示」とか)
0624nobodyさん03/12/30 04:19ID:???
>>622
ImageMagickっていいながら、それはGDのソースじゃん。
0625nobodyさん03/12/30 05:36ID:+KTyzjOj
/usr/bin/convert がImageMagickの本体です。
普段 GUIのImageMagickを使っていて、変換後の品質が非常に良いのでこれを
使いたいと思って組込んだんですが、622で質問した後、色々検索してみて、
1)GDでそのままやる
2)PerlMagickを呼ぶ
3)Imagerを呼ぶ
という方法を考えてみました。

メモリー(プロセス)サイズを一番節約できる=アップロードできる画素サイズ
を大きくできる、という方向ではどれが良いのでしょうか?
(jpegを刻んで変換してから連結するというのは見つかりませんでした)
062662503/12/31 05:47ID:Xbx5eY1F
convert のオプションでリソース制限ができるのを読み落していたのですが、
-limit memory 1 -limit map 1 を付け加えるとスクリプトエラーを起さずに
ただサムネイルを作ってくれなくなりました。
自分のパソコンだと、/tmp にテンポラリファイルを作成して作業完了すると
ちゃんと消去して終るのです。なんで?
0627nobodyさん03/12/31 07:27ID:???
>>626
おまい単なる質問ならスレ違いじゃないか?
062862204/01/04 15:26ID:Wl1FVx2l
結局、convertの limitオプションはサーバにインストールされてるバージョン
が少し古くて使えないのだった。
動かない理由は、GDを使って大きなファイルを開いてから更にgetBounds()で
操作しようとした所為だった。関数を呼んだ時点でメモリサイズがサーバの
制限を越えてる。
サーバにインストールされてるソフトを外部コマンドとして呼び出すほうが、
pmベースで操作するより断然有利だ。

・・・Web検索では GDでgetBounds()しか見つからなかったので、その通りに
やってみたのだけど、identifyを呼び出したらメモリ制限で止まらなくなった。
200万画素の制限もなくなりました。(ディスクスペースが大きいといっても
4MBの画像をアップし続けたら100枚足らずだから自粛しないとすぐ終ってしまうが)
0629nobodyさん04/01/05 19:08ID:???
>>628
そもそも、4MBの画像をアップするってどういう状況?
普通はもっと減らしてどうにかするもんじゃないの?
063062204/01/05 22:07ID:FD26CFrG
>>629
もっと減らしてどうにかすると、その先にあるのは?
ディスプレイ上で一覧できるサイズであれば可というのは昔ありました。
写真をクローズアップしてなお解像感が維持されることで、空間把握に繋がる
というのを意識してるんだが。
(プリント時のdpiがどうのというのとは別)
ああ、俺が変態なのかもしれんが。

一覧性というのは、構図とか構成とか意匠とかそういうものの評価に繋がって
いるのだけど、そうではなくてマクロ領域で撮影されたものをもっとクローズ
アップして見たくなるとかそういう欲求の話をしているの。

昔のちんけなスパイ映画かSF映画で撮影した画像をどこまでも拡大していくの
があったじゃない。インチキだってのはすぐ解ったけれど、状況は変りつつある。
(デジタル写真の現状をただ肯定しているわけではないが)
0631nobodyさん04/01/05 22:15ID:???
quota
0632&rle;tset04/01/07 23:18ID:???
test
0633gorigori04/01/08 01:52ID:???
http://sugoiyo.com/thebbscgi/contents/download/
ここのver.2.3.3のスクなんですけど、
このスレッド式掲示板に、htmlタグを使えるようにしたいのですが、
いくらやっても出来ないんです。
ttp://www.civilizer.net/undef/perler/cgisec/502.html
こことかも見てやったんですがさっぱり…

申し訳ありませんがお教えいただけないでしょうか?

0634nobodyさん04/01/08 04:12ID:???
>>633
「いくらやっても出来ない」 とは、自分で改造してみたんだけど出来なかったという意味なのかな?
だったらどんな改造を試してみたのかここで報告してくれ。
0635gorigori04/01/08 12:14ID:???
>>634
申し訳ありません。
自分で改造してみたんです。でも出来ませんでした。

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とか基本的なことくらいしか分からなくて

お手数おかけします。
0636gorigori04/01/08 12:16ID:???
あ、$stringのとこはちゃんと$bにしました。

$tagのところも
ttp://www.civilizer.net/undef/perler/cgisec/502.html
を参考にしてやりました。
0637nobodyさん04/01/08 20:43ID:???
$b =~ s/</\e/g;# まだ$bに値が入ってないところで<を\eに置換しても置換されてない。
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/</&lt;/g;# 2chでは、&lt; は &amp;lt; って書くといいよ。だけど、この行無意味
  $b =~ s/>/&gt;/g;# 2chでは、&gt; は &amp;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/&lt;/g; # 許可タグ以外は &lt;にする
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:???
ゆいりんく1.0(ttp://www.cj-c.com/)を改造中です。
何をどういじったのか良くわからないのですが、データの削除が出来ません。

本体のみ(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
>>642
ご返答ありがとうございます。
他をあたってみます
お薦めなどがありましたらお知らせいただければありがたいです。
0644nobodyさん04/01/10 19:46ID:???
本文



本文

と入力して、
<p>本文</p>

<p style="margin-top:3(←改行した数)em;">本文</p>

というように出力させるにはどうすればいいのでしょうか? 現在の掲示板では

# 複数の改行は段落に変換
$value =~ s/(<br \/>){2,}/<\/p><p>/g;

となっています。
0645nobodyさん04/01/10 23:55ID:???
>>643
一言だけ。
スレ違いっつーか板違い。CGI探しはWeb製作板へ。確か。
064664504/01/10 23:57ID:???
【CGI】こんなCGI探してますver.1.1【素材】
http://pc2.2ch.net/test/read.cgi/hp/1067286961/
0647nobodyさん04/01/12 01:32ID:+TyesD9W
Hyper Search (ttp://aki.adam.ne.jp/php/hysearch.php)を改造しようとしてます。
一枚のphpで左にメニュー右に検索結果と出るんですが
これをフレームで分割できるように出来るでしょうか?


全ファイル
ttp://junk.s41.xrea.com/test/hysearch.zip
0648nobodyさん04/01/13 12:41ID:???
>>647
できるだろ。
そんな糞面倒なこと俺は絶対やらないが。
できるかできないかで聞かれたからそれだけでこたえてみたが、
やり方はきかれても教えるつもりはない。
他の連中も教えるつもりがないから今まで黙っている訳で。
まあ、なんだ。努力する気が見えない奴には知ってる奴も教えたくなくなるってこった。
064964704/01/13 20:24ID:???
>>648
返答有難うございます
やっぱ面倒ですか。。。。
PHPの本片手に色々考えてみたんですが
僕の様なペーペーにはまだ無理ですね
もう少し勉強してきます<m(__)m>
0650nobodyさん04/01/13 20:33ID:0tJfIYqX
何て言うか、全くプログラムに無知でも検索とコピペで何とかなりそうなのを依頼してる奴は氏ね。
065164704/01/13 21:01ID:???
>>650
検索とコピペで何とかなるんですか・・・
一通り調べて分割するところまでは自力で出来たんですが
左メニューのリンクをtargetで右に表示させる方法を何とか探してる最中です。
もう少し頑張ってみますです。
出来上がったらソースを提出するのでダメだしお願いできますか?
0652nobodyさん04/01/13 23:54ID:???
>>651
HTMLの理解はCGIをやる上での前提事項だ。
これが一通りできないのであれば、CGIはやるべきではない。
出直してこい。悪いことは言わない。
基礎がないのに応用ができるわけはない。
これは、マジな忠告だ。
0653未承諾広告※ ◆aiY4htt2.2 04/01/14 00:26ID:???
その点、ちょっとでも HTML 絡みの話が出ると、「 Web 製作板逝って良し」ってなるのはちょっぴり悲しいかも。@内容にもよるけれども。
もしかしてそのお陰?で、不思議マークアップを吐き出す CGI スクリプト類が氾濫しているのだろうか?
0654nobodyさん04/01/14 01:31ID:???
>>653
中には、故意にそうしている奴もいるかも。
故意にinvalidなタグを吐いて、パクられた時の証拠にするみたいな。
0655nobodyさん04/01/14 02:50ID:???
>>653
運用情報板で不思議コード書いて「WebProg板へ逝って良し」と言われたのか?
0656nobodyさん04/01/14 07:03ID:???
>647
PHP的な処理で本当にフレーム分割しようとするとかなりの手間。

実はCSSとかJavaScriptでフレームっぽい外見/仕様にするだけなら比較的簡単。
http://www.42ch.net/UploaderSmall/source/1074031258.dat
(表示できない場合拡張子をhtmに)
もう少し練れば美しくできると思う。
ただ、ブラウザによっては小汚くなる。
0657nobodyさん04/01/14 07:09ID:???
と、補足忘れた。上記の例はCSSだけ使って、JavaScriptは使ってない。
で、美しさよりもフレーム分割っぽい外観に似せる事を重視してる。
美しくするにはどうすれば、とか、JavaScriptで実装するには?とかはweb製作板の人間に聞いてくれ。
■ このスレッドは過去ログ倉庫に格納されています