CGIだけど、なんか質問ある?Part 5
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/12/26 10:51ID:???Part 3 http://pc.2ch.net/test/read.cgi/php/988727833/l50
Part 4 http://pc.2ch.net/test/read.cgi/php/1000804655/l50
その他参考になるスレッドを >>2 に纏めたので、十分に調べた上で質問して下さい。
0181あほ
02/01/05 19:55ID:???0182名無しさん@お腹いっぱい。
02/01/05 20:07ID:???ヒアドキュメントの最後の文字(この場合EOE)の前には入れられないよ。
0184名無しさん@お腹いっぱい。
02/01/06 00:52ID:4gpFhzTEこれのOS判別にWinXPがないんですが、
簡単に追加とかってできますか?
Web制作の初心者スレッドでこちらに誘導されました。
よろしくおねがします。
0186名無しさん@お腹いっぱい。
02/01/06 00:56ID:d7n79FF9えらーい!
まずreport.cgiから以下の一行を探す。
elsif ($agent2 =~ /Wind?o?w?s? ?NT ?5/i) { $os = 'Win2000'; }
<Lesson2>
そしてこれをコピペで書き変える。
この行はWin2000の上にXPが無いと、XPも2000で
ヒットしてしまうから注意してくれ。
elsif ($agent2 =~ /Wind?o?w?s? ?NT ?5.1/i) { $os = 'WinXP'; }
elsif ($agent2 =~ /Wind?o?w?s? ?NT ?5/i) { $os = 'Win2000'; }
0188184
02/01/06 01:28ID:4gpFhzTEさっそく、そのように直してみました。
WinXPの人がくるのを楽しみにしときます。
ありがとうございました。
0189名無しさん@お腹いっぱい。
02/01/06 02:01ID:???としないのか小一時間(以下略
>>187
5.1じゃなくて 5\.1 だっぺよぉ。
0190名無しさん@お腹いっぱい。
02/01/06 14:01ID:IdoSmDBFなんか本には基本すぎるせいか書いてない・・・鬱だ・・・
0191名無しさん@お腹いっぱい。
02/01/06 14:04ID:???; を書きたい所でLの右隣のkeyを押せばいいんだよ
0192名無しさん@お腹いっぱい。
02/01/06 14:15ID:IdoSmDBF命令の終わりにつけるとか?
0193名無しさん@お腹いっぱい。
02/01/06 14:17ID:???取り合えず文の終りに付けとけ
ついでにその本捨ててまともな本買え
0194名無しさん@お腹いっぱい。
02/01/06 14:36ID:???rubyには特に;は必要ありません。
だから本にも書いてないのでしょう。
0195名無しさん@お腹いっぱい。
02/01/06 14:51ID:???MS-DOSバッチファイルでは;は必要ありません。
だから本にも書いていないのでしょう。
0196190
02/01/06 14:54ID:???すいませんperlです、InlineCの中にInlineAssemblerで書いています
それでは 是非回答願います
0197名無しさん@お腹いっぱい。
02/01/06 15:01ID:???ここでPerlのところを読むといいよ。
下手な本よりよっぽどマシ。
0198名無しさん@お腹いっぱい。
02/01/06 18:53ID:3vLHBFrhだんだんデータが重くなり、Excelにコピペするのもかなり大変。
で、1週間毎のデータになるよう、ある時間できって、前の週の
データを全部削除してお尻(後ろのカラム)のデータの並びが
時々おかしくなってるんで、それを直してると4時間はかかり
ます。普通はどんなやり方をやってるんでしょ?VBA?Perlで
スクリプト?なんかいいスクリプトの場所キボーン。
0199名無しさん@お腹いっぱい。
02/01/06 19:13ID:???まず、落ち着いて日本語を書こう。
Perlなら楽だよ。
0200198
02/01/06 22:09ID:cayoIMr7ブラウザ上に表示されたものをコピペでエクセルに貼付ける。
(しかし、2000件を超えたあたりからCtrl+Aでブラウザ上の
テキストを全て選択すると砂時計が回ったままになる、)
この時前の週のデータは全て削除し、今週のデータだけにします。
あと、しかるべきカラムにないデータを移動。
これが1万件ぐらいあると、スクロールして全部見るだけで、とても
時間がかかる、どうしよう?というのが質問の主旨です。
0201名無しさん@お腹いっぱい。
02/01/06 23:05ID:???書き込む前に読み返してる?伝わりにくいったらありゃしない。
で、質問が漠然とし過ぎてる。
顧客からどういうデータを取って、どういう集計をして
最終的にどういうデータを得たいのかをはっきりさせて、
今はどうしてるのかを書かないと誰も答えられないよ。
並びがおかしくならないまともな集計スクリプト書いて、
エクセルファイルで出力したら?としか言えない感じ。
0202名無しさん@お腹いっぱい。
02/01/06 23:32ID:???>ブラウザ上に表示されたものをコピペでエクセルに貼付ける。
>(しかし、2000件を超えたあたりからCtrl+Aでブラウザ上の
>テキストを全て選択すると砂時計が回ったままになる、)
IEだったら、「名前を付けて保存」っていうのがあるはず。
テキスト形式で一度それを保存して、そいつをExcelで開くように
したら?
つーかCGIの問題ですかこれ?
0203名無しさん@お腹いっぱい。
02/01/07 00:13ID:???IEか固まるのは多分CGIではどうしようも無ぃ
0204名無しさん@お腹いっぱい。
02/01/07 00:42ID:BlOU+qgTひどく一般的な気がするんです。
あちこちにあると思います。それこそ。
ただ、それつかってどういうことがやりたいのかとか、
どういう集計をしないといけないので手作業してて、4時間もかかるのか
とか、いろいろ具体的に書けば書くほど、アドバイスをもらいやすくなるんでしょうね。
こういう集計とかって、Perlの得意分野なので、内容次第では、
ここですごいアドバイスがもらえると思いますよ(笑)
0205名無しさん@お腹いっぱい。
02/01/07 06:55ID:HrNqkraEみんなが投稿できるようなタイプのものです。
そういったCGIを提供しているところご存知ありませんか?
0206名無しさん@お腹いっぱい。
02/01/07 10:22ID:???ttp://www2.inforyoma.or.jp/~tokaji/cgitech/upload.htm
0207名無しさん@お腹いっぱい。
02/01/07 20:43ID:???同じリモートホストからスレ立て制限する方法ってありますか?
0208マジレスしていいのか?
02/01/07 20:52ID:???スレ立て時にリモホを記録して、一定回数以上のリモホを弾く。
0210名無しさん@お腹いっぱい。
02/01/08 00:49ID:RDtLz+8f0211210
02/01/08 00:55ID:RDtLz+8fCGIと同じディレクトリにあるファイルを送りたいのです。
0212名無しさん@お腹いっぱい。
02/01/08 01:59ID:???0213名無しさん@お腹いっぱい。
02/01/08 02:00ID:???とりあえず、これでも読んどけ。
ttp://www.hypermail.org/rfcs/rfc2112.html
0214名無しさん@お腹いっぱい。
02/01/08 02:11ID:???その手のRFCの日本語訳しているページってどこでしたっけ?
0215名無しさん@お腹いっぱい。
02/01/08 04:55ID:bkocNLwMその方法でも、redirect.cgi が Referer として渡されちゃいますよね。
redirect.cgi がもっと広範囲で使われてるならいいんですが、
そのブックマーク用スクリプトからしか呼ばれないのなら
結局同じような気がします。
(redirect.cgi から来た → ブックマークされとる)
0216名無しさん@お腹いっぱい。
02/01/08 07:03ID:???0217名無しさん@お腹いっぱい。
02/01/08 07:24ID:???あひっ、試したら Referer 渡されてませんでした。
試しもしないで偉そうなこといってごめんなさーい。
ありがとうでした。
0218名無しさん@お腹いっぱい。
02/01/08 07:30ID:mMhN1vkmerrry-to やreply-to って、つけるべきなんでしょうか?
Fromだけで十分ではないんでしょうか?
0219名無しさん@NEmacs
02/01/08 07:42ID:IRCUA1xTErrors-To: は非標準フィールドなので、つけても無意味です。内部的にこの
フィールドを利用してエラーメール返送する MTA がありますが、それを期待
するべきではありません。(これは UUCP 時代の名残です。)
Reply-To: は、返信先を指定したいような事情があるときにつけます。MTA は
通常これを参照しません。これを参照するMTAは腐っています。
必要であれば、エンベロープ送信者も指定します。エラーメールはこのアドレ
スに返送されます。(sendmail の -f オプション)
MTA = Mail (Message) Transfer Agent
# From: とエンベロープ送信者、To:, Cc: とエンベロープ受信者は別物です。念のため。
0220名無しさん@お腹いっぱい。
02/01/09 00:15ID:nYi4jqfK半角のみ(ゴルァとか)でデコードすると、文字化けして転送されてしまいます。
コードは'sjis'で設定してるんですが、ほかに何か割るいとこがあるんですか?
おまえら押しえてください。
0221名無しさん@お腹いっぱい。
02/01/09 00:30ID:???0222名無しさん@NEmacs
02/01/09 01:34ID:EMrXtxph(「半角」が混じると、EUC-JP と Shift_JIS の判定が困難になる。)
# ここで、「半角」= JISX0201 Kana
0223よみ
02/01/09 10:32ID:C5sUC2Kcあるファイル(10行のファイル)をOpen読み込んでたとえば5行目とかを消すもしくは置き換えるのにはどうしたらよろしいでしょうか?
お教えください
0224名無しさん@お腹いっぱい。
02/01/09 11:26ID:???Perlかな? 一番簡単な方法、たぶん。
# ファイル(hoge.txt)を開いて配列に突っ込みます
open FH,"+< hoge.txt" or die $!;
@lines = <FH>;
# 5行目をあぼ〜んする場合です
splice @lines,4,1;
# 5行目を置き換える場合です
$lines[4] =~ s/NO/YES/;
# 書き戻します
truncate FH,0; seek FH,0,0;
print FH @lines; close FH;
exit;
0225名無しさん@お腹いっぱい。
02/01/09 12:11ID:???DB_FileのDB_RECNOを使う
use DB_File;
use Fcntl qw(:flock);
my $db = tie @lines, DB_File => 'hoge.txt', O_RDWR | O_CREAT, 0666, $DB_RECNO or die $!;
# ロックする場合
open DBF, '+<&=' . $db->fd or die $!;
flock DBF, LOCK_EX or die $!;
undef $db;
# 5行目をあぼ〜ん (spliceは実装されてない?)
delete $lines[4];
# 5行目を置き換える
$lines[4] =~ s/NO/YES/;
untie @lines;
0226よみ
02/01/09 12:32ID:C5sUC2Kc親切にありがとうございました。
しかし我ながら223のようなわかりにくい文章書いてるな。
あーはずかし!
0227よみ
02/01/09 13:01ID:C5sUC2Kcしつもんです。
lines[4] =~ s/NO/YES/; だと、5行目のNOのところだけYesに置きかわるんじゃないですか?
0228名無しさん@お腹いっぱい。
02/01/09 13:26ID:???そうだね。
0229名無しさん@お腹いっぱい。
02/01/09 13:54ID:???>227
lines[4] = "新しく挿入したい文字列";
だよ。
後は検索しよー
0230_
02/01/11 00:46ID:w8TxSfcAcookieを1回の表示で2つ保存期間の違うものを保存したいのですが、
どのようにすればよいのでしょうか?
以下のようにすると、同じファイルに保存されます。
<META HTTP-EQUIV=Set-Cookie CONTENT=cgi_cookie=$c_value;expires=$del_date>
<META HTTP-EQUIV=Set-Cookie CONTENT=lim_cookie=$c_u_value;expires=$del_date_u>
教えてください。
0231名無しさん@お腹いっぱい。
02/01/11 01:17ID:???0232_
02/01/11 01:31ID:bEyApFVZ名前を変える方法を教えていただけませんか?
0233名無しさん@お腹いっぱい。
02/01/11 05:19ID:islSeYg6>>231じゃないが、取得するときに(どうやってるかしらんが、ハッシュ?)
そのメタタグに書いてある名前で判断すればよいということじゃないの?
0234名無しさん@お腹いっぱい。
02/01/11 13:27ID:2aMDT30w掲示板の名前欄で、デフォルトで最初から任意の文字を入れておくには
どうしたらいいんですか?
例えば名無しさんと最初から名前欄に入れておきたい場合、
$name = $FORM{'name'};
となってるのを下のものに変えるだけじゃだめなんですか?
$name = $FORM{'name'} ||= "名無しさん";
これだとダメだったので、他に変える部分が必要なんでしょうか?
0235名無しさん@お腹いっぱい。
02/01/11 13:39ID:???||= じゃなく ||
0236名無しさん@お腹いっぱい。
02/01/11 14:03ID:IFHU684Gそういうのって、サーバに負担がかかりやすいものなのでしょうか?
うちは、BBSを5つにチャットを2つ(全部さびれててますが)
カウンタも自分でCGIを探してきて用意してるので
負担をかけすぎて迷惑にならないか、心配です。
0237名無しさん@お腹いっぱい。
02/01/11 14:48ID:???アクセス解析は,呼び出される度に書き込むBBS みたいなものだから
ログサイズとアクセス数によりけり
0238234
02/01/11 14:51ID:2aMDT30wありがとうございます。
それでやってみましたが、名無しさんと入らなくて空白のままでした。
どうしてだろう…
0239名無しさん@お腹いっぱい。
02/01/11 14:58ID:???ローカルでテストしたら両方とも成功しました。
Perlのバージョンが古いとかはありませんか?
Perl4だとエラーが出たような。
0240240
02/01/11 15:00ID:3F158jXQNTにはわからないなりにもAnHTTPDとPerl for Win32を
いれて動かそうと考えています
2ちゃんねるそっくりな掲示板ソフトというのはあるのでしょうか?
教えてください
0241名無しさん@お腹いっぱい。
02/01/11 15:02ID:???http://pc.2ch.net/test/read.cgi/php/1003132904/
スレタイトル読みましょう。
0242あほな質問かも
02/01/11 15:09ID:???まったくもってよくわかりません。
use CGI;
$query = new CGI;
print $query->header(-type=>"application/octet-stream", -attachment=>'data.txt');
$filename = $query->param('attachment');
open OUT,">>data.txt" or die "OUT miss\n";
print OUT @hoge;
close OUT;
こんな感じかと思ったんですができません。
0243名無しさん@お腹いっぱい。
02/01/11 15:18ID:???>>13 はダウンロードの話じゃない?
0244243
02/01/11 15:21ID:???ファイル開かずにそのまま print @hoge; とかでいけない?
0245242
02/01/11 15:58ID:???おお、なるほど。できました。ありがとうございます。
4時間ほど悩んでおりました;
しかしダウンロードするファイル名がCGIの名前(これはtest.cgiでやってるの
でtest.cgiという名前)になってしまうんですよねぇ(^^;
もうしばらく格闘してみます。
感謝
0246名無しさん@お腹いっぱい。
02/01/11 17:11ID:EHUnad42時って 1 のような感じになりますよね。
<font size=\"3pt\" color=\"$color1\"> ←1とする。
<font size="3pt" color="$color1"> ←2とする。
1 のようにしたときと 2 のようにしたときでは表示が違うのですが・・・。(文字の大きさ)
2 のような感じで表示したいのですが・・・インターネットサーバーエラーがでてしまいます・・。
どうにかできないでしょうか?
0247名無しさん@お腹いっぱい。
02/01/11 17:16ID:???print '<font size="3pt" color="$color1">"; ←<font size="3pt" color="$color1">
言いたいことがよくわからん
つか3ptなんて記述は間違ってるぞ
0248名無しさん@お腹いっぱい。
02/01/11 17:24ID:???"の中には"を使えないのは知ってるかな?
ちなみに3ptってのはスタイルシートで使う単位だから
そのままでは使えないよ。
0249名無しさん@NEmacs
02/01/11 21:15ID:fZtnJrfW>>234, >>235
||= でも、$name = ($FORM{'name'} ||= "名無しさん");と解釈されるので特
に問題はないかも。この場合、$FORM{name} が偽の場合、$name, $FORM{name}
が「名無しさん」になります。
あと、$FORM{name} が偽、すなわち $FORM{name} == 0 の場合でも「名無しさん」
になっちゃうので注意。"" と比較するのが吉かもしれず。
0250235
02/01/11 23:11ID:6cFSC0f9$name = ($FORM{name} eq "") ? "名無しさん" : $FORM{name};
0251名無しさん@お腹いっぱい。
02/01/12 12:41ID:bQnlwZdCstyle="text-size: 9px"とか埋めればよし。
だいいち、3ptってPCじゃフォントがつぶれて読めないが・・・
それに元々qqいらないな、この場合
<font size=3 color=$color1>でいいんじゃ?
0252名無しさん@NEmacs
02/01/12 17:52ID:???ハァ?
http://www.w3.org/TR/REC-CSS2/syndata.html#length-units
0253_
02/01/13 00:12ID:gKFm/uwAdateという名前の配列があり、$date{'check1'}、$date{'check2'という風に
数が上がっていきます。
forループで i の値を1からインクリメントし、その i の値を使って配列中
の全ての要素に同じ事を実行する際に
$date{'check$i'}
みたいなことはどのようにすればよいのでしょうか?
0254名無しさん@お腹いっぱい。
02/01/13 00:35ID:???%date = (check1 => one, check => two);
として,
素直にやるなら
for (my $i=1; $i<=2; $i++){
print $hash{"hoge$i"};
}
とかやる。
だけど,これだとハッシュ使う意味が無い。
@date_checkとかの配列使うほうがいいのでわ。
0255_
02/01/13 00:39ID:gKFm/uwAありがとうございました。
@date_checkでやります。
0256名無しさん@お腹いっぱい。
02/01/13 12:41ID:???ランキングとかをSSIで1部だけ表示することは可能らしいんですが、
初心者なのでどう記載すればいいかわかりません。
どなたかご教授ください。
0257名無しさん@お腹いっぱい。
02/01/13 12:46ID:???0258
02/01/14 01:36ID:LNUBzUKr掲示板CGIで、ここ2Chのように半角カタカナを表示できるようにしたいのですが
(例) (ワラ (バク など
どこをイジればよいのかわかりません。
具体的にはKENTさんのhoneyboardを改造したいのですが・・・。
http://members.tripod.co.jp/pokochin_denpato/honey.txt
それともjcode.plの方をイジるのでしょうか?
どうかお力をお貸し下さい。宜しくお願いいたします。
0259名無しさん@お腹いっぱい。
02/01/14 01:55ID:a1RCZc6A$gCode = jcode'getcode(*value);
jcode'convert(*value,$gCode);
とやってる。一応うまく逝ってるが。
*valueは変換する文字列データが入った$valueのグロブ。
0260259
02/01/14 01:56ID:a1RCZc6A0261258
02/01/14 02:14ID:LNUBzUKrえっと、これはCGI本体の中を書き換えるんですよね?
デコード処理のところで
# S-JISコード変換
&jcode'convert(*value, "sjis", "", "z");
# タグ処理
if ($tagkey) { $value =~ s/<>/<>/g; }
else {
$value =~ s/\&/&/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
}
というのを見つけたんですが、ここで良いのでしょうか?
0262259
02/01/14 02:29ID:a1RCZc6A0263258
02/01/14 02:39ID:LNUBzUKrありがとうございます。挑戦してみます。
0264名無しさん@お腹いっぱい。
02/01/14 02:44ID:WCoaMU5BCGIから、sendmailを使って、メールを送ろうとしているのですが、
他のCGIをマネて、
if (open(MAIL,"| $sendmailpath $mailaddress")) {
print MAIL "To: $mailaddress\n";
print MAIL "From: $mailfrom\n";
print MAIL "Subject: $subject\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $mailer\n\n";
(中略)
close(MAIL);
}
このように書いたのですが、
メールヘッダの部分が、ちゃんと受け取れる(Subject等がちゃんと反映される)宛先と、
ちゃんと受け取れずに、Subjectとかが本文に含まれちゃう宛先があります。
ちゃんと全てのメールアドレスのヘッダに反映されるようにするには、
どのような書き方をしたらいいのでしょうか?
それとも・・・メールサーバ側の問題なのでしょうか?
0265名無しさん@NEmacs
02/01/14 03:06ID:Xxk0RT5R$mailaddress =~ tr/\r\n//d;
0266名無しさん@NEmacs
02/01/14 03:07ID:Xxk0RT5R$mailaddress = "|rm -rf ~" とかやられたりすると危険だよ。
0267
02/01/14 03:37ID:2XDiqt89CGIからのメールは送信元と送信先が固定の場合のみ利用するのがおすすめです。
メールは必ずJISコードに変換しましょう。
件名(Subject)および送信元(From)が日本語を使用する可能性がある場合はbase64エンコードを施しましょう。
0268名無しさん@お腹いっぱい。
02/01/14 06:22ID:U3ggfQwhそのログがさっきから見つかりません。どなたか覚えてる方いませんか?
こんな↓感じの奴です。
$str = "ABCDEFGあいうえお";
for ($i = 0; $i < length($str); $i++) {
$c = substr($str, $i, 1);
if ($c =~ /[\x80-\xff]/) {
$c = substr($str, $i++, 2);
}
print "[$c] ";
}
これをShift-JIS等にも対応させてた気がするんですが…
0269名無しさん@お腹いっぱい。
02/01/14 14:26ID:???内部で扱うときはEUCにしておいた方が何かと楽だと思うがどうよ?
0270268
02/01/15 00:25ID:64oBMleE0271名無しさん@お腹いっぱい。
02/01/15 01:55ID:ueOEc5lOスクリプト自体は多分EUCだからそうしたほうがいいような
IISだったら話はべつだけど
0272名無しさん@お腹いっぱい。
02/01/15 16:41ID:6vPjko5Fクライアント(あるいはPROXY)に書き換えられるような恐れは
ないのでしょうか?
REMOTE_ADDR
REMOTE_PORT
0273名無しさん@お腹いっぱい。
02/01/15 17:47ID:???0274名無しさん@お腹いっぱい。
02/01/15 17:58ID:6vPjko5F仮に PROXYから
REMOTE_ADDR=127.0.0.1
などと逝ってきたばあいに、サーバがその変数を信用してしまう
のか、それともPROXYとの接続結果からサーバが
REMOTE_ADDR を計算するのか、どちらなんでしょうか、 という
ことなんですけど セキュリティ板の方がいいですかね?
0275名無しさん@お腹いっぱい。
02/01/15 20:19ID:vgO+6jY4これについて質問があります。
http://www.japandeep.com/
収録したRefererを↑のように表示したいのですが
どういうタグを付ければいいのですか?
SSIで表示させてるみたいなんですが。
0276名無しさん@お腹いっぱい。
02/01/15 20:23ID:???プロキシが言ってくるとかじゃなく、プロキシのIPアドレスになります。
変更はされません。
0277名無しさん@お腹いっぱい。
02/01/15 20:24ID:ori6SaQV設置しようと思ってるんですけど、そういうのって
鯖への負担は普通のBBSと一緒なのでしょうか?
あんまりプロバの鯖に負担をかけなくないので気になってしまいました。
0278名無しさん@お腹いっぱい。
02/01/15 20:35ID:???借りてるサーバだったら、文句いってくるレベルが迷惑なレベル。
正直、サーバのCPUとかメモリとかOSのカスタマイズによって
全然違うから一概にはいえない。
0279名無しさん@お腹いっぱい。
02/01/15 20:42ID:???. ∧ ∧
( ´ ・∀・`) へー
0280名無しさん@お腹いっぱい。
02/01/15 22:22ID:6vPjko5FTHX
とりあえず信用置ける値であるということですね。
0281名無しさん@お腹いっぱい。
02/01/15 23:30ID:rRhCMmF5重複を防ぐためクッキーを発行するんですが
クッキーを入れていないと投票できないようにしようと思い
if(!$ENV{'HTTP_COOKIE'}){&err('クッキーをオンにしてください')}
みたいにしたんですがクッキーをONにしててもこのエラーが起こるらしいです
どうすればよろしいんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています