△▲ WebProg 初心者の質問 Part10 ▼▽
とりあえずHTTPの基礎の基礎を知った方がいいよ。
改行が連続二つ出力されたらそこでヘッダは終わり。あとは本文ね。
headerメソッドが\n\n出力するから、その後の出力は全て本文。
>>931 任意のタイミングで設定していいけど、Cookie:〜とLocation:〜は同じヘッダなんだから、
最終的には常に同時に出力するに決まってるでそ。
>これだと、クッキー設定後にいくつか処理をしてリロードってわけには行かない
ヘッダは一つしか送れないんだから当然そう
何も考えずクッキー用のheaderメソッドのprintを遅らせればいい
送信するデータの頭から改行の連続までの間にクッキーとロケーションのフィールドを
書けばいいだけなんで、難しく考える必要はないよ。
そ れ よ り も
レンタルサーバで練習しないように!!!
サーバはEUC、HTMLのcharsetはShift_JISの場合、
ソースやログはEUCがいいのかな?
サーバはEUCって何のことですか?
何だろ?
Apacheのdefault charset?
940 :
915:04/11/26 10:42:44 ID:deltuD8N
>>916 >>917 レス遅くなりましてすんません。
916氏のSAMBAについては、目からウロコ。
そういえば、そんな機能があったんだっけ、と。
917氏の互換ドライバについても、懸命に探してみます。
Telnetサーバでという方法は、どういう実現方法になるか、
探しながら、考えてみます。
ありがとうございました。
>>935 知ったかイクナイ
HTMLがSJISなら全部SJISで統一したほうが楽
文字列処理するならEUCのほうがいいけど。
942 :
880:04/11/26 11:57:10 ID:???
天気がいいのでちょっとドラクエ買ってきます
>>885 うーむ、難しいなあ。
Apache::Original てのが perl モジュールだろうから、
それを全部 C で書き直して、
mod_original とかいうのを作って、
それを apache に読み込ませる、
という手は一応あるが....
まあ Apache::Original の中身による。
もしそいつのやってることが単純な URI 変換だったら、
mod_rewrite で工夫することで、同等の機能を実現できるかもしれん。
化ける理由が無いだろ
サーバOSの文字コードがeucで、出力するhtmlのcharsetがsjis。
この条件は変えられないんだけど、ソースファイルやログの文字コードは
eucかsjisかどっちにすべきだろう。全部eucで、でhtml出力時にデータをsjisにするとか?
OSの文字コードなんか関係ない。
・perl 5.8 以上で use Encode できるなら、euc でも sjis でも OK
・perl 5.8 未満だと、ソースを sjis で書くときは注意が必要
注意するのが面倒な人は euc にしておくのが無難
・perl5.8 未満でパターンマッチする際の内部処理コードは
euc でも sjis でも問題が起きるが
euc の方が若干問題が起きる頻度が低い
・perl 以外の場合はよく知らない
・どの場合であっても「サーバの文字コード」は実際のところ全く影響しない
>>949 ありがとうございます。perlは5.6.1です。
ReadParseしてjcode::convertでsjisにすると、いきなり半角カナが幾つか化けます。
それが嫌でjcode::convertを外したんですが、これじゃ何の解決にもならないですかね?
必ずsjisで送られてくるとは限らない。
かといってconvertすると半角カナが化ける事があるわけだが。
convert は入力文字列のコードを自動判別するが
半角カナが混じってると自動判別に失敗するからな
入力文字コードをsjisだと指定してやれば問題ない、と書こうかと思ったが、
sjis だと確定してるんだったらそもそも convert する必要がないのか
>>952 sjisで来るとは限らないです。たぶん。。。
getCodeしてjcode'convert(*s, 'sjis', getCodeした文字コード);
とかすべきですかね?
getcode も半角カナがあると同様に判別に失敗するので
事態はあまり改善しないと予想される
実際の所、charsetがShift_JISなのにsjis以外で送信してくるブラウザってあるんかいな。
convertしなくていいんじゃね?
まあ文字コードはみんな悩まされる罠。
>>956そのサイトでコードが判定できなかった場合user_agentがWin or Macならsjisってやってるけど
俺も似たようなことやった事ある。
>>955 Lynx は常に EUC で送ってたような。
w3m に乗りかえたので今どうなってるかは知らんが。
959 :
nobodyさん:04/11/26 19:44:56 ID:ijhptfN0
FORMで送信した文字コードを変換するにはどうしたらいいんでしょうか?
<FORM action=c.exe method=post>
<TEXTAREA name=text rows=5 wrap=virtual cols=10></TEXTAREA>
<INPUT type=submit value=送信 name=Submit>
</FOMR>
このようにして文字列を送って、それを表示させると文字化けします。
検索してみると、perlのなんかを使って...というようなことばかり書いてあるんですが、
簡単には変換できないのでしょうか
このプログラムはLinux上で動いていて、EUCで出力されてます。
それをIEで実行させたいんです
perlも何も動いてはいません。
c.exeはCで書いてgccでコンパイルしたファイルです
>>959 C用の文字コード変換ライブラリを探せば見つかりますよ。
もちろん自分で書いてもいいですし。
○ </FORM>
× </FOMR>
>>955 確かボーダフォンはEUCでもPOSTデータとかSJISで送ってきた覚えがある
昔すぎる情報かもしれんが。
すみません。cgi設置初心者なんですが、上級者の皆様に
ご教授願いたくてやってきました。
ホームページに、メール送信フォームを置きたいのですが、
メール送信エラーになってしまいます。
この場合はどんな不都合が考えられるのでしょうか?
自分自身が、借りてるサーバーとスクリプトを借りたところの説明を読んで、
なんとなくあやふやなままにした
sendmailコマンドとやらなのかな
と思っています。
それか、フリーメールに送信先を指定したせいでしょうか?
サーバーに問い合わせてみるつもりですが、返信が遅いのでいてもたってもいられないです。
よろしくお願いしますm( __ __ )m
>>965 メール送信エラーってのがどんなエラーか分からないと答えられないよ。
967 :
965:04/11/27 12:13:05 ID:???
レスありがとうございます。
どうやって説明したらいいのかわからない位初心者なんですが、
"送信"のボタンを押すと用意してあったエラーページが出てくるんです。
テストモードの時はOKが出たのに、
なにが駄目なんでしょうか?
すみません。よろしくお願いします。
>用意してあったエラーページ
???意味不明
969 :
965:04/11/27 13:47:19 ID:???
>>968 ごめんなさい。
えっと・・・Internal Server Errorと区別した方がいいのかなと思って、
意味不明になってしまってごめんなさい。
Internal Server Errorが出るのは、cgiがうまく作動してないってことなんですよね?
それだったら本にたくさん書いてあるのですが
そのエラーじゃなくて、サーバーにうpしたhtmlのページが出てくるんです(これも意味不明ですよね;)
フォームに書き込み→書き込み確認→送信エラー
になってしまうんです。
970 :
965:04/11/27 14:32:32 ID:???
今、サポートページを見ながら試行錯誤してたら、
送信処理
がないことに気づきました。
どうしたらいいのかわからなくなりました。
971 :
965:04/11/27 14:45:20 ID:???
>>696 500エラーが出るのはヘッダを吐かずに終了した時や実行出来無かった時等。
「用意したエラーページ」が出るのはトラップされている予想されたエラーが発生した時。
で、何が原因なのかはCGI自体を見ないと分らないわけで、
とりあえず、そのCGIの名前を書け。
良くある所だとsendmailパスの設定が間違ってるとか
鯖の設定でsendmailの使用は許可されて無いとか。
973 :
972:04/11/27 14:52:32 ID:???
>>971 って書いているうちに貼られてたかorz
974 :
965:04/11/27 15:04:19 ID:???
>>973 長文ありがとうございます。m( __ __ )m
サーバーはqmailを採用してるとあったので・・・
(「qmail」には、「sendmail」互換のコマンド(ラッパー)があります。通常の利用では「sendmail」と同様に利用できますが、一部のオプションに制限があります。
と書いてありました。)
kentさんのサポートページの過去ログを見てたら
if (open(MAIL,"| $sendmail $mailto")) {
を
if (open(MAIL,"| $sendmail -h $mailto")) {
に変えてみ
とあったのですが、検索してもどこだかわからないのです。
何レスも使ってごめんなさい(>_<)よろしくおねがいしますm( __ __ )m
エラーに表示される文言を正確に教えて
976 :
965:04/11/27 15:23:35 ID:???
>>975 ERROR !
メール送信失敗
(>_<)何回やっても失敗しちゃいます
駄目だこいつ・・・
ワラタ
>>976 それはスクリプト自信が吐いてるエラーでしょ。
979 :
965:04/11/27 16:20:23 ID:???
??(>_<;)