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 あたりに
0774nobodyさん
03/05/26 08:50ID:???多くのcgi解説サイト等でuriエンコードで、半角スペースを+に変更するってのを記述してあるんだけど、
これって、RFC的に正しいのだろうか?
例えばform文のinput type="text" で、 パラメータに"+"を入力できないってことになるんだけど・・・
0775nobodyさん
03/05/26 09:36ID:???RFC 2396 かな?
まあ、規格は良く知らんが、"+"=>"%xx"、" "=>"+"って考えれば、問題ないと思うが。
0776nobodyさん
03/05/26 16:04ID:???ブラウザ上でフォームに入力された値や、HTML ファイルに
直書きされる値は URL エンコードされる「前」の状態。
submit 時にブラウザが application/x-www-form-urlencoded
形式にエンコードして (>>775 の変換を行って) サーバに送る。
HTML 的には input 要素の value 属性は CDATA だから
+ が含まれていても OK な筈 (自信なし)。
0777774
03/05/26 16:43ID:???その見解であってる模様です。
こっちでも試してみました。
デコードの順番を
$value =~ s/\+/ /g;
$value =~ s/%([\da-f][\da-f])/pack('H2', $1)/egi;
この順番でやってるうちは問題ないっぽい。
0778nobodyさん
03/05/26 16:57ID:???$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2',$1)/eg;
こうだろう。
\dはいらないし、それじゃaa-ffしかデコードされない。
0779nobodyさん
03/05/26 17:00ID:???\d が 0-9だし iで大文字小文字両方ともみるのであってると思うが?
処理効率は>>777の方がいいとは思うが・・・
0781nobodyさん
03/05/26 17:11ID:???0782nobodyさん
03/05/26 18:54ID:TSTriSzYdionのメール送信CGIを使って、dionのホムペにある見本のタグ以外
(プルダウンメニューなど)のinputタグいれて動作できた香具師いたら、
どうやったか教えて下さい。
so-netのメール送信CGIは、formタグの最初だけ見本通りにすると、あとのinputタグはかなり自由に
できたのですが、dionはだめなのでつか?
おねがいしまつ。
0783bloom
03/05/26 19:10ID:gUjk1KcM0784914
03/05/26 19:18ID:tmRvurLYここの927のもので、ここに誘導されたので再度質問します
たまに見る「今トップページを見ている人は**人です」っていうのはどうやってるんですか?
0785ヱッ’ノ
03/05/26 19:36ID:zHcI20PHうちのサーバではゲームCGIを設置しているのですが
プラウザのボタンを押すと負担かかるんですよね・・・(涙
ってことでプラウザのボタンをなにかのイベントになるってことは出来ませんか?
例えば更新を押すとイベント発生!!○○にいって
「更新は押さないでください!」
みたいなのが表示されるって感じで、、、
何方かご指摘おねがいます。
0786_
03/05/26 19:51ID:???0787nobodyさん
03/05/26 20:50ID:???DIONのメール送信CGIってなーにー?
世の中全ての人間がDION使ってるわけじゃないんだからさー。
URLくらい出せよ。
回答者がわざわざ調べないといけないような質問はすんなよ。
0788nobodyさん
03/05/26 20:52ID:67MeoiMR$value =~ s/%([a-fA-F\d]{2})/pack('H2',$1)/ge;
これはどうだろう
0789nobodyさん
03/05/26 20:54ID:67MeoiMR無理と思うよ
0790nobodyさん
03/05/26 20:55ID:???やり方は二つ思いつく。
一つはチャットCGIでよく使われる「現在の入室者数」と同様の方法だ。
ゆいチャットのソースでも見て研究しろ。
もう一つはセッションを使う方法だ。
セッションは通常有効無効のステータスがあるので、
有効になっているセッションをカウントすれば、
見ている人間になる。
なお、HTTPプロトコルの性質上、この数値には精度は求められない。
本来は「だいたい**人」としなければ嘘になる。
0792nobodyさん
03/05/26 20:56ID:67MeoiMRそういうCGIのコード見たら分かるのでは。
大体が、一定時間(例えば1分)以内にアクセスした人を
数えているのだと思う。
CGIの場合常に見張るのは無理だし。
JavaAppletとかなら確実な人数出せるだろうね。
0794nobodyさん
03/05/26 23:36ID:???たまに見る所のURLを出せば一発で答えが出ると思うが、
たぶん CGIで一定期間(過去10秒とか)にカウントした人数を出しているだろうね。
htmlファイルに埋め込めるようにJSとセットになっているのも見たことある
0795782
03/05/26 23:44ID:EsFJ+WYrttp://www.dion.ne.jp/support/hp/infocgi/case2/mail/index.html
DionのホームページサービスでつかえるメールデコードCGIのことです。
自作CGI不可なのはともかく、見本のタグ以外のinputタグも使いたいのですが、
うまくいきませんでした。(見本通りならオケーだった)
で、DIOnのサポセンでは、見本以外に自分でタグを追加して動作してる例もあるが、
当社として動作確認はしていないので、「上手く行く人もいるらしい」としか言えないといわれて。
なので、その「上手くいった人」がこちらにいないだろうか、
で、もしいたら、どうやったのか教えてもらえればと思ったのでした。
もし分かる人がいたら、よろしくお願いし松。
0796nobodyさん
03/05/27 00:04ID:???自分で試すのが一番早い。間違いない。
それに、そもそもここにいるのは自作する人間ばかりなので、
他人のCGI、それもソースが読めないようなものに興味はない人間が多い。
Web製作版にでも行ってみたらどうだ?
0798nobodyさん
03/05/27 02:03ID:???CGI自体が見れないから、内部でどんな処理をしてるのかも分からないし、
「やってる人がいる」というのも、試行錯誤して偶然見つけたのかもしれない。
もはや「裏技」といったレベル。
そんなに知りたきゃ、DIONで同じフォーム使っていてそういう裏技を使ってる
ページを見つけてソース見るなり、直接聞くなりすればいい。
「そういうページ知りませんか」とここで聞いて待ってる暇があったら自分で調べれ。
0800782=795
03/05/27 02:10ID:JdPC8gL6796さんの誘導どおり、web制作板にいって、質問してみたら、
あっさり解決しました。dionのページの説明文が理解できてなかっただけで、
無事うまくいきました。いちおう、こっちにも書き込んでスレ汚ししてしまったので
解決した報告と、お礼のため書き込みにきました。
0801_
03/05/27 02:21ID:???0802nobodyさん
03/05/27 03:17ID:???ここでSubmitした後のページが更新される(CGIからの返り値が表示される)
と思いますが,この更新をなくしたいと思っています.
何か方法は無いでしょうか?
よろしくお願いします.
0806nobodyさん
03/05/27 06:39ID:???誰かが作ったやつを設置だけしてHTMLで何とかしようとしてるのなら、(・∀・)カエレ!
0807nobodyさん
03/05/27 11:00ID:???「どんなページが表示されていて」
「どういうデータを送信して」
「なぜページ更新したくないのか」
更新しないようにしようという考え方自体が見当違いで、
もっと適切なやり方があるかもしれないし
0808nobodyさん
03/05/27 11:05ID:???Perlだったらこう1行書けばいいだけだろ。
print "Status: 204 No Response\n\n";
意図とか質問するのもいいけどまず技術的にできるんだからその
回答くらいは書いてやってよ。
0809nobodyさん
03/05/27 11:26ID:???0814nobodyさん
03/05/28 14:09ID:???またヘッダ情報はブラウザの解釈に依存するところがあるで、
204お構いなしにデータ出力されたり、エラー画面に飛ばされ
ることがある。
とくに携帯相手のサイトをやってる場合おすすめできない。
0815山崎渉
03/05/28 17:04ID:???ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0816nobodyさん
03/05/29 05:39ID:G7vzbJ+Lとある本に、
system("$cgi $arg > /dev/null &");
と書いてあるんですが、
> /dev/null &
の部分がよく分かりません。
これはどういう意味なんでしょうか?
0817nobodyさん
03/05/29 06:09ID:???$cgiを$argを引数としてバックグラウンドで(&)実行し、標準出力に書き出された内容を/dev/nullにリダイレクトする。つまり破棄する。
0818816
03/05/29 06:37ID:G7vzbJ+L板違いにも関わらず、回答ありがとうございます。
度重なる質問で悪いのですが、
もし$cgi側で標準出力を使わなかったら、> /dev/nullはいらないんですよね?
0819nobodyさん
03/05/29 12:01ID:G7vzbJ+L0820nobodyさん
03/05/29 12:02ID:G7vzbJ+L0822816
03/05/29 19:12ID:DM2XwmWX?標準出力使わない場合なのに/dev/nullにリダイレクトですか?
ワケワカラン。
0823nobodyさん
03/05/29 19:34ID:???言語書いてないけど、phpだとリダイレクトしないとブラウザの画面が切り離せない。
0824816
03/05/29 19:38ID:kZGHbp0S言語はperlです。
/dev/nullは、/デバイス/ヌルってことですよね。
0825nobodyさん
03/05/29 21:33ID:???微妙な解釈の違いだな。気にすんな。
>>818→標準出力に何も出力しない→標準出力を使わない→リダイレクト不要
>>821→標準出力に出てくるデータは不要→そういうのは捨てる→リダイレクト必要
0826816
03/05/29 23:14ID:Xobsjh92スレor板違いにも関わらず適切な回答ありがとうございました。
なんとなく解決しますた。
0827802
03/05/30 01:07ID:???申し訳ございません.
質問したっきりで消えたような感じになりまして.
具体的にはFlashでWebアプリケーションを作成しているのですが,
Flashからファイルをアップロードすることを考えています.
そこでローカルファイル自体はFlashでは選択ダイアログ等を出すことが出来ず,
HTMLのFORMを利用してファイル選択を行わせることを考えています.
その際FlashからはActionScriptを用いてJavaScriptの関数を呼び出します.
そしてファイルをアップロードする祭にSubmitをForm上で行わせます.
この際ページの更新が有りますと,Flashの現在表示している内容も
更新されてしまい不都合となります.
そこでページを更新せずにSubmitを行いたいと考えています.
ターゲットはIE6を考えています.
当方Webプログラムの経験が浅く,意味不明な点があるかと思いますが
よろしくお願いします.
204で返すことによってページが更新されないようなのでそれを試してみようと思います.
0828nobodyさん
03/05/30 02:04ID:???0829nobodyさん
03/05/30 05:17ID:???色々調べたところ
FRAMEを用いて別窓でSubmitするという方法がありました.
実は,そちらを試していたところでした.
0830802==829
03/05/30 05:30ID:???を試したところ,確かにページの更新がなくなりました.
実際この後送信が成功したかどうか(CGIの返り値)を知りたいのですが,
何か方法は無いでしょうか?
FRAMEを使った方法の場合はJavascriptで定期的に他のフレームを
監視しようと考えています.
よろしくお願いします.
0831nobodyさん
03/05/30 08:29ID:???贅沢な…それだったらformのtargetを別窓に指定して
そこに普通に値を返させその窓を監視するんじゃないの。
もちろん窓とはフレームであってもいい。
0832nobodyさん
03/05/30 09:35ID:AmXGY95Oファイル(*.html)をダウソさせることって出来ますノン?
これ見て拡張子を指定できるのはわかったノンですが
ファイル名も指定したいノン。
tp://tohoho.wakusei.ne.jp/lng/199903/99030041.htm
よろしくお願いしますノン。
0834832
03/05/30 11:47ID:AmXGY95Oふざけた書き方してすまんかった。
要は、cgiを使ってファイルをダウンロードさせたいんです。
また、その時ファイル名を指定してダウソさせたい。
例えば、テキストフィールドでtest.htmlを指定したら、
そのファイル名でダウンロードさせられないかと・・・。
試したところ、MIMEタイプをapplication/octet-streamにすると
ファイルはダウンロードさせられるが、
ファイル名がcgiのファイル名(例:downloader.cgi)になってしまいす。
.htaccessを併用すると拡張子までは指定できるが、
ファイル名の指定が出来ない・・・。
どうにかこれを実現する方法はないでしょうか?
もしかして、漏れ素っ頓狂なこと言ってるのかな・・・?
0835nobodyさん
03/05/30 11:49ID:bJuQNR3fhttp://s-rf9.free-city.net/page003.html
0837nobodyさん
03/05/30 13:29ID:???俺も、いろいろ試した・・・
・・で、結果はパスを使う。
例 http://***.***.***/downloader.cgi/test.html
この方法だと、test.htmlって名前で落とせる。
0838837
03/05/30 13:55ID:???言い忘れてたけど、この方法は実に危険で、
セキュリティに穴開ける可能性あるぞ!
取り扱いに気をつけること!!
0839nobodyさん
03/05/30 14:59ID:GJ3EZgkY今でも配布してるのだろうか?
0840nobodyさん
03/05/30 15:04ID:???スレ違い
http://pc2.2ch.net/test/read.cgi/php/1051456859/
0841直リン
03/05/30 15:10ID:KvuUHxNV0842832
03/05/30 15:37ID:???以下のように出力したらでけますた!ありがっつです!
>>837 の方法は漏れには何がどうなってるやらわからないです。
せっかく教えていただいたのに理解できなくて、すんまそん。
厨房は使っちゃいけない魔法だとおもいますた。でも、ありがとです!
テストの内容と結果:
cgiからの出力:
----
Content-type: application/octet-stream
Content-Disposition: attachment; filename=test.html
〜ファイルの中身〜
----
結果:
ブラウザ ダウンロード ファイル名
IE v6 OK OK(test.html)
Opera v7.01 . NG N/A // 普通にページが開かれちゃた('A`) ギシギシ> |
Mozilla v1.4b OK NG(test.html.cgi)
バランバランの結果にはなりましたが
IE、Mozillaで成功してるので問題なさげでした。
あと、教えていただいたことを検索して出てきた参考データ:
tp://tohoho.wakusei.ne.jp/lng/199903/99030058.htm
以上。
お礼とご報告でした。助かたYO!貴様らに幸あれ!
0843nobodyさん
03/05/30 16:48ID:r7RRScOtContent-disposition: attachment; filename=XXX
0844832
03/05/30 20:52ID:???に勝利しますた。
Content-type: application/x-msdownload
強制ダウンロード作戦成功なり・・・。
0845nobodyさん
03/05/30 21:01ID:???0847nobodyさん
03/05/30 22:00ID:bW877X68FTPのパスワード忘れちゃったよ…
どうやってCGIデータをダウンロードすればいいんだ。
せっかくエクセルデータにしようとしたのに・・・
アクセスしても
Forbidden
You don't have permission to access /cgi/logo/bkup.cgi on this server.
--------------------------------------------------------------------------------
Apache/1.3.20 Server at www.教えないよ!.com Port 80
何かいい方法ありますか?
0848nobodyさん
03/05/30 22:02ID:???身分証もって管理者の座敷に上がりこめ。
0849nobodyさん
03/05/31 01:08ID:???>847
0850nobodyさん
03/05/31 01:15ID:???パスワードを教えてくれるサービスが無ければ、>>848が真っ当なやり方かと。
0851nobodyさん
03/05/31 03:51ID:???頭おかしいんじゃねーの。
というか、「FTPのパスワード忘れちゃった」といってコピペしてきたのが
ブラウザのエラー画面(しかもftp://でアクセスしたとは思えないもの)で、
どうしろと言って欲しいワケ?
ディレクトリ指定が "logo" になってるのはtypoですか、とか言って欲しいの?
0852nobodyさん
03/05/31 04:24ID:???0853802
03/05/31 04:44ID:???ページの更新をフレームで実装しました.
FRAME1にはFlashを
FRAME2にはFormをおきました.
これにより
FRAME1からみて
parent.frames[1].document.form1. ...
にJavascriptを介してアクセスしてSubmitを行うことが出来ました.
この送信を行った後にFRAME2は更新されます.
(更新されたページには更新前同様にFormがそんざいします.
そこで,次に更新をしたページの値を取得しようと
parent.frames[1].document.form1. ...
にアクセスしたら「アクセスできない」
といわれてしまいました.
これはページの更新によるものなのでしょうか?
これを回避して再度Formにアクセスする方法は無いでしょうか?
ご教示願います.
環境はIE6です
0855nobodyさん
03/05/31 13:13ID:SOHJfLax0856_
03/05/31 13:32ID:???0857nobodyさん
03/05/31 14:20ID:OdjsmUrQhttp://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/281853/pack/win95/game/table/pachinko/SUTING.LZH
http://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/286201/pack/win95/game/avg/love/yume-tai.lzh
0859nobodyさん
03/06/01 06:13ID:???日本語関連のコード指定とかも削除すれば完璧だ。
0860nobodyさん
03/06/01 12:52ID:???0861動画直リン
03/06/01 13:10ID:FDrVWEME0862nobodyさん
03/06/01 13:18ID:???↓
英語に翻訳されて表示される
↓
(゚Д゚)ウマー
ではないのか。そかー。
0863nobodyさん
03/06/01 13:35ID:???逝ってよし→You can go. てなわけには逝かないよな。
0864nobodyさん
03/06/01 13:56ID:???後、エラーメッセージがあるか。
外人さんてアバウトだから適当に
SorryとかOopsとか書いておくとか。
0865nobodyさん
03/06/02 02:10ID:Ski1sS48ブラウザ側でCookieをOffにしてるとき、
環境変数からHTTP_COOKIEを取得した時って、
やっぱり中身はnull?
ど う な ん だ Y O !
0867nobodyさん
03/06/02 02:27ID:YkiHze2n教えろよ馬鹿
0868nobodyさん
03/06/02 06:23ID:???0869816
03/06/02 15:28ID:???system($cgi > /dev/null)としたときSTDERRで出力されたのも捨てるんですか?
0872nobodyさん
03/06/02 22:02ID:???■ このスレッドは過去ログ倉庫に格納されています