トップページ⇒php
1001コメント350KB

【Perl】初心者コーナー Part19

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/01/11 13:52ID:???
初めに→「perl」その物のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

あとは>>2-10にまかせた。
041240903/01/23 13:28ID:???
>410さん
#!/usr/local/bin/perl
print "\r\n\r\n";
open(FILE,">>./1234.txt");
print FILE "0123456789\r\n";
close FILE;
というふうにしてみたんですが、今度はダウンロードしますか?の
ダイアログが出てきてしまいました。どうなってるんでしょうか?
0413nobodyさん03/01/23 13:38ID:???
ダイアログが出たということは、正常に動作しています。

PerlをCGIで動かす場合には、HTTPヘッダを出力する必要があります。
CGIで動かした時にHTTPヘッダがなければ、>>409のようにエラーで動きません。
それだけです。
041439803/01/23 13:46ID:???
>>406
申し訳ございません。
おっしゃる意味が分からないのですが・・・。
0415nobodyさん03/01/23 13:54ID:Ah3Ym1t7
質問します。

文字列中に
#1234(1234は3〜6桁の数字)
と有った場合、
<a href="http:/hoge.com/hoge/1234">#1234</a>
                    ~~~~~ ~~~~~~~
#を外した数字↑   ↑元の文字列

と言う風に変換したいのですが、上手くできません。
どなたかご教授ください。
よろしくお願いします。
0416nobodyさん03/01/23 13:55ID:???
>>414
プログラム的に説明すると、$|=1;を先頭の方に加える。
バッファの意味は辞典なり検索なりして調べてください。
0417nobodyさん03/01/23 14:33ID:???
>>415 こ、今度だけだぞ
my $str = "#1234(1234は3〜6桁の数字)";
(my $tr = $str )=~ s!(#(\d{3,6}))!sprintf("\"http:/hoge.com/hoge/$2\">$1</a>")!ge;
print "$str ->\n$tr\n";
0418nobodyさん03/01/23 14:36ID:???
>>417
おっと、いけねぇ、ミスってもうたわい。まっ、いいか。
0419nobodyさん03/01/23 14:47ID:???
s!#(\d{3,6})!<a href="http://hoge.com/hoge/$1">#$1</a>!g;

補完
042039803/01/23 14:47ID:???
>>416

出力バッファを吐き出すことと、
サブルーチンが見付からないこととはどのような関係があるのでしょうか。
$|=1;を加えてみましたが、結果はかわりませんでした。

ただ、気になるのですが、
$subject = mimeencode(jcode'jis($subject);
と呼び出した場合、
Undefined subroutine &該当コードが含まれているパッケージ名::mimeencode
とエラー出力されます。

mimew.plは正常に読み込んでいるようなのですが・・・。
042139803/01/23 14:52ID:???
ちなみにjcode'jisは正常に呼び出せています。
0422nobodyさん03/01/23 15:03ID:Ah3Ym1t7
>>417-419
ありがとうございました。
上手くいきました。

0423nobodyさん03/01/23 15:15ID:???
>>421
mimew.plのエラーじゃないだろ。冷静になってよく考えろ。
0424nobodyさん03/01/23 15:19ID:???
>>409
さっさと411をためせよ
0425nobodyさん03/01/23 15:21ID:???
>>398
だから、なんでアホみたいにprint MAIL なんとか
でやるの?バッファリングするなっていわれてるのに
$mess にぜんぶメールいれといて
system (,"|/usr/sbin/sendmail -t -i , $mess);
かなんかでポンとやれよ。
ファイルハンドルの意味わかってんの?
042639803/01/23 15:28ID:???
解決しました。
mimew.plを見たら、パッケージ名がMIMEと設定されていました。
呼び出しミスでした。お騒がせ致しました。

ただ、jcode.plの場合はrequireするだけで良かったって言う、理由が、よくわからないままです。
よろしければご教授ください。
0427nobodyさん03/01/23 15:30ID:???
>>426
mimew.plのあたまのほうは?
おれはrequireするだけでうごいてるけど
0428nobodyさん03/01/23 15:41ID:???
>>426
あんたのmimew.plにmain'mimeencodeサブルーチンが欠けているか
main以外のパッケージ空間を使用しているからでしょ。。
042942603/01/23 15:46ID:???
>>423,425,427,428
ありがとうございました。
がんばります。ごめんなさい。
0430nobodyさん03/01/23 17:27ID:kDsUWLbm
>>406 >>416 >>425
今回の問題にバッファリングは関係ない。closeしているから。
なんでも$|=1って書けばいいものじゃない。あほか。
0431nobodyさん03/01/23 17:34ID:kDsUWLbm
もしMAILに対してバッファリングをしないように設定したいのであれば、
select(MAIL); $| = 1; select(STDOUT);
こうするべき。この辺りはわかって言ってるんだよね?
043240903/01/23 18:06ID:???
>>411さん,>>413さん,>>424さん
ありがとうございます。上手く動きました。
何度試してもずっと内部サーバエラーですが出力されていたのですが、
ブラウザを閉じてもう一度アドレスを入力したら動きました。
なんだかふに落ちないのですが、ひとまず動いたのでよしとします。
一時ファイルとかそんなのが問題になってるんでしょうかね?
0433nobodyさん03/01/23 18:19ID:???
そうですね。
0434nobodyさん03/01/23 19:02ID:0ikp7K62
モジュールをwinxpでインストールしたいのですが
解説書などを見ても意味がわかりません。
$su が最初に出てくる画面は何のアプリを使ってるのでしょうか?
0435nobodyさん03/01/23 19:26ID:/BytM6mn
>>434
Linux
FreeBSD
cygwin
0436nobodyさん03/01/23 21:01ID:???
>>435
UNIX系と言えば丸く済むような。
0437nobodyさん03/01/23 22:30ID:CHeIi8Oa
会社のネットワークからだと、
制限かかってて見れないページがあるんですが、
自宅のwebサーバーを経由して、見れるようにする
方法ってないでしょうか?

0438nobodyさん03/01/23 22:33ID:vGzRwfzk
>>437
串じゃあかんの?
0439nobodyさん03/01/23 22:42ID:JsPmMcCV
文字列を、ある文字コード分だけずらすには
どうすればよいのでしょうか?
$char = "ABcd";

何らかの処理
(例えば +10hさせる。)
↓
$char が QRst となる。


文字を取り出すのはやってみたんですが、
文字をずらすのがわかりませんでした。
--------------------------------
$char = "ABcd";
for ($i = 0; $i < length($char); $i++) {
$c = substr($char, $i, 1);
}
--------------------------------
0440nobodyさん03/01/23 22:51ID:KCPQ5bMl
>>439
$c += 10;
044143803/01/23 22:54ID:???
>>440
そうやると$cに数字の10が入ってしまうんですけど・・・
044243903/01/23 22:55ID:???
↑失礼
ハンドル間違えました。
044344003/01/23 22:59ID:KCPQ5bMl
$c++;
を必要なだけ繰り返す。
0444nobodyさん03/01/23 23:07ID:???
>>441
char型は整数型なんだけどね。
0445nobodyさん03/01/23 23:10ID:CHeIi8Oa
>438
串刺すとみれるんですか?
.pacのファイルを指定してプロキシ経由してるんですが、
その辺よく分からないので、よろしかったらご指導ください。。





0446貧乏パーラー03/01/24 00:19ID:???
>>437
俺も会社からちくり板見るれなくなって欲求不満だった。
だから某所のコード改造してから自作したよ。
これでもパーラーだからねピュアperlで作った簡単httpポートフォワーダだよ。
0447貧乏パーラー03/01/24 00:20ID:???
>>446
---この下から---
begin 666 http-tmp2ch.zip
M4$L#!!0````(`&F_-RZKG&Q7[0,```<*```.````:'1T<"UT;7`R8V@N<&R5
M5FUOVD@0_FQ^Q90XQ:A@`]%))R,XI6W:1,H!"MR+5!IDS!*LFK5O=PF'0OK;
M;V=?,'"D:E8"KW>?F7EV=N:!LS?!BK,@S>(H#:8)#7+"TM+90HB\+I9Y"]0L
MSYB`><;6$9L1!N\W<.V+[!O)-#(,@D6V)'GT0"Y\FLS%QH^S9:`0-+BB#_7W
M06G%"7#!DEBTU?RF'X;#+/Y&]M])2G!_N0'W]G(V8]`!]_+N\Y]?&E_AMV(:
M0D4Q7F1<5`Q\@!PMO(EP\ABEGGVOHE%+#H,?74O;';Y5N&\I]_+L?BM>^)2(
M"AB+@P@71Q$N=(1?&PC/64(%E,<4LP."193#S2":S4)SK-N$"T)#PUH#D%!H
M>.%RJ"..:5G'3Y7-)#<LE*G>X3*-DW64B(0^R*TBLV%XT[L:U;N4K#T=$N3H
M=&'8__WR[P_]7J]6@I\=MYAQG8/N`9M7^!BP3&1J)GU41)Q77F%\1[!.<$CC
MYFN9ZW+JFL*JP<^;5]NE]2))"7@VV9C__:37NU$<DUQ4GY17"?/<Z6I><QGY
M9T6XD!X<Y<)K5N&IY#A\PQF)9I[R4@,%AF9##@FU<:TU^!V%*':2.7C%=N<[
M+(,Q&U/\;.6#!F"8_,#@WAOTAZ/MYZM1%13>D4,QQZZ2G-35@BMK9R(-:RY'
MKG@2.:06>#Q/$^%5QK12G%.?3HY`57,`;]_"++.+CCOI0$7M0,4WI:X=.L_F
M&=R1.6&$G;+]SK=&;K[<!U_?V1?M:)L=>;+,5?HFONS&L@GV7)R5F5,F$1:%
MFQ/"T%G5('<+]L;K75RAT9(8Q)&+J@0B#N>3A'J%Q[8-JI8F"^WT@0B<33=H
MX!D:</EI@HU[;!-I14RD*$VHR"*#-S!]09V&>3,!#K+L6O'06M8^J!'CX$4!
M00_@.`/)9-=+JE0..TDC=CIQ0B`DPLK`:15PJD?,5/F^`4/PJ+81X&C%U<U9
MOAZ-!D'3;\`OC0;$$:69`$9XECX2'WND?.`>ZT$]U9RD4F.>#O<=KGZ7/-L"
MX&X[S3:8U>'H8_^/4?7(YXZ1HF1K\1BTJU'9DCRX#P""A^5I3V6`>AUL"W,1
M,5&O__\L-NX+`4_Y(G1F/#FVW+B4&]A[1[%*Y:^'<J=6=RGY4484TH0\/S__
MBTREB$<S&")[DYLB\(%"JG*U8=_)IMHIII%,7FBF%$TP)OMUH"#(6&^M:$HX
M]]1J$<-)HT*$L!+,\R7J5[V/>\1A3T_B-./$U@BTS]!D2-BC_,.$S00?<+^D
MT38HP#-^F:+;!>R1?[%B9;@YRY8P9=F:$V8R17&S[6ACO%;]77#5D21=?;U#
MG0N;:L1:JEK0GTNE_P!02P$"%``4````"`!IOS<NJYQL5^T#```'"@``#@``
M```````!`"``MH$`````:'1T<"UT;7`R8V@N<&Q02P4&``````$``0`\````
&&00`````
`
end
---この上まで----
0448nobodyさん03/01/24 00:24ID:???
>>447
ishてまた懐かしい。
0449nobodyさん03/01/24 00:28ID:f7nkT00I
>>439
$char="ABcd";
print pack("C*",(map { $_+10 } unpack("C*",join('',$char))));

別に1行でなくてもよいけれど、、、
0450貧乏パーラー03/01/24 00:31ID:???
>>447
上のuueコード部分をテキストエディタにコピペして(ファイル名http-tmp2ch.uue)

WinZIPでそれを開いてその中に出来ているhttp-tmp2ch.plを適当なディレクトリにコピ
Dos窓開いてhttp-tmp2ch.plをコピーしたディレクトリにcdして

使用方法
perl tmp2ch.pl パソコンのDNSホスト名(もしくはIPアドレス) 任意のポート番号 2ch板ホスト名 80
として起動
そしたらブラウザから
http://パソコンのDNSホスト名:任意のポート番号/2ch板ホスト名以降のアドレス
として見る。
例
c:\hoge>perl http-tmp2ch.pl Mypc.com 2222 pc.2ch.net 80
ブラウザからここを見る例
 http://Mypc.com:2222/test/read.cgi/php/1042260745/l50
他の2ch板指定したい時この要領でホスト名と別のパソコンポート指定汁。

ためしにパソコンのホスト名をlocalhostとして試しても良し。
045144903/01/24 00:35ID:???
join('',$char)
を
$char
に訂正。
無意味だ欝
0452nobodyさん03/01/24 00:38ID:???
>>439
my $char = "ABcd";
$char =~ s/(\w)/chr(ord($1) + 0x10)/ge;
print $char; # > QRst

私はこういう方法で偶に変換してます。。
0453nobodyさん03/01/24 01:06ID:???
Configuration Error
The server encountered an error while processing your request.
Please contact the administrator of the referring document and inform them of the time the error occurred, and anything you might have done that may have caused the error.



--------------------------------------------------------------------------------

The CGI environment at the time of this error was

こんなのが表示されたんですがどうすればよいでしょうか?

0454nobodyさん03/01/24 01:12ID:???
>453
ちゃんとローカルでテストしましょう。
そのエラーメッセージじゃ何もわからんよ。

まずはローカルでテストできる環境を作って、そこでエラーメッセージをちゃんと吐かせる。
そしてエラーメッセージの意味を調べて、スクリプトを修正する。
045543903/01/24 01:13ID:???
>>449,452
ありがとうございます。
今までネットで探していたら、
452さんも使われているchr関数を見つけましたので
一端ordで変換してchrで戻してみました。

449さんも使われているpackも見てたのですが、
ちょと私にはまだ難しかったみたいです(^^;
0456nobodyさん03/01/24 01:17ID:???
>>454
すみません
ローカルって何ですか?
0457nobodyさん03/01/24 01:19ID:???
>>453
453の:とるにたらない人さん:03/01/24 01:06ID: ???
Configuration Error
コンフィギュレーションエラー
The server encountered an error while processing your request.
あなたのリクエストを処理する間に、サーバーはエラーに遭遇しました。
Please contact the administrator of the referring document and inform them of the time the error occurred, and anything you might have done that may have caused the error.
どうか指名しているドキュメントのアドミニストレーターと連絡を取って、そして(彼・それ)らにエラーが起こった時とエラーを起こしたかもしれないあなたがしたかもしれない何でも知らせてください。
0458nobodyさん03/01/24 01:24ID:???
>>457
よくわからいので初心者でもわかるように説明してもらえないでしょうか?
お手数かけます
0459nobodyさん03/01/24 01:34ID:???
>456
あんたのパソコン。
サーバー上でCGIのテストするな。
後は検索して調べな。
説明ページは探せばいくらでもある。

それ読んで分からないようなら、CGIの改造とか色々考えるな。
改造せずにそのまま設置しようとしてそのエラーなら、配布元の指示に従ってちゃんと行動してないって事。
とにかく書いてある文字を読め。
0460nobodyさん03/01/24 06:22ID:???
>>456
自分のパソコンにPerlをインストールして、それで走らせて
デバッグする。WinでもMacでもあるよ。
0461nobodyさん03/01/24 09:10ID:???
これって2ch掲示板のことじゃ・・・・
0462nobodyさん03/01/24 14:56ID:Mw0EqohX
>>461
read.cgiはcじゃなかったっけ
0463nobodyさん03/01/24 15:21ID:8KdGKoGc
★http://jsweb.muvc.net/index.html★
 ★こんなサイト見つけました★
0464nobodyさん03/01/24 15:49ID:???
検索フォームから、例えば何らかのperl関数を入力された場合、
CGIが暴走するということはありえるでしょうか?
0465nobodyさん03/01/24 15:55ID:???
>>464
evalなんてバカな関数使ってるならそれなりにありえる。
0466nobodyさん03/01/24 16:04ID:???
>>465
ありがとうございます。安心しました。
0467free se03/01/24 16:04ID:???
まああれだ、好きな音楽を聴きながら仕事している方が効率いいな。
おまえらはどうだ?
0468nobodyさん03/01/24 16:15ID:???
>>467
音楽聴いてるとソース書けない
0469nobodyさん03/01/24 16:20ID:???
>>467
無音に限る
0470nobodyさん03/01/24 17:18ID:???
>>467
集中したい時は耳栓するぞ。
そうすると呼吸の音が気になってくるんだなこれが。
0471nobodyさん03/01/24 17:20ID:???
息止めろ。
0472nobodyさん03/01/24 17:25ID:???
>467
簡単な物は音楽が鳴っていた方がいい。
複雑な物になると鳴ってない方がいい。
047346703/01/24 17:33ID:???
{解決]
よく考えると俺も472さんと一緒だな。
無音は気持ち悪くて、流石に嫌だけど。
0474nobodyさん03/01/24 17:43ID:i/64hvW7
wwwmailを使ってメール送信フォームを作ったのですが
このように表示されます。

下記のメールを送信しました。ありがとうございました。


--------------------------------------------------------------------------------
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
To: aaa@aaa
From: aaa@aaa
Subject:wwwmailからのメール

氏名 =
住所 =

といった感じなのですが
「下記のメールを〜」の下にそのまま「氏名=」と来たほうが
送信した側もわかりやすいように思うのですが
「Content-Type:〜Subject:wwwmailからのメール」までを
消す(送信者に見えなくする)方法はありますか?
よろしくお願いします。
0475nobodyさん03/01/24 17:53ID:???
ソース見せて (*´д`)ハァハァ
0476nobodyさん03/01/24 17:56ID:???
>>474
これあぶねーな まだこういうの作ってる人いるんだ。
こえー。大丈夫?責任とれるのかな
0477nobodyさん03/01/24 17:57ID:???
>>474
print のところをはずせばいいだけだとおもうが。
でもあぶねぇなぁ。こんなの本当に設置すんの?
047847403/01/24 18:12ID:i/64hvW7
皆さんレスありがとうございます
すみません、どんな風に危ないんでしょうか?
非常に不安になってきたのでよければ詳しく教えてくれませんか??
0479nobodyさん03/01/24 18:22ID:???
誰でも何処でも何通でも送れるから。
0480nobodyさん03/01/24 18:23ID:???
>>476>>477

危ないって何が?
Toを使用者が指定できるとか?
0481nobodyさん03/01/24 18:24ID:???
ソース見せて (*´д`)ハァハァ
0482nobodyさん03/01/24 18:25ID:???
>>474
設置した場所にBASIC認証かけておいてね。
0483nobodyさん03/01/24 18:27ID:???
>>482
Toを固定するだけでいいと思うけど
0484nobodyさん03/01/24 19:34ID:???
危ないかどうかはソース次第だとおもうけど。
ただ、Toを自分のメアドにしておいてもメールボムとか怖い。
048547403/01/24 19:43ID:i/64hvW7
すみません初心者なのでソースを出して良いのかどうかの
判断がつきません。wwwmailは「とほほ」にある
メール送信フォームを設置するためのソフトです。
危険でしょうか?
0486nobodyさん03/01/24 20:01ID:???
とほほは危険
0487nobodyさん03/01/24 20:05ID:???
>>485
個人情報(自分のメアドとか)、パスワードとかが入ってるなら、それだけ消してソース出してみ。
ソース見せたくらいじゃどうってことないよ。
0488nobodyさん03/01/24 20:13ID:QLwP0ckk
xreaに12chのスクリプトを置いたのですがどうも書き込み後、index2.htmlに戻るときエラーが発生してしまいます。
たしか、XREA用に何かいじらなければならなかったような気がするのですが思い出せません。

どなたかご存知の方、ご教授願います。
0489nobodyさん03/01/24 20:18ID:???
>>488
xrea.com part28
http://pc.2ch.net/test/read.cgi/perl/1042433690/

こちらへどうぞ。
049048803/01/24 20:20ID:???
>>489
板違いすんません・・・。では。
049147403/01/24 20:27ID:i/64hvW7
ソースです。

#!/usr/local/bin/perl
#=====================================================================
# カスタマイズ
#=====================================================================
# ★ perlのパス名
# このファイルの先頭の1行を、あなたが利用するサーバーにインストー
# ルされた perl コマンドのパス名に応じて変更してください。例えば、
# 私が加入している BIGLOBE では、#!/usr/local/bin/perl となります。
# 解らない場合は、プロバイダやサーバの管理者にお問い合わせください。
# 「#!」の前には、空文字や空行や他の文字がはいらないようにしてください。

# ★ 送信先メールアドレス
# $mailto = '[email protected]'; のようにあなたのメールアドレスに
# 書き換えてください。
$mailto = '';

# ★ サブジェクト(件名)
# 送信されるメールのサブジェクトを指定してください。
$subject = 'WwwMailからのメール';

# ★ メール送信コマンド
# WebサーバーがUNIXの場合はsendmailコマンド、Windows系の場合はBLATJ.EXE
# コマンドのパス名を指定($mailcmd = 'C:\BLATJ\BLATJ.EXE'; など)してく
# ださい。このコマンドが存在しない場合は、WwwMail は動作しません。また、
# 存在していても、メール送信の設定が行われていない場合があります。詳細
# はプロバイダやサーバーの管理者にお問い合わせください。
$mailcmd = '/usr/lib/sendmail';

049247403/01/24 20:28ID:i/64hvW7
# ★ 送信結果メッセージ(ヘッダ)
# <<END_OF_DATA 〜 END_OF_DATA の間を好みにあわせて変更してください。
$header = <<END_OF_DATA;
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<title>メール送信結果</title>
</head>
<body>
<h1>メール送信結果</h1>
<hr>
<p>下記のメールを送信しました。ありがとうございました。</p>
<hr>
END_OF_DATA

# ★ 送信結果メッセージ(フッタ)
# <<END_OF_DATA 〜 END_OF_DATA の間を好みにあわせて変更してください。
$footer = <<END_OF_DATA;
<hr>
<a href="../index.htm">[戻る]</a>
</body>
</html>
END_OF_DATA

049347403/01/24 20:29ID:i/64hvW7
#====================================================================
# 自己診断機能。
#====================================================================
# メール送信がうまく動作しない時に、
# http://〜/〜/wwwmail.cgi?test の形式で呼び出してください。
if ($ENV{'REQUEST_METHOD'} eq "GET") {
print "Content-type: text/html; charset=Shift_JIS\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<title>WwwMail自己診断</title>\n";
print "</head>\n";
print "<body>\n";
print "<p>CGIは正常に動作しています。</p>\n";
unless (-f $mailcmd) {
print "<p>$mailcmd がありません。</p>\n";
}
unless (-x $mailcmd) {
print "<p>$mailcmd が実行可能ではありません。</p>\n";
}
unless (-f "jcode.pl") {
print "<p>jcode.pl がありません。</p>\n";
}
unless (-f "mimew.pl") {
print "<p>mimew.pl がありません。</p>\n";
}
print "</body>\n";
print "</html>\n";
exit 0;
}

0494nobodyさん03/01/24 20:30ID:i/64hvW7
#====================================================================
# 本体
#====================================================================

#
# ライブラリの呼び出し
#
require "jcode.pl";
require "mimew.pl";

#
# 入力値を読み取る
#
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
@a = split(/&/, $query_string);
foreach $x (@a) {
($name, $value) = split(/=/, $x);
$name =~ tr/+/ /;
$name =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*name, "jis");
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$value =~ s/[\r\n]+/\n/g;
&jcode'convert(*value, "jis");
if ($FORM{$name} eq "") {
$FORM{$name} = $value;
$FORM[$cnt++] = $name;
0495nobodyさん03/01/24 20:31ID:i/64hvW7
} else {
$FORM{$name} .= (" " . $value);
}}}

