CGIだけど、なんか質問ある? Part 10
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/03/26 22:47ID:44KxXtaW※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
【Perl】初心者コーナー Part21
http://pc2.2ch.net/test/read.cgi/php/1047980851/l50
過去ログ・関連スレッドは >>2-5 あたりに
0448nobodyさん
03/05/02 20:56ID:???$dateっていうのが日時の変数で
2003年4月だったら → 20034
2003年12月だったら → 200312
のように月が1ケタだろうが2ケタだろうが "年+月" で作られるものだとします。
それを再び****年*月というふうに戻すのはどうしたらいいんでしょうか?
$date =~ /^(....)(.)/;
print "$1年 $2月";
↑もちろんだめでした。
2ケタの月なると1月とか2月になります。
どうかご教授お願いします。
0450449
03/05/02 21:02ID:???.+でなにか一文字以上にマッチ
0451449
03/05/02 21:04ID:???$m=substr($date,4);
0452$date =~ /^(\d{4})(\d{1,2})/;
03/05/02 22:27ID:???0453nobodyさん
03/05/03 01:03ID:w8OB8lWY初めの使用は0行目以外をランダム出力でしたので、
下の様にしていました。
@logs = <FILE>;
$rand = int(rand($#logs));
$rand = $rand + 1;
print "$logs[$rand]";
0と1行目以外をランダムするにはどうしたらよいのかお力をお貸し下さい。
0454動画直リン
03/05/03 01:10ID:TBhkUsV+0455369
03/05/03 01:25ID:???@logs = <FILE>;
@logs = @logs[2 .. $#logs];
$rand = int(rand($#logs));
print "$logs[$rand]";
0456nobodyさん
03/05/03 01:29ID:???@logs = <FILE>;
splice(@logs,0,2);
print "$logs[int(rand($#logs))]";
ではまずい?
0457nobodyさん
03/05/03 01:56ID:???$index = int rand (@a -2);
$index += 2;
0458nobodyさん
03/05/03 02:01ID:???CGIの運用に関する質問スレッドです。
※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
0459453
03/05/03 14:35ID:zFeuuQrEご返答ありがとうございました。
ところが、この後の処理で、
0行目と1行目とランダムで出力した行にカウント値を書き込むので、
@logsの0行目と1行目は削ることができません。
なにか良い方法はないでしょうか?
お力をお貸し下さい。
0460わか
03/05/03 14:52ID:cui/PBhYこのサイトは皆さんのお店を宣伝し
クーポンを発行し、お店にお客様を増やしたい
経営者様に立ち上げました。
http://www.c-gmf.com/index3.htm
http://www.c-gmf.com/index2.htm
0461nobodyさん
03/05/03 14:55ID:???CGIでできまふか
0462nobodyさん
03/05/03 15:12ID:???なぜCGIで、ポートスキャンをしようとするんだ???
そういうソフト探してきて、自分のパソコンですればいい。
CGIでした所で、サーバに負荷を与えるだけ。
0464nobodyさん
03/05/03 16:15ID:Ojvq+6lQ0465nobodyさん
03/05/03 16:24ID:???http://www.google.co.jp/search?q=%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB+%E7%84%A1%E6%96%99+%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF
4000件近くヒットしたので好きなの選んでください
0467nobodyさん
03/05/03 17:37ID:Mcb8v76L平成15年度 自作板PC環境調査 最新結果(一部抜粋)
★4月分の結果が出ました。現在は5月分に移行しています。★
平均年齢 25.4歳
ネット(2ch含) 78.7%
ゲーム 59.0%
Windows XP Family 46.9%
Windows 2000 Family 34.4%
Athlon 45.3%
Pentium 4 29.7%
平均RAM搭載容量 780MB
平均HDD搭載容量 166GB
nVIDIA 49.2%
ATI 28.9%
DVD-R/RW/マルチ 20.4%
CD-R/RW 75.9%
光ファイバー 8.3%
ADSL/xDSL 64.5%
CRT 74.6%
LCD 25.4%
0470nobodyさん
03/05/03 18:30ID:???0471nobodyさん
03/05/04 00:49ID:t0ATog/rビンボサーバーでドメイン取ったんですが、CGIを
どこにおくかがわかりません・・・。
どこにおけばいいですか?
0473369
03/05/04 05:28ID:???@logs = <FILE>;
@count = @logs[0 ..1];
@logs = @logs[2 .. $#logs];
$rand = int(rand($#logs));
print "$logs[$rand]";
@count のしょりとか
ushift(@logs,@count);
とかでどない?
0474nobodyさん
03/05/04 11:31ID:???$first = <FILE>;
$second = <FILE>;
# ログの取得
@log = <FILE>;
# 表示する行の決定
$line = int(radn()*scalar @log);
# 行の表示
print $log[$line];
# countの処理
$first ...;
$second ...;
# ログの保存
print FILE $first;
print FILE $second;
print FILE @log;
>>473よりちょっとだけメモリ効率がよくなった。
ま、たいしてかわらんとおもうが。
0476nobodyさん
03/05/04 15:44ID:ZCOzJV+D# 表示する行の決定
$line = int(radn()*scalar @log);
# ログの保存
print FILE $log[0];
print FILE $log[1];
print FILE @log;
0477453
03/05/04 16:25ID:81Mz2NEWありがとうございます。
なんとか下のように導き出していました。
0行目(カウント値A)と1行目(カウント値B)
2行目以降→ランダムで出力
chop(@logs = <FILE>);
$adn = int(rand($#logs + 1 - 2));
$adn = $adn + 2;
($a,$b) = split(/<>/, $logs[$adn]);
※$bはこの行のカウント値
print "$a";
$b = ++$b;
$logs[$adn] = "$a<>$b<>";
$x = "$logs[0]";
$logs[0] = ++$x;
:
教えて頂いた方法でも色々と試してみたいと思います。
0478動画直リン
03/05/04 17:10ID:c6ZqX6LO0479nobodyさん
03/05/04 20:30ID:???ヤフーオークションで出品物が落札され、落札者に金額等のメールを送る際に、
LWP::Simpleで落札されたページを読み込み、落札者のメアドやID金額を得てテンプレに組み込めば、メールの作成がかなり楽になるのでやってみたのですが、
http://page*.auctions.yahoo.co.jp/jp/auction/*********
とURLを入れてみても、ログインのページが読み込まれてしまいます。
しょうがないので現状はヤフオクの終了したページをローカルに保存しておいて、
<INPUT TYPE="file">にて保存したページを読み込んでやってます。
でも直に終了のページを読み込めれば楽なので、そうしたいのですが、
どなたか方法をご伝授してください。
0485479
03/05/04 21:08ID:???482は別人です。
ヒントお願いします。
クッキーってヤフオクが発行したクッキーと違うんですよね。
ブラウザに直にhttp://page*.auctions.yahoo.co.jp/jp/auction/*********って入れると、
ログイン画面じゃなく終了したページが表示されます。
0488nobodyさん
03/05/04 23:16ID:???一応マジレスしとく。
たとえ、URLを直打ちしても、クッキーは鯖に送られる。だから終了画面が出る。
従って、Perlのスクリプトでアクセスする時も同内容のクッキーを送る必要がある。
CGIのことではないんでそもそもがスレ違いなんだけれども、
ヤフオク出品者としては、終了分のページをコピペしてエクセルに貼り付けるのが一番早かった。
エクセルのピボットテーブル使って、誰がいくら落札したのかとかも簡単に出るしな。
そのデータをCSVかなんかにしてPerlで読み込んでメールの形に整形するのであれば、楽かも。
0489479
03/05/05 05:24ID:???マジレスthx
ブラウザURLを直打ちの場合。
ブラウザ「http://page*.auctions.yahoo.co.jp/jp/auction/*********の情報クレ!」
ヤフオク「クッキー送れ!」
ブラウザ「はいよ〜」
ヤフオク「http://page*.auctions.yahoo.co.jp/jp/auction/*********だよ〜」
漏れのヘタレスクリプト
ヘタレ 「http://page*.auctions.yahoo.co.jp/jp/auction/*********の情報クレ!」
ヤフオク「クッキー送れ!」
ヘタレ ・・・・・
ヤフオク「テメー!ログインしやがれ!」
っていうことですよね。
でもヤフオクの「クッキー送れ!」をどう判断すればいいのかな?
もうちょっと勉強汁か
0490nobodyさん
03/05/05 06:57ID:???×ブラウザ「http://page*.auctions.yahoo.co.jp/jp/auction/*********の情報クレ!」
ヤフオク「クッキー送れ!」
○ブラウザ「http://page*.auctions.yahoo.co.jp/jp/auction/*********の情報クレ!
ついでにクッキーも送っとく!」
0491nobodyさん
03/05/05 09:06ID:???サーバからクライアントに能動的に働きかけることはできない。
って言うかRFC要参照。
0492nobodyさん
03/05/05 19:23ID:???クッキーはクライアント側が送る件了解しました。
> スレ違いだと言うに…
今回はスレに合う話だといいんですが…
use LWP::Simple;
my $url = 'http://www.yahoo.co.jp/';
my $html = get($url);
これでどうやってクッキー送るの?ってのが今朝の段階。
今日仕事中ちょっと調べてみました。
LWP::UserAgentでなにやら参考になりそうなスクリプトが。
以下続く…
0493479
03/05/05 19:23ID:???my ($req,$res,$html,$ua,$buffer,$request,$referer);
while(1) {
$ua = new LWP::UserAgent;
$ua->agent('Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)');
$ua->timeout(120);
$buffer = 'cid=9&mid=mSendVote&poll_id=344&cginh=1&cgint=1&vote=1&submit=Vot
ez';
$request = "http://team.sports.com/cgi-poll/vote/vote.cgi";
$referer = "http://www.sports.com/fr/judo/";
$req = new HTTP::Request POST => $request;
$req->content_type('application/x-www-form-urlencoded');
$req->content($buffer);
$req->referer($referer);
$res = $ua->request($req);
$req = new HTTP::Request GET => $referer;
$req->content_type('');
$req->content('');
$req->referer($request);
$res = $ua->request($req);
$html = $res->content;
if ($html =~ /Nombre de votes: (\d+)/) { print $1."\n"; }
sleep 1;
}
0494479
03/05/05 19:26ID:???それに、無限ループのせいか$buffer、 $request、$refererを変更してみても動かない…
0495nobodyさん
03/05/06 00:44ID:???http://member.nifty.ne.jp/hippo2000/perltips/LWP.html
http://member.nifty.ne.jp/hippo2000/perltips/LWP/UserAgent.html
上記二つを読んで勉強汁!
0497479
03/05/06 19:55ID:???Thx!
でも、クッキーじゃ無理かも。
ローカルに保存されているクッキーをそのまま送ってもダメみたいですね。
クッキー見ても、漏れはname=valueなふうに出来ないから…
それに、クッキー晒すわけに逝かないから…
手詰まり。
0498479
03/05/06 20:25ID:???クッキーを送ることばかり考えていて、ドツボにはまっていました。
クッキーを受け入れることを考えいればよかったんです。
ありがとうございました。
0499nobodyさん
03/05/06 20:56ID:KEkb5AUG$countの値がずっと増えつづけます
これではだめなんでしょうか?
if ($count == 10) {$count == 0;}
よろしくお願いします.
0500nobodyさん
03/05/06 21:35ID:???$count = 0;
0501nobodyさん
03/05/06 21:46ID:KEkb5AUGありがとうございました。
こんなネタ出してもしょうがないでしょ?
出すならもっといろいろ考えてくるよ〜
0503nobodyさん
03/05/07 15:26ID:Lrc20pw6たとえば CGI_Lite.pm の入ってないサーバでそれを使いたいとき、
他所のサーバでは、
unshift(@INC,"CGI_Liteを入れたパス");
use CGI_Lite;
などとやれば出来たのですが、Hi-HO ではどうしても
できないです。
誰かできた人いらっしゃいませんか?
# 出来るところの方が少数派なのですかね。
0504nobodyさん
03/05/07 15:31ID:???0505nobodyさん
03/05/07 22:19ID:???ttp://home.hi-ho.ne.jp/support/qa/q_web.html#a20
まだ使ってる鯖あるのか。(´Д`; > Perl4
0506503
03/05/08 14:16ID:g4D/vFQlこれは私への解答でしょうか?
require("...../CGI_Lite.pm");
これでいいの?
動作は同じ?
>505
これらのサーバにも、非公式に perl5 入っているので、
みんなそっちを使っていると思う。
0507505
03/05/08 16:32ID:???BEGIN { require Module; import Module @list } と同じだよ。
ttp://www.kt.rim.or.jp/%7ekbk/perl5.005/perlmod.html#Perl_Modules
「use がどうしてもできない」なんて言うからもしや Perl4
使ってんじゃと思ったんだけど。CGI_Lite (これも97年か…)
は 5.002 以上だね。
ttp://search.cpan.org/src/SHGUN/CGI_Lite-1.8/
あと CGI に関係ない Perl の話はこっち。
http://pc2.2ch.net/test/read.cgi/php/1050369328/
0508nobodyさん
03/05/08 22:19ID:???20KB程度のテキストデータを、ただファイルに追記していった場合、
サーバに対して問題になるほど負担になりますか?
(「問題になるほど」というのは曖昧ですが、共有サーバで追い出されるほど
くらいの意味です。)
また、20KBものテキストデータを追記するような処理を行った場合、
どのような問題が起こると考えられますか?
(たぶん、データファイルからデータを読み込むときの方がサーバに対しての
負担で問題になると思うのですが、読み込みは行わないです。)
0512508
03/05/09 01:47ID:???>>511
20KBであってるんです。問題ないですかね?
つまり半角で2万文字くらいのデータをFLASHからCGIに送って、
記録させるだけのことなんです。
>>510
あー、そうでした。
自分、いつも一回ファイル開いて、ソートとかさせて書き込んでるんで、
単に追記していく、って考えると軽い処理って印象だったもんで・・・
>>509
仰るとおりですね。すいません、ちゃんとした質問できなくて・・・
とにかく、ありがとうございました。
問題なさそうですね。
0513nobodyさん
03/05/09 10:10ID:???排他処理とかやり始めるとまた問題が複雑化するが・・・。
0514nobodyさん
03/05/10 16:22ID:???10<>15<>12<>14<>9<>13<>12<>6<>8<>12<>9<>6<>8<>12<>6
<>6<>9<>8<>10<>5<>8<>10<>9<>12<>8<>8<>8<>7<>8<>7<>7
<>5<>5<>5<>6<>7<>5<>6<>9<>7<>10<>5<>12<>
CGIならばこれを$data[2]や$data[14]のようにすれば呼び出せるのですが
JavaScriptではこのデータをどのように呼び出したら良いのでしょうか?
先頭から順番に呼び出せれば良いのですが。
0516nobodyさん
03/05/10 18:25ID:ZT6z8dPVそこで送られたファイルネームを取得したいのです。
Content-Disposition: form-data; name="test_file"; filename="D:\html\file\up\test.jpg"
の部分のfilenameの値は、
ディレクトリの区切りの表現が、OSやブラウザによって文字が違うのですよね?
どういったものが来ると考えられるのでしょうか???
0517tantei
03/05/10 18:40ID:???●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●別れさせ工作
あらゆる手段を使ってターゲットを別れさせます!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
その他人生相談からどんなお悩みでも解決いたします!!
直通 090−8505−3086
URL http://www.h5.dion.ne.jp/~grobal/
メール [email protected]
■グローバル探偵事務所
0518nobodyさん
03/05/10 19:06ID:???http://accessplus.jp/staff/in.cgi?id=10645
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=neat
http://www.emzshop.com/goodstyle/
0519516
03/05/10 19:44ID:ZT6z8dPVline.sub!(/^Content-Disposition: form-data; name="(.*?)"(?:; filename="(.*)")?\r?\n/, '')
key = $1; filename = $2
として、既にいらない部分の削除と必要な値の取得を行っていたのですが、
実はこのコードが想定していないヘッダフィールドってあったりしますか???
ちなみにRubyで書いてます (^^;
0520nobodyさん
03/05/11 11:59ID:???CGI/Perlで、csvファイルをzip圧縮したものを吐き出したいと思ってます。
#! /usr/bin/perl
print "Content-type: application/x-csv\n";
print "Content-Disposition: inline; filename=ahya.csv\n\n";
print "hoge,hoge\n";
exit;
でcsvの吐き出しはできたのですが、
これをzip圧縮して吐き出すにはどうすればいいでしょうか?
ファイルをディスクに保存することなく、
上の様に直接ブラウザに吐き出したいのですが。
よろしくおながいします。
0521nobodyさん
03/05/11 13:10ID:???0522369
03/05/11 15:15ID:???まぁ、いいけど一応理論上は、
#! /usr/bin/perl
print "Content-type: application/x-csv\n";
print "Content-Disposition: inline; filename=ahya.csv\n\n";
print "Content-encoding: gzip\n\n";
・
・
・
でgzipにパイプするとかつかったり、
Compress::Zlib::memGzipを使うなりするんだけど
IEの古いバージョン使うとバグ有るし、
通信状態悪いと内容化けるわで、おおよそ使い物にならんわ・・・
0523nobodyさん
03/05/11 15:24ID:???それ、TCP的に失格。
0524369
03/05/11 15:34ID:???それをブラウザーに出しても意味ないんでないだろうか?
0525520
03/05/11 17:19ID:???しました。
スマソ…。
ZIPをブラウザに送ると
ダウンロードダイアログでますよね?
もちろん、MIMEタイプの設定はされてる前提で。。
それがやりたいのです。
CSVを出してもいいんですが、
容量がでかいとZIPで落とした方が速いので。。
gzipは
print "Content-type: application/x-gzip\n";
print "Content-Disposition: inline; filename=aheahe.csv.gz\n";
print "Content-encoding: gzip\n\n";
open(STDOUT,"| /bin/gzip -1 -c");
print "test,test\n";
これでいけましたね。。
0526nobodyさん
03/05/11 18:15ID:???0527369
03/05/11 18:30ID:???それ・・・
0528nobodyさん
03/05/11 18:35ID:???0529nobodyさん
03/05/11 21:15ID:???print "Content-Disposition: inline; filename=aheahe.csv.zip\n";
print "Content-encoding: zip\n\n";
open(STDOUT,"| /bin/zip -1");
これでいけない?
0530529
03/05/11 21:48ID:???0531nobodyさん
03/05/13 10:58ID:SyWfQmCJ0532bloom
03/05/13 11:10ID:rppJJuu/0533nobodyさん
03/05/13 16:25ID:???htaccessは弄れます。
クライアント側にバレないようにサーバサイドで
CSSやJSのUAによる振り分けがしたいんですよ。
htaccessでcssファイルもSSIっていうことにしたんだけど、
実際に埋め込む方法がわからない・・・。
<!--#cgi execではだめみたいです。
0534nobodyさん
03/05/13 16:25ID:???0535nobodyさん
03/05/13 16:48ID:???====hoge.html====
<html>
<head>
<title>hoge</title>
<link rel="stylesheet" type="text/css" href="hoge.css">
</head>
<body>
<h1>hoge</h1>
</body>
</html>
====hoge.css====
(ここにhoge.cgiをSSIで埋め込みたい)
====hoge.cgi====
#! /usr/bin/perl
print "Content-Type: text/plain\n\n";
print "h1{color:red;}\n";
この3ファイルがあったときに、hoge.htmlを開くと赤い字でhogeと出れば成功です。
ちなみに、hoge.htmlの<link>のところのファイル名をhoge.cgiとすると成功します。
が、それではスタイルシートの変わりにcgiを呼んでいることがバレてしまいよろしくないんです。
また、htaccessでhoge.cssをhoge.cgiにリダイレクトさせても成功したのですが、
それでもhttpヘッダを見るとやはりリダイレクトしてることがバレてしまいます。
まあ普通はバレないとは思うのですが、SSIを使ってCSSの中に埋め込むことが出来れば完全に隠蔽できるのでぜひそうしたいのです。
難しい説明もがんばって理解しようと思いますので、どうかよろしくお願いします。
0536梨
03/05/13 16:57ID:TFqCBiSstext/cssじゃだめ?
じゃなくて、まずはWebサーバの設定で
cssをssiとして読み込めるようにしなきゃいけないのでは。
0538動画直リン
03/05/13 17:10ID:rppJJuu/0539533
03/05/13 17:19ID:???cssファイルには、
<!--#exec cgi="hoge.cgi"-->
と記述すればよかったようです。
さっきそれでダメだったのは、
鯖のmimeタイプにcssがtext/plainってなっていたからのようです。
htmlファイル、cgiのcontent-type、さらに鯖のMIMEタイプを
どれもtext/cssで統一したらうまくできました。
梨さんがtext/cssじゃだめ?って言ったのは
そういう意味だったのですね。ありがとうございました。
どうも私はMIMEに関する理解が足りないようです。
やったーこれで完全サーバサイドのCSS振り分けが完成しそうです。
ありがとうございました。
0540梨
03/05/13 17:35ID:???あらあら。お疲れ様。良かった良かった。
説明不足&読み取り不足でごめんねー。
# SSIなんてまともに使ったこと無かったもんで、と言い訳。
0541nobodyさん
03/05/13 17:43ID:???糸口だったのは言うまでもないですよ。
0542nobodyさん
03/05/13 17:57ID:V26ov8co0543nobodyさん
03/05/13 23:19ID:???<!--#exec cgi="hoge.cgi"-->での出力を、
<link rel="stylesheet" type="text/css" href="hoge.css">
にして、.cssファイルは、各種、生ファイルで置いておけば?
SSIを複数にしたいときは、
<!--#include virtual="out_css.cgi?main" -->
<!--#include virtual="out_js.cgi?main" -->
というのも出来るし。
0544nobodyさん
03/05/13 23:34ID:wfiXqtGCどこにもそんなスクリプトが載っていません。
自分でCGIのプログラムを組む事ができない初心者ですが、どうかやり方を教えてくれないでしょうか。
0545nobodyさん
03/05/14 01:05ID:???帰ってください。
■ このスレッドは過去ログ倉庫に格納されています