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

CGIだけど、なんか質問ある? Part 9

■ このスレッドは過去ログ倉庫に格納されています
0001ななし ◆E6qQ.htN7o 03/01/03 02:56ID:H5ub4PWW
CGIの運用に関する質問スレッドです。

※CGIは特定の言語に依存するものではありません。

※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
  ↓
【Perl】初心者コーナー Part18
http://pc.2ch.net/test/read.cgi/php/1037797479/l50

過去ログ・関連スレッドは >>2-5 あたりに
0693nobodyさん03/03/15 02:53ID:???
>>692
あ、そうですね。
でももう、その配列を利用しないのなら下のでもいいんですかね?

#即レスありが�dです。
0694nobodyさん03/03/15 02:59ID:???
>>693
ケントのは読み込んでからデータを追加してファイル丸ごと上書きだろ。

別に追加でも構わないけど、下のじゃロックもかけてないからダメだ。
0695nobodyさん03/03/15 03:08ID:???
>>694
追加でもかまわないんですね。
どうもありがとうございました。
あと、ロックですが、
前後に&lock;と&unlock;
してあるんで大丈夫と思います。
0696nobodyさん03/03/15 03:15ID:???
ケントのソースはあまり参考にしないほうがいいぞ
0697nobodyさん03/03/15 03:38ID:5hlN9xGB
初歩的な質問かもしれませんが、個人等で公開している
ドメイン検索エンジンは、通常どういった仕組みで作られて
いるのでしょうか。

検索してもこれといったものが見つからなかったため、
質問させていただきました。
すみませんが、どうか宜しくお願いします。
0698nobodyさん03/03/15 03:42ID:???
何を聞きたいのかよく分からんが、ネームサーバに問い合わせればいいんでないの?
0699nobodyさん03/03/15 04:08ID:???
それしかないよね
何を知りたいのだろう?
0700nobodyさん03/03/15 04:21ID:5hlN9xGB
>>698-699
説明不足ですみません。
お名前.comのような、.com等のドメインが空いているか
サーチするプログラムを自前で作りたいということです。
0701nobodyさん03/03/15 04:22ID:???
$xxがMD5のハッシュ値なら〜
見たいな事をしたいんですが、どのように書けばいいでしょうか?
0702nobodyさん03/03/15 04:26ID:???
>>700
ドメイン名を正引きすればいいだけ
0703nobodyさん03/03/15 04:27ID:???
正引きじゃねぇや、whoisだ
0704nobodyさん03/03/15 13:37ID:???
>>701
言語書いてないから適当に

/[0-9a-zA-Z+\/]*=*/
0705nobodyさん03/03/15 15:20ID:???
>>704
すいませんperlなんですけど、
/[a-fA-F\d]{32}/
↑これじゃあ見当違いですか?
0706nobodyさん03/03/15 18:05ID:sA3oWGif
この板が適切かどうか分からないんですけど、、、掲示板cgiに関する
質問です。
よく吐きだしたhtmlを直接表示させる掲示板cgiがありますけど、その吐きだした
htmlをいったんファイルとして保存して、そのhtmlを掲示板として表示させるように
するにはどうしたらいいんでしょ?
0707nobodyさん03/03/15 19:04ID:???
>htmlをいったんファイルとして保存して、そのhtmlを掲示板として表示させるように
そのまんま。
答え出てるじゃない。
0708nobodyさん03/03/15 19:16ID:???
ここでよいですよ。

> 吐きだしたhtmlをいったんファイルとして保存して、
> そのhtmlを掲示板として表示させるようにするにはどうしたらいいんでしょ?