#
# EMAILが正常なメールあどれすかどうか判断する
#
if ($FORM{'EMAIL'} =~ /^[-_\.a-zA-Z0-9]+\@[-_\.a-zA-Z0-9]+$/) {
$mailfrom = $FORM{'EMAIL'};
}

#
# メールヘッダを作成する
#
{
&jcode'convert(*subject, "jis");
$mailhead = "";
$mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n";
$mailhead .= "Content-Transfer-Encoding: 7bit\n";
$mailhead .= "MIME-Version: 1.0\n";
$mailhead .= "To: $mailto\n";
if ($mailfrom) {
$mailhead .= "From: $FORM{'EMAIL'}\n";
$mailhead .= "Cc: $FORM{'EMAIL'}\n";
} else {
$mailhead .= "From: $mailto\n";
}
$mailhead .= "Subject: $subject\n";
$mailhead .= "\n";}
0496nobodyさん03/01/24 20:33ID:i/64hvW7
#
# メールボディを作成する
#
{
for ($i = 0; $i < $cnt; $i++) {
$mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n";
}

# "." のみの行は ". " に変換する。
# 2回繰り返さないと、2行連続で "." のみの行に対応できない
# "." を ".." に変換する処理が一般的だそうだが、あえて、
# "." を ". " に変換する。
$mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g;
$mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g;}
#
# メールを送信する
#
if ($mailcmd =~ /sendmail/) {
unless (open(OUT, "| $mailcmd -t")) {
&errexit("メールの送信に失敗しました。(1)");}
unless (print OUT &mimeencode($mailhead)) {
&errexit("メールの送信に失敗しました。(2)");}
unless (print OUT $mailbody) {
&errexit("メールの送信に失敗しました。(3)");}
close(OUT);
} elsif ($mailcmd =~ /BLAT/i) {
&jcode'convert(*subject, "sjis");
$cmd = "$mailcmd";
$cmd .= " -";
$cmd .= " -t $mailto";
$cmd .= " -s \"$subject\"";
if ($mailfrom) {
0497nobodyさん03/01/24 20:35ID:i/64hvW7
$cmd .= " -c $mailfrom";
$cmd .= " -f $mailfrom";}
unless (open(OUT, "| $cmd > NUL:")) {
&errexit("メールの送信に失敗しました。(4)");}
&jcode'convert(*mailbody, "sjis");
unless (print OUT $mailbody) {&errexit("メールの送信に失敗しました。(5)");}
&jcode'convert(*mailbody, "jis");close(OUT);} else {&errexit("メール送信コマンド $mailcmd が存在しません。");}


0498nobodyさん03/01/24 20:36ID:i/64hvW7
#
# ブラウザ画面に送信結果を書き出す
#
{&jcode'convert(*header, "sjis");
&jcode'convert(*footer, "sjis");
$mail = $mailhead . $mailbody;
&jcode'convert(*mail, "euc");
$mail =~ s/&/&/g;
$mail =~ s/"/"/g;
$mail =~ s/</</g;
$mail =~ s/>/>/g;
$mail =~ s/\n/<BR>/g;
&jcode'convert(*mail, "sjis");print "Content-type: text/html\n";
print "\n";
print "$header\n";
print "$mail\n";
print "$footer\n";
}

#
# エラーメッセージを出力して終了
#
0499nobodyさん03/01/24 20:36ID:i/64hvW7
sub errexit {
local($err) = @_;
local($msg);
$msg = "Content-type: text/html\n";
$msg .= "\n";
$msg .= "<html>\n";
$msg .= "<head>\n";
$msg .= "<meta http-equiv=\"Content-type\" content=\"text/html; charset=Shift_JIS\">\n";
$msg .= "<title>メール送信結果</title>\n";
$msg .= "</head>\n";
$msg .= "<body>\n";
$msg .= "<h1>メール送信結果</h1>\n";
$msg .= "<hr>\n";
$msg .= "<p>$err</p>\n";
$msg .= "<p>ブラウザの [戻る] ボタンで戻ってください。</p>\n";
$msg .= "<hr>\n";
$msg .= "</body>\n";
$msg .= "</html>\n";
&jcode'convert(*msg, "sjis");
print $msg;exit(0);}
長くて申し訳ないです。どうでしょうか?
0500nobodyさん03/01/24 20:37ID:???
全部キタ━━━━━━(゚∀゚)━━━━━━ !!!???
0501nobodyさん03/01/24 20:42ID:???
>>499
そこまでやるなら別ファイルにした方がWYSIWYGなエディタで編集出来るし便利だと思うんだが。
0502nobodyさん03/01/24 20:56ID:???
ちゃんと読んでないが、メールの本文に目障りな文が入るってことじゃなくて、
ブラウザに表示される画面をどうにかしたいってことか?
050347403/01/24 21:12ID:i/64hvW7
>>502
そうなんです。
送信しましたの画面で(この下は474のコピペです)


下記のメールを送信しました。ありがとうございました。


--------------------------------------------------------------------------------
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
To: aaa@aaa
From: aaa@aaa
Subject:wwwmailからのメール

氏名 =
住所 =

といった感じなのですが
「下記のメールを〜」の下にそのまま「氏名=」と来たほうが
送信した側もわかりやすいように思うのですが
「Content-Type:〜Subject:wwwmailからのメール」までを
消す(送信者に見えなくする)方法はありますか?
よろしくお願いします。
0504 03/01/24 21:14ID:???
すいません。教えて下さい。
MySQLは3.23.52、PHPは4.2.3PHPです。
はっきり言って初心者なんですが、実用化を目指して勉強がてらデータベースを作ろうとしてスクリプト書いてました。
メモ帳使っての手書きスクリプトですが、アップロードしてみたらソコソコいけそうな感じでした。
ですが、あげたスクリプトを色々いじっているうちに変になってしまい収拾がつかなくなってしまったので全てのテーブル名を確認して
それらを全て削除したいのですが、やり方が分かりません。
色んなホームページを回ってみると出ているのですが、その殆どが個人のPC上で行う方法が多いので、はたしてそのスクリプトが正しいのか分かりません。
実際実験してみてもうまくいかないので、多分ちょっとばっかり違うのでしょう。
TELNET接続も経験がないのと第一に使えないので、そのやり方も採れません。
テーブルを全て見るためのスクリプトと削除のためのスクリプトを教えてもらえないでしょうか?
ちなみに私が色々見て回ってこうかなと思って書いたものは…
<?
$hostname="localhost"; $port="3306"; $database="abcdefg";
$username="abcdefg"; $password="hogehoge";
$conn = mysql_connect($hostname,$database,$password);
mysql($database,"SHOW TABLE");
?>
…で最後の行を色々見たものをコピペって試しています。

0505nobodyさん03/01/24 21:44ID:???
>>503
# ブラウザ画面に送信結果を書き出す
って行があるだろ。その下あたりを修正すりゃいい。つかPerl勉強してこい。

>>504
SHOW TABLESと DROP TABLEを繰り返しするのじゃダメ?
うまくいかないって言われても…
050650403/01/24 22:05ID:+KMlj8qB
繰り返しても何でも構わないんですが
上に書いたので繋がらないので分からないんですよ。
mysql($database,"CREATE TABLE $table( no int not null AUTO_INCREMENT,
hoge varchar(100),PRIMARY KEY(no))");
でちゃんとテーブル作れるんですがね。
0507nobodyさん03/01/24 23:06ID:???
>>498

$mail = "$mailhead $mailbody"
から"$mailheadを抜く。
0508nobodyさん03/01/24 23:36ID:???
>>495
>$mailhead .= "Cc: $FORM{'EMAIL'}\n";
最低限、この行は抜いてください。
0509nobodyさん03/01/24 23:43ID:???
>504
何度も繰り返しになるが、テストはローカルでやれ。
アップしてテストをするな。
0510504、50603/01/24 23:57ID:???
>509
今となっては同感です。
だからこそ、サーバー上のを見つけて削除したいんです。
0511nobodyさん03/01/25 00:18ID:???
>510
だから、消し方もローカルでテストしてやりなさいって。
まずはローカルで同じ様なデータ作って消すやり方探せばいいでしょ。
ローカルなら、他人への迷惑をあまり考えずに色々と手探りで試せるんだから。
それはやってるのか?
■ このスレッドは過去ログ倉庫に格納されています