CGIだけど、なんか質問ある? part 6
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/04/23 20:28ID:Kp0cZQna<<注意:CGIは特定の言語に依存するものではありません>>
Perlのコーディングに関する質問はこちら
【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/
過去ログは>>2
0705nobodyさん
02/06/18 11:12ID:???Unix系なら、rename実行時にファイルが壊れることは
ないと思っていいんじゃない。詳しくはrename(2)のman参照。
むしろ1回目と2回目のrenameの間でプロセスが死んだ場合などに
ファイルAとCの不整合がおきるほうが可能性は高そう。
それから、わかってると思うけどopen、flock、renameを
実行したときは必ず戻り値を見てエラーチェックしる。
0706703
02/06/18 11:18ID:???>>704
一応シグナルハンドラを設定してロックは解除するように
してます。というかflockってプロセスが死んだら自動的に
解除されませんでしたっけ?
>>705
はい、戻り値を見てエラーチェックして、途中でエラーが
発生したら前のファイルは元に戻るようにしてます。
まあ戻らなくてもいいものがほとんどなので一部を除いて
そのままですが。
というわけでありがとうございました。
0707nobodyさん
02/06/18 16:13ID:yIzQCv5hPGPで暗号化して送信したいんです。
さんざん検索したんですが、
個人間でやりとりするメールを暗号化する話しかひっかかりませんでした。
サーバはレンタル、メール送信する際はsendmailを使ってます。
なんかいいやり方や情報、お願いします。
# 他スレでも質問しましたが、板違いとのことでしたので、
# マルチではないと思います。
0709nobodyさん
02/06/18 18:58ID:???しかし、そこから例えば**.cgi?mode=search_1にアクセスしても飛ばないのです。
直接**.cgi?mode=member_viewとかでもダメでした。
多分処理のさせ方が変じゃないかと思います。何処が悪いかこれだけでわかりますか?追加2箇所削除すると正常です。
if ($u_agent eq "5") { &pc; } #PCメイン←ここ追加
else { &in_form; } #携帯メイン←ここ追加
if ($in{'mode'} eq 'member_view') { &members_view; }
elsif ($in{'mode'} eq 'mailform') { &mailform; }
elsif ($in{'mode'} eq 'sendmail') { &sendmail; }
elsif ($in{'mode'} eq 'search_1') { &search_1; }
elsif ($in{'mode'} eq 'search_2') { &search_2; }
else { &manual; }
これ以外でcgiにアクセスされた時PCの時は"&pc"処理。携帯は"&in_form"処理させる方法があれば教えて下さい。。
0710nobodyさん
02/06/18 19:01ID:???http://www.harukaze.net/~mishima/perl/module/mlstj2.html#2-14
簡単に使えるようになるのは、まだ先の話ってことなんだろか?
0711707
02/06/18 19:15ID:???レスさんきゅ!
今のレベルのオイラにはサパーリでしたが、
簡単にはできないという結論ですよね。
オンライン通販してるショップサイトにて「SSL+PGPで安心!」とあったので
どうやってるんかなと単純に疑問を持ったのでした。
0712nobodyさん
02/06/18 21:33ID:???fmlのパッケージの中に、libpgp.pl なるモノがあった
パッと見た感じは、別途導入した pgp へのI/Fのようだ
ま、ご参考までに
0713nobodyさん
02/06/18 22:02ID:???0714nobodyさん
02/06/18 22:26ID:T2Ry5zLo0715nobodyさん
02/06/18 22:52ID:???0716nobodyさん
02/06/19 03:50ID:???CGIを使えるサーバで、.htaccessも使えるかどうかはどうやって確認すれば
いいのでしょうか?ISPのサーバだと、CGIはOKでも.htaccessは不可だったのですが、
ISPやレンタルサーバのFAQには特に明記されてなかったので、困ってしまって……。
サーバ管理者にメールなどで問い合わせるしかないのでしょうか?
新しくサーバを借りようと思います。お勧めのサーバがあれば、
上記の質問に併せてご推薦いただければと思います(こっちは板違いなので
無視して頂いてもいいです)。
具体的には、特定の人に対して、index.htmlのあるフォルダへのアクセス制限かけたいんです。
宜しくお願いします。
0719nobodyさん
02/06/19 11:46ID:???場合、パタ−ンマッチしたあとなにをすればいいのでしょうか?
0720nobodyさん
02/06/19 12:09ID:???0721719
02/06/19 12:27ID:???useridを検索してその個人情報を書き換える方法がしりたいです。
0724nobodyさん
02/06/19 12:37ID:???ここは【Common Gateway Interface】に関するスレだよ
0725nobodyさん
02/06/19 12:37ID:???普通にファイルを読み読みながらマッチした部分があれば書き替えて一時ファイルに
書き込んでいき、リネームする。これをファイルロックを使ってやればいいのでは?
0726719
02/06/19 12:42ID:???while(<FH>)
if (/マッチさせるもの/)
でマッチングに成功したんですがこの方法だとどうやってマッチ行の文字列
を書き換えていいのかわわらなくなってしまい、
別の方法があれば教えてもらおうかと、、。
>>724 意味がわかんないんですけど
0727725
02/06/19 12:48ID:???while (<FH>){
if (/\Q$in{'KEY'}\E/o){
ここでマッチした行の書き替えたい部分をすりかえる
}
}
724さんとしては、WEB上からのデータを扱っていてもつまづいてる部分の
処理内容はCGIの部分とはべつものだということ。
0729719
02/06/19 12:58ID:???>>727の方法を勉強してみます。
パタ−ンマッチでやるのとfor文で$iを増加させて$list[i]で一行づつ
照らし合わせる方法もなくもなかったんですがなんとなく
処理負荷がマッチよりかかる気がして、、、、実際のとこどうなんでしょう?
0730725
02/06/19 13:02ID:???0732725
02/06/19 13:10ID:???0733ト−シロ
02/06/19 13:33ID:???これなら配列で書換え可能でした。
どうもお騒がせしました。
0734nobodyさん
02/06/19 14:44ID:es/NDl1S日本語ファイル名対応のがいいです。
0735nobodyさん
02/06/19 14:46ID:???0737nobodyさん
02/06/19 23:37ID:???0738nobodyさん
02/06/19 23:42ID:???use IO::Socket;
use FileHandle;
なぜか文字ばけします
#require 'C:\Inetpub\wwwroot\test\jcode.jl';
$host = 'localhost';
$port = 6060;
文字コードはこれが一般的なのかな?
print "Content-type: text/html\; charset=EUC-JP\n\n";
#print "$host:$port<p>";
$socket = IO::Socket::INET->new(PeerAddr => $host,
PeerPort => $port,
Proto => 'tcp',
);
if ( ! $socket ){
die "misss<p>";
}
print $socket "ON";
$socket->flush();
この辺りで、止まってますどうしてでしょうか???????
ここが一番わかりません!
#$buf = <$socket>;
#print "$buf";
while(<socket>){
print $_;
}
print $socket "END";
print "END<p>\n";
$socket->close();
0739nobodyさん
02/06/19 23:45ID:???↓
require 'C:\\Inetpub\\wwwroot\\test\\jcode.jl';
0740nobodyさん
02/06/20 11:01ID:???CGIとは関係ないようだが?
つーか自分で理解できないコードを書くなよ。
どこかから移してきたのならその「どこか」を書け。
いきなり「ソース診てもらえませんか」もないもんだ。
>>739
試してみれば判るけど、バックスラッシュは一つで問題なし。
0741nobodyさん
02/06/20 14:32ID:qw4hZtl9sendmailを使ってのフォーム送信CGIでmailtoの宛先に
間違って存在しないメールアドレスを記述してしまった場合、
その送信フォームCGIから送られたデータはどこにいってしまうのでしょうか?
存在しないので送り返されるとしたらどこに戻ってくるのでしょうか?
0742nobodyさん
02/06/20 14:51ID:???ブラウザ上でHTMLのテキストフィールド(<input type="text">)にデータを入力し、
submitボタンを押したらCGIを呼んで、そのCGIからExcelのシートにどうにかデータを渡せないでしょうか?
つまりはCGIからExcelにデータを渡したい・・・と。
よろしくお願いします。
0743レベル落ちたねぇ…
02/06/20 15:15ID:???( ゚д゚)ポカーン
0744.
02/06/20 15:18ID:???Excelのシートってのはアプリ固有のフォーマットを持ったファイルだろ。
不可能とまでは言わないが、それをCGIで処理は無理があるだろう。
せいぜいCSVにでも書き出してローカルでインポートでもしたら?
0745738
02/06/20 17:08ID:???ここを参考に、CGIからソケットで独自のサーバにつなぐプログラムを
つくっています。現在では通信テストの段階でアプリプロトコルの設計
は、HTTPを参考に開発しようと考えています。
http://x68000.startshop.co.jp/~68user/net/module-1.html
サーバ:IIS5
CGI:ActivePerl5 DLL
@構成
ブラウザ→CGI/Perl→(ソケット通信)VBサーバ
@最大のトラブル
CGIからVBサーバにソケット送信して、そのエコーを受け取りたいのですが
CGIプログラムが正しく動作しません。VBの動作はTelnetで確認しました。
CGIのPrint文で止まります。問題のコードは次のとおりです
問題のコードと思われるパターン1
$buf = <$socket>;
print $socket "$buf";
問題のコードと思われるパターン2
while(<socket>){
print $_;
}
いづれも、VBエコーを表示できません。
どこがおかしいのかよろしくお願いします。
0746738
02/06/20 17:23ID:???エコー機能は成功しました。
$buf = <$soket>;
print "$buf";
ただ、このコードが成功しません
while(<$socket>){
print $_;
}
このコードが止まりません。
ソケットを切断するととまりました。
どうしてでしょか?
あと日本語が表示されません。化けます
jcode.jpを要求したのに、どのように合わせたらいいですか?
0748nobodyさん
02/06/20 18:23ID:cqGMaGWX自動的にデータベースに登録や削除するスクリプトは
どんな感じになりますか?
0750738
02/06/20 18:40ID:???わかりますた。文法はPerl板へ逝きます
文字コードについてだけおしえていただけませんか?
xxx.cgi ← シフトジスで保存してます
CGIはこうかいてます
print "Content-type: text/html\; charset=EUC-JP\n\n";
つまり、ブラウザではシフトジスをEUCに変換して表示ということ
でよろしいでしょうか?
0751nobodyさん
02/06/20 19:06ID:???違う。変換はちゃんと変換処理する必要がある(jcode.plなどで)
>print "Content-type: text/html\; charset=EUC-JP\n\n";
これはただブラウザに「このテキストの文字コードはEUC-JPです」と伝えているだけ。
だから当然テキスト自体がShift_JISなら文字化けする。
0752nobodyさん
02/06/20 19:12ID:???今はPATH_INFOから読んでいるようですが、
QUERY_STRINGではなくPATH_INFOから読むことにどのような意義があるんですかね?
送信する文字数が減るだけ・・・ではないと思うのですが・・・
0753nobodyさん
02/06/20 19:14ID:???これでうまくいきました
print "Content-type: text/html\; charset=SHIFT-JIS\n\n";
jcode.jpをはずしましたが、同じように動きました。
jcode.plは、どのような働きがあるのでしょうか
0754nobodyさん
02/06/20 19:39ID:???まあ2chの場合は転送量が減ることが大きかったよな。
一般には、ttp://domain/download.cgi/hoge.jpg みたいなURLは
ローカルに保存するとき"download.cgi"じゃなく"hoge.jpg"という
ファイル名になる(ブラウザがごまかされる)ので便利。
0755nobodyさん
02/06/20 21:02ID:???jcode.plは文字コードを変換したりするためのもの。(JIS SJIS EUC)
意味わからずにどうやって使ってたのか不思議だ。
>print "Content-type: text/html\; charset=SHIFT-JIS\n\n";
書き方間違ってるし・・。
○ print "Content-type: text/html; charset=Shift_JIS\n\n";
075662
02/06/20 21:32ID:???require でjcode.plしても日本語が正しく表示できるのが不思議だ
xxx.cgi Shift-JISで保存
charset=Shift_JIS でブラウザ表示
このときは、jcode.plが必要ないということでいいですか?
UNIXのときは
xxx.cgi がEUCか何かになるのでjcode.plがいるということですか?
0757nobodyさん
02/06/20 21:36ID:???何を言っているのやら・・・
jcode.plのgetcodeである文字列の文字コードを取得したり、
convertである文字列の文字コードを変換したりする
require は別ファイルのスクリプトを利用可能にするだけ
コーディング以前に勉強すべきことが山ほどあるぞ
0759752
02/06/20 23:22ID:???なるほど・・・やはり転送量の問題でしたか。
ファイル名がそうなるのは知らなかったですわ。
画像を出力するCGIにこれは便利ですな。
Thanx.
0760nobodyさん
02/06/21 00:31ID:???で、jcode 関係で熱くなっている所スマンが、それがどう【CGI】と関係あるの?
単なるコーディングの話じゃぁ?
0762nobodyさん
02/06/21 00:40ID:???0763nobodyさん
02/06/21 03:49ID:???うんうん。
ttp://domain/download/hoge.jpg
(downloadはCGI)
としておくと、見た人も気づかないし。
0764nobodyさん
02/06/21 13:09ID:???0765nobodyさん
02/06/21 13:33ID:???0766nobodyさん
02/06/21 13:47ID:???さくらインターネットと言うCGI可能サーバーを利用しています。
配布している掲示板を設置してパーミッションや転送は案内通り何回
も確認しながら行いました。しかしエラー番号500の連続です。
試しに INDEX.HTMLをINDEX.CGIに変更してアップしましたがそれでも
エラー500と出ます。これは設定とかの問題ではなくサーバー問題で
しょうか??
0767nobodyさん
02/06/21 14:19ID:???どの様な方法がよろいしいでしょうか?
0768s
02/06/21 14:32ID:???それって、CGIをアップできる環境でってこと?
0770s
02/06/21 14:38ID:???恐らく、拡張子を小文字にすればいいのでは?
その他では、さくらインターネットがどういう仕組みになってるか知らんけど
個別に .htaccess を設定するようになっているとか。
0771nobodyさん
02/06/21 15:04ID:???http://pc.2ch.net/test/read.cgi/hp/1024149705/278
おまえ、ここでも聞いてるだろ
0773xx
02/06/21 15:17ID:???ふうーん。CGI規制って、どすんの?
AddHandler cgi-script .cgi の行をコメントにしてリスタートかける
のかね?
0774nobodyさん
02/06/21 17:23ID:nrprTantホームページを作成にあたり改行コードや出力漢字コードなどの
設定は必要でしょうか?
0775xx
02/06/21 17:26ID:???CGIを動作させるサーバ環境に合わせれば?
0776nobodyさん
02/06/21 17:40ID:???改行コードは、UNIX では一般に LF が使われ、
DOS、Windows、OS/2 では CR+LF が使われています。
0777nobodyさん
02/06/21 19:26ID:???/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 今だ!777ゲットォォォォ!!!!!
\__ ________
∨ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
日 凸 ▽ ∇ �U < お客さん、暴れないでよぉ
≡≡≡≡≡≡≡ ∧ ∧ \____________
�U ∩ [] % Σ(゚Д゚,,) ゴルァ!? (´´
ヾ∇ ∧∧ ) |つ∽ (´⌒(´
日ヾ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (´⌒(´⌒;;
ズサガッシャーン!!
━┳━ ━┳━
0778nobodyさん
02/06/21 21:20ID:???cgiをサーバーに転送しましたがどうやらcgiとして認識をしてくれません。これってどう言うことでしょうか?
0779xx
02/06/21 21:37ID:???(UNIX系同士またはWindows系同士など)だったらバイナリモードで送れば
いいし、違っていればFTPのサーバ側(リモートホスト)とローカル側を設定
すればいいでしょう。
0780>>778
02/06/21 21:44ID:???ホームページビルダーなどの転送モードはテキストで上げてます。
しかしPLファイルなどは認識していますがcgiに関してはデレクトリー
では ? になってcgiではないみたいなのですが。。。
テキストでいいのだが、?とはファイル名そのものなのか拡張子なのか
0782>>778
02/06/21 21:59ID:???0783xx
02/06/21 22:07ID:???それはそのサーバのサポートページで調べるか問い合わせなさいよ。
それより、認識しないとか?になってるとか言ってるけど、
【何をしたら】【どうなったのか】
あるいは
【どうやって確認して】【どうなっているのか】
それを書かなきゃわからんよ。
0785>>778
02/06/21 22:31ID:???転送後のパーミッション設定はCGI配布先資料など確認しながら行いました。
>>784
さくらインターネットのバーチャルドメインって言う事ですが5日前に1回
2日前に1回問い合わせをしましたが返信が無い状態です。
Index of /mmm
Name Last modified Size Description
--------------------------------------------------------------------------------
Parent Directory 21-Jun-2002 22:21 -
?acb.cgi 21-Jun-2002 21:49 4k
--------------------------------------------------------------------------------
Apache/1.3.26 Server at www.XXXXXXXXX.com Port 80
?って表示されます。
0786nobodyさん
02/06/21 22:39ID:rH/nmPPcサーバーエラー500って言うのは
1:.htaccessの書式に問題がある
2:CGIファイルやディレクトリのパーミッションが異常
3:CGIが正しく動作していない(CGIプログラム内のエラー)
4:改行コード(LFのみ)または漢字コードがただしくない
どういう文面で問い合わせたのか知らんが、元質問みたいなのなら
意味がわからなくて困ってるのかもしれん。
それはいいとして、?についてだがファイル名に認識できない文字が
含まれると?になる場合がある。
ファイル名のacb.cgiの前、■■■acb.cgiというように■の部分が
何かそういう文字になってないか?
0788>>788
02/06/21 23:25ID:???#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<TITLE>Perl Script Test</TITLE>\n";
print "Hello World\n";
print "</HTML>\n";
パーミッション設定OK・テキスト送信OKで通常なら
HELLOって出てくると思うのですがサーバーエラー500となります。
.htaccessによるCGI許可を設置もして確認して見ましたが意味が無かったです。
0789nobodyさん
02/06/21 23:27ID:???0790xx
02/06/21 23:29ID:???Perlパスはあってるの?
>789
NPHスクリプトじゃないんだからぁ。
0791nobodyさん
02/06/21 23:37ID:???0792cgi-bin
02/06/21 23:48ID:???漏れもさくらネット使っています。
Home <=問題はここに6種類の.logとか色々あると思いますが、
| アクセルログ以外で最近更新した所ありますか?もしあれば
| 自PCにダウンロードして確認して下さい。
| PS漏れも経験しましたが1回設定ミスしてHome訳の分からん
| ファイルが形成されてました。削除してうpして見て下さい。
WWW←ここよりファイルを入れる所!
|
0793いきなり・・・
02/06/22 01:51ID:2uyfCrpEhttp://www.kent-web.com/でDLしたGATE-Xなんですが、
pass.cgiが開けないというエラーがでてしまいます。もち、
該当するファイルが全部UPして.txtを.cgiに変更してUPしています。
おそらく原因はpass.cgiの中にある1文だと思うのですが・・・
---------------------------------------------
# 隠しディレクトリ (gatex.cgiの設定と合わせること)
$target_dir = "/home/kent/private_html";
---------------------------------------------
↑ここの入力なんですが、例えば・・・
http://www.abc.co.jp/123/456 がプロバイダーから貰ったURLだとして
このCGIを入れているファルダが・・
http://www.abc.co.jp/123/456/cgi-bin/gatex
だとすると、この上の記述ではどこからどこまでを記入しないとダメなんですか?
0794いきなり・・・
02/06/22 02:02ID:???おそらく原因はpass.cgiの中にある1文だと思うのですが・・・
↓
おそらく原因はcook.cgiの中にある1文だと思うのですが・・・
0796>>778
02/06/22 03:12ID:???0797>>778
02/06/22 03:13ID:???テキスト(CGI)をアップする時に問題があるのかな??
因みにWinXPのメモを利用しています。
メモ帳?じゃあ文字コードが違ってるのだろう
0800>>778
02/06/22 04:41ID:???0801教えて下さいませ
02/06/22 05:49ID:c+t9uPJK$host[1] = "***.***.***";
$host[2] = "***.***.***";
local($match) = 0;
foreach (@host) {
if ($ENV{'REMOTE_ADDR'} =~ /$_/) { $match=1; last; }
}
if ($match) {
print "Content-type: text/html\n\n";
print "<html><body>アクセスできません</body></html>";
exit;
}
↑これをCGIの上の方に書けば、指定したIPからのアクセス制限を防げるのですが
これを改造して、指定IP以外を制限する様には出来ますか?
やり方を教えて下さいませ。
よろしくお願いします。
0802801
02/06/22 05:52ID:c+t9uPJKO=アクセス制限出来る
0803nobodyさん
02/06/22 05:58ID:???前: if ($match) {
後: if (not $match) {
0804801
02/06/22 07:22ID:c+t9uPJKありがとうございます!
助かります。
あなたは神です。
■ このスレッドは過去ログ倉庫に格納されています