CGIだけど、なんか質問ある? Part 12
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/10/10 00:04:06ID:???※ CGIはウェブサーバ上でユーザプログラムを動作させるための仕組みであり、
Perl等特定の言語に依存するものではありません。
Perlのコーディングに関する質問は、専用スレでお願いします:
[Perlコーディング初心者質問スレ Part 38]
http://pc5.2ch.net/test/read.cgi/php/1097158988/
CGIとPerlの区別がわからない、という人はとりあえずこちらへ:
[△▲ WebProg 初心者の質問 Part10 ▼▽]
http://pc5.2ch.net/test/read.cgi/php/1095633323/
過去ログ・関連スレッドは>>2-10あたりに
0302nobodyさん
05/01/20 03:30:40ID:???ttp://inferno.x-eye.net/main/index.shtml
このサイトにあるような簡式BBSなんですけど
うちのサイトにも同じもの使おうと思っていろいろサイト回って探したけど
こういうCGIはみつからない…
これってもしかして自作?
もしどっか公開してるとこあるならよかったら教えて欲しいです。
0303nobodyさん
05/01/20 03:45:58ID:???【CGI】こんなCGI探してますver.15
http://pc5.2ch.net/test/read.cgi/hp/1097762828/
0305nobodyさん
05/01/20 15:24:10ID:6RTB33WG処理を行うプログラムをファイル分けするのが
一般的だと思うけど、HTMLファイル内に埋め込む
置換用の文字列ってみんなどんな書き方してる?
ちなみにオレは %__、 __% でくくってる。
<body>
%__message__%
</body>
みんなはドン何?
0307nobodyさん
05/01/20 16:37:13ID:???<?foo-incl message?>
0308nobodyさん
05/01/20 16:57:29ID:???PerlのCGIなんですが、以下のようなコードをシェル上で実行するとシグナルを捕まえられるのですが
CGIとして呼び出すとタイムアウトします。
どなたか原因分かる方おられませんでしょうか。
Perlがバージョン5.8.4、Apacheが2.0.52のsuexecありです。
CGIはmod_perlではなく独立したプロセスとして呼び出しています。
----ここから
#!/usr/bin/perl
print "Content-type: text/html\n\n";
eval
{
local $SIG{ALRM} = sub { die "timeout" };
alarm 2;
sleep (10);
};
alarm 0;
if ($@)
{
if ($@ =~ /timeout/)
{
print ("しぐなるげっと");
exit;
}
}
print ("しぐなるろすと");
exit;
----ここまで
0309通りがかり質問人
05/01/20 18:47:22ID:ZFFWUrXl例えば仮にhttp://XXX.com/というディレクトリーがあったとして、
そのhttp://XXX.com/の後に例えばwww://yyy.com/test.mp3と書くとリンクが付くページを表示するようにしたいんです。
つまり、上記の場合、http://XXX.com/www://yyy.com/test.mp3にアクセスすると、
http://www://yyy.com/test.mp3へのリンクがついたページが表示するようにしたいんです。
これを実現するために私が考えたのは以下のソースです。
ファイル名はindex.cgiにしました。これによって、index.cgiを省略できるからこれで実現できそうと思ったのです。
しかし、これではhttp://XXX.com/以下もディレクトリまたはファイル名と見なされてnot foundになってしまいます。
パラメータを示す「?」を付けないと、つまり、
http://XXX.com/?www://yyy.com/test.mp3と書かないと実現できません。
「?」を書かないでhttp://XXX.com/www://yyy.com/test.mp3で実現できるようにしたいんです。
よろしくお願いします。
つまり、2chにURLを書いた場合に表示されるこれと同じ機能を作りたいわけです。
http://ime.nu/www.yahoo.co.jp
次の書き込みにソース書きます。
0310通りがかり質問人
05/01/20 18:47:52ID:ZFFWUrXl##############ここから################################################
#!/usr/local/bin/perl
$buffer = $ENV{'QUERY_STRING'};
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
if($buffer eq ""){
print "<title>CGI</title>\n";
print "</head>\n";
print "<body>\n";
print "<h1>\$bufferが空ならこれを表\示</h1>\n";
}else{
print "<title>右クリできるようにする</title>\n";
print "</head>\n";
print "<body>\n";
print "<h1><a href=\"http://$buffer\" target=\"_blank\">http://$buffer</a></h1>\n";
}
print "</body>\n";
print "</html>\n";
###############ここまで###################################################
0311nobodyさん
05/01/21 01:10:18ID:AR9vVUmKこのぐらいの数を管理するのに良い方法ってありますか?
使っているサーバはPHPは使えません。
今まで修正・削除などを
「ファイル開く→全データ取り込む→該当データを検索→処理→処理結果を反映して保存」
この単純な方法でやってきたんですが、もっと良い管理方法がありますか?
0312311
05/01/21 01:12:58ID:AR9vVUmKできれば慣れているPerlで良い方法があればいいのですが、
それよりも良い方法があればそれも勉強してみます。
0313nobodyさん
05/01/21 01:42:18ID:???つーか、何か困った事が起きてるのかどうかさえ分からん。
悩みが無いなら何もしなくてよろし。
0314308
05/01/21 10:26:43ID:3fuNtqobSIGKILLを自分に投げつけると終了し、SIGTERMを自分に投げつけても終了しない
という挙動を見るに、シグナルハンドラが上手く書き換わってないのかとも思うんですが
どなたか同様の症状を経験した方おられませんか……
#include <stdio.h>
#include <signal.h>
void sig_alarm(int sig)
{
printf("get\n");
}
main()
{
printf("Content-type: text/html\n\n");
signal(SIGALRM, sig_alarm);
alarm(1);
pause();
exit(0);
}
↑これをコマンドラインから実行するときちんとシグナルを受け取ってくれますが、
CGIとして実行するとpause()で止まります。
0315nobodyさん
05/01/21 11:22:15ID:???<FORM METHOD="POST" ACTION="sub.cgi">
の中からグローバル変数として参照したいんですが、どうやるのが一般的でしょうか?
use strictしてるので$varの宣言で何もつけないの怒られるのです
0318nobodyさん
05/01/21 11:39:25ID:???あっと、それではsub.cgiの中でrequire "subsub.pl"したとして
subsub.plの中からsub.cgiにhiddenで渡した$varを参照するのはどうやるのでしょう
0320nobodyさん
05/01/21 12:05:31ID:???requireした行の時点でsubsub.plの内部の変数がチェックされますか?
requireした後でmy $var = $form{'var'};して、その後でsubsub.plの
$varを使うサブルーチンを呼び出してるのですが、500が出ます
0322nobodyさん
05/01/22 01:27:23ID:???read (STDIN, $buffer, ENV{'CONTENT_LENGTH'};
のように文字列を読み、$bufferをファイルに出力したところ
改行部分までしか書き込んでくれなかったのですが
改行より後ろの部分も書き込ませることは出来ないのでしょうか?
改行までしか入ってないとかそういうのなんでしょうか
初歩的っぽい質問ですません
0323nobodyさん
05/01/22 14:56:53ID:LxfbGLyv色々な振り分けCGI試してみたんですが、真っ白の画面でるだけで困ってます。
試行錯誤していると、どうもLocationが動いてないみたいなんです。
Locationを有効にする方法知っておられましたらご教授下さい。
環境
ActivePerl 5.8.6
Tomcat 5.0.28
0324nobodyさん
05/01/22 15:45:39ID:???鯖がLocation使えることは確認してあるのか?
レン鯖だと使えないところもあったり広告などで邪魔されることもあるが。
0325323
05/01/22 16:19:25ID:LxfbGLyvレスどうもです。
現在はTomcatで自鯖立ててます。
なるべく色々な物入れたくないのでアパッチとの連携もしてません。
現状はTomcatのweb.xmlでCGIの制限を解除して使用出来る状態にしています。
実際表示するだけのような簡単なものは動いてます。
Locationが使えないのは鯖ソフトの問題なのかPerlの問題なのか分かりますでしょうか?
0326323
05/01/22 16:47:32ID:???アパッチと連携するかANHTTPDを入れるしかなさげです。
おさわがせしました(\_\);
0327nobodyさん
05/01/23 09:35:34ID:8w5I42sB0328nobodyさん
05/01/23 23:11:18ID:???#!/usr/bin/perl
use strict;
use warnings;
require "hoge2.pl";
our $foo = "foo";
main();
sub main { main2(); }
#### hoge2.pl #######
#!/usr/bin/perl
use strict;
use warnings;
sub main2 { print $foo; }
これって
Global symbol "$foo" requires explicit package name at ./hoge2.pl line ...
が出るんですが、どういう宣言をしたらhoge2.plのmain2()から$fooが見えるようになるのでしょうか?
0329nobodyさん
05/01/23 23:38:58ID:???print $main::foo;
print $::foo;
print $main'foo;
print $'foo;
0331nobodyさん
05/01/26 14:37:52ID:???昔の geocities っぽい奴がよくて、入力ページと閲覧ページが別れてる感じのやつ。
入力ページは .cgi もしくは .cgi にデータを投げる。
そいで 閲覧ページは .html 。みたいな。
よろっ!
0332nobodyさん
05/01/26 15:00:02ID:???板違い
【CGI】こんなCGI探してますver.15
http://pc5.2ch.net/test/read.cgi/hp/1097762828/
0333331
05/01/26 15:10:09ID:???0334nobodyさん
05/01/26 17:29:58ID:???0335nobodyさん
05/01/28 00:07:04ID:e7pglxYxいろいろとCGIの説明サイトみたいなところも行ってみたのですが、
何がなんだかって状況です。
目的は微妙に改造した掲示板設置です。
どなたか、もし良ければメッセでも使って教えてもらえませんでしょうか?
0336nobodyさん
05/01/28 00:07:44ID:???0338nobodyさん
05/01/28 05:59:39ID:???無駄レスになるのでやめましょう。
0339nobodyさん
05/01/28 08:10:59ID:???telnet だと動作するんですが、Web経由だと処理が長すぎてタイムアウトしてしまうCGI
があります。このようなタイムアウトしてしまう CGI は、処理は最後まで終了しているの
でしょうか?
また、 プログラムの処理を最後までまたずに、表示をだしておき、裏ではプログラムを
最後まで処理させることはできるのでしょうか?(もはやCGIじゃないんですが) html を
生成しておき、後で html を見せる様にしたい。
0340335
05/01/28 16:37:04ID:???すみません。
内容不足でした。
分からないというのは、基本的に全てです。
HTMLの知識は一応ありますが、
FFFTPやアップロードなどほとんどのことが分からない状態です。
これでも、一応努力してみたのですが、一向に解決の方向に向かわないので、
ここに助けを求めに来させていただきました。
報酬などはないのですが、もしよければ教えていただきたいです。
0341nobodyさん
05/01/28 17:13:53ID:???ってか、多少は自力で調べなさいよ
0343nobodyさん
05/01/28 22:27:58ID:???努力したんなら、努力した結果を見せてください。
苦労するのはヤダ、結果だけクレクレなんてのは誰にも相手にされないよ。
0344nobodyさん
05/01/28 23:03:45ID:???0345nobodyさん
05/02/01 18:05:15ID:???0346nobodyさん
05/02/01 18:08:33ID:???0347nobodyさん
05/02/01 21:53:14ID:+F7XYI5fhtmlに↓埋め込んで
<FORM ACTION="jump.cgi">
<SELECT NAME="jumpto">
<OPTION VALUE="-" SELECTED>番号</OPTION>
<OPTION VALUE="hogehoge.html#1">1</OPTION>
</SELECT>
<INPUT TYPE="submit" VALUE="移動">
</FORM>
jump.cgiが↓こんな感じなんだけど
$querybuffer = $ENV{'QUERY_STRING'};
@pairs = split(/&/,$querybuffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
if( $name eq "jumpto" ) {
$jumpto = $value;# 移動先
htmlファイルには飛ぶけどアンカーポイントにとばないです。
#じゃあだめなんでしょうか?
0348nobodyさん
05/02/02 01:33:16ID:zrrrnMEvソースを見ていると頻繁にこういうソースがあるのですが、この<br>って意味あるのでしょうか?
if ($re) { print "<td width=32><br></td>\n"; }
この<br>を削除しても問題ないなら、消したいのですが、意味がわからなくて。
0349nobodyさん
05/02/02 01:35:42ID:???0351nobodyさん
05/02/02 07:27:37ID:???GETで送ると#以降は無視されるからCGIには届かない
POSTで送ったらいいんじゃないの
>>348
Perl的には問題ないので消したければ消せばいい
テーブルの見た目が変わる。
0352nobodyさん
05/02/02 16:43:55ID:P9Pjm33o超初心者にも解るように解説してるサイトを
教えてください
0353nobodyさん
05/02/02 17:38:55ID:???<title>選択</title>
</head><body>
選択
<form method>="post" action="../cgi-bin/query1.cgi">選択<br>
<select nane="job"multiple>
<option value="1"selected>あ
<optio> value="2">い</select><br>
<input type="submit"value="OK"><br>
<input type="reset"value="リセット"><br>
</form></body></html>
選択数を3個4個と増やしていくにはどうすればいいですか?
0355nobodyさん
05/02/02 19:48:35ID:???0357nobodyさん
05/02/02 20:12:38ID:???0363nobodyさん
05/02/03 14:19:18ID:???http://pc5.2ch.net/test/read.cgi/hp/1065089862/l50
0364nobodyさん
05/02/03 20:01:31ID:in8OAwzZ今、掲示板スクリプトのproxy判定書き換えやってるんすけど、
if($HOST !~/jp$/ && $SETTING{'BBS_OVERSEA_PROXY'} eq "checked") {
DispError("ERROR!","ERROR:PROXY規制中!");
}
これだと、proxy制限した時にYAHOOまで弾いちゃうんすよ。
でもYAHOOユーザー多いんで、何とかしてYAHOOを弾かないようにしたいんすけど、
if($HOST !~/jp|bbtec.net$/ && $SETTING{'BBS_OVERSEA_PROXY'} eq "checked") {
DispError("ERROR!","ERROR:PROXY規制中!");
}
これでいいっすかね?
ちなみにperl checkerでは、これでsyntax okって出るし、jpドメインからのスレ立ては問題なくできるっす。
0367nobodyさん
05/02/05 14:19:02ID:51aC/gIBこんな感じで
携帯で表示できる
誰でも登録できる
自己紹介のレンタルを探しています!
誰かお願いします!
0368nobodyさん
05/02/05 14:23:56ID:???板違い
【CGI】こんなCGI探してますver.15
http://pc5.2ch.net/test/read.cgi/hp/1097762828/
0369nobodyさん
05/02/05 21:17:29ID:???念のため「最新の状態に更新」ってやるんですけど
CGIをちょっと手直しした場合も同様でいいんでしょうか。
素人考えだと、吐き出した(テンポラリの)HTMLを再度読んでいるだけのような
気もするので。
0370nobodyさん
05/02/05 21:30:59ID:???キャッシュを読むのは、単に更新したときだと思う。
0371nobodyさん
05/02/06 15:42:31ID:???0372nobodyさん
05/02/06 15:48:30ID:???0373nobodyさん
05/02/06 16:16:50ID:???@はURLエンコードされるって書いてあるのですが、IEでやってみたら
%40になりはしなかったのですが普通@はデコードが必要なんでしょうか?
教えてください。
0374nobodyさん
05/02/06 16:34:56ID:???どう確かめたのかわからんからなったならないはどうでもいいが、
普通はいちいち文字を区別などせず全部デコードルーチンに
突っ込むのが手っ取り早い。
0375nobodyさん
05/02/06 16:59:14ID:???0376nobodyさん
05/02/06 17:35:54ID:vnAQbb+hperlで書いたCGIスクリプトの中にCSSを埋め込みたくて
こんな感じでHTMLのヘッダー部のサブルーチンを作ったのですが
#--------------#
# HTML記述 #
#--------------#
sub header {
print "Content-type: text/html\n\n";
print "<html>\n<head>\n";
print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n";
print "<LINK rel="stylesheet" type="text/css" href="./style.css">\n";
print "<title>estate</title></head>\n";
print "<body>\n";
}
print "<LINK rel="stylesheet" type="text/css" href="./style.css">\n";
ここがエラーで弾かれてしまいます
Bareword found where operator expected at tmp.pl line 252, near "" (Missing operator before stylesheet?)
Unquoted string "stylesheet" may clash with future reserved word at tmp.pl line 252.
syntax error at tmp.pl line 252, near ""String found where operator expected at tmp.pl line 252, near "stylesheet" type=""
Bareword found where operator expected at tmp.pl line 252, near "" type="text"
(Missing operator before text?)
Unquoted string "text" may clash with future reserved word at tmp.pl line 252.
Unquoted string "css" may clash with future reserved word at tmp.pl line 252.
String found where operator expected at tmp.pl line 252, near "css" href=""
Bareword found where operator expected at tmp.pl line 253, near "print "
CGIにリンキングスタイルシートのCSSの埋め方教えて下さいおながいします。
0377nobodyさん
05/02/06 17:37:02ID:???0378nobodyさん
05/02/06 17:37:38ID:???こここぽおおおおおおおおおおエスケープしてねぇえぇえ</b>sだあああああああああああろお
0379nobodyさん
05/02/06 17:48:42ID:???0380nobodyさん
05/02/06 18:23:04ID:vnAQbb+h>>378
ちょいと日本語が理解できないが
print "print "<LINK rel=\"stylesheet\" type=\"text/css\" href=\"./style.css\">\n";
こういうこと?
0381nobodyさん
05/02/06 18:24:43ID:vnAQbb+hprint "<LINK rel=\"stylesheet\" type=\"text/css\" href=\"./style.css\">\n";
これでいい?
0382nobodyさん
05/02/06 18:27:19ID:???0383nobodyさん
05/02/06 18:37:45ID:vnAQbb+h使えんな2ch
0384nobodyさん
05/02/06 18:58:07ID:???0385nobodyさん
05/02/06 19:04:23ID:???0386nobodyさん
05/02/07 00:41:04ID:???0388nobodyさん
05/02/07 01:14:37ID:???【. 依頼内容 .】 sysopが記事削除を行うことはできないのでしょうか?
0390nobodyさん
05/02/07 06:10:16ID:k4yk43SAhttp://www.wsj21.net/cgi/cgi-ecoup.html
なんだけど、画像ダイエットがウリみたいです。
デジカメで撮った高画質な画像を公開したいんだけど、
そのダイエット機能によって画質が悪くなったりするんですか?
JPEGだけじゃなくGIFやPNGはどうなんでしょう。もし画質が変化
しないんであれば使いたいんですが。。。。。誰か教えれ。。。
落としてみたけど、cgi本体やwsj21.plを見てもさっぱり分からん
です(>_<)
0392nobodyさん
05/02/07 06:17:45ID:???0393390
05/02/07 08:34:24ID:k4yk43SA0394390
05/02/07 08:36:21ID:k4yk43SAどんな処理をしてるのか教えていただけませんか?
0395nobodyさん
05/02/07 09:26:34ID:G0O53x4w- - - - - ここまで釣り - - - - -
0396nobodyさん
05/02/07 10:53:19ID:???[△▲ WebProg 初心者の質問 Part10 ▼▽]
http://pc5.2ch.net/test/read.cgi/php/1095633323/
- - - - - - - 完 - - - - - -
0397nobodyさん
05/02/07 12:04:50ID:???スクリプトを見ずにカキコ
推測するとデジカメ画像内のEXIFデータ(カメラの機種名や撮影年月日)とか画像ソフト名(Photoshop)などの直接画像とは関係ない部分を削除するんじゃないかな。
今の時代に20Kbyte削除してもあんまり意味無いような気もするけど
0398nobodyさん
05/02/07 16:02:32ID:+5Yjicas掲示板などのログデータを拡張子cgiにしておくと
直URLをたたいてもサーバエラーになりますよね?
このデータを見る方法はあるのでしょうか?
具体的には、重要なデータであればWWWからアクセスできない
領域にログをおくべきだと思うのですが
拡張子CGIにしただけでは無抵抗に等しいでしょうか?
見る方法が何かあるのでしょうか?
0399nobodyさん
05/02/07 16:22:42ID:???基本的にはパーミッションでアクセス権を設定するべきだが、
鯖によって666などにしなければならない場合は
簡易的な方法としてそれでも十分に見られる心配はない。
0400398
05/02/07 16:30:50ID:+5Yjicasレスありがとうございます。
0401390
05/02/07 20:05:06ID:k4yk43SAありがとうございます。じゃあ画質が落ちるって事は
無いのかな。。。。なんかスレ違いだったみたいですみませんでした。
釣りじゃないですよ。。。。(;´Д`)
■ このスレッドは過去ログ倉庫に格納されています