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

△▲ WebProg 初心者の質問 Part10 ▼▽

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/09/20 07:35:23ID:???
2ちゃんねるは初めて。 WebProg 板は初めて。
質問したいけど、どうしたら良いか分からない。

そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。

質問する前に、まずはここを読んでね。
【注意事項】
・質問する前にGoogleで検索してみましょう
http://www.google.co.jp/
・環境(ソフトウェアのバージョンなど)は、必ず書いてください。できるだけ詳しく。
 後から情報を書き足す、いわゆる情報の小出しは極力避けてください。
・何がしたくて、何ができて何ができないのかを書きましょう
・マルチポスト(複数のスレッドで質問する行為)は絶対に禁止です。
・過去ログは必ず読みましょう。あなたと同じ質問をしてる人がいるかも知れません。

2ch 総合ガイド
http://www.2ch.net/guide/

お願い。
適切な、板、スレ、を発見した場合、誘導してあげましょう。
スレの性質上 age 進行でお願いします。

関連情報は
>>2-3

前スレ
△▲ WebProg 初心者の質問 Part9 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1086715675/
0405nobodyさん04/10/19 14:17:27ID:L2S4WNHR
>>404
どうもありがとうございます。

LoadKeyで取り出した変数は、
実際には
print $1key$2key$3key…;
と列挙するだけではなく、他にいろいろと使うんで、
LoadKey内でprintするのはちょっと…
申し訳ないです。
0406nobodyさん04/10/19 14:21:00ID:L2S4WNHR
あ、ファイルハンドルに変数が必要ないというのは了解です。

でも、
${$_[0]key} = <KEY>;
この${$_[0]key}  (←$1key、$2key、$3key)は後で使うんで、
ここをどうにかする方法はないでしょうか。
0407nobodyさん04/10/19 15:22:20ID:L2S4WNHR
何度もすいません。解決しました。

$1 = LoadKey(1);
$2 = LoadKey(2);
$3 = LoadKey(3);

sub LoadKey
{
open(KEY, "./$_[0]". ".key") or die("エラー:ファイルが開けません");
eval{flock(KEY, 2); };
$key = <KEY>;
close(KEY);
return $key
}

戻り値を変数に代入していく方法でなんとかやりました。
どうもありがとうございました。
0408nobodyさん04/10/19 16:58:47ID:???
変数の頭に数字使うな
その用途なら配列使え
040940404/10/19 19:48:01ID:???
>>407
変数名を自動生成するする、ってperlやり始めは
陥りやすい発想なんだけど、邪道です。
全体がわからないのでなんともいえないけど、
408さんの言うように配列にプッシュして使いまわすとか
なんだとかいろいろ方法を工夫すべき。
0410nobodyさん04/10/19 21:07:53ID:rsszw8bs
たいてい配列かハッシュで済むからなぁ。
変数名を生成してどうこうって汎用デバッグツールでも
作るんじゃなけりゃ普通は使わないと思う。
0411nobodyさん04/10/19 21:52:02ID:mfo1mlCk
crypt関数で暗号化した暗号って逆解析できないのでしょうか
0412nobodyさん04/10/19 21:57:51ID:???
解析の逆ってなんだろう?
0413nobodyさん04/10/19 22:11:43ID:???
暗号化だろ
0414nobodyさん04/10/19 22:36:51ID:???
暗号化<->復号化
041541104/10/19 22:41:56ID:vzy6JucQ
複合化ってできないのでしょうか?
0416nobodyさん04/10/19 23:10:27ID:???
できねーっての。
0417nobodyさん04/10/19 23:20:05ID:???
ホイホイ解析できたら困るから、簡単にできないような仕組みを使ってる。諦めれ。
それとも、解析しづらいのに何故パスワードチェックに使われてるかということを聞きたいのかな?
0418nobodyさん04/10/19 23:25:02ID:???
パスワードの平文やり取りするのに抵抗あるから一旦cryptするって事はあるな。
Webでやる限り、その程度のものだと思うが。
041941104/10/19 23:26:22ID:eO5ANecX
>>417
うpろだのcgiがあって、
ソースログに吐かれるパスも暗号化されてるからなんか・・
いや、管理パスで消せるからいいんだけどさ、なんでわざわざ管理側にも隠すのかなぁって
0420nobodyさん04/10/19 23:29:33ID:???
それはパーミッションや拡張子の設定ミスで、ログを直接見られた時の対策みたいなもんだ。
そこらへん抜かりが無いならわざわざcryptする意味はあまり無い。
0421nobodyさん04/10/19 23:37:56ID:???
>>414
でたらめ教えないように。
平文を暗号文に変換することを暗号化するという。
暗号文を平文に変換することは複合するという。
0422typoだ04/10/19 23:39:24ID:???
>>414
でたらめ教えないように。
平文を暗号文に変換することを暗号化するという。
暗号文を平文に変換することは復号するという。
0423nobodyさん04/10/19 23:42:08ID:???
>>421
> 平文を暗号文に変換することを暗号化するという。
> 暗号文を平文に変換することは複合するという。
こういうのって暗号屋さんのこだわりなんだろうな。
複合化でもいいじゃないって思う。
0424nobodyさん04/10/20 00:00:58ID:???
cryptの結果をすべて蓄えておけば可能。

