始めまして。 C言語のネットワークプログラミング参考にさせて頂いて おります。m(_ _)m 一つ質問なんですが、httpsのサイトを取得する時、 プロキシー経由の場合はどのようになるのでしょうか? google等で検索してみたのですが、分かりませんでした。 最初にプロキシーに対して、 CONNECT **.com:443 HTTP/1.0 HOST: **.com って感じでやるのかなぁって所まで分かったのですが、、 ご存知の方いらっしゃいましたら、ヒントだけでも頂きたい です。宜しくお願い致します。 |
長文ですみません……。 >>2115 68user > " の中に " をそのまま書いた その通りです。うっかりしてました。 > form の action です。 htmlと同じなのですね。 strはよく見るのですが,hogeとかfugaは知らなかったので……。 よければ意味を教えて下さい。 > つまり全く同じコードであって、同じバイト列を EUC-JP と解釈するか、 > Shift_JIS と解釈するかで表示が違う、ということになります。 なるほど。 > print "Content-type: text/html; charset=EUC-JP\n\n"; > と適切なエンコーディングを指定してやればよいです。 やってみましたが,同じ結果でした。うーん……悩む……。 ちなみにこうする前は, Content-type: text/html\n\n と <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-euc-jp"> を入れていました。 > > jcodeのh2z_eucを使っても上手くいきません。 > この件は具体的に書いたスクリプトを提示して下さい。 require 'jcode.pl'; jcode::convert(\$str, 'euc'); jcode::h2z_euc(\$str); です。 > なるほど。ただその手法は壊れる確率は低いけど正確なカウントは > できないように見えるので、ある意味「逃げ」かなぁとは思います。 > 完璧な排他ができないはずはないと思っていますので。 そうですね。 私は「累計」を正確にカウントすることに意味があるのか疑問なので (カウンタは目安だと思っているので)気にしていないのですが, プログラム的にはつきつめる価値はあると思います。 >> 2152 > であれば, submit が含まれている form の target に "_top" を > 指定すれば良いだけに思えますが・・・ formにtargetが使えることを知りませんでした。 やってみたら上手くいきました。ありがとうございました。 > > EUCでconvertする前に文字化けしてしまうので(?) > というのは, どのように確認されましたか? いえ,確認できていないので(?)を付けています。 ただ,convertした後に半角カナを拾い出すスクリプトを入れていて, 文字化けした後の文に含まれている半角カナは拾うことができているので, なんとなくそうなのかな……と思いました(根拠になっていませんね)。 例)半角カナで「明アイウエオ」とすると「フタ竺軸宍雫七」(フタ:半角カナ)に 文字化けし,「フタ」を拾い出すことができています。 > スライス? すみませんが,意味がわかりませんでした。 ちなみに,このやり方は本屋で買った書籍から知りました。 |
>>2157 椎 > hogeとかfugaは知らなかったので……。 hoge の意味ですか? ならこちらを。 http://www.selab.tutkie.tut.ac.jp/~yoshida/hoge.html > require 'jcode.pl'; > jcode::convert(\$str, 'euc'); > jcode::h2z_euc(\$str); それで正しいと思います。 それでも化けるなら、文字列処理をしている全ての処理 - ブラウザから渡された「%8e%b1%8e%b2」というような URL エンコード された文字列 - & で split した文字列 - = で split した文字列 - URL デコードした文字列 - EUC に変換した文字列 で、print 文でデータを出力してみて下さい。そしたらどこで化けて いるかわかるでしょう。また、フォームが書いてある HTML の文字 コードが何になっているかも調べて下さい。 わからなかったら、最小限まで切り詰めたソースを見せて下さい。 >>> if ((@file1[9]) > (@file2[9])) { >> スライス? > すみませんが,意味がわかりませんでした。 $file1[9] が正しい、ってことでしょう。 > ちなみに,このやり方は本屋で買った書籍から知りました。 $file1[9] や (@file1)[9] なら正しいですが (わざわざ後者の書き方を する必要はありませんが)、@file1[9] は誤りです。本当にそう書いてあるなら その本は捨てましょう。 >>2156 Nira > CONNECT **.com:443 HTTP/1.0 > HOST: **.com ここまでは正しいと思います。その後は暗号化したリクエストを 送りますが…暗号化まで自力でやろうとしておられます? |
>>2158 68user ご返答ありがとう御座います。 >ここまでは正しいと思います。その後は暗号化したリクエストを >送りますが…暗号化まで自力でやろうとしておられます? CONNECTメソッドまでは正しいですか。 暗号化を自分でやるだけの知識は無いです。(--;) CONNECTした後は、サンプル通りのにやっているのですが、 SSL_connect()で0が返ってきます。 方法が正しいなら他の部分のバグかもしれないっすね。 そういえば、httpsの取得に良いサイトを発見しました。 https://www2.ggn.net/cgi-bin/ssl です。http://www.moxienet.com/lynx/ssl-testから リダイレクトされるサイトで、LynxでSSLが使用できる かどうかをチェックするためのサイトらしいです。 |
>>2158 68user ありがとう御座いました。 理由はわからないのですが動くようになりました。 SSL_load_error_strings(); の後に ERR_load_crypto_strings(); ERR_load_SSL_strings(); OpenSSL_add_all_algorithms(); を追加してみたら、難なく動きました。(--;) http://www.openssl.org/docs/crypto/BIO_f_ssl.html のサンプルを見てたら、上記3つの関数を呼んでいたので 真似してみました。 お騒がせ致しました。m(_ _)m |
はじめまして 最近CGIを作りはじめたして、問題が・・・ サーバはUNIXでCGIの処理を行なった後に作られたファイルの所有権がすべてnobodyになってしまっていて、その作られたファイルの操作が全くできなくなってしまいました。所有権の変更も出来ないんです。 だれか助けて下さい。。 おねがいします。 |
>>2159 Nira > そういえば、httpsの取得に良いサイトを発見しました。 ありがとうございます。このページをサンプルとして載せておきます。 >>2161 あやの > その作られたファイルの操作が全くできなくなってしまいました。 #!/usr/bin/perl system("rm -f ファイル"); print "Content-type: text/plain\n\n"; print "File removed.\n"; というような CGI スクリプトを作って、ブラウザから CGI に アクセスすれば消せます。 > 所有権の変更も出来ないんです。 普通ファイルの所有者を変更できるのは root のみです。 # 設定次第でできる OS もありますが。 よって、 - 事前にファイルを作成しておき、nobody が中身を変更できる ようにパーミッションを設定する。 - ファイルの所有者は nobody とし、他のユーザがそれを 参照・変更できるようにパーミッションを設定する。 - ファイルの所有者を nobody 以外とする。 サーバ管理者に suExec や cgiwrap を入れてもらうか、 自分で suid なプログラムを作る。 # http://x68000.startshop.co.jp/~68user/webcgi/permission.html のいずれを選ぶ、ということになります。 |
はじめまして、こんばんはっす。 突然ですがシェルスクリプトをつかってファイルを 書き換えようとしてるのですが "ディレクトリースタックの番号指定が深過ぎます." とコメントされ動いてくれません。どういうことなんでしょうか? ちなみに このシェルスクリプトです。 わかるかたがいたら教えて下さい。 #!/bin/tcsh set d=1 while(d<=16){ cat -n invar3_$d.dat > ninvar3_$d.dat d++} end |
>>2163 けんじ 突っ込みどころがたくさんありすぎて書ききれないので、とりあえず 動くものを置いておきます。 #!/bin/tcsh set d=1 while ( $d < 16 ) cat -n invar3_$d.dat > ninvar3_$d.dat @ d = $d + 1 end まずはマニュアルか、初心者向けの csh プログラミングの本を 読んで下さい。よい本が見付からなければ sh で書くのも手です。 sh なら結構な種類の本が出ています。 |
すいません、丁寧に教えていただき ありがとうございます。 はい、もっともっと勉強していきます! ただ、perlやshではうまくいってくれるのですが なぜかcshでは教えてくださったようにしても "ディレクトリースタックの番号指定が深過ぎます." といって動いてくれません。 特になにも変更等していないのですが、、、、。 なにはともあれありがとうございました! |
とても長いCGI処理がしたくてforkで子プロセスに処理を投げてあげたときは、ブラウザがすぐ開放されることは分かったんです。でも、処理中にエラーとか発生したときは見た目で分からなくなっちゃうんですよね?? エラーのときはなんか表示させたいのですが良い方法はあるのでしょうか? それとも長い処理はもっとfork以外の違う方法があるんですかね?? よろしくおねがいします。。。 |
>>2165 けんじ > ただ、perlやshではうまくいってくれるのですが perl と sh と csh は全く別物ですけど、それは理解されてますか? > 特になにも変更等していないのですが、、、、。 という文章は、sh で動いたものをそのまま csh でも動かそうと しているように見受けられます。 > "ディレクトリースタックの番号指定が深過ぎます." $d<=16 を d<=16 と書けばそうなります。 >>2166 かな 掲示板の一番上にある「使い方」を全く読んでいませんね。 # http://www.parkcity.ne.jp/~chaichan/qanda/qa1999.htm?01-10-03-19-11 |
>>2158 68user > print 文でデータを出力してみて下さい。そしたらどこで化けて > いるかわかるでしょう。また、フォームが書いてある HTML の文字 > コードが何になっているかも調べて下さい。 やってみたら,どこで化けているかわかりました。 jcode::convert(\$str, 'euc'); で化けていて,これを削除したら化けなくなりました。 なぜでしょうか? フォームが書いてあるHTMLの文字コードはeucにしています。 その場合は,コンバートする必要がないということでしょうか? とりあえず解決したみたいなのですが(?), 気になるのでぜひ教えて下さい。 > $file1[9] が正しい、ってことでしょう。 あ,確かに。 本からそのまま写して問題なく動いていたので 全然気付きませんでした。 人に見せると恥ずかしいので,早速,修正しました。 ありがとうございました。 > その本は捨てましょう。 あはは(^^; 確かに,少なくとも私のような初心者は 正しい記述の本で勉強した方がいいでしょうね。 私でも気付くような間違いがあちこちにあることは確かです。 でも,プログラミングのアイデアというかミソというか 参考になる点もたくさんあって,結構重宝してます。 |
とても初歩的な質問だと思いますが、教えて下されば幸いです。 掲示板を最近設置したのですが、サーバがアメリカにあるため 時差があるタイムスタンプをします。この時間を 16 時間早めたいのですが どのような記述をすればいいのか、わからないのです。恐らく下記の一行が関係するのだと思います。 $TimeDiff = 0; よろしくお願いいたします。また、過去ログを一応見ましたが既出の質問であった場合はお詫び申し上げます。 |
>>2168 椎 > なぜでしょうか? なぜでしょうね? 正確なところは各部分で s/([^-_a-zA-Z0-9])/sprintf("%%%02lX",unpack("C",$1))/eg; として URL エンコードした結果を見ないとわかりません。 > フォームが書いてあるHTMLの文字コードはeucにしています。 > その場合は,コンバートする必要がないということでしょうか? NN4, NN6, IE4, IE5 あたりなら、フォームの書いてある HTML と 同じエンコーディングで、フォームデータを送ってきますので、 フォームの書いてある HTML と、処理するデータのエンコーディングが 一致しているなら jcode::convert は必要ありません。 ただし、これは規格として明文化されているわけではないので、 あくまでも NN と IE がそういう挙動をする、ということです。 もし Shift_JIS や ISO-2022-JP で送ってくるブラウザがいた 場合は化けます。 >>2169 ジュン > この時間を 16 時間早めたいのですが 言語は何ですか? 以下は perl だと仮定して…。 $TimeDiff をどのように利用しているのかわからないと なんとも言えませんが、秒数なら $TimeDiff = 60*60*16、 時間なら $TimeDiff = 16 でしょうか。 localtime を使っているなら、その前の行に $ENV{TZ}='JST-9'; と 書いておけばうまくいくかもしれません。 |
> その本は捨てましょう。 う〜ん、ここは68userのボードなので構わないのですが、 なんか、2ch化しているようでちょぴりショックだなぁ(^^ゞ 多分typeでしょう、本当にその様に書くことを勧めているのであれば 68userさんと同じ意見ですが… だけど、椎さんがコマンドの本来の項を読まずに、理解しようとしないで コピーしているだけであれば、椎さんの手抜きでしょうけど(^^ゞ まあ、自分もはじめはそうだったので人の事を言えませんが(笑) ちなみに、テストの為にコンバートした短い文字列を表示していませ んか?昔のネスケでの挙動ですが、短い文字列の場合はブラウザで文字 コードの判別がつかずに化ける場合があります。 その場合はそこそこの長文を表示すると、うそのように表示される場合 が有りました。 原因はSJISとEUCの文字コードが一部かぶる為です。(自分のスクリプ トはSJISで記述の為) あと、よくやるのがEUCでコンバートして出力していながら、CGIの他の 表示部分で違うコードを出力していたり(結構気付かなかったりします) プログラマーな人は、この様な無駄なトラブルを減らす為にALL EUCで 作る人が多いようですね。 >プログラミングのアイデアというかミソというか 自分の場合は、他人のスクリプトを解析することでいろいろ覚えました。 リファレンス以外はこの手法が一番お勧めです。 無駄を省いたルーチンは誰が作っても大体同じようなものになるはずです。 この掲示板のソースだってかなり勉強になるはずですよ(^^ゞ >>2166 かな 「使い方」を読むどころか、コピー文章ですね(^^ゞ ここまで典型的なのもはじめて見ました(笑) ところで、最近JAVAに嵌まっているようですが、JAVAはJavaScriptと perlとどちらに近い印象でしょうか?>68userさん 敬遠していたJAVAも覚えた方がいいかなぁ、と思う今日この頃(^^ゞ |
>>2168 椎 > jcode::convert(\$str, 'euc'); > で化けていて,これを削除したら化けなくなりました。 > なぜでしょうか? とりあえず, getcode 関数の戻り値を確認してみましょう。 http://www.mikeneko.ne.jp/~lab/kcode/jcode.html#h2-1 http://www.din.or.jp/~ohzaki/perl.htm#JP_Code >>2157 椎 >> スライス? > すみませんが,意味がわかりませんでした。 ありゃ。すみません。 >>2158 68user > $file1[9] が正しい、ってことでしょう。 という意味でしたが, 断言する自信が無いのと もし, 意図的にやっている事ででしたら その理由が聞きたかったもので… ちなみにスライスについては http://www.context.co.jp/perlnews/bn/perl-newsletter-0010.html http://www.context.co.jp/perlnews/bn/perl-newsletter-0013.html が参考になると思います。 |
>68userさん 素早い回答と、明確のお答えありがとうございます。 使っている言語はperlで、秒数の設定により解決しました。ありがとうございました。 |
>>2170 68user > 一致しているなら jcode::convert は必要ありません。 必要ないということは,あってもいいのでしょうか。 つまりeucをeucにコンバートする処理をしても問題はないんですよね? そうだとしたら,今回の問題はまだ解決できていないということですね。 >>2171 スナフキン > コピーしているだけであれば、椎さんの手抜きでしょうけど(^^ゞ ええ,その通りです。まだわからないことが多いので,とりあえず(^^; > そこそこの長文を表示すると、うそのように表示される場合 > が有りました。 そうかもしれません。ただ,短い文字列を入力するようにしていますので, 根本的に解決しないとダメですね。 > CGIの他の表示部分で違うコードを出力していたり イメージできないんですが,具体的にどんな場合でしょうか。 エディタでeucで保存するようにしているのですが, これだけではeucにならないものでしょうか。 > この掲示板のソースだってかなり勉強になるはずですよ(^^ゞ 機種依存文字の検出のところなど,参考にしたいなと思っていました。 とはいえ,今日初めてソースを見たのですが, 理解するのに,かなり時間がかかりそうです。 >>2172 /tk > とりあえず, getcode 関数の戻り値を確認してみましょう。 おお,これは使えそうですね。やってみます。 > ちなみにスライスについては なるほど〜。よくわかりました。 必要がないのにスライスを使っていたことになるわけですね。 意図的でなくて申し訳ない感じです。 |
こんにちは、はじめましてTOMです。 初級アマチュアプログラマーです。 ちょっと自分で解決できなかったので質問を聞いてください。 ・モジュールAに、ライブラリlib30.soをリンクしています。 ・モジュールBに、ライブラリlib40.soをリンクしています。 ・さらに、ライブラリlib40.soの中で、ライブラリlib30.soの中の関数Func09が 使用されています。 ライブラリlib30.soの中の関数Func09が修正されました。 再コンパイル、再リンクは、 全て(モジュールA・モジュールB・lib30.so・lib40.so) 行わなければならないのでしょうか? よろしくおねがいします。 |
>>2175 TOM Func09 の引数の数や、引数の型、戻り値の型を変更しましたか? また、Func09 から他の部分のグローバル変数を参照するところ を変更しましたか? いずれの変更もしてないなら、ライブラリ利用側の再コンパイル・ 再リンクは不要です。 引数や戻り値を変えた (=インタフェースを変えた) なら、 再コンパイル・再リンクのし忘れを防ぐため、メジャー番号を lib30.so.1 -> lib30.so.2 などと上げた方がよいでしょう。 >2174 >> 一致しているなら jcode::convert は必要ありません。 > 必要ないということは,あってもいいのでしょうか。 あってもよいです。僕は必ず jcode::convert は付けます。 > つまりeucをeucにコンバートする処理をしても問題はないんですよね? 本来問題ないのですが、Shift_JIS の半角カナと EUC-JP を正確に 判別することはできないので、EUC-JP な半角カナを Shift_JIS の 文字列だと誤認してしまい、EUC-JP に変換しようとする、ということは あります。 一応 jcode.pl がエンコーディングを自動判別する際は、「Shift_JIS と して解釈できる部分の長さ」と「EUC-JP として解釈できる部分の長さ」を 比較して長さが長い方を採用しますが、もちろんこれでも完璧では ありません。 # たしか両方の長さが一致したら、EUC-JP とみなされたと思う。 > 必要がないのにスライスを使っていたことになるわけですね。 いいえ、@a[0] はスライスを使っているわけではありません (よね?)。 perl がおせっかいなので @a[0] -> $a[0] という読み替えをしている だけです。 % perl -we '@a=(100,200);print "@a[0]\n"' Scalar value @a[0] better written as $a[0] at -e line 1. 100 >>2171 スナフキン > ところで、最近JAVAに嵌まっているようですが、JAVAはJavaScriptと > perlとどちらに近い印象でしょうか?>68userさん うーん、どっちも遠いですねぇ…。でもまぁ僕がやってるのは サーバサイドの方なので、どちらかと言えば perl ですか。 でも、perl とは似てないですね。 とにかくクラス設計が楽しいです。 |
すいませんでした。 以後気を付けます。。 |
はじめまして。 ネットワーク関係の関数でちょっと質問なのですが。 inet_aton(hostname)になっていますがこれをinet_aton (ipaddres) にしても問題はないのでしょうか? hostnameが解決されていない場合、IPアドレスをそのまま 使用してみたのですが表面上問題はでていませんが、 内部的にどうかまで分からなかったので。 どなたか教えて下さい。 分かり難い内容の書き込みになってすみません。 |
>>2176 68user > # たしか両方の長さが一致したら、EUC-JP とみなされたと思う。 一致した場合は undef では? > いいえ、@a[0] はスライスを使っているわけではありません (よね?)。 > perl がおせっかいなので @a[0] -> $a[0] という読み替えをしている > だけです。 http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html を読んだうえでの僕の解釈は @a[0] はスライスです。 但し, 要素数が 1 のリストであり, スカラー値ではありません。 たまたま @a[0] をスカラーで評価したときに, その最後の要素である $a[0] が返されただけです。 となるのですが 例によって勘違いしている可能性大です。 |
>>217668user 68userさん インターフェイスの変更は、ありませんので ライブラリ利用側を再コンパイル・再リンクせずに利用できました。 回答ありがとうございました。 |
/tkさんが教えてくれた↓のページを読むと, > http://www.mikeneko.ne.jp/~lab/kcode/jcode.html#h2-1 ・convert()は内部ではgetcode()を自動的に呼び出し文字コードを判断する ・getcode()では,半角カナは文字コードの自動認識の判断対象からはずされる とあります。また,スナフキンさんが > そこそこの長文を表示すると、うそのように表示される場合が有りました。 と言われたように,私の場合も半角カナ以外の文字をある程度以上追加すると 文字化けしないことがあります。 例)アイウエオ(半角) →竺軸宍雫七(全角) アイウエオ(半角)あいうえお(全角)→アイウエオ(半角)あいうえお(全角) これらのことから,今回の文字化け現象の原因は,convert()が (正確にはgetcode()が)半角カナの文字コードを 正確に判別できていないことのようです。 これを調べるためにコンバートの前後でgetcode()をかけてみました。 $code1 = &jcode::getcode(\$str); jcode::convert(\$str, 'euc'); $code2 = &jcode::getcode(\$str); その結果,次のようになりました。 $str = 'あいうえお' → $code1 = 'euc',$code2 = 'euc' $str = 'アイウエオ(半角)' → $code1 = 'sjis',$code2 = 'euc' つまり,getcode()は半角カナの「アイウエオ」をsjisと判定して sjisをeucに変換する処理をしていたのです。 長々と書きましたが,68userさんが書かれたように, > Shift_JIS の半角カナと EUC-JP を正確に > 判別することはできないので、EUC-JP な半角カナを Shift_JIS の > 文字列だと誤認してしまい、EUC-JP に変換しようとする、ということは > あります。 ということのようです。 で,ここでどうするかというプログラム上のアイデアが問われるのですが, (残念ながら例の本には載っていません・笑) 今は,「$strに全角文字を数個追加して,コンバート後にそれを除く」ということを 考えています。 ただ,自分でもかっこ悪いなぁと思うので,他にアイデアがあれば教えて下さい。 >>2176 68user > いいえ、@a[0] はスライスを使っているわけではありません (よね?)。 私は/tkさんが教えてくれたページを読んでスライスを覚えたので No.2179の/tkさんと同じ解釈をしたのですが, この解釈の違いによって,使い方とその結果が変わるということが ないのであれば,あまり本質的な問題ではないような気がします。 68userさんが正しい知識を教えようとしてくれる気持ちはとてもありがたいです。 |
シイ |
すみません。下の書込は私,椎です。 今回のことがあって,名前のような文字数が少ないフォームへの 日本語の記入に抵抗を感じたので, これから椎はやめてshiiにしようと思います。 |
>>2178 SA > inet_aton(hostname)になっていますがこれをinet_aton (ipaddres) > にしても問題はないのでしょうか? 問題ないと思います。FreeBSD では inet_aton と inet_addr は同じ 関数になってます。 # http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/net/inet_addr.c?rev=1.12.2.1 >>2179 /tk > @a[0] はスライスです。 ん〜、(@a)[0] とは違うということですか? >>2179 /tk > 一致した場合は undef では? >>2181 椎 > ・getcode()では,半角カナは文字コードの自動認識の判断対象からはずされる そうでしたっけ…。昔 jcode.pl を読んだときはそうじゃなかった ような気がしますが、読み違えていたのかもしれません。 > 今は,「$strに全角文字を数個追加して,コンバート後にそれを除く」と > いうことを考えています。 追加する全角文字のエンコーディングを EUC-JP にするか、Shift_JIS に するかが問題です。どちらか決めるためには追加対象文字列のエンコーディングを 自動判別しなきゃいけません。で、それが正確にはできないので…と堂々めぐりです。 まぁ、元のフォームが EUC-JP であるということなので、 /([\x00-\x7F]|[\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE])*/ にマッチすれば EUC-JP として解釈できる文字列である、ということですから 無変換、でいいと思います。 # jcode.pl は汎用ライブラリですからそうもいきませんが。 > すみません。下の書込は私,椎です。 名前の部分にカーソルがある状態で Enter を押しても書き込み しないようにすればよいのかな? (どうやるのかさっぱりわかりません) |
>>2184 68user > 追加する全角文字のエンコーディングを EUC-JP にするか、Shift_JIS > にするかが問題です。 半角カナ「アイウエオ」の場合,後ろにスペースを3つ追加するだけで 上手くいきました。多分,全角文字なら判別対象になるので, それをある程度の長さで追記すればいいのかなと思いました。そこで, html側で別に送った全角文字を追加して判別するつもりでした。 ただ,こちらの掲示板では短い半角カナの「シイ」を判別できたので, jcode.plのせいではないようです(私の方ではシイも化けました)。 cgi-lib217.plを使っているせいかも……? 人様のプログラムの改造から使い始めたPerlですが, 以前に比べればいろいろなことがわかってきました。 上述のことを確かめる意味でも, 自分が理解できる範囲で1から作り直してみることにします。 (jcode.pjは深く考えずに使いますが……(^^;) それを検証できたらまた報告しますね。 |
>>2174 椎 >イメージできないんですが,具体的にどんな場合でしょうか。 すみません、よく読んでいませんでした。 CGIで出力するページソースの中の日本語コメントがSJISでEUCに変換 した日本語を同時に出力と言うケースでしたが、shiiさんの場合は まったく違うようですね。 >>2176 68user サーバーサイドという事は常駐システムですね。 さすが68userさん(笑) 自分も先日初心者用のCD付き本を買ってきて、JDKをインストールして みましたが、いきなりサンプルの Hello! が動かないトラブルで、 既にめげています(笑) ざっと見た感じでは、関数類を覚えれば特に難しく無さそうな感じも しますが、甘いかな?(^^; もしよければ、お勧めの初心者向けサイトを教えてくれると嬉しいです。 >2184 >名前の部分にカーソルがある状態で Enter を押しても書き込み こういう事でしょうか? <HEAD〜内 <SCRIPT LANGUAGE="JavaScript"> <!-- function submit_check(){ if(!document.FORM.elements.MESSAGE.value){ alert("メッセージを記入してください。"); return; } if(!document.FORM.elements.NAME.value){ alert("名前を記入してください。"); return; } document.FORM.submit(); } //--> </SCRIPT> <FORMへ <FORM METHOD=POST ACTION="$script_name" NAME="FORM" OnSubmit="submit_check();return false;"> 外してます? |
>68userさん ありがとうございました。 IPアドレスで使用していきます。 |
cgi-lib217.plを使わずにreadで読んでやってみましたが やはり文字化けしました。引き続き調査中です。 |
すいません、また怪奇現象が起こったのでお力をお貸しください。 Excel のワークシートを単純に <a href> タグでリンクすると クリックすると中が見えてしまう(文字化けの文書として開こうとする)ので、 いぜん別の場所で教えてもらった方法をアレンジして 下のような CGI スクリプトで行っています。 --- download.cgi --- #! perl $arg = $ENV{'QUERY_STRING'}; $arg =~ /name=(.*)/; $excelfile = $1; $pwd = `pwd`; chomp($pwd); unless (open (FL, $excelfile)) { print "Content-type: text/plain\n\n"; print "error opening $excelfile because $! at $pwd"; exit; }; print <<HEAD; Content-type: application/octet-stream Content-disposition: attachment;filename="$excelfile" HEAD print <FL>; close(FL); ------------------- これを、 <a href="http:.../cgi-bin/download.cgi?name=test.xls">ここをクリック</a>して xls ファイルを、、 のように呼び出そうという寸法です。 これが、場所によって挙動が異なるのです。 project | cgi-bin | | download.cgi | subproj1 | | aaa.html | | xxx.xls | subproj2 | | subdir | | | bbb.html | | | yyy.xls ここで、 http://org/~project/subproj1/aaa.html として見える aaa.html の中に、 <a href="http://org/~project/cgi-bin/download.cgi?=xxx.xls">XXXをダウンロード</a> と書くとうまくいくのですが、 http://org/~project/subproj2/subdir/bbb.html の中に、 <a href="http://org/~project/cgi-bin/download.cgi?=yyy.xls">YYYをダウンロード</a> と書くと、 error opening yyy.xls because No such file or directory at /.../project/cgi-bin と表示されます。 パスが何らかの理由で見えないのかと思って <a href="http://org/~project/cgi-bin/download.cgi?=../subproj2/subdir/yyy.xls">YYYをダウンロード</a> と書くと、なんと download.cgi という名前でファイルを保存しようとします。 保存して中を開けてみると、中身はなんと yyy.xls! 1回目の実験は xxx => yyy の順番で行ったので、 何らかのキャッシュが行われているのかと思い、yyy => xxx の順で行っても同じです。 ということでよろしくお願いします。 サーバー側は FreeBSD 2.2.8-RELEASE+Apache(Apache のバージョンの見方がわかりません、、)、 クライアント側は Windows2000 Server+NC4.51 および IE6 です。 |
↓下の件ですが、Apache は 1.2.5 だと管理者からメールが来ました。 |