△▲ WebProg 初心者の質問 Part13 ▼▽
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/09(木) 16:05:29ID:???質問したいけど、どうしたら良いか分からない。
そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。
質問する前に、まずはここを読んでね。
【注意事項】
・質問する前にGoogleで検索してみましょう
http://www.google.co.jp/
・環境(ソフトウェアのバージョンなど)は、必ず書いてください。できるだけ詳しく。
後から情報を書き足す、いわゆる情報の小出しは極力避けてください。
・何がしたくて、何ができて何ができないのかを書きましょう
・マルチポスト(複数のスレッドで質問する行為)は絶対に禁止です。
・過去ログは必ず読みましょう。あなたと同じ質問をしてる人がいるかも知れません。
2ch 総合ガイド
http://www.2ch.net/guide/
お願い。
適切な、板、スレ、を発見した場合、誘導してあげましょう。
スレの性質上 age 進行でお願いします。
関連情報は
>>2-3
0042nobodyさん
2006/02/16(木) 04:10:45ID:???借りている鯖がindex.cgi、index.phpでいけるなら、そのまま利用するか、
index.htmlのインラインフレームでcgiを呼ぶか、
index.shtmlで呼ぶか。
004338
2006/02/16(木) 04:57:23ID:???index.cgi で
open(IN, "index.html");
read(IN, $htmlfile, (-s IN));
close(IN);
$htmlfile =~ s/##TOPIMG##/$imgtag/;
print "content-type: text/html\n\n";
print $htmlfile;
004438
2006/02/16(木) 05:03:00ID:???◆ topimg.cgi
opendir(DIR, "topimg/");
@files = grep { /^\./ && /\.jpg$/ } readdir(DIR);
close(DIR);
$imgcnt = @files;
$imgnum = int(rand($imgcnt));
open(IN, "topimg/$files[$imgnum]");
read(IN, $jpegdata, (-s IN));
close(IN);
binmode(STDOUT);
print "content-type: image/jpeg\n\n";
print $jpegdata;
◆ index.html
<img src="topimg.cgi">
詳細なディレクトリ構造がわからんので、使う際は自分の環境に合わせて変更してください
0045nobodyさん
2006/02/16(木) 05:54:53ID:???004636
2006/02/16(木) 15:48:27ID:???メモ帳にて>>44のtopimg.cgiのopnedir以降の部分をコピペ
↓
topimg.cgiと名前を付けて、index.htmlファイルと同じ階層にアップロード
↓
index.html階層にtopimgフォルダを作成し、そこにjpgファイルをアップ
↓
最後にindex.htmlに<img src="topimg.cgi">を貼り付け
したのですが、うまくいきません。
どこか間違っていますか?
004738
2006/02/16(木) 16:13:59ID:???004836
2006/02/16(木) 16:44:55ID:???英単語の組み合わせのhtml,cssならわかるのですが、特殊な記号などがある言語はとても苦手です。
それぞれの記号の意味などもぐぐってみたのですが、さっぱりでした・・・
よろしくお願いします。
0049nobodyさん
2006/02/16(木) 16:51:38ID:???これ以上は金を払うべきだと思う漏れがいる。
そもそもCGIが使える鯖なのかと。。。
あと、>>44の書いたtopimg.cgiには
#!/usr/local/bin/perl
↑のような最初の一行が省略されている。
自分の環境に合わせたものを書きなさい。
0050nobodyさん
2006/02/16(木) 17:57:09ID:???「家庭教師の2ちゃんねる」で起業したら儲かりそうですね。
0051nobodyさん
2006/02/16(木) 18:09:50ID:???いま自分の会社のcgiを作っています(リライトですが)。
もとのcgiが、web上で問い合わせ情報を記入してもらって、それをリストに落としていくperl
のプログラムで、それに確認画面と、確認メール発送の機能をつけようとしています。
cgiでhtmlを記載して確認画面(「この内容でOK?」みたいなの)はできました。
OKの場合、ボタン押してもらって、もとのcgiのプロセスに戻りたいんですが、戻れません
print '<form action=(このcgiのアドレス) method=post>';
print "<center><b>以下の内容で間違いがないか、ご確認下さい。</b><br>";
print "<center><b>宜しければ下の「送信する」を、訂正があれば「前画面に戻って編集」を、押してください。</b><br>";
print "<table width=80% border=1>";
・・・中略・・・
print "<tr><td width=12%>備考(通信欄)</td><td width=68%> $bikou</td></tr>";
print "</table>";
print '<center><input type="button" value="-送信する-" onClick="return"> <input type="button" value="<< -前画面に戻って編集-" onClick="history.back()"></center>';
print '</form>';
}
最後のところを<input type="submit" value="-送信する-">としてもダメです。
どなたか知恵を貸してください。
長文スミマセヌ
005351
2006/02/16(木) 18:54:18ID:???早速のレス有難うございます。
未熟者で内容がよく理解できておりませんが、
>51の内容はcgiの中のサブルーチンになっていて、cgiの途中でsubにとんで>51を表示したあと
もとのcgiに戻りたいんですが、上手く動かないんです。
Location を調べましたが、そういう機能のものなんでしょうか?
005551
2006/02/16(木) 19:26:39ID:???たびたび申し訳ありません
素人ですいませんが、
Lcationでcgiの何行目指定で飛ばすのは、どうやって書けばよいのでしょうか?
0056nobodyさん
2006/02/16(木) 19:39:58ID:???せっかくLocationというキーワードをもらったんだから
ぐぐって調べるくらいしなよ
0057nobodyさん
2006/02/16(木) 21:26:32ID:???ハッシュを利用した集計について質問です。
@list = (10.10.20.13.15.20.30);
というリストがあったとして、10はn個、20はn個という風に集計するとします。
持っている本では
foreach $cnt(@list){
$shukei{$cnt}++}
で、リスト内の数値をキーとして集計する、と書いてあります。
実際にその通りにやると集計できたのですが
キーとしてハッシュへ格納するのに++を使う理由がどうしてもわかりません。
仕組みはすっとばしてそういうものだと覚えるべきなのでしょうか。
0058nobodyさん
2006/02/16(木) 21:42:38ID:???$shukei{$cnt}++ じゃなくて
$shukei{$cnt} = $shukei{$cnt} + 1 なら納得できるのか?
0059nobodyさん
2006/02/16(木) 21:49:12ID:???いえ、なんで+ 1するのかがわからないんです。
というか、
$shukei{$cnt}は、
%shukei = ($cnt =>n,)という風に捉えているのですが
ここからして間違ってるんでしょうか?
006057
2006/02/16(木) 22:10:40ID:???もしかして
$shukei{$cnt} = undef値(=0)
ということでしょうか。
つまり
$shukei{$cnt}++
↓
$shukei{$cnt} =0+1=1
ということであってますか?
0061nobodyさん
2006/02/16(木) 22:29:10ID:???そうそう、無いキーは自動的に作られる。
んで無い値を数値として扱ったら0とみなされる。
文字列として扱ったら""ね。
「扱う」ってのは数値用と文字列用どっちの演算子を使うかってことね。
006257
2006/02/16(木) 22:40:59ID:???ありがとうございます。だいぶスッキリしてきました!
あともう一つなんですが、>>57のやり方で集計すると、
$shukei{ 10 } = 2;
$shukei{ 20 } = 2;
$shukei{ 30 } = 1;
というハッシュの式になるじゃないですか。
これって何の処理をしなくても
%shukei = (10 => 2, 20 =>2, 30=>1);
という具合に、勝手にリスト化されるもんなんでしょうか。
たびたびすいませんが、ご教授よろしくおねがいします。
0063nobodyさん
NGNG0064nobodyさん
NGNG0065nobodyさん
2006/02/17(金) 00:20:21ID:???$QUERY=preg_replace("/(\.+\/*|member\/)/","",$QUERY);
if($QUERY=='') $QUERY='index';
$fp=fopen(($fname='page/'.$QUERY.'.dat'),'r') or
header("Location: http://example.com/404");
という処理をして、ファイルが存在しない場合は404に飛ばすようにしたんだが、ローカルで実行してみるとレスポンスが非常に長い上CPU負荷が100%近くまでなってしまいました。
処理の結果としてはきちんと404に飛んでるんですが、XREAなどで実行するとタイムアウトされてしまうほどの長さです。
この処理の問題についてご教授お願いします。
006665
2006/02/17(金) 00:34:47ID:lUAE0Mm/0067nobodyさん
2006/02/17(金) 00:37:41ID:???セキュリティ面から考えると不安なのですが、方法はないのでしょうか?
006867
2006/02/17(金) 00:38:33ID:???○他に方法はないのでしょうか?
でした
006951
2006/02/17(金) 01:37:58ID:???ちんたらしてたら日がくれちゃうでしょ!!
なにやってんだよっ!はやくしてくれよ!!
007051
2006/02/17(金) 02:06:00ID:???なんか偽者がw >69は僕じゃないですから
助言してくださった方有難うございます。いまだ解決には至りませんが(泣
0071nobodyさん
2006/02/17(金) 02:31:13ID:yKdX52Ncハッシュはリストとは違うものだからリスト化される、というのがそもそも間違っている。
確かにハッシュの中身をリストとして表現することは可能だし、
ソースに書くときはそういう風に書くけれど、あくまでそれは構文上の話。
ハッシュはその名のとおりデータ構造にハッシュというのを使っている。
これは検索汁。簡単に言えば0~99の数があったとすると1の位が0..9の十個に分類して、
検索に掛かる時間1/10にする、みたいなアルゴリズム。
実際にはこの辺はもっとばらつきが少なくなるような方法を使うけどね。
>>65
exitなりdieなりしてないからそのまま処理を進めてしまっているのが原因じゃ?
あと、それ対策不十分。memmember//という場合を考えてみよう。
まずいのが入っていたらreplaceじゃなくてエラー扱いするべき。$QUERY='index';してしまうとか。
>>67
CGIモードでかつSuEXEC上で動かすしかない。
CGI使えてSuEXECが入ってないということは無いと思うが、
CGI版のphpが入ってなかったりCGI自体使えないサーバだったりしたら、
権限がApacheサーバのものになっちゃってるから残念だけど無理。
0073nobodyさん
2006/02/17(金) 12:01:12ID:Zrn4G6r2例えば10個のファイルをUPしたい場合、10回は参照しないといけないのでしょうか?
0075nobodyさん
2006/02/17(金) 12:36:54ID:Zrn4G6r2写真を一気に10個とか指定できると楽なのですが。
0076nobodyさん
2006/02/17(金) 12:37:11ID:???0077nobodyさん
2006/02/17(金) 12:53:06ID:Zrn4G6r2ajaxな感じで簡単にUPするとか。うーん
0078nobodyさん
2006/02/17(金) 15:47:52ID:???ローカルのファイルをどうこうできると、ピンポイントで特定のファイルを
こっそりアップロードする物ができちゃうんで、かなり制限がかかってる
複数選択ができないのは別の理由かもしれんが
008065
2006/02/17(金) 16:57:53ID:???よくよく考えればロケーションヘッダはブラウザが実行するものでした。
サーバー側で吐かせても処理は続きますからね。
不正文字列の置換処理じゃマズイとは思っていたのですが、memberは未実装なので放置していました。
Traversalは出来ないにしろ、抜け穴が明確になったため先ほど変更しました。
回答どうもありがとうございました。
0081nobodyさん
2006/02/17(金) 17:37:13ID:???それかFlashでも出来たはず
0083nobodyさん
2006/02/17(金) 17:52:59ID:???に ち ゃ ん ね る っ て す ご い ね
0084nobodyさん
2006/02/17(金) 22:54:10ID:CB9LbJEFのように"<>"で区切られたdatファイルをよく見るのですが、
<>ごとに読み取って変数に格納するにはどのような操作をすればよいのでしょうか?
0086nobodyさん
2006/02/18(土) 05:19:30ID:???0087nobodyさん
2006/02/19(日) 13:02:33ID:qZLcstMn1. test.cgiにアクセス
2. test.cgi内で、あるURLにアクセスしてローカルに保存
例: www.yahoo.co.jp/index.html → yahoo.txt
3. test.cgiでyahoo.txtを読み込み、必要な情報をhtmlでprint
perlは多少分かるのでローカルにさえ持ってこれればと思ってます
保存する箇所の簡単な仕組みをお願いします
0090nobodyさん
2006/02/19(日) 19:47:24ID:6/Fk1U6bコントロールパネル -> 管理ツール -> サービス
「ローカルコンピュータのMySQLサービスを開始できません。エラー1058:指定されたサービスは無効であるか、または有効なデバイスが関連付けられていないため、開始できません。」
0091nobodyさん
2006/02/19(日) 19:52:22ID:???それだけだとスレ違い。
データベース板へどうぞ
0092nobodyさん
2006/02/19(日) 20:01:07ID:6/Fk1U6b0093nobodyさん
2006/02/19(日) 22:58:35ID:???0094nobodyさん
2006/02/20(月) 05:54:21ID:???兎に角人に聞く性分であったりするならPerl
ってところか
0095nobodyさん
2006/02/20(月) 07:31:46ID:???チョット作って使い捨てならPHP。とにかく手っ取り早く作りたい人向け。
規模が大きめなものを作るのならJavaか.NET(C#)。個人や趣味プログラマには不要かも。
0096nobodyさん
2006/02/20(月) 09:19:24ID:QuT/2iwf情報ありがとうございます。調べてみます。
0097nobodyさん
2006/02/20(月) 09:27:09ID:???Flashが一番敷居が低いと思う
金銭的敷居ならVBでActiveXってとこだと思う
0098nobodyさん
2006/02/20(月) 12:54:29ID:???0099nobodyさん
2006/02/20(月) 16:55:02ID:???0100nobodyさん
2006/02/21(火) 12:39:55ID:???&A(x,y,z);
&B(x,y,z);
とやって、サブルーチンAには値が渡せるんですが、
サブルーチンBにはわたりません。
いろいろ調べましたが(本とかネットとか)、ちょっと分かりません。
理由として何が考えられるでしょうか?
あとサブルーチンに
sub A{
・・・
exit;
}
とか書くと、なんかまずいんでしょうか?
0101nobodyさん
2006/02/21(火) 13:33:58ID:???0102nobodyさん
2006/02/21(火) 13:49:07ID:???レス有難うございます
subAとsubBにそれぞれ下記のようなことを書いて表示しました
同時には出せないようなので、1度にどちらかだけですが
print <<EOM;
Content-type: text/html
<html><head><title>kakunin</title></head><body>
<form action=http://www.***.cgi method=POST>
<center><b>ありがとうございました。</b><br>
<table width=80% border=1>
<tr><td width=12%>住所</td><td width=68%> 〒$post $jusyo</td></tr>
<tr><td width=12%>電話番号</td><td width=68%> $tel</td></tr>
<tr><td width=12%>FAX番号</td><td width=68%> $fax</td></tr>
<tr><td width=12%>メールアドレス</td><td width=68%> $mad</td></tr>
<tr><td width=12%>備考(通信欄)</td><td width=68%> $bikou</td></tr>
</table>
<br>
<input type=HIDDEN name="conf" value="1">
<center><input type="submit" value="-送信する-"></center>
<center><input type="button" value="<< -前画面に戻って編集-" onClick="history.back()"></center>
</form>
</body>
</html>
EOM
0103nobodyさん
2006/02/21(火) 13:55:33ID:???sub B{
my($x, $y, $z)= @_; # こうやって、渡された値を受け取るんだよ
}
0104nobodyさん
2006/02/21(火) 14:14:54ID:???0105100=102
2006/02/21(火) 14:58:53ID:???それは書いてあります
>>104
sub A{
・・・
exit;
}
を
sub A{
・・・
return;
}
ということでしょうか?パクリ元のcgiにexitとあったのでそのままにしてたんですが?
0106nobodyさん
2006/02/21(火) 15:15:32ID:???0107nobodyさん
2006/02/21(火) 16:23:52ID:???つーかexitの意味ぐらい推測できないのか?
まだえいごをべんきょうしたことのない消防なのかな?
0108nobodyさん
2006/02/21(火) 17:01:53ID:???0113nobodyさん
2006/02/21(火) 21:06:56ID:???0114nobodyさん
2006/02/21(火) 22:17:13ID:???というスクリプトを作っているのですが
以下のスクリプトではなぜだか元の行も新しいファイルに書き込まれ、
しかもsplitしてるのに書き込み時、$a1a等にデータが入りません。
下記スクリプトで不具合箇所があれば是非教えてください。お願いいたします。
ロック処理、エラー表示サブルーチンなどは省いてあります。
log.cgi
-----------
1,test,0
2,test,0
3,test,0
-----------
$logfile_all = "./log.cgi";
@new=();
open(IN,"$logfile_all") || &error("error");
while (<IN>) {
($a1a,$a2a,$a3a) = split(/,/);
if ($in{'no'} == $a1a) {
$_="$a1a,$a2a,1,\n";
}
push(@new,$_);
}
close(IN);
open(OUT,">$logfile_all") || &error("error");
print OUT @new;
close(OUT);
0115nobodyさん
2006/02/21(火) 23:39:16ID:???0116nobodyさん
2006/02/22(水) 00:13:18ID:???レス有難う御座います。
仰るとおり偽の場合の処理、今後加えたいと思います。
現状ではあくまで動作確認の段階なので偽になるはずがないのです。。
どうしてもわからないです。。ううむ。。
0117nobodyさん
2006/02/22(水) 02:36:47ID:???できれば $_ 再利用せず変数を利用した方がいいかと
0118nobodyさん
2006/02/22(水) 02:56:49ID:???有難う御座います。
結果を書くのを忘れていました。
-----------
1,test,0,
,1,
2,test,0,
3,test,0,
-----------
っていう風になってしまうのです。
もし宜しければこれと同じようなことをできる
ソースを教えて頂ければ幸いです。ヨロシクオネガイシマス。。
0119nobodyさん
2006/02/22(水) 03:42:37ID:???IN の open から close までを書き直してみました
open(IN, "$logfile_all") || &error("error");
while($readline = <IN>){
$readline =~ s/\x0D\x0A|\x0D|\x0A//;
my($num, $name, $flag) = split(/,/, $readline);
if($in{'no'} eq $num){
$readline = "$num,$name,1";
}
$readline .= "\n";
push(@new, $readline);
}
close(IN);
0120nobodyさん
2006/02/22(水) 04:58:45ID:???ソースを会社のUSBメモリにいれてPCにさしっぱにして忘れて来てしまったので
今日会社に着いたら即やってみたいと思います。結果必ず報告に来ます(^д^ゞ
まずはレスしてくれた感謝のお気持ちだけ。。
0121nobodyさん
2006/02/22(水) 11:43:46ID:???0122nobodyさん
2006/02/23(木) 00:22:45ID:???会社には行けたんですが通常業務が忙しすぎて手が回らなかった(というか回させてもらえない)
ので、実験できませんでしたT△T何分小さい会社なもので・・・。
明日には必ずやりますので報告もう少し遅れそうです。。
わざわざソース書いて下さったのにごめんなさい。
0123nobodyさん
2006/02/23(木) 14:41:14ID:???パソコンだけでなく携帯からもアクセス可能なものです。
タイトル:消える掲示板
制作年:774年
出演者:
名無しさん
夜勤さん
プログラマさん
内容:増大する維持費と転送量に挑む男達。淀んだ楽園の行方は?
こんな感じの内容を登録して携帯やパソコンから検索閲覧できるようにしたいのですがPHPとMYSQLで実現できますか?
ちなみにPHPとMYSQLはこれから勉強します。
よろしくお願いします。
0124nobodyさん
2006/02/23(木) 14:43:27ID:???0125nobodyさん
2006/02/23(木) 15:09:03ID:Swl5xdsb「呼び出されたらサーバのファイルに
処理だけしてHTMLを返さない」
というCGIはどうやって書くのでしょう。
具体的には
「FLASHからPERLのCGIを呼び出すが
処理後にいちいちページが変わったりしなくていい」
というものです。
処理した後にHTMLをブラウザに返す
ようなCGIしか作ったことがないので
FLASHの話なのかCGI全般の仕組みの話なのか
よくわからないのです。
0127脱帽
2006/02/23(木) 15:25:40ID:???とりあえず出直してこい
0129nobodyさん
2006/02/23(木) 18:32:56ID:Swl5xdsbprint "Status: 204";
0130nobodyさん
2006/02/23(木) 18:48:11ID:???無事できました!わかりやすいソースですごく納得です。
改行コードの件、今度から忘れず気をつけたいと思います。
119さんの力量計り知れないですね^^;本当にどうもありがとう御座いました。
0132nobodyさん
2006/02/25(土) 21:34:11ID:???・書籍名 :(さるでもわかるPHP)
・ジャンル:(ぱそこん)
・作家名 :(曾英知)
・出版社 :(PHP出版)
・書評 :(わからん)
・満足度 :(38%)
とソフトかなんかに伝プレのカッコ内だけ記入してアップロードしたら
かってに
・ジャンルごとに固めて五十音順にならべるてページ作ってくれる
・ジャンルごとに固めて満足度順に並べてページつくってくれる
とかしてくれるようにしたいんだけど
HTMLやCSS以外に何を勉強したらできるようになるのか教えてください、
blog使えばいいじゃねーかとか言われてもブログのデザインって
使いにくいしダサいし
0133nobodyさん
2006/02/25(土) 21:46:49ID:???プログラム言語と 英語の習得を比較するとこんな感じ。
言語を取得してからも実用的な物を作れるようになるまでの道のりは長いぞ。
[プログラム言語の習得] [英語の習得]
関数・構文を覚える 単語・構文を覚える
簡単なものを作る 簡単な文章を作る
必要な知識(プロトコルとか)を習得 ジョークの理解に必要な歴史的背景や風俗を知る
より効率的な作り方を身に付ける 古典的なアメリカンジョークを聞きつづける
実用的な物を作る どっかんどっかん受けるようなアメリカンジョークを作る
0134nobodyさん
2006/02/25(土) 23:02:09ID:???blogだってCSSをいじれば相当デザインを良くできると思うが。
ま、PerlかPHPのどっちかでも勉強すればいいんじゃね。
0135nobodyさん
2006/02/25(土) 23:42:54ID:???IBM の DB2 だっけ? とか商用の廉価版でフリー製品あるし DB は好きなの選べるから
今から勉強するなら面白いとは思う
0136nobodyさん
2006/02/26(日) 16:36:58ID:???0137nobodyさん
2006/02/26(日) 19:48:31ID:???0138でもどり
2006/02/26(日) 21:50:01ID:gbKgppEZある団体のホームページを作っていて、プロバイダは@niftyです。
自分で調べたところ、@niftyで使用されているサーバのOSはFreeBSDでASPは使えないとわかりました。
OSがFreeBSDでASPのようにデータベースに接続して登録や照会処理ができるような技術を調べたところ、
Apache、PostgreSQLなどがあるようなのですが、どれが習得しやすく使いやすいですか?
アドバイスや参考なるページをご存知の方は教えてください。
よろしくお願いします。
0139nobodyさん
2006/02/26(日) 22:04:33ID:???0140nobodyさん
2006/02/26(日) 22:05:03ID:???名称 キミの環境 代替手段
------------------------------------------------------
OS windowsの何か FreeBSD、Linuxとか
Webサーバ IISとか(よく知らね) apache
データベース SQLServer PostgreSQL、MySQLとか
プログラム言語 ASP Perl、PHP、JSPとか
0141nobodyさん
2006/02/26(日) 23:06:43ID:???Windowsしか知らんのなら、素直にWindowsサーバ使えるところでホームページ作れば?
今までWindows+ASP+SQLServerしか触ったことのない人が、一からApacheとPostgreSQLの
環境を構築してUNIXの勉強もしなきゃならないというのはキツいよ。っつーか無謀。
趣味ならともかくお仕事なら、
・Windowsサーバを使えるところで作る
・移行環境(何にするか知らんが)に詳しい技術者を連れてくる
のどっちかにすれ
■ このスレッドは過去ログ倉庫に格納されています