C言語CGI専用スレッド
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/04(金) 04:31ID:???PERL-CGI の情報はどこでも手に入りますけど
C-CGI の情報は少ないです。
C言語のCGIに関することはここに書きましょう。
スクリプトを検索できるサイトです。
http://script.lovely.to/search/home_script_c.html
http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/
http://www.cgifiles.com/scripts/cc++/index.shtml
前スレ
http://tako.2ch.net/test/read.cgi?bbs=perl&key=971762830
0083名無しさん@お腹いっぱい。
01/08/31 12:06ID:yzeHKSD2これは、一般的に逝ってそうなのか、それとも、そのコードを書いたやつがたまたまヘタレだったのか。
0084名無しさん@お腹いっぱい。
01/08/31 12:26ID:ZHAulmbY0085名無しさん@お腹いっぱい。
01/11/03 00:20ID:Z5GZ1dPh箱庭のC++バージョンのコンパイルのことで聞きたいス。
今借りてるサーバがTELNET使用禁止なんだけど、GCCは使用可とのこと。
こういう場合は、CGIを使ってコンパイル出来るヨ・・・って聞かされたんだけ
ど・・・。
検索して「telnet.cgi」っていうのを見つけたけど、なんか箱庭をコンパイルでき
そうな感じがしない・・・。
誰かわかる人います?
0086名無しさん@お腹いっぱい。
01/11/03 00:22ID:???>そうな感じがしない・・・。
感じで決め付けるな。
008785
01/11/03 00:44ID:Z5GZ1dPhtelnet.cgiではソースファイル拡張子の設定が一種類しかできない
ようなのでムリかな・・・と。
箱庭C++版は「.c」と「.h」を使うので。
0088名無しさん@お腹いっぱい。
01/11/03 00:55ID:???或いは出来る人に頼みましょう。
ここでサポート出来る段階ではないです。
008985
01/11/03 01:01ID:Z5GZ1dPh確かにshellとCはまるでダメです。
書籍のコンパイルの説明などをいろいろ目をとおしたけど、どれも
CGI(Perl)を使ったやり方の説明がなかったので。
なんかいい書籍はないですかねぇ・・・。
ご忠告感謝です。
0090名無しさん
01/11/03 01:05ID:???良く解らんけど、その感じだと多分エラーを捕まえて無いんだろ?
どんなcgi使ってるか知らないが適当にファイルにリダイレクトでも
しなきゃ、エラーが読めないじゃん。
で、読めたとしても、まあ悲観的に言うと8割方処理系依存で一つや二つ
エラーが出ると思うが。
それを直して、またコンパイルして・・・・
コーディングしろとは言わんが、ローカルでコンパイル位出来ないと
道は遠そうだ
0091名無しさん@お腹いっぱい。
01/11/03 01:12ID:???Perlとちがって低いとこまでいじれるから,
問題起きた時大変だよ。
それが原因で鯖トんだりしたら,85氏の責任。
いろいろ請求されたりするかもしれん。
鯖名・telnet.cgi・GCC・.hとかで検索かければ,
先人がなにか書いてるかもね。
009285
01/11/03 01:43ID:Z5GZ1dPhまだコンパイル自体してないんです。
telnet.cgiについてもよくわかっていないので。
あせらずオイオイ勉強していくことにします。
お二方のご助言感謝。
0093名無しさん@お腹いっぱい。
01/11/03 01:45ID:???タダだし、暇つぶしにはなると思うよ
PERL分かるなら、コマンド投げてる所の下にでも system ("$hoge 2>>./error.txt");
とでも書いてerror.txt置いとけばメッセージは読めるよ(読みにくいけど。。)
0094名無しさん@お腹いっぱい。
01/11/03 02:04ID:???http://www.cygwin.com/
WINでUnixLIKEなシェルが使えるよ、これでしばらく遊べば
後は同じ事をサーバでやるだけだから・・・・
コケた時にSTDERRを上手くキャッチするこってす
009585
01/11/03 09:29ID:m85yJ//jでは早速試してみることにします。
それにしても質問が激しくアレだったので「厨房氏ね」とかいう
レスを覚悟してたら・・・親切なレスついて嬉しいス。
これからはCとshellの勉強に励む事にします。
みんなありがと〜。
0096名無しさん@お腹いっぱい。
01/11/08 18:55ID:???0097名無しさん@お腹いっぱい。
02/01/15 13:27ID:NbvxSmgA速いor転送量・サーバ負荷が軽減されるぜ!がんばれ!
0098名無しさん@お腹いっぱい。
02/01/15 13:45ID:???「転送量」は吐き出すモノによって変わるものだから、
C でやろうが Perlでやろうが同じです。
0099名無しさん@お腹いっぱい。
02/01/15 15:01ID:8PDDHsp4C言語でのCGIの場合、領域の確保が問題に思えます。
相手がどこまでのサイズのデータを送信してくるかわかりませんし。
送信フォームでサイズ指定をしても、悪意を持ったものに
不正なサイズの大きなデータを送られたら、領域に指定した
サイズをオーバーしてしまうように思えます。
リファラーなどで制限しても、それくらいはどうにでもなりますし。
かと言って、無闇に初期化する領域を大きくしてもメモリの無駄に感じます。
皆さんはそのような事に対してどのような対策をとっておられるのでしょう?
C言語の勉強をしているのですがどうにもそこで詰まってしまって・・・。
どうか、どなたかご教授ください。
0100日下部圭子 ◆ib749tYo
02/01/15 15:42ID:???> C言語でのCGIの場合、領域の確保が問題に思えます。
> 相手がどこまでのサイズのデータを送信してくるかわかりませんし。
malloc()やrealloc()を使って動的に確保するのが一般的でしょう。
データの最大長が数十キロや数百キロ程度なら、固定長で確保しても
問題ないと思いますが。
> 送信フォームでサイズ指定をしても、悪意を持ったものに
> 不正なサイズの大きなデータを送られたら、領域に指定した
> サイズをオーバーしてしまうように思えます。
Cに限らず、どのような言語でもデータ量の上限チェックは入れる
必要がありますよ。
# CGIだと、Webサーヴァーのほうで制限してくれるのかな?
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
010199
02/01/15 16:21ID:???malloc関数はこういう時に使うのですね。
今まで色んな所でsizeof演算子と組み合わされているのを見てきたのに
いまいち良くわかっていなかったのですが、ようやく理解できました。
これから色々試しながら勉強していこうと思います。(もちろんローカルで)
勉強になりました。
本当にありがとうございます。
0102名無しさん@お腹いっぱい。
02/01/16 09:04ID:b610iUlz関数の中で realloc 使うときはよく注意すること...
int *ptr, *tmp;
ptr =(int *)malloc( sizeof( int ) * 10 );
tmp =(int *)realloc( ptr, sizeof( int ) * 30 );
なとき、ptr == tmp とは限らないので。
void extend( int *array, size_t len )
{
int *tmp;
tmp =(int *)realloc( array, sizeof( int ) * len );
}
とかやってると、はまる。
void *ptr;
ptr =(int *)malloc( sizeof( int ) * 10 );
extend( ptr, 30 );
memcpy( ptr, "hello, world!", 14 ); /* SIGSEGV だったりして */
0104名無しさん@お腹いっぱい。
02/01/16 10:58ID:???0105名無しさん@お腹いっぱい。
02/01/16 15:13ID:LEH3ezMV死ね
0106名無しさん@お腹いっぱい。
02/01/16 21:07ID:???以降をおすすめします。malloc/reallocおよびポインタ演算は
普段は使わなくなります。オーバーフローもなくなります。
string s;
char ch = 'A';
if (s.size() < LIMIT) s += ch;
0107名無しさん@お腹いっぱい。
02/01/19 00:11ID:???0108名無しさん@お腹いっぱい。
02/02/06 23:01ID:???0109名無しさん@お腹いっぱい。
02/02/07 09:50ID:???realloc は必ずしも元のアドレスを維持するとは限らないって話なんじゃないの?
なにか勘違いしてると思われ。
0110名無しさん@お腹いっぱい。
02/02/17 21:03ID:???0111名無しさん@お腹いっぱい。
02/02/18 10:00ID:9k5avLiX保全ageでもいいんじゃないの?
もっとも、このネタだったら、プログラム板の方がいいかもしれないけど。
0112名無しさん@お腹いっぱい。
02/02/18 19:30ID:???あちこち回って勉強して、ソース書いてここで晒したらアドバイスもらえますかね??
とりあえず参考になるようなとこググって来ます。
0113名無しさん@お腹いっぱい。
02/02/18 21:12ID:9k5avLiX0114名無しさん@お腹いっぱい。
02/02/18 21:14ID:???Cでコンソールアプリ書けたらCGIは簡単だ。ファイト。
0115名無しさん@お腹いっぱい。
02/02/21 09:01ID:???0117nobodyさん
02/04/07 11:18ID:???CでCGIを書こうと奮闘しているのですが
(鯖はrimnet、OSはFreeBSD Ver.3改)
とりあえず書いたら、IEでは問題ないのだけど
NS4.7/6.2で見ようとするとError500 Internal Server Errorでます
原因がわかりません。
教えてください
ttp://members.tripod.co.jp/mod5/enter.c.txt
0118nobodyさん
02/04/07 23:34ID:???原因とは関係ないんだけどいくつか
・グローバル変数はグローバルである必要がなさそう
・exit(1);って何で1なのか
・getenv("HTTP_COOKIE")は2度も使う必要はないのでは
・mallocで確保したcookieの領域がfreeされてない
・exit()で終了させる前にヘッダを吐いてないとサーバーエラーになるはず
・コンパイルするとキャスト関係で警告が20個近く出る
そういったところをまず直した方がいいんじゃないかな
0120
02/04/11 15:40ID:SIU7X4Sv書店に行っても9割方Perlの本なので・・・。
スレッドも、Perl、Ruby、phpはあるのですが、CのCGIは無かったので。
0121nobodyさん
02/04/12 09:56ID:???0122nobodyさん
02/04/12 09:56ID:???s/何らかのCGI本/何らかのCGI本で/
0123nobodyさん
02/04/12 15:52ID:???C言語の本があれば特に問題ないかと
本で読むより検索で調べたほうが速いと思うので(タダだし)
「C言語 CGI」でgoogleにかければ出てきたような気がする
0124nobodyさん
02/04/13 03:12ID:???既出だと思うけど
http://www2k.biglobe.ne.jp/~motoi/cdecgi.html
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/
上の2つ+C言語の本1冊で作れるようになるはず。
URLデコードと文字列操作がperlよりも面倒なんだけど、それができ
ればまぁ大丈夫だと思う。
0125nobodyさん
02/05/02 00:48ID:4Q8ZAUDc前スレ
http://tako.2ch.net/test/read.cgi?bbs=perl&key=971762830
って、404 になるんですが、前スレはどこですか?
0126nobodyさん
02/05/02 00:50ID:???0127nobodyさん
02/05/02 01:08ID:3IS6vFPbhttp://tako.2ch.net/perl/dat/971762830.dat
0129125
02/05/02 06:07ID:???フォーマットも簡単そうだし、自分で整形してみます。
0130void()
02/05/02 07:09ID:???0132nobodyさん
02/05/02 12:26ID:???C言語で頑張るのもいいけど、C++でSTL使うと物凄く楽だよ。
>>130
CもPerlも両方使えるならPerlの方が楽。実行速度以外ではほとんど全ての点で勝ち。
Cは知ってるけどPerlなんてしらねーよって場合はCの方が楽。
ただ、Cが使えるサーバが少ないんだけど。使えても使えるとは書いてないのが普通。
書いてないサーバだと、たとえ使えたとしても使っていいのか管理者に聞いた方がいいよ。
sourceforge.jpは使えるみたいだね。なんか説明読むとめんどくさそうだけど。
0133Perl厨
02/05/02 12:53ID:???よってPerlの勝ち。
=====終了=====
0134void()
02/05/02 16:14ID:???0135nobodyさん
02/05/03 02:18ID:DZDxEQpQPerl: 皮剥き器
0136nobodyさん
02/05/03 03:23ID:???日本刀でジャガイモの皮を剥く感じ。
0137nobodyさん
02/05/03 03:26ID:???0138nobodyさん
02/05/03 03:42ID:DZDxEQpQさすがに大げさすぎるでしょ。
せめてサバイバルナイフで髭を剃る、ぐらいで。
>>137
なんでもあるよ。認知度が低いだけだと思う。
GTK, SDL, OpenGL, libxml, あたりで検索してみて。
昨日から CGI 勉強し始めたけど、もうほとんど理解したよ。
スゴク少なかったのね、CGIって。もっと大げさなもんだと思ってた。
このスレが廃れている理由を理解した。(W
0140nobodyさん
02/05/03 08:52ID:???>>137
意外といまだにCも多いよ。ゲーム系はほとんどC。素人の方がC++使ってる。
あと、組み込み系はコンパイラが無くて仕方なくCだね。
0142nobodyさん
02/05/03 10:34ID:???他の人が言ってるほど難しくないね。結構Perlと
似てるような文法も多いし。
0144nobodyさん
02/05/03 12:27ID:???Perl だとソースでちゃうし、インストールがややこしいので、
C で書きなおして、オブジェクトで販売してるって話聞いたけど、
みんなそんなことしてるの?
0145nobodyさん
02/05/03 12:41ID:???0148nobodyさん
02/05/04 17:55ID:???好きに作れちゃうところがかえって混乱しやすいみたい。
0151nobodyさん
02/05/04 23:53ID:???0152nobodyさん
02/05/05 13:43ID:???共用体は実装の都合とかの、どちらかというと汚い部分で必要になるから、
初心者に教える必要ないよなぁ。エンディアンに依存しないプログラムを
書く場合なんかには便利なんだが。
0153nobodyさん
02/05/07 18:11ID:iiKjSr3Sソースうp汁!
0154nobodyさん
02/05/08 11:03ID:???実用的なプログラムを組もうとすると、構造体にもポインタを使うから、理解が進まないうちは、
エラーメッセージが出てもどう対処してよいかわからない、ということでは?
0155nobodyさん
02/05/11 11:01ID:???http://www.amazon.co.jp/exec/obidos/ASIN/4795296960/qid=1021082069/br=1-12/ref=br_lf_b_12/250-0136950-8331429
0157nobodyさん
02/08/02 00:19ID:???0158nobodyさん
02/08/05 00:11ID:mlKhZTXHファイルポインタには半径1から10の数値があります。
出力結果は次のようになるようにして下さい
半径 面積
1
2
3
・
・
10
0160nobodyさん
02/08/05 03:29ID:???0161nobodyさん
02/08/13 16:54ID:???しかし暗号のような変数を多用するPerlに不快感を感じる人には
それほど悪い選択ではないと思うが。
0164nobodyさん
02/08/13 17:31ID:???0165nobodyさん
02/08/14 11:37ID:???つねに「文字列の扱いには難がある」と評されるCが使いづらいのは、
当然といえば当然だな。
0166nobodyさん
02/08/14 12:29ID:???素のCなんか使ってられるかよ
精気表現もガベコレもstringライブラリも有る
つーか++ならSTLが有るだろ
0167nobodyさん
02/08/14 21:11ID:???0168nobodyさん
02/08/15 12:00ID:???パーミッションをゲットするにはどうすればいいのでしょうか?
0169nobodyさん
02/08/15 15:00ID:???そう、そこだ!長年ため込まれてきた遺産が、不当に低く認識されている!
膨大なライブラリを活用すればC/C++でも自由なウェブプログラミングができる!
さて
> 精気表現もガベコレもstringライブラリも有る
ということなので、みなさんの知っているウェブプログラミング向けライブラリを
知らせあいましょう。
0172nobodyさん
02/08/15 19:06ID:???http://www.matsusaka-u.ac.jp/~okumura/cplusplus/
0174nobodyさん
02/08/16 00:08ID:???0175nobodyさん
02/08/16 04:26ID:???取りあえず、知ってるのだけ
ガベコレ
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Perl5コンパチ精気氷原ほか
http://www.hi-ho.ne.jp/babaq/index.html
つーかC LIBRARYでぐぐればゲソゲソ出て来るよ
0176nobodyさん
02/08/19 11:40ID:???受信したメールの日時は
「Date: 13 Feb 2002 15:26:45 +900」の行でいいと思うのですが、
これが、下のように
「Date: 13 Feb 2002 15:26:45 -0000」ってなっているばあいは
時間が違うみたいなのですが、これはどういうことなのでしょうか?
日時を正しく取得する方法を教えて下さい。
0177nobodyさん
02/08/20 17:23ID:0juDwDMiそのまま9時間足して、JSTでそろえるようにすればいいんじゃないですか?
簡易メーラーなら。
0178nobodyさん
02/08/21 01:11ID:6KjI3tpo> C言語でつくるCGI入門って本出てたけどどう?買った人いる?
これ、絶対に買ってはいけません。
サンプルコードがバッファオーバーフローのことを全く考えていないんで、
この本を参考に作ったサイトはあっという間にクラックされちまいますよ。
# 即刻、廃刊にしる!!
0179nobodyさん
02/08/21 13:41ID:???サンプルコードは本質がボケないように、極端にシンプルにする必要がある。
マニア向けなら違うけど。
とは言っても最低限注意書きなりは欲しいけどな。
0180nobodyさん
02/08/23 15:30ID:???サンプルとはいえないでしょ。
ここを強調表示して、CSS使って、...よりも、セキュリティ対策のためには
どういう点を厳守すべきか、そういうことを本にするんじゃないのか?
その本にバッファオーバーフローの危険があるのが本当なら、絶対買うのはやだな。
# 廃刊にしる!!
0181179
02/08/28 18:03ID:???0182178
02/09/01 15:37ID:???> 入門書籍ってのはそういうもんだ。
> サンプルコードは本質がボケないように、極端にシンプルにする必要がある。
長さチェックを全く行なわずに
strcpy(buffer, getenv("QUERY_STRING"));
なんてことをするコードが何の注意書きもなく載っている本が
入門書としては最適なのですか?
0183nobodyさん
02/09/02 20:45ID:???その書籍だけで全てを知ろうとするのがそもそもの間違と信じている。
餅は餅屋。内容が重複してちゃ存在価値が薄れるじゃん。
必要なら「C言語」を学習するための本。
「CGIを使う」を学習するための本。
「Cのセキュリティ上の落とし穴」を学習するための本、
を夫々読むのがスジじゃないかな。
ってゆーか今の子ドキュメン読まなさすぎ。
■ このスレッドは過去ログ倉庫に格納されています