蓄えるのも大変だけれども、検索するのも大変ですけれども。
0425nobodyさん04/10/20 00:03:04ID:???
「暗号する」とは云わんわな。not サ行変格名詞
「複合する」とは云うわな。

揚げ足でもなんでもないとは思うけれども。
0426nobodyさん04/10/20 00:04:48ID:???
>>425
s|複合|復号|;
スマソ
0427nobodyさん04/10/20 00:09:55ID:???
なんか明後日の方向向いてる奴まで出てきたなw
0428nobodyさん04/10/20 00:32:57ID:???
掲示板のログ保存方法なんだけど、
1.一つのログファイル
2.書き込み毎にログファイルを作る
3.DB
どれを奨励する?
0429nobodyさん04/10/20 00:36:40ID:???
個人的には断然DBだが・・・どれも一長一短だな。
0430+++04/10/20 00:41:08ID:???
ググってみれば使用頻度は「復号化する」>「復号する」だね。
0431nobodyさん04/10/20 00:53:41ID:???
>429
2の鼻が赤いやつに長所はあるのか?
0432nobodyさん04/10/20 00:57:23ID:???
2.の方法はDBに近い感覚で処理が書ける。
0433nobodyさん04/10/20 01:00:28ID:???
>>431
残念だが俺があらかじめ射殺しておいたから無い。
0434nobodyさん04/10/20 01:02:15ID:???
>>426以前
「暗号化」は「化」が動詞だけど、「復号」は「復」が動詞なんだよ。
「復活する」とは言うけど「復活化する」とは言わない。それといっしょ。

>>428
「どれを推奨するか」ということならDBだなあ。
まあ環境のために使えないケースも多いとは思うが。
0435nobodyさん04/10/20 01:04:40ID:???
2.の方法イイと思うんだよな。
ファイル名が書き込み番号でダイレクトに扱える。
ただ、一覧作るたびにopendir,readdirするのがどのぐらいシステムに負荷かけるかって話だが。
0436nobodyさん04/10/20 01:06:28ID:???
>>435は馬鹿ですね?
0437nobodyさん04/10/20 01:07:48ID:???
釣られてるぞ
0438nobodyさん04/10/20 01:09:00ID:???
>>431
ポケットから未来道具が出せる
0439nobodyさん04/10/20 01:09:32ID:???
まあ奨励って話なら当然DB。2の方法のCGI扱った事あるが、でかいログを操作するよりは確かに楽。
0440nobodyさん04/10/20 01:12:48ID:???
乙
0441nobodyさん04/10/20 01:13:27ID:???
/usr/cgi/ara/essassa.cgiで、
/usr/html/dat/enyakora.datの内容を更新する場合って、
相対パスは
../../../html/dat/enyakora.dat
でいいんでしょうか?
絶対パスの書き方がよくわからないです。
0442nobodyさん04/10/20 01:14:32ID:???
聞く前に試せよ池沼
0443nobodyさん04/10/20 01:16:37ID:???
DBにしとけ。
0444nobodyさん04/10/20 01:17:03ID:???
444get, zuzaa
0445nobodyさん04/10/20 01:18:00ID:???
>>442
試して失敗したんで、間違ってるのか聞いてみました。
同じフォルダに移して、./ennyakora.datで指定したときは正常に作動したんですが。
0446nobodyさん04/10/20 01:19:57ID:???
書き込があるたびに単独のログ作っておくと変更や削除が楽だよ。
0447nobodyさん04/10/20 01:21:01ID:???
くどいぞ。
0448nobodyさん04/10/20 01:21:44ID:???
>>445
0449nobodyさん04/10/20 01:22:05ID:???
>>439
うむ、わしも、Oracle や DB2 使えとまでは言わんが、
BerkeleyDB ぐらい使った方が世の中のためになると思う。

