C/C++ CGIスレッド
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/02/26 08:58ID:GDAQuNNShttp://pc2.2ch.net/test/read.cgi/php/988918264/
C/C++ CGI 専門のスレッドです。
スクリプトを検索できるサイトです。
http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/
http://www.cgifiles.com/scripts/cc++/index.shtml
前スレ
http://pc2.2ch.net/test/read.cgi/php/988918264/
0281nobodyさん
04/10/01 18:29:10ID:???昔はPHPなら速度比較と処理負荷だけで飯五杯はいけたんだが・・・
もはや残ってる部分といえばコードキャッシュネタくらいか
Cでおかずになるネタは・・・このスレの伸びが何かを語っているな・・・
0283nobodyさん
04/10/01 18:35:57ID:???どうでもいいけど昔、マ板かどっかにCのコーディングにありがちな「マーCの法則」スレとか無かったっけ。
田代がまだ只の人だったころの話なのだが。
0285nobodyさん
04/10/01 19:01:49ID:???反応が薄いな
0286nobodyさん
04/10/19 10:52:37ID:eOcRyqWUやりとりってできないんでしょうか?
CGIを普通に起動する分にはちゃんとできてるのですが・・・
いちおうApacheのサービスは「デスクトップとの対話を許可」してあります
0287nobodyさん
04/10/21 10:38:39ID:GNUlgmPeおれはcの方が早いと信じたい!
0289nobodyさん
04/10/24 21:41:04ID:???url文字列のほうは良いんだがmultipart/form-dataのクラスをどういう構造にしたら分りやすいかちょっと悩む
ただの文字列はoperator[]でファイルのときはファイルの情報を持ったオブジェクトを返すでいいかな
0290nobodyさん
04/10/24 21:57:41ID:???0291nobodyさん
04/10/27 11:54:00ID:???0292nobodyさん
04/10/27 23:05:12ID:???0293nobodyさん
04/10/27 23:06:32ID:???0294nobodyさん
04/10/28 06:15:52ID:???0296nobodyさん
04/10/30 02:26:46ID:???Perlならcpanでサクサク拾えるのに。
0298nobodyさん
04/11/30 12:32:26ID:q4147YdEPOSTで受け取った文字が化けるのでiconv使って変換をと思ったんですが
iconv_t icv_hook;
char *inp;
char *outp;
size_t ret_val;
size_t in_buf_left;
memset(out_buf, 0, BUFSIZ);
in_buf_left = strlen(in_buf);
out_buf_left = BUFSIZ;
ret_val = iconv(icv_hook, inp, in_buf_left, outp, out_buf_left);
警告: 互換性のないポインタ型からの引数 2 個の `iconv' を渡しますです
警告: 引数 3 個の `iconv' を渡しますにより、キャストなしで整数からポインタを作りました
警告: 互換性のないポインタ型からの引数 4 個の `iconv' を渡しますです
警告: 引数 5 個の `iconv' を渡しますにより、キャストなしで整数からポインタを作りました
http://docs.sun.com/app/docs/doc/806-2802/6jc0bne4u?l=ja&a=view
これの通りにしたのに
どこがおかしいのでしょうか?
0300nobodyさん
04/11/30 19:18:07ID:q4147YdEchar *とchar **は違うとはわかりますが、ではどこをどう直せばよいのでしょうか?
宣言時にchar**とやったり、キャストを入れてみてもやはり警告が出ます。
コンパイルは通りますが、実行時に
iconv()を呼ぶときに必ず
「セグメンテーション違反です
のエラーが出ます
0301nobodyさん
04/11/30 19:56:28ID:???const char *inp;
char *outp;
(中略)
ret_val = iconv(icv_hook, &inp, in_buf_left, &outp, out_buf_left);
0302nobodyさん
04/11/30 20:09:48ID:???char *inp;
char *outp;
ret_val = iconv(icv_hook, &inp, &in_buf_left, &outp, &out_buf_left);
なぜか指示どうりではだめでしたがこうやったら正しく実行できたので
とりあえず報告します。
0303nobodyさん
04/11/30 20:20:55ID:???初めて使う関数は、きっちりmanを見たほうがいいよ。
副作用のこともあるし。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/iconv.3.html
これはLinuxのだけど。
0304nobodyさん
04/12/03 15:18:44ID:???その後同一の実行ファイル上で、ログイン状態を維持する
これを実現するための考え方と、参考になるソースを教えてください。
0305nobodyさん
04/12/03 22:30:06ID:???同一の実行ファイル上ってのがよくわからない。
言葉通りに解釈すると、Cookieにそのファイルのpathを設定すればいいだけだけど。
0306nobodyさん
04/12/04 00:34:37ID:???0307nobodyさん
04/12/05 06:35:51ID:???>>305に1票、もしオレがやるなら、やっぱ Cookie使う。
セッション管理より楽だし。
厳密性を求めるのは厳しいけど、ユーザ認証が目的なら、
同じブラウザを使ったかどうか分かる Cookieは充分有効な手段でしょ。
0308nobodyさん
04/12/05 06:40:37ID:4YEMHaP5ソースくらい検索してほしいが、オレのブックマークにこんなのが入っていたので参考までに。
ttp://sometime.minidns.net/~ccgi/taggedstr.html
0309nobodyさん
04/12/05 06:41:11ID:???0310305
04/12/05 10:05:05ID:???> その後同一の実行ファイル上で、ログイン状態を維持する
通常、CGIプログラムはリクエスト毎に終了してしまうので、
プログラム内の変数にログイン状態のデータを維持する事は出来ない。
そこで、データの永続化。
具体的には、ファイル、データベース、共有メモリでもなんでもいいので、
CGIプログラムが終了してもデータが残るような媒体にデータを記録する事になる。
その際、Process IDやIP address等からユニークなIDを作成し、
このIDをキーとしてログイン状態などの情報を記録する。
同時に、このIDをセッションIDとしてブラウザのCookieに設定させることで、
認証を済ませたユーザかどうかを確認する。これがセッション管理。
一度認証を済ませたあとは、
ブラウザが送ってくるCookie(CGIの場合は環境変数などに設定される)
のセッションIDと一致するキーのデータを引き出し、そのログイン状態を確認すれば良い。
>>306
簡単なセッション管理の実装で、
セッション毎に./session/$SESSION_ID$ ファイルを作成するとかはどうだろう。
>>307
>>305は、一応、セッション管理を前提に書いてました。
"同じ実行ファイルの上で"が同一URL上でという意味ならCookieのpath設定だけで済むかと思ったので。
0311nobodyさん
04/12/05 11:23:18ID:???0312nobodyさん
04/12/05 16:32:23ID:???おいらはurl_decodeクラスとそこからget,post,cookieの継承クラス作ったけど。
データ構造は自作二分木
0313nobodyさん
04/12/05 17:12:51ID:???0314nobodyさん
04/12/05 17:17:25ID:???そうか?
ヘンテコな抽象化だなとは思うが、リクエストとかユーザステートみたいな
他の設計クラスとかち合わなきゃどうでもよくね。
クラス=メソッドってOOとしてはNGだけど、Cppなんだし。
0315nobodyさん
04/12/05 17:28:03ID:???Cでやることも考えるなら、そう迷うこともないけど
0316nobodyさん
04/12/05 17:30:13ID:???0318304
04/12/07 09:58:50ID:???色々試してみます。
0319nobodyさん
04/12/25 01:16:54ID:???0320nobodyさん
05/01/19 15:43:33ID:???0321nobodyさん
05/01/21 13:43:21ID:Z6ezIjZ/bluequartz上でC/C++ cgiがどうして動かせなくて困ってます。
gcc バージョン 3.3.2 20031022 (Red Hat Linux 3.3.2-1)
もちろんapacheは動いています Server version: Apache/2.0.51
コンパイルしたファイル(xxx.cgi)はコマンドラインからは実行できるのですが、
これをブラウザから見ようとすると、 「xxx.cgi ファイルを保存しますか?」
となってしまいます。
どこがおかしいのでしょうか
何か見落としているかも知れないので指摘いただきたいです
0323321
05/01/21 16:58:47ID:???Content-type: text/html
です。
テスト用に時刻表示するやつを作ってみましたが
以下のテキストを吐き出すだけです。
Content-type: text/html
<html>
Fri Jan 21 16:53:21 2005
</html>
これもブラウザから見ようとすると
やっぱりファイルを保存しますか?となってます
0325321
05/01/21 18:10:27ID:???保存したファイルの中身を見てみましたが実行用のバイナリファイル
そのものだと思います。
出力結果とかが保存されてるわけではない(と思う)です
0326nobodyさん
05/01/21 18:44:53ID:???0327321
05/01/21 18:56:11ID:???ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
.....
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
0328nobodyさん
05/01/21 22:24:50ID:???どっちかと言うと C/C++ に関する問題ではないような。
だってコマンドラインから実効出来るという事は、「Cプログラム」としては正しいわけだろ。
たぶん Apache のディレクティブがきちんと設定されてないのでは?
CGI 実行ディレクトリについて、Options +ExecCGI とかやってる?
ちなみにウチのディレクティブは、CGI 関連はこんな感じ(Win32/Apache 2.0)。
LoadModule cgi_module modules/mod_cgi.so
ScriptAlias /cgi-bin/ 実際のディレクトリ
<Directory "実際のディレクトリ">
AllowOverride None
Options +ExecCGI
Order Allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl
設定してからだいぶ経つので細かい意味は忘れてしまった・・・ウチも色んなトコ見て
コピペを繰り返したので、検索しまくってガンガッてほしい。
0330321
05/01/22 11:24:45ID:???今確認してみたらPerlCGIも実行できてませんでした...
0331nobodyさん
05/01/22 13:33:32ID:???/cgi-bin/ならデフォルトでAliasが設定されているから>>328のように
Options +ExecCGIを追加しないとならないし。
俺は/cgi-bin/のAliasをコメントアウトして全ディレクトリで使えるようにしてある。
DocumentRoot "実際のディレクトリ"
<Directory "実際のディレクトリ">
Options FollowSymLinks MultiViews ExecCGI Includes
AllowOverride ほげほげ
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl
0332nobodyさん
05/01/22 13:34:34ID:???0333nobodyさん
05/01/25 07:56:51ID:hWOf15Pdログイン情報を記録する方法はわかったんですが、
クライアントが適切なログオフ処理をしなかったらセッション管理用のファイルは残りますよね?
例えば、クライアントがブラウザを閉じたらサーバ側で勝手にログオフ処理、なんてことは出来ないでしょうか?
0334nobodyさん
05/01/25 08:11:21ID:???時間制限でタイムアウトするくらい。
0336333
05/01/25 10:01:05ID:???ありがとうございました。
0337nobodyさん
05/01/25 16:55:53ID:???0339nobodyさん
05/01/26 15:10:15ID:???0343nobodyさん
05/01/26 16:11:38ID:/NT/JEVZクッキーは消えてもサーバのセッションファイルは残るんだよ。
それをどうすればいいかを考えてるの。
ちなみにPHPでは
session.gc_maxlifetime = 1440
とかで時間を指定してガベージコレクションしてる。
0344nobodyさん
05/01/26 16:26:34ID:???消えても次にアクセスがあった時にクッキーがあるかどうかの
判断に利用できる程度だろ。
そういう話をしてるんじゃないの。
0345nobodyさん
05/01/26 16:43:31ID:???0349333
05/01/27 00:23:16ID:???自分としてはユーザ毎にデータファイルを必要とするプログラム書こうと思うんで
やっぱりタイムアウト処理になると思います
0350nobodyさん
05/01/27 12:24:39ID:???0351nobodyさん
05/01/27 13:55:33ID:???0352nobodyさん
05/01/29 01:15:48ID:???Flash埋め込んでSocket通信させるってのはどうよ。
>ブラウザを閉じたらチェック
0353nobodyさん
05/02/15 23:46:08ID:???0354nobodyさん
05/02/17 07:25:27ID:27dZ6TGBフォームから受け取った値をgetcharで読み込んでいるんですが、
「 , 」が%2Cになってしまいます。どうすればいいでしょうか?
0357nobodyさん
05/02/18 23:50:55ID:???標準入力に対するものだから、使える事は使えると思う。
が、入力書式が CGI とは合致しないわけだから、>>354がトライしているように、
getchar とか使って URL エンコードを自前 or ライブラリでやる方が
モアベターだと思う。
0358nobodyさん
05/02/20 17:03:47ID:???0359nobodyさん
05/02/20 20:42:33ID:???0360nobodyさん
05/02/21 11:04:26ID:???問題を理解した上で、自分の目的を満たすにはこれが良い、と思ったんなら、
どんどん使えば良い。と思うぞ。
包丁なんて怪我しやすい道具を使うなよ…
なんて言わないべ?フードプロセッサー使ったって良いんだけどさw
0361nobodyさん
2005/04/23(土) 18:11:42ID:???今までPerl,PHP等やってきて最近C言語でCGIスクリプト作成をはじめましたが、排他処理は一般的にはどの手法を使いますか?
やはりフォルダを作成する方法ですか?
0362nobodyさん
2005/04/24(日) 21:13:21ID:WkqhPVlv同じくLSICでコンパイルすると17kBでした。(500で動きませんでしたが。)
なぜこんなにサイズの差があるのですか?もっと減らす方法はありませんか?
0366362
2005/04/27(水) 21:39:50ID:???お騒がせしました
0367nobodyさん
2005/05/19(木) 21:48:26ID:GAjOQJM0<input type="file">でjpegやGIF、BMP画像をpostで送信した場合、標準入力に他の文字列等と同様name=に画像ファイルデータ
が送られているのでしょうか?その画像ファイルはどの様に処理したらいいのでしょうか?ご教授ください
0368nobodyさん
2005/05/19(木) 22:14:38ID:EjA+9pughttp://z57.2?-121-74.?pp.??kw?k.ne.?pうへへ。
0370367
2005/05/20(金) 15:58:18ID:UC8INN3XCGI用のライブラリーってありますけど製作者のあくがつよすぎて理解するのが大変なんですよね・・・
なんで自分で関数から作った方がいいと思ってるんですよ・・・勉強にもなるし。
0371nobodyさん
2005/05/20(金) 16:16:48ID:???だから、そういったライブラリがあるだろ。
アクが強いとか関係無しに、どういう仕組みかが分かってないから
>>367のような質問をしたんでしょ?
既に動いてるライブラリのソースコードを読めば、そこに答えなりヒントがあるでしょ。
それを応用して自作すればいい。
アクが強いとか理解が大変とか言ってるが、結局、頭悪いだけじゃん。
0372nobodyさん
2005/05/20(金) 16:23:25ID:???http://www.gnu.org/software/cgicc/cgicc.html
つかっとけ。
書き込み見る限り、君のおつむじゃこれよりもまともなのを作るのは無理。
0373nobodyさん
2005/05/20(金) 17:27:26ID:???http://www.boutell.com/cgic/
GDライブラリ開発してるところ
2.0からファイルアップロードに対応してる
0374367
2005/05/21(土) 07:08:21ID:???コード読め?
読むような質問じゃあないだろうに。あほ
コード読め、コード読め、って猿の一つ覚えのような回答しかできないんだったらだまってろよ。
そのほうが百倍有益w
0375nobodyさん
2005/05/21(土) 10:33:25ID:???0377nobodyさん
2005/05/21(土) 17:00:57ID:???日本語は読めて、理解できるよね?理解の方がおぼつかないのかな?
そういうのは十代のうちになんとかしといたほうが良いよ。本当に。
0378nobodyさん
2005/06/02(木) 04:47:54ID:tNFRcCbR事前に長さが分からないから異常に長いURLでアクセスされたらやばくない?
と思うんだけど。
このPATH_INFOの文字列のポインタが分かればstrlenで長さを求めて弾くなり必要量mallocするなり出来るけど、
値しか分からないよね?
普通はどうやってこの問題を回避するの?
0379nobodyさん
2005/06/02(木) 07:21:13ID:???そんな疑問は出ないはずだが
0380nobodyさん
2005/07/24(日) 09:53:58ID:FFgeh8au■ このスレッドは過去ログ倉庫に格納されています