CGIだけどなんか質問ある Pert 5.01
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/03/03 12:49ID:673UxTI50604ななすぅい
02/03/26 15:10ID:???どうしたらいいの?オシエテ。
0605nobodyさん
02/03/26 15:22ID:???opendir(DIR, $d);
@dir = readdir(DIR);
close(DIR);
foreach (@dir) {
print "$_\n" if -d "$d/$_";
}
0606nobodyさん
02/03/26 15:22ID:???opendirしてreaddirしてその中身からディレクトリだけ表示してclosedir。
0608nobodyさん
02/03/26 15:59ID:???0609ななすぅい
02/03/26 16:44ID:???あとひとつおしえてください。
シンボリックリンクかどうかアレですが、「.」と「..」が入ってしまいます。
これを取り除きたいのですが、どうすればいいの?
0610nobodyさん
02/03/26 16:54ID:???if
0611ななすぅい
02/03/26 17:18ID:???0612ななすぅい
02/03/26 17:25ID:???0614nobodyさん
02/03/27 00:34ID:???HTMLヘッダはsub headというルーチンをつくり
print "Content-type: text/html\n\n";
print <<EOM;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">
<title>$main_title</title>
</head>
EOM
という中身です。
メイン画面、書き込み画面、エラー画面などHTML出力をするたびにこのヘッダを呼び出しています。
IEでは問題なく閲覧できるのですが、NN4.73がプレーンテキストとして出力を解釈しやがるのです。
すべてプレーンで解釈しやがるならContent-typeの指定ミスなのですが、メイン画面はHTMLとして、エラー画面はテキストとして読みやがります。
兄貴。NNの野郎にHTMLを叩きつけるにはどのような点を修正してスクリプティングすればいいのでしょうか。
0615nobodyさん
02/03/27 00:43ID:???ttp://pc.2ch.net/test/read.cgi/php/1014556702/953-962n
0616nobodyさん
02/03/27 00:49ID:???オマエのその価値のないソースを見ないとなんともいえないダロ!!
さっさとソースを見せろこのボケ!!
0618nobodyさん
02/03/27 03:51ID:???いつもその口調だねー
0619名無しさん
02/03/27 05:40ID:J486qV1r現在、レンタルサーバーにhns-liteを入れようと格闘中。
/root
|
+--/htdocs <--- URI : http://www.****/
|
+--/cgi-bin <--- URI : http://www.****/cgi-bin/
|
+--/diary
|
+--/hns-lite
|
+--/lib
|
hns-lite/index.cgi
を実行するとエラーが出る
Can't locate CGI/QueryString.pm in @INC
(@INC contains: lib /usr/local/lib/perl5/i386-bsdos/5.00403
/usr/local/lib/perl5 /usr/local/lib/perl5/site_perl/i386-bsdos
/usr/local/lib/perl5/site_perl .)
at /usr/local/etc/httpd/vhosts/********/cgi-bin/hns-lite/index.cgi line 31.
つづく・・・
0620619
02/03/27 05:40ID:J486qV1rで、index.cgiのline31付近はこんな感じ
#!/usr/bin/perl
(中略)
use strict;
use lib qw(lib);
use CGI::QueryString; <-- line 31
use DateTime::Format;
use SimpleDB::Scalar;
....
で、肝腎のモジュールは全て
hns-lite/lib
以下に存在しているので、@INCにそれが入っていないと考えられたのだが・・・・
use lib qw(./lib)
use lib qw(./lib ./lib/CGI)
use lib qw(/usr/local/etc/httpd/vhosts/********/cgi-bin/hns-lite/lib/)
と色々変えてみたが変化無く、
push(@INC, )
unshift(@INC, )
もダメだった。
結局
require "./lib/CGI/QueryString.pm";
とするしかなかった。
でもこれだとHNS全体をこうする必要があり不可能。
いったいなにがわるいのでせうか?
0621619
02/03/27 05:44ID:J486qV1rえっと、書きたかったのは、/cgi-bin 以下に diary と hns-lite があって、
hns-lite の中に lib があるということです。
0622736
02/03/27 10:17ID:???CGIスクリプトレベルでのよくわからないのであきらめます。
すいませんでした。
0623nobodyさん
02/03/27 11:24ID:vf3Wej2o0624nobodyさん
02/03/27 12:24ID:W6jS6K5R英語版のサイトを作ろうと思い、もともと日本語版サイトで使っていたプロバイダ
さん提供のアンケートフォーム用CGIをサーバーからもってきて、日本語で
表示が出る部分だけ英語に書き換えました。
(書き換えの時はDreamweaverで。シンプルテキストだと文字化けしたので)
それをftpでアップして、アンケートフォームとリンクさせたところ、正常に
可動しません。
そもそも、もとのCGIをそのまま別名保存してもういちどアップしてもうまくいきません。
CGIは何か特別なソフトで開いたほうがいいのでしょうか・・・。
それともMACの環境だからでしょうか...。
0625nobodyさん
02/03/27 12:26ID:???0626nobodyさん
02/03/27 12:33ID:W6jS6K5RCGIのほうはもとがJcodeだったのでそのままです。
その不一致?
でも、英語アンケートフォームと今までの日本語版CGIを両方
使った場合、送信メールを受け取ることはできたんです。
(ただし送信確認画面で、日本語表記がでちゃう。送信ボタンなども
「送信」とでてしまうので、海外からだと正常に読めない)
0627nobodyさん
02/03/27 12:35ID:GD/Jk18+0628nobodyさん
02/03/27 12:37ID:W6jS6K5R0629nobodyさん
02/03/27 13:56ID:???そりゃテキストエディタじゃねーの?知らんけど。
0630nobodyさん
02/03/27 14:21ID:???という返答で正しいのか?
0631nobodyさん
02/03/27 15:24ID:???0632nobodyさん
02/03/27 15:56ID:DnWVHvAAパターンマッチ使ったほうが良い?
0633nobodyさん
02/03/27 16:00ID:Uk2UqleO年齢別リストを作るコードです。
@list = ( 20,25,24,32,28,20,28,24,20 );
foreach $fld ( @list ) {
$syukei{$fld}++; #年齢をキーとして集計していく
}
print "<table border=1>\n";
print "<tr><th>年齢</th><th>人数</th></tr>\n";
foreach $key (reverse( sort( keys(%syukei) ) ) ) {
$cnt = $syukei{$key};
print "<tr><th>${key}才</th><th>${cnt}人</th></tr>\n";
}
上の3行目、$syukei{$fld}++; は、
$syukei{$fld} = $syukei{$fld} + 1 ですよね。この場合、
右辺の$syukei{$fld}には何が入っているのでしょうか。
お願いします。
0635633
02/03/27 16:34ID:Uk2UqleOこれはハッシュの勉強のところなんです。
値のグループ化というもので、社員の年齢ごとの
人数を集計するプログラムです。で3行目ですが、
$syukei{20} = $syukei{20} + 1 ですよね。
20をキーとしてそれに対応する値が右辺だということは
わかるのですが、右辺の$syukei{20}がわかりません。
これは何になるのでしょう。
0636nobodyさん
02/03/27 17:00ID:???で表示されたものが何かを考えればぁ?(゚Д゚)
0637633
02/03/27 17:35ID:Uk2UqleOサンプルなので、$syukei{20}が3で、$syukei{25}が1というのは
わかっているのですが、それだと一番最初の右辺$syukei{20}が0で
ないといけないですよね。つまり、
$syukei{20} = 0 + 1 ですよね。これで20のvalueが1になりました。
二回目からは$syukei{20} = 1 + 1 というのも分かります。
で最終的に$syukei = 2 + 1 で3になります。
僕が分らないのは、最初の右辺$syukei{20}が0というのが腑に落ちない
のです。うまくいえないですけど助けてください。
0638nobodyさん
02/03/27 17:49ID:???と言うことでいかが?
# ほんとはちょっと違うけど。
0639nobodyさん
02/03/27 17:55ID:???Perlでは初期化されてない変数は空文字になる。
数式で使うと0として扱われる。
0640633
02/03/27 18:28ID:Uk2UqleO自分も変数の初期値が0というのは知っているのですが、
こに場合はハッシュだから、どうなのかなと思っていました。
いわゆるハッシュ変数という奴なのですね。オライリーの
初めてのPERLを読んで何となくわかりました。これは今読んでる
初級本をクリアしてから読もうと思っていたのですが、けっこう
いいですね。
0641nobodyさん
02/03/28 02:54ID:9oC7jnq/rand関数がありますが、
たとえば $x = rand(6); $y = rand(6);
とした場合に僕の希望としては
それぞれに異なる結果を出したいのですが、
実際には $x,$y 共に同じ値になってしまって困っています。
サイコロで言えば二つを何度振っても
同じ数字が出続けるような物です。
何卒アドバイスを宜しくお願いします
0642>>641
02/03/28 03:05ID:???0643>>641
02/03/28 03:21ID:???0645nobodyさん
02/03/28 10:10ID:KXdiu3Az666−606 755−705とかで何か変わりますか?
以上にスレッドが重たいので困っております。何か良い方法ないでしょうか?
0647nobodyさん
02/03/28 10:30ID:KXdiu3Azありがとうございます。CGIのスレッド設置したのですが
凄く重たいのですが何か良い方法ないのですかね。
改善できることはしたいのですか・・
0648nobodyさん
02/03/28 10:47ID:???意味のわからんことをさっきから。
Web制作にCGI設置用のスレがある。ここはお前のようなコンシューマーの来るところではない。帰れ。
0650nobodyさん
02/03/30 22:08ID:???ソースの中に nph- という文字列があれば、ファイル名の先頭に
nph- と付け加えてみる、というか、サーバーを替えたらどうですか?
それか、同じ団体のアカでも新しくもう一つ取れば、もしかすると
空いてるホストにあたるかも知れません・・・が、余りオススメしませんね。
しかし、軽い CGI に替えるのが一番効果的でしょう。
0651nobodyさん
02/03/30 22:18ID:???共用サーバーは重いです。
専用サーバーを借りましょう。
ちゃんと保守までしてくれるところを。
そうすれば軽くなります。
0652nobodyさん
02/03/31 07:56ID:???スクリプトを配布してるサイトがあれば教えて頂けませんか。
0654厨房ですよ
02/04/01 00:33ID:???ActivPerl+win2kで-cwチェックに通ったPerlのCGIをサーバーにあげたところ500エラーが出ました。
何が問題なのかと、hKCatchをつかってみると
[hogehoge.cgi:2:die] (eval 1) has too many errors. > use KCatch qw( source execdata );__DATA__
という箇所でdieしていました。他はwarnだけでdaiはありません。
has too many errorsをgoogleってみたところ2chの別スレで「perl4じゃ?」という発言を見つけました。しかしuseを使えているということはperl4ではないはず。
何が問題なのでしょうか。
0655nobodyさん
02/04/01 00:47ID:???ワラタ
とりあえずどんな処理をさせるコードなのか書かないと
どんな関数を使ってるのかすら想像できないのでお答えできません
0656厨房ですよ
02/04/01 00:59ID:???設定情報のあるsetup.cgiファイルを読み込み、それ自体を書き換えるcgiです。
使ってる関数は超基本関数だけです。
ローカルでは動いているのになぁ……。
パーミッションも#!行もrequireも間違ってないっぽいです。
謎……。
0658nobodyさん
02/04/01 13:04ID:???#!/bin/sh
echo "Content-type: text/plain"
echo ""
/usr/local/bin/perl -wc hogehoge.cgi
0660nobodyさん
02/04/01 20:21ID:22Bwn0qt0662nobodyさん
02/04/01 20:31ID:???やっぱりそうですか。
http://ime.nu/ってどうやってんだろ。
0663nobodyさん
02/04/01 20:39ID:bVnVGhV3全然分からないです・・・。
cgiからcgiにPOSTするにはどのようにすればいいんでしょうか?
よろしくお願いします。
0665nobodyさん
02/04/01 21:18ID:b9jzIHibcgiなどウェブ系のプログラムを独学で作ってきていますが、
何でも、「仕様書」なる者を書いて設計をきちんとしないと破綻するらしいとわかりました。
確かに、昔書いた掲示板のスクリプトとかシンプルなものでも、ちょっと変更を加えようとしても訳わかりませんで、
結局新しいのをつくったりします。
グーぐるで探したら、河村かつまという人のサイトで仕様書の作り方を開設していたのですが、すごくわかりにくい文章で、
挫折してしまいました。やっぱり文章は本職の人が書かないとだめですね。
http://www.st.rim.or.jp/~k-kazuma/SD/SD.html
というわけで、仕様書の書き方をわかりやすく開設してあるおすすめのサイト、書籍を教えてください。
よろしくおながいします。
0666nobodyさん
02/04/01 21:20ID:???/*
グーぐるで探したら、河村かつまという人のサイトで仕様書の作り方を開設していたのですが、すごくわかりにくい文章で、
挫折してしまいました。やっぱり文章は本職の人が書かないとだめですね。
http://www.st.rim.or.jp/~k-kazuma/SD/SD.html
*/
何もしない奴が何かやっている奴を批評する権利はない。
帰れ。
0667nobodyさん
02/04/01 21:28ID:gjG2j3IKレス機能のない掲示板です。どなたか、記事削除システムを、どのようにすれば作れるか、教えてください。
0669WebBeginer
02/04/01 21:39ID:FPTql6Ahforeach(@lines){
$_ =~ s/♪/<img src=pic_i\/onpu.gif width=12 height=12>/ig;
}
foreach(@lines){
$_ =~ s/!/<img src=pic_i\/bikkuri.gif width=12 height=12>/ig;
}
・
・
・
※「♪」「!」は実際はiモードの絵文字を直接入力してます。
としているのですが、この構文をiモードの絵文字の数、つまり百数十回繰り返すと、サーバに負担がかかりすぎるため、エラーとなってしまいます。
何回かやった結果、この構文10個くらいが限界のようです。
なんとかサーバに負担をかけずに全ての絵文字を変換するスクリプトってできますか?
0670nobodyさん
02/04/01 21:41ID:???foreach(@lines){
$_ =~ s/♪/<img src=pic_i\/onpu.gif width=12 height=12>/ig;
$_ =~ s/!/<img src=pic_i\/bikkuri.gif width=12 height=12>/ig;
・
・
・
こういう発想が普通のような気もしますが。
length(@lines)とlength(@lines)^2じゃ全然処理量が違います。
ループはできるだけ少なく。これが基本。
0672nobodyさん
02/04/01 21:47ID:???http://specters.net/cgipon/labo/dt_emoji.html
あとは自分でやってくれ。
0673WebBeginer
02/04/01 21:53ID:FPTql6Ah即レスありがとうございます。
この構文自体、他の掲示板CGIから引用したもので、自分でも理解しきれていないのですが、
length(@lines)とlength(@lines)^2じゃ全然処理量が違います。
自分の構文の場合だと具体的にどうすれば・・・
自分でも669の構文の繰り返しは幼稚だとは思うのですがなにぶん知識が浅くて改良できませんでした。
あと、iオプションってなんですか?
0674nobodyさん
02/04/01 21:54ID:vgH2l50K杜甫々さんの所以外で・・
0676nobodyさん
02/04/01 21:58ID:???>670さんがきっちり教えてくれてるだろ。
読んでないのか?
iは大文字小文字を区別しないって事。
>674
とほほがダメな理由を言え。
そうでないと紹介できん。
0677WebBeginer
02/04/01 22:05ID:FPTql6Ahすいません、つい669の時の構文とおなじものだと勘違いしてました。
670さんのやりかたも前に試したのですが、百数十回だとやはりエラーがでてしまうんですよね・・・
0682WebBeginer
02/04/01 22:32ID:FPTql6Ahいや、そういう意味で書いたのでは・・・
失礼でしたら申し訳ないです。サーバーエラーが複数あることを知りませんでした。
ただ、繰り返しを10回以内にするとエラーが起こらないのでやはりサーバに負担をかけたからエラーになったのかな、と。
0683nobodyさん
02/04/01 22:33ID:???まあまあ落ち着いて
ごめん、わらてしまたよ
0684nobodyさん
02/04/01 22:59ID:???埒あかん。
ソース丸ごとアップしろ。
多分説明してもお前には理解できないし、こっちが求めている情報をお前が選別して掲示できる事もない。
0688nobodyさん
02/04/02 10:06ID:???なにかにつけ、「ワラタ」ということばを連発したいがためにむりくり
さがすやつ! さびしいのネ!
0689nobodyさん
02/04/02 20:33ID:???imgboard v1.22 R6のスクリプト
http://www.big.or.jp/~talk/t-club/soft/index.html
0693nobodyさん
02/04/03 02:20ID:2Lh4+kxY%17%ea%17%e8%17%ec%17%a8%17%dd%17%e8%17%d3%17%e3%17%b8%17%d1%17%f7%17%de%17%a8%17%fa%17%d2%18i%06%b5%18j
これの解読方法ありますか?
ネスケでテキスト表示させてもできなかった
ちなみに文字化けメールじゃありません
とあるチャットのデータファイルで内緒話の部分だけがそうなるんです
ちなみにそのチャットはこれ
http://www.teachat.org/download.php
0695nobodyさん
02/04/03 03:56ID:???0696nobodyさん
02/04/03 10:35ID:WrEAhQK7my $tmp
このmyってなんすか・・・
0697Dream ★
02/04/03 10:41ID:???好結果があるのかなぁ?
たとえば、複数人で同じソース使っていて、各自の担当部分の
変数を漏らさないようにする目的、とかだったら十分効果あるし
理解できるけど、素人程度の(要するに俺程度の)書くスクリプトでも、
充分、何らかの効果があるものなんですかね?
0698nobodyさん
02/04/03 11:16ID:???無きゃ困るから使う。それだけ。
0699nobodyさん
02/04/03 12:17ID:???perlとphpどちらが宜しいですかね?
各々メリットデメリット教えて。
0700nobodyさん
02/04/03 14:46ID:YEM9HsOOの、「-w」オプションて、どういう場合に必要なんでしょう?
0701nobodyさん
02/04/03 16:33ID:???0702解読できないよー
02/04/03 16:48ID:???ものとなんとなく形式が似ているのです。どなたかわかるかたがおられましたら教えて
いただけないでしょうか? 以下に書いたものがそれなんですが...
%83l%83^%82%be%82%e6%83o%81[%83J!+%83I%83}%83G%82%cd%82%a2%82%a2%83J%83%82%82%c9%82%c8%82%ea%82%e9%82%ba!+by+%89%f0%93%c7%82%c5%82%ab%82%c8%82%a2%82%e6%81[
0703nobodyさん
02/04/03 16:51ID:???ということをやろうと思いましてやってみたのですが、
許可をしたアドレスからもはじかれてしまいます。
どこかが間違っているのでしょうか?
お願いします。
##特定したURL以外アクセス禁止(1ならする、0ならしない)
$badurl = '1';
##上記で1にした場合そのURL指定(CGIを設置するページ)
#リンク許可ページのURL (正確に記入。複数指定可)
$url[1] = 'http://';
$url[2] = 'http://';
$url[3] = '';
$url[4] = '';
if($badurl) {
$url[0] = $script;
$ENV{'HTTP_REFERER'}=~ s/%(..)/pack("C",hex($1))/eg;
if($ENV{'HTTP_REFERER'}){
for(@url){
if($_ && $ENV{'HTTP_REFERER'} =~ /^\Q$_\E/){
$flag = 1;
last;
}
}
}
if($badurl && $flag != 1) { &error("CGIへの直リンクは禁止です"); }
}
0704nobodyさん
02/04/03 17:12ID:???パーソナルファイヤーウォールを導入されてるとREFFERERを返さない事もある。
ソフトによって隠されるから。
■ このスレッドは過去ログ倉庫に格納されています