>>445
順番に一歩一歩考えろ。
/usr/cgi/ara/essassa.cgi から /usr/cgi/ora/dokkoisho.dat をアクセスするときは
../ora/dokkoisho.dat だろう。
/usr/cgi/ara/essassa.cgi から /usr/html/dat/enyakora.dat はそれより一段深い。
0450nobodyさん04/10/20 01:24:52ID:???
何メガもあるXMLでパースにえらい時間が掛かるってなら
ログを小分けにするのはかなり有効。
0451nobodyさん04/10/20 01:29:35ID:???
何メガもあるレスってどんな奴が書いてるんだよ
↓
0452nobodyさん04/10/20 01:30:55ID:???
ISAM形式のDBは?
Unix標準では無いか。
0453nobodyさん04/10/20 01:30:59ID:???
10メガバイト程のクマAAを作ったが貼るところがないな。
0454nobodyさん04/10/20 01:33:19ID:???
>>450
XQueryで操作できるファイルライブラリなんかあると便利そうだな
sqliteのXmlDBみたいなやつ
0455nobodyさん04/10/20 01:37:56ID:???
>>453
実際のクマより遥かにでかそうだ
0456nobodyさん04/10/20 01:40:29ID:???
まあDB(BerkelryやMySQL程度)が一番コストかかんないよ。
システムにもやさしい。
ログの大きさや機能にもよるけど、レスを一つのファイルにまとめるのはあまり上手くないな。
0457nobodyさん04/10/20 01:47:12ID:???
>>449
了解です。かなり頭の悪い認識ミスでした。すいません。
どうもありがとうございました。
0458nobodyさん04/10/20 13:41:39ID:???
学校でそれぞれのパソコンからCGIにデータ送ってもらおうと思っています。
cookieを使って何処からのデータかをチェックし、2重なら上書きというようなスクリプトを作りたいのですが、
まずcookieにどんなデータを書き込めば良いのかと、どうやってcookieに書くのかで困っています。
0459nobodyさん04/10/20 14:26:33ID:???
つまり、何も決まってないと。
0460nobodyさん04/10/20 14:55:09ID:???
何を送るかは決まっています。
ただ何を使って送信元を認識するか、またそれにcookieを使う場合、
どうやってcookieに書き込むかが分かりません。
0461nobodyさん04/10/20 16:17:45ID:n94qA67F
javaかphpを勉強しようと思うんだけどどっちがいい? 趣味の段階として。
0462nobodyさん04/10/20 16:31:53ID:???
C
046346004/10/20 16:32:53ID:???
送ってもらう情報や時刻をcookieに書いて、もしそれが空でなかったら
時刻を使って上書き、と言うのを考えました。これでOKでしょうか?
046446104/10/20 16:36:37ID:n94qA67F
ヽ(´―`)ノ
0465nobodyさん04/10/20 16:37:56ID:???
cookie許可されてなかったらどうすんの?
046646004/10/20 16:44:35ID:???
送る情報は書き込む必要なかったですね。

おなじLAN内だからIP使えないんですよね。
学校で外のCGIに送ってもらうものだから、cookieを使う事にしたんです。
cookieのファイルを削除されたりしたら無理ですがある程度は妥協する事にしました。
0467nobodyさん04/10/20 17:56:40ID:???
「cookieにどうやって書き込むか」って、
もしかしてprint "Set-Cookie: ...";
みたいな話?
0468nobodyさん04/10/20 18:38:05ID:???
個々のパソコンを識別するならcookieを使うとの事だったんで、環境変数か何かを書くのかと思っていました。
おそらく、print "Set-Cookie:NAME=$comment...";のように、入力してもらった情報やそれをもとにした物しか書き込めないんですよね?
この辺はある程度自己解決気味になりました。有り難うございます。
0469nobodyさん04/10/20 18:41:29ID:???
>>461
遊びだけならphp
javaは自鯖でもたてないと使うの制限されてるところが多いだろうし
仕事につかうならJava。phpは何故かいやがられることが多い。
0470nobodyさん04/10/20 20:34:06ID:???
遊びだけならphp
友達に紹介するならjava
結婚するならPerl
0471nobodyさん04/10/20 22:15:36ID:???
学校でそれぞれのパソコンからCGIにデータ送ってもらおうと思っています。
cookieを使って何処からのデータかをチェックし、2重なら上書きというようなスクリプトを作りたいのですが、
まずcookieにどんなデータを書き込めば良いのかと、どうやってcookieに書くのかで困っています。

つうか、学校のそれぞれのPCからCGIでデータ送ってもらうって事だけど、
そのCGI置いてあるのも学校内のLANじゃないのか?
そうしたら、普通にプライベートIP振ってあるんじゃないのか?それともDHCPなのか?

それぞれのPCに固定でプライベートIP振ってるなら送信元のPCの判断は付くきがするんだが?

それと、そもそもPCで判断で良いのか?
例えばの話、学生AがPCAを使用していたが、不調な為、隣の席の学生BのPCを使ってCGIでデータ送信しても、
問題がないのか?
何が言いたいかというと、そのCGIで送るデータはPC別で上書きしていいのか、
それとも学生別にしたいのかって事ね。
必ずしも、そのPCを決まった学生が使うとは限らないからな。
0472nobodyさん04/10/20 22:42:29ID:???
PHPが嫌われるのはメンテや開発環境の問題だろうな。
perlはそうでも無いのだが。
まあ、趣味でやるならPHPやPerl勉強した方が有益だと思うが。
0473nobodyさん04/10/21 02:48:24ID:???
正直、perlやphpでがっつり作っちゃった方が工数かからないのに、
わざわざjava(JSP+ServletやEJB)で作ってるのって、アコギだなーって思う時ある。
0474nobodyさん04/10/21 02:51:12ID:???
フロントエンドだけじゃ仕事にならんよ
0475nobodyさん04/10/21 02:53:06ID:LAuzLACT
phpやrubyはどのみちcやるはめになるので実はPerlをやるのがいい。
0476nobodyさん04/10/21 03:01:26ID:???
Cが出来ればダディクール!って言われるかもしれないよ。
2度手間だけどな。
0477nobodyさん04/10/21 03:22:13ID:???
開発現場でperlよりphpが嫌われる傾向にあるってのはわかる気がする。
そもそも、perlはシェルスクリプトの代わりに手をつけた技術者多いし、
アレルギー持ってる人も少ない。
perl覚えてからと言うもの、awkとかすっかり使わなくなっちまったなぁ。
0478nobodyさん04/10/21 11:57:33ID:???
ファイル検索システムを作っている方に質問です。
指定ディレクトリ以下のファイルを検索する場合、
ファイル名にマルチバイト文字を含むファイルって検索対象に入れてますか?

現在Perlで全文検索型のを作っているんですが、
直接URLにマルチバイト文字を含めてリンクを貼った場合、
アクセスすると404を返される事があるので、
ファイル名のマルチバイト文字を一旦URLエンコードしてから検索結果画面を出そうと思っているのですが、
思った通りに動かず、この際マルチバイト文字をファイル名に含むファイルは
検索対象から外してしまおうかとも考えているのですが。
047966304/10/21 12:28:11ID:9OlkwLS2
TurboLinux8Server + Perl で書いてますが、
よくレンタルカウンターなんかで使われているhtmlからの外部ファイル
参照ですが、これはどういうテクを使っているんでしょうか?

Aサーバー
index.html
 Bサーバーのtest.cgiの文字です。<br>
 <script language="Javascript" src="bサーバー/test.cgi"></script>
(javaでなくてもよい、参考にしたのがたまたまjavaだった)

Bサーバー
test.cgi
print "Content-type: text/html\n\n";
print "外部cgi出力文字";

として、Aサーバーに設置したindex.htmlにBサーバーの文字を表示させたいのです。

自分なりにやってはみたのですが、まったくうまくいきません。
ヒントだけでも教えてください。
0480nobodyさん04/10/21 12:37:27ID:???
> <script language="Javascript" src="bサーバー/test.cgi"></script>
ここまで書いてて何でわからんのだ
Bサーバー/test.cgiが吐く文字列はjavascriptだろ
B鯖のcgiが吐く文字を変えてみれ

# レスポンスヘッダを出力
print "Content-type: text/plain\n\n";
# 以下、HTML出力
print <<"EOF";
<!--
 document.write("勉強不足です");
//-->
EOF

048166304/10/21 12:48:26ID:9OlkwLS2
>>480
なるほど!
おっしゃるとおり勉強不足でしたm(_ _)m
ありがとうございました!
0482nobodyさん04/10/21 18:02:18ID:???
>>480
外部ファイルなのだからコメントにすると何かと具合が悪くないか?
0483nobodyさん04/10/21 18:07:42ID:???
「何かと」っていうか、しないだろ。
あとtext/plainで出力するべきなのかな?
048448004/10/21 18:08:09ID:???
あーそっか、事実上JSファイルと変わりないし、
コメント部はいらんかな。

・・・自分のソースも直しておくか
0485nobodyさん04/10/21 21:18:59ID:???
>>480が勉強不足だったというオチでした。
・・・むしろ注意力不足?
0486nobodyさん04/10/22 03:15:59ID:kB/Ig1ML
サーバ管理ソフトを作りたいのですが、
権限の与え方が良く分かりません。
例えば、あるユーザのファイルを削除する、といった場合に、
そのユーザの権限が必要になるわけですが、どのようにして
その権限を得るのでしょうか?
おそらくroot権限でのファイル操作になると思うのですが、
そのスクリプトをroot権限にいかにするかが分かりません。
機能としては非常にシンプルなので、
他の部分の構想は大体大丈夫なのですが、
肝心の権限という部分が良く分からない状態です。
0487nobodyさん04/10/22 04:36:27ID:???
>>486
はぁそうですか。ここへはどういった用件で?
環境ぐらいかかないと答えてくれないと思うけど
0488nobodyさん04/10/22 05:40:09ID:kI4bV4uq
japanese.pmっていうのは、アップしたら普通のレンタルサーバーでも使えますか?
それとも、サーバー側がインストールしなきゃだめなタイプのモジュールですか?
0489nobodyさん04/10/22 10:18:52ID:???
>>488
Perlか?

Japanise.pmはJPerlのコアモジュールなので、JPerlをビルドしてインストールしないと使えないぞ。
049048604/10/22 11:04:45ID:kB/Ig1ML
linuxのfedora core2です。
宜しくお願いします。
0491nobodyさん04/10/22 11:19:35ID:???
>>486
そういうのを人に聞かなきゃわからんうちは自分で作るのはあきらめれ。
仮に自分では完璧に作ったつもりでも、
セキュリティホールがてんこ盛りになるのがせいぜい。
0492nobodyさん04/10/22 11:42:25ID:???
>>486
そういうことはLinux板なり、ム板なりに行った方がいい情報が得られる気もするが…
Cで作るのなら、その実行ファイルをroot所有にしてSbitを立てておく。
で、必要なら実行時にseteuidで実効ユーザ変更…だったと思った。
Perlだと$<や$>を使うらしい

でも、>>491の言うとおり、解らないうちはやめたほうが良いと思うよ
0493nobodyさん04/10/22 12:27:38ID:???
Perlも同じ方法でいい。
それでうまくゆくようにPerlがつくられているから。
0494nobodyさん04/10/22 15:04:27ID:1BTRnK+D
ちょっとお聞きしたいのですが、
index.htmlとかに<a href=http://www.hoge.jp/ref.cgi>;とかを仕込んで
リファラーとりたいんですが、index.htmlから呼び出されるので、リファラー
はそのindex.htmlからの情報しかないですよね?

googleとかで検索して飛んできた場合の検索文字列とかしりたいのですが、
index.htmlのりファラーをそのまま受け継いでref.cgiに渡す方法とか
ありますか?
0495nobodyさん04/10/22 15:07:08ID:???
>>494
CGI変数にHTTP_REFERERがあるじゃん
049649404/10/22 15:14:09ID:1BTRnK+D
>>495
直接ref.cgiに飛ばせばちゃんとHTTP_REFERER取れるんですが、
index.htmlにきたのを、自動的にref.cgiに送りたいんですよね。
049749504/10/22 15:16:15ID:???
>>496
だから、index.htmlでCGI変数のHTTP_REFERERを取って、
そのリファラ−をref.cgiに渡してやればいいじゃん。
049849404/10/22 15:27:40ID:1BTRnK+D
んー、勉強不足でよくわかりません。
自分の認識では、google -> index.html -> ref.cgi とくれば、
ref.cgiでとれるリファラはindex.htmlのものになるのではないでしょうか?

htmlでHTTP_REFERERのとり方って、どうやるんですか?
すみませんが、おしえてください。
0499nobodyさん04/10/22 15:29:50ID:???
まあ SSI 使えば >>495 の言ってることも不可能でないが
それができるんだったらわざわざ ref.cgi に飛ばさず SSI で直接 referer 取るわな
050049404/10/22 15:42:08ID:1BTRnK+D
そうでした。
書き忘れてましたが、SSIとかでじゃなく
index.htmlにきたのを<img src=http://www.hoge.jp/ref.cgi>;
とかで取得したいんですよね。
無理な話なのでしょうか?
0501nobodyさん04/10/22 15:51:40ID:???
>>500
JavaScriptで取得したREFERERをイメタグ使ってCGIへ渡すのはどうよ?
050249504/10/22 15:57:54ID:???
なんというか…頭悪いというかセンス無いな…

>自分の認識では、google -> index.html -> ref.cgi とくれば、
>ref.cgiでとれるリファラはindex.htmlのものになるのではないでしょうか?

この認識はあってる。

だから、分かり易く手順書いてやる。

1.index.htmlでリファラ−を取得する。(お前さんの例だとhttp://www.google.co.jp)
2.取得したリファラ−をref.cgiに渡す。(例えば、ref.cgi?value=http://www.google.co.jp)
3.ref.cgiで渡されたindex.htmlのリファラ−を取得する。
0503nobodyさん04/10/22 16:03:32ID:???
こんにちは。
Perlからsendmail呼び出してメール送らせる単純なプログラム書いてみたんですが、
どうもあて先不明などのエラーメールがサーバー管理者に届いているようで
困っています。エラーメールは普通にFrom: に帰ってくると思っていたもので…
対処としてどういう対処をすればよいでしょうか。
0504nobodyさん04/10/22 16:06:06ID:???
出し惜しみしてキモい>>495は置いておいて、
やり方そのものを教えよう。
index.htmlに記述な。

<script language="JavaScript">
<!--
document.write("<img src=***.cgi?refe=" +document.referrer + ">");
// -->
</script>

でCGI側で受け取ればいい。
例えば$referrer = $FORM{'refe'};とかな。
QUERY_STRINGで取るのが一番手間がかからんか。
0505nobodyさん04/10/22 16:09:50ID:???
>>503
AからBにメールを送って、Bのアドレスが無かったら、
Aではなく鯖管のCにエラーのメールが届くってこと?
■ このスレッドは過去ログ倉庫に格納されています