htmlファイルを作る処理を終えたら、そのhtmlファイルに飛んだらいい話かと。
Perlなら print "location: URL\n\n";
070970603/03/15 19:57ID:1k1hrfmM
>>707
したいことの論理が正しいことは分かりましたが(w、具体的なやり方が
分からないのでし。

>>708
>htmlファイルを作る処理を終えたら、そのhtmlファイルに飛んだらいい話かと。
>Perlなら print "location: URL\n\n";
この行はどこに挿入したらいいんでしょうかぁ? フッター作成の後?
それともcgiの最終行ですか?
0710nobodyさん03/03/15 20:08ID:???
>>709
printで画面に表示する部分をファイルに出力に改造して、
その処理が終ったらLocationで飛ばす
071170603/03/15 20:10ID:1k1hrfmM
>>710
すみません
>printで画面に表示する部分をファイルに出力に改造して、
これの具体的な書き方を教えてください。
それから受け手のhtmlファイルですけど、何か準備は要りますか?
0712nobodyさん03/03/15 20:16ID:???
なんでわざわざhtmlのファイルを作りたいの?
0713nobodyさん03/03/15 20:18ID:???
>>711
自分でスクリプト書くスキルないのならKent-Webとか
CGIスクリプト配布サイトにあるの使っては?
下のが記事部分をHTMLファイルで出力してるタイプ。
http://www.kent-web.com/bbs/sunbbs.html?
071470603/03/15 20:20ID:1k1hrfmM
>>712
本来の目的は、掲示板cgiが生成して表示した掲示板のhtmlでは検索エンジンが
拾って来れないようなので、それを拾ってこれるようにするためです。
0715nobodyさん03/03/15 20:25ID:???
>>714
>拾って来れないようなので、

例えばgoogleとか拾ってくれます。
071670603/03/15 20:27ID:1k1hrfmM
>>715
いや、URLの末尾がxxx.cgiになっているものは拾ってきてくれないようですが。
0717nobodyさん03/03/15 21:26ID:???
ログファイルへの書き込みの後に画面表示のために
print "文字"; てのがあるはずだが、その部分を
open(FH,">$htmlfile"); print FH "文字"; close(FH) て感じにする。
そのままだと画面表示されないので、Locationで作成したHTMLにジャンプするって感じだな。
index.htmなどからリンクをはる時には $htmlfileにリンクをはれば良い。
ファイルロックするとかLocationを使いたくない時は自分で考えれ。

上からの流れをまとめるとこういう感じだ。
自分でできないと思ったら、あきらめるか>>713のところのを使うとよい。
0718nobodyさん03/03/15 22:26ID:???
>714
ロボット避けのMETAタグとかの勉強をした方が早いと思う。
0719nobodyさん03/03/15 22:28ID:5hlN9xGB
>>703
どうもありがとうございます。
おかげさまで前進することができました。
072070603/03/15 23:44ID:1k1hrfmM
>>717
うがー
>print "文字"; てのがあるはずだが、その部分を
>open(FH,">$htmlfile"); print FH "文字"; close(FH) て感じにする。
毎行こうするわけですか。かなりめんどい・・・

当分、諦めるかな・・・ 気が向いたら>>713も検討してみます。

>>718
ロボット避けのMETAタグは使用していないでし。
0721nobodyさん03/03/16 00:22ID:???
select FH;
0722nobodyさん03/03/16 00:25ID:???
open FH, '| tee filename';
select FH;
072370603/03/16 01:04ID:???
どうもお騒がせしましたが、とりあえず所期の目的を達成しました。
単にフレームのhtmlファイルをこしらえて、そこにcgiを流し込んだの
です。htmlファイルにはキーワードをしっかりと仕込みました、はい。

いろいろとお教えいただきありがとうございました。
0724nobodyさん03/03/16 02:01ID:0/UJ/9KJ
Perlで
+-2003
+-03
| +-16
| | +-0.dat
| | +-1.dat
| +-18
| +-0.dat
| +-1.dat
+-05
+-04
+-0.dat
とかなっているディレクトリ構成で、CurrentDirが今2003にいたと
して ./2003/03/ 配下の全データ(サブディレクトリ、ファイル)を
削除しようとした場合、みなさんどんなソース書きます?

やっぱ一番下までディレクトリ見に行って、ファイルを全部消して
からぽちぽちとディレクトリを消していかねばならんのですか?

なんか おぉ〜 っていうソースないですか?
0725nobodyさん03/03/16 02:04ID:0/UJ/9KJ
すまそ。ずれちった。
+-2003
  +-03
  | +-16
  | | +-0.dat
  | | +-1.dat
  | +-18
  |   +-0.dat
  |   +-1.dat
  +-05
    +-04
     +-0.dat
ね。
0726nobodyさん03/03/16 02:12ID:???
unlink '03';
0727nobodyさん03/03/16 02:13ID:???
UNIXコマンドを使う手もあるが、つかえない鯖も多いから、再起呼び出しで削除用のサブルーチン作った方がいい。

ちなみに>1はちゃんと読んだか?
0728nobodyさん03/03/16 05:44ID:zuyh3uNE
チャットで、同じ文字が続くと文字を小さくしたいんですが、どうすればいいんでしょうか。

こんにちは!!!!!!!!!!!!!!!  だとか
あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお だとか。
0729nobodyさん03/03/16 06:25ID:???
>>728
言語すら書かずに質問ですか。
みなさん、こんなのにマジ回答しても徒労に終わりますよ。
0730nobodyさん03/03/16 06:30ID:???
>>728
if($string/hoge*{2}){print"small$text";}
0731nobodyさん03/03/16 11:12ID:???
Perlなんですけど

<input type="radio" name="test1" value="$c_data1">

<input type="text" name="test2" value="$c_data2" size=6 maxlengh="6">

↑みたいな感じでラジオとテキストボックスでデータの入力を
選択できる状態にして・・・。

もしも、テキストボックスに文字列が入っていたら
ラジオボックスのデータを無効にしてテキストボックスに入力された
データを保存しる。ってものをやってるんですけど・・・。
テキストボックスに特定の文字列が入っていたら。の処理はわかりますが
その文字列が予測できないんで、不特定多数になっちゃって特定できず
ifのカッコ内でどう処理すりゃいいかワカンネーんです・・。
こんな説明で判ってくれる人がいたらヨロヨロでつ・・。
0732nobodyさん03/03/16 11:31ID:???
つーわけで
0733nobodyさん03/03/16 13:08ID:bu9vx7r5
>>727
ありがとです。やっぱそうなっちゃうかな。

んで板の注意ありがと。
やっちまいました。逝ってきます(T-T)
073473103/03/16 13:15ID:???
解決しますた。
0735nobodyさん03/03/16 13:18ID:0oFKfJrd
女
http://homepage3.nifty.com/digikei/sample/sample.html
0736nobodyさん03/03/16 14:33ID:vu3Qqexl
perlで

if ($testが「TEST>>」から始まっていれば) {
 print "$testから「TEST>>」を抜いたもの";
}

ということをしたいんですが、正規表現がよくわからず、
思ったように動いてくれません。
どのように書けばよいのでしょうか?
0737nobodyさん03/03/16 14:58ID:???
if($test =~ /^TEST>>(.*)/){
  print $1;
}
0738nobodyさん03/03/16 15:50ID:???
>>737
何故同じ事をしてるのに無理なんだろうと思ったら、
>を>にデコードしてたからでした。
すいませんでした。
0739nobodyさん03/03/16 15:51ID:???
>>738
&>です
0740nobodyさん03/03/16 15:53ID:???
書き方忘れた・・・
&&gt;ってことです・・・
0741nobodyさん03/03/16 16:00ID:F4DlRSun
掲示板への最終書き込み時間をHPのトップページに表示したいのですが
教えていただけないですか?
0742nobodyさん03/03/16 16:17ID:???
>>741
やればできそう。
0743nobodyさん03/03/16 16:27ID:???
>>741
できるけど、お前には無理だからやめとけ。
そんな漠然とした質問じゃ、掲示板のログの最新時間を
書き出せとしか言いようがない。
0744nobodyさん03/03/16 16:36ID:KSrtergb
>>742>>741
教えてください
0745nobodyさん03/03/16 17:10ID:zuyh3uNE
Perlでフォームの内容を判断させるにはどういう命令を使ったらいいんでしょうか。
あほ が含まれてるだとか、判断したいんです。
0746nobodyさん03/03/16 17:11ID:???
正規表現
0747nobodyさん03/03/16 17:12ID:???
パターンマッチ
0748nobodyさん03/03/16 17:22ID:zuyh3uNE
正規表現?パターンマッチ?
0749nobodyさん03/03/16 18:15ID:???
以下のスレッドで。
【Perl】初心者コーナー Part19
http://pc2.2ch.net/test/read.cgi/php/1044717887/
0750nobodyさん03/03/17 02:07ID:???
メメント観た。
これは凄い。しかし難しい。
記憶などがテーマになってる映画だが、
観ている側も気を抜かず、正確に記憶しないと、
話がわからなくなる。
そんな気がした映画でした。

しかし、今まで観た映画の中で一番疲れたかも。
0751nobodyさん03/03/17 02:08ID:???
思いっきり誤爆スマソ
0752nobodyさん03/03/17 02:09ID:???
メメントのCGI化キボンヌ
0753nobodyさん03/03/17 02:12ID:???
w
0754nobodyさん03/03/17 05:50ID:???
■ 新しいサーバで read.cgi が正しく動かない問題。
http://qb.2ch.net/test/read.cgi/accuse/1047840578/l50

誰か詳しい方、分かりますでしょうか?
0755nobodyさん03/03/17 12:28ID:DmD+ibnT
「既に配布されていないCGI」を集めてるスレを探してるんだけど、
誰かどこにあるか知らない?
どこかのスレの関連スレで見かけたんだけどどこだかわかんない。スレタイを
覚えてないもんで・・。
0756nobodyさん03/03/17 12:45ID:???
>>755
dat落ちしますた
075775503/03/17 12:57ID:???
>>756
あちゃー。検索しても出ないワケだね。
Thanx。
0758nobodyさん03/03/17 15:02ID:???
>>757
ちなみにダウソ板にあったんだよ。
あやすぃCGI関連だったけどね。
0759nobodyさん03/03/17 17:30ID:6C47WdHm
質問します。
SELECTタグのMULITIPLEで選択したやつを、一定件数表示させ、
前頁、次頁で送るのがうまくいきません。
ちなみに
a href=\"$script?mode=serch&page=next&SELECTDATA=$SELECT"
を、次頁に貼り付けてます。
ページ送りをはずすと問題ないんですが?
どうも、SELECTDATAの区切りの判断に原因があるみたいとは思うんですが、
そこから先が(?_?)です。
おだづげを。
0760nobodyさん03/03/17 17:59ID:???
>>759
そもそも言わんとしてることがさっぱりわからん。

> うまくいきません。
どう、うまくいかないのさ?

> ページ送りをはずすと問題ないんですが?
はずしたら、「前頁、次頁で送る」という用件を満たさないんじゃねーの?
0761bloom03/03/17 18:05ID:A0XLzQcG
http://www.agemasukudasai.com/bloom/
0762nobodyさん03/03/17 18:23ID:6C47WdHm
>>760
すんません。
FROMで条件を選択させる簡易データーベースなんですが、
単数選択だと問題なく表示されます。前頁、次頁の送りも問題ありません。
ところが、複数選択すると1件も表示されなくなります。

>はずしたら、「前頁、次頁で送る」という用件を満たさないんじゃねーの?
そのとおりです。選択自体は問題ないといいたかったので。
0763nobodyさん03/03/17 18:31ID:???
結局、コードがおかしいだけじゃねーか
0764nobodyさん03/03/17 18:31ID:???
>>762
$SELECT にどんな文字列になってるのかも示さずに
>どうも、SELECTDATAの区切りの判断に原因があるみたいとは思うんですが、
>そこから先が(?_?)です。
なんて書かれても答えれないですー。
0765nobodyさん03/03/17 18:40ID:???
>>762
普通にprintデバッグしろや。まずは原因を突き止めろ。
0766nobodyさん03/03/17 18:53ID:???
つーか痛すぎだろこいつ
そんな説明で満足いく解答が返ってくると思うか普通?
それすらも判らないんだから、まず無理。
0767nobodyさん03/03/17 18:59ID:???
>>766
まぁ、とりあえずは >>764 や >>765 に対する回答を待つとしましょうや。
0768nobodyさん03/03/17 19:43ID:6C47WdHm
無茶苦茶言われてる、759です。
なんせ、CGIはじめた馬ツ鹿なもんで・・。
sub search {
・・・
&repeate;
#ここで、P1をPRINTさせると、(AとBで検索した場合)AB と表示される
#「次頁」をクリックすると、ここで終了してしまう。
if ($i == 0) {
print "<P><LI>該当する内容がありません\n";
} else {
・・・
if ($next < $i) {
print "<a href=\"$script?mode=search&page=$next&P1=$P1\> 次頁 </a>\n";
・・・}

}


#改行が多すぎるとしかられたので、その1
0769nobodyさん03/03/17 19:44ID:6C47WdHm
その2 759です。

#------------------
sub repeate {
$start = $page + 1;
$end = $page + 12;
$P1 = $in{'P1'};
・・・
@P1M = split(/\0/,$P1);
$flag = 1;
foreach (@P1M){
if ($_ ne "指定なし" && $_ ne $p1){
$flag = 0;
}else{
$flag = 1;
last;
}
}
if (!$flag) { next; }
・・・
こんなんで、いいでしょうか?自分としたら(AとBで検索した場合)AB の区切り文字が認識されずにABで検索されてしまっているんでは?
と思ってんですが。じゃぁSPLITは?
と、こんがらがっているんですが。
やっぱ、説明になってないですか?
0770nobodyさん03/03/17 19:53ID:???
さっぱり分からんが、ひとつ気になった。
$P1と$p1は違う変数。もし分かってやってるとしても、紛らわしくてバグの原因になるので
こういう命名法はやめたほうがいい。
アドバイスできなくてすまん。
0771nobodyさん03/03/17 20:02ID:???
>>768
>なんせ、CGIはじめた馬ツ鹿なもんで・・。
お前無茶苦茶言われてる理由がわかんねぇのか?
CGI初心者は歓迎だよ。お前がコミュニケーション初心者だからだよ。
例えお前がCGIのプロだったとしてもそんな質問の仕方したら同じように叩かれる。
0772nobodyさん03/03/17 20:10ID:YHcQyyod
perlでファイルをアップロードするプログラムを組んでいます。
ファイルと、その他の入力項目も同時にPOSTしており、
サーバー側で、入力のエラーチェックもやっています。

入力エラーを判断すると、エラーのHTMLを出力します。
ユーザーには、ブラウザの戻るボタンで、入力画面に戻らせようと
考えているのですが、IE6では「ページの有効期限切れ」が表示されてしまい、
入力画面に戻ることができません。

IEの仕様ということは解っているのですが、何とか回避する方法はないのでしょうか?

やはり、入力値を保存しといて、それを元に再表示するしかないんすかねぇ・・・
0773nobodyさん03/03/17 20:27ID:???
戻ってデータが消えているよりはよっぽどマシでしょう。
0774nobodyさん03/03/17 20:28ID:???
>>768-769
こんなのだけじゃわからんわ
0775nobodyさん03/03/17 20:32ID:6C47WdHm
>>770
有難うございました。
0776nobodyさん03/03/17 21:07ID:???
>>759
送られてきたデータをどうやって変数に入れてるかわからないからこんな回答でがまんしる。

@P1M = split(/\0/,$P1);
$flag = 1;$SELECT_DATA = "";
foreach (@P1M){
$SELECT_DATA .= "P1=$_&";
if ($_ ne "指定なし" && $_ ne $p1){
$flag = 0;

送られてきたときの P1=aaa&P1=bbb&P1=ccc& の形に戻して$SELECT_DATA に入れて
次のページへのリンクには
print "<a href=\"$script?mode=search&page=$next&$SELECT_DATA\"> 次頁 </a>\n";

(multipleの\0区切りはcgi-libかな?)
0777nobodyさん03/03/17 21:17ID:???
>>768
> #ここで、P1をPRINTさせると、(AとBで検索した場合)AB と表示される
質問するときは、文章で説明するんじゃなくて、
ソース「そのもの」と結果「そのもの」を明示してよ。
AとBが選択されていたなら、追加した print 文による結果は
...&SELECTDATA=A&SELECTDATA=B&...
みたいな感じになったはず。これを「このまま」書いて質問して欲しいの。

質問ではこれがいきなり AB になってるから、途中で何をやっているやら
回答する側だってサパーリなの。。。
0778nobodyさん03/03/17 21:57ID:???
「質問内容を校正するスレ」があるといいんだがな。
質問する前にそこでちゃんとした質問文にする、と。
#しかしアフォな質問の仕方しかできないやつは↑のスレを利用するなんて考えもしないだろうな。
0779nobodyさん03/03/17 22:30ID:???
なんか幼稚園児の教育みたいだなw
0780nobodyさん03/03/17 22:33ID:???
むしろ全ソース上げて仕様を示せ
0781nobodyさん03/03/17 22:34ID:???
>>772
Expires: ヘッダを付けるか、mod_exipres 組み込んで、いろいろといぢってみるとか?
やったこと無いのでこれ以上はマニュアル参照キボンヌ。
0782nobodyさん03/03/17 22:38ID:???
いや、質問者からいかにして質問の要点を引き出すか、というのも
このスレの楽しみかたの一つなのですテヘテヘ。
0783nobodyさん03/03/17 22:38ID:???
>>772
わざわざ別ページにしないで、入力画面の上にでも
エラーメッセージ出せばいいじゃないの
エラー項目に印でもつけてどこがエラーか教えれば十分でしょ
0784nobodyさん03/03/17 22:46ID:6pGOeCWh
これ買おうと思ってんだけど、どうよ?
「インターネットショップのためのCGI&受注管理」
http://www.amazon.co.jp/exec/obidos/ASIN/4871938883/ref=pd_bxgy_img_2/250-2312092-8829042
0785772 [解決]03/03/17 23:25ID:???
回答感謝でっす。

>>781
その辺、いろいろやってみました・・・が、だめでした。

>>783
あ。その手があったか・・・
でも、たった今、再表示するロジック書き終わったとこです・・・
明日書きゃよかった・・・ウワァァン!
0786nobodyさん03/03/18 03:19ID:???
検索エンジンで、チェックボックスをチェックしてるカテゴリからのみ検索
って感じのことをしたいのですが、
たとえば、↓のようにしたとき、

<input type="checkbox" name="hoge" value="0">
<input type="checkbox" name="hoge" value="1">

複数を選択することができない(しても意味ない)ですよね?
それで、色々検索したんですけど、

<input type="checkbox" name="hoge[]" value="0">
<input type="checkbox" name="hoge[]" value="1">

↑こんなんでやるみたいだって事はわかったんですが、
それ以上はわかりませんでした。
少しでもいいんで、助けていただけないでしょうか?
0787nobodyさん03/03/18 03:27ID:???
>>786
「複数を選択することができない」のはtype=radioだ。
type=checkboxは複数選択できる。
0788nobodyさん03/03/18 03:37ID:???
>>786
チェックボックスは複数選択できる
nameは同じ項目のチェックボックスなら同じ名前にする
hogeでもいいけど、後の[]はなんだ?いらない
valueは送信文字列で数字でも単語でもいい
他に送信ボタンなんかも必要

で、これを何で受け取って処理するわけ?
0789nobodyさん03/03/18 03:45ID:???
え?ちょっとまってください
<input type="checkbox" name="hoge" value="0">
<input type="checkbox" name="hoge" value="1">
<input type="checkbox" name="hoge" value="2">
<input type="checkbox" name="hoge" value="3">
で、2つ目と3つ目を選択したとき、
値はどう入るんでしょうか?
hoge=1,2ってなるんですか?
0790nobodyさん03/03/18 03:46ID:???
検索エンジンのイメージだとcheckboxがいいだろうな。
<input type="checkbox" name="hoge_1" value="1">て感じか。
最近perl弄ってないから忘れたが、hoge[]て使えるのか?
0791nobodyさん03/03/18 03:56ID:???
>>789
hoge=1&hoge=2となる。
同じnameが複数出てくるわけ。
cgi-lib.plなどでは、これを\0区切りで分解してくれる。
0792nobodyさん03/03/18 04:05ID:???
>>791
なるほど解りました

で、最終的に全ての値を@hogeに入れたいんですが・・・
どのようにすればいいのでしょうか?

#そろそろウザイですよね?すいません
■ このスレッドは過去ログ倉庫に格納されています