★三 【 スクリプト改造工房 PART 8 】 ★三
■ このスレッドは過去ログ倉庫に格納されています
0001sage
04/02/23 17:36ID:???# スレッドの説明
#================================
「スクリプトを改造したいけどやりかたわかんないよー」という人がいましたら
ここで聞いてください。ひょっとしたらアドバイス出来るかもしれません。
質問するときは以下の点に注意して書いて下さい
(1) そのスクリプトの内容と置いてある場所を明記する (txtファイルでUPすればなお良い)
(2) どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し)
(3) 出来るだけ詳しく書くこと。少しは自分で考えること。できれば御礼も言ったほうが良い
※答えてくれないからといって逆ギレする厨はお断り
前スレ http://pc2.2ch.net/test/read.cgi/php/1063780103/
0496nobodyさん
04/10/20 01:06:37ID:???1つのディレクトリ内にある複数の画像を
更新年月日順にソートして1ページに表示するCGIです。
スクリプトはこちら
http://www.clavis.ne.jp/~listcam/sweet/sweet61.html
各画像の下にファイル名が表示されるのですが、
それぞれの画像のタイムスタンプも表示したい場合
どのようにすればよいのでしょうか。
0498nobodyさん
04/10/21 10:54:18ID:???【配布元】http://minicgi.net/
【内容】トップページに、(さんぷる2(らぐなろくなさんぷる)で言うと)
―――――――――――
|ノービス | 0人 |
―――――――――――
|ソードマン| 2人 |
―――――――――――
| ・・・
という感じでここの(ttp://tackysroom.com/sample/smp_annevote.cgi)ように
統計を表示させるようにするにはどこをどう追加すればいいでしょうか?
0499nobodyさん
04/10/23 14:37:00ID:by3ineVAこのCGIは管理人しか登録できないので、訪問者が各自で登録・修正(出来れば削除)出来るように改造したいと思います。
ネットで調べてちょっといじってみたのですが上手くいきません。
是非ヒントをください。よろしくお願いします。
0500nobodyさん
04/10/23 16:20:45ID:???【配布先URL】 http://www.kent-web.com/bbs/yybbs.html
【. 依頼内容 】
BBQ規制とDSBL規制を適用したいです。よろしくお願い致します。
0501nobodyさん
04/10/23 16:49:01ID:???ここは改造工房だってことはわかっているよな?
まずはお前等の改造中のスクリプトを晒してもらおうか。
話はそれからだ。
安易に丸投げスレに逃げるんじゃねーぞ。
0502500
04/10/23 21:46:31ID:???了解です。
こんな感じにしてみましたが、両方ともうまく機能してないみたいです。よろしくお願いします。
# dsbl 問い合わせ。
if ($dsbl) {
gethostbyname(sprintf qq|%s.%s.%s.%s.list.dsbl.org.|, reverse split /\./, $ENV{'REMOTE_ADDR'}) and &error("アクセスを許可されていません (dsbl listed.)");
}
# BBQ 問い合わせ。
if ($bbq) {
gethostbyname(sprintf qq|%s.%s.%s.%s.niku.2ch.net.|, reverse split /\./, $ENV{'REMOTE_ADDR'}) and &error("アクセスを許可されていません (BBQ listed.)");
}
$bbq ='1';
$dsbl ='1';
0504500
04/10/23 23:29:56ID:???症状は、生ホストだとBBQリストに入っていないのにエラーメッセージが出る、串を使うとDSBLに入っているのにアクセスできる、というものです。
0505nobodyさん
04/10/30 14:11:34ID:???【配布先URL】 http://nyats.com/nblog.htm (必須)
【ヘルプ内容】
現在改造中のものです→http://shingari1582.hp.infoseek.co.jp/nblogt.txt
メインはhtmlなのでcssを挿入してあるのですが、過去ログ表示用のCGI(現在改造中のもの)にもリンクやフォントのcssを入れたいと思いました。
$cssという因数があったので素人考えで適応させたいcss(a:linkから)をそのまま入れてみたのですが、
1行目は実行されても2行目からは反映されませんでした。
とほほさんの所等を参照してみたのですが、CGIに関しては本当に初心者で一体どうやって記事全体に反映されるようなcssを挿入すれば良いのか見当もつかなくて困っています。
何かヒントをいただければ嬉しいです、よろしくお願いします。
0506nobodyさん
04/10/31 01:03:45ID:???パーミッション設定とか色々手を尽くしたのですが
どうしても500エラーが起こるわけで…_| ̄|○
何故でしゃう。
0508nobodyさん
04/10/31 19:00:48ID:???505のはファイル名のtypo
http://shingari1582.hp.infoseek.co.jp/nblog.txt
0509nobodyさん
04/10/31 21:29:48ID:???動作確認してないけどヒアドキュメントにしたらいいんじゃないの?
下のjavascriptのとこ見てやってみた。
#CSS
$css = <<CSSEND;
"<style type=\"text\/css\">\n<\!--\n
\.doc \{ font-size\: $honbunsize\; color\: $honbuncolor\ font-family : Verdana;}\n
\.sub \{ font-size\: $titlesize\; color\: $titlecolor\; font-family : Verdana;}\n
\.date \{ font-size\: $datesize\; color\: $datecolor\; font-family : Verdana;}\n
a:link {color:000000;text-decoration:none;}
a:hover {color:666666;text-decoration:none;}
a:visited {color:000000;text-decoration:none;}
a:active {color:000000;text-decoration:none;}
FONT { font-family : Verdana;}
BODY { line-height : 120%;}\n
-->\n<\/style>";
CSSEND
0511nobodyさん
04/11/01 14:22:31ID:dvWt0D+J<?php
//error_reporting(E_USER_WARNING); // Warrningを出力しない
//----------------------------------------------------
// 定数の宣言
//----------------------------------------------------
define("BBS_DATA", "./bbs.csv");
define("BBS_COL_DATE", 0);
define("BBS_COL_NAME", 1);
define("BBS_COL_BODY", 2);
//----------------------------------------------------
// 関数の定義
//----------------------------------------------------
// AppendCsvFile関数
// 機 能 CSV形式のデータをファイルの末尾に追加する
// 引 数 $FilePath : 書込むファイルへのパス
// $CsvData : 書込みデータ
function AppendCsvToFile($FilePath, $CsvData) {
if ($FilePath == "") {
return false;
}
$fp = fopen($FilePath, "a");
if ($fp == 0) {
return false;
}
//作成日、名前、発言内容を「,」で連結し、レコードを作成する。
//また、レコード中の改行文字を取り除き行末に改行文字を付加する。
$temp = ereg_replace("[\r\n]", "", join(",", $CsvData)) . "\n";
fputs($fp, $temp);
}
0512nobodyさん
04/11/01 14:23:01ID:???// LoadCsvFile関数
// 機 能 CSV形式のファイルを2次元配列に読込む
// 引 数 $FilePath : 読込むファイルへのパス
// 戻り値 $CsvData : 読込んだテキストの2次元配列
function LoadCsvFile($FilePath) {
if (file_exists($FilePath) == false) { // ファイルの存在を確認する
return false;
}
$CsvData = array(); // 配列を作る
$TextData = file($FilePath); // ファイルのデータを読み込む
for ($i = 0; $i < sizeof($TextData); $i++) { // レコードが10件あれば10回
$TextData[$i] = ereg_replace("\n$", "", $TextData[$i]); // 行末の\nを取り除く
$TextData[$i] = ereg_replace("\r$", "", $TextData[$i]); // 行末の\rを取り除く
$CsvData[$i] = split("," , $TextData[$i]); // 「,」を区切りとしてフィールドの値を取り出す
}
return $CsvData; // $CsvDataは二次元配列
}
//------------------------------------------------------------
// ここからが主処理
//------------------------------------------------------------
if (isset($_POST["SUBMIT"])) { //このページが初めてアクセスされたか?
if ($_POST["BODY"] != "") { //発言内容はあるか?
$body = str_replace("\n", "<br>", $_POST["BODY"]); // \n\r(改行文字)をタグ<br>に変換する
$body = str_replace("\r", "", $body);
$name = $_POST["NAME"];
$BBSRecord = array(date("Y/m/d H:i:s"), $name, $body);
AppendCsvToFile(BBS_DATA, $BBSRecord); //「内容」の書込み
}
}
0513nobodyさん
04/11/01 14:23:23ID:???$BBSData = LoadCsvFile(BBS_DATA); //「内容」の読込み
?>
<html>
<head>
<title>掲示板</title>
</head>
<body><h1 align="center">掲示板</h1>
<a href="bbs.php">最新</a>
<form action="bbs.php" method="POST">
<table border="1" align="center" cellspacing="0">
<tr><td bgcolor="#cccccc" align="center">名 前</td><td><input type="text" name="NAME"></td></tr>
<tr><td bgcolor="#cccccc">発言内容</td><td><textarea name="BODY" cols="40" rows="8"></textarea></td>
<tr><td colspan="2" align="center">
<input type="submit" name="SUBMIT" value=" 投 稿 ">
<input type="reset" value=" ク リ ア "></td>
</tr>
</table>
</form>
0514nobodyさん
04/11/01 14:25:07ID:???<?php
if ($BBSData == false) { // 発言内容がなければ$BBSDataは空っぽ
print "発言はありません。<br>";
} else {
for ($i = sizeof($BBSData) - 1; $i >= 0; $i--) {
print "<hr><font size='3' color='#0000ff'><b>";
print $BBSData[$i][BBS_COL_NAME] . "</b></fomt>";
print "<font size='2' color='#666666'>";
print " [" . $BBSData[$i][BBS_COL_DATE] . "]" . "</font><br><br>";
print "<font size='3' color='#333333'>";
print $BBSData[$i][BBS_COL_BODY] . "</font><br><br>";
}
}
?>
</body>
</html>
0516505
04/11/01 23:13:08ID:???ファイル名間違えていました…訂正ありがとうございます。
>509
回答有難うございました!
#css以下を書き換えて動作させてみたのですが、反映されませんでした。
mainをちゃんと作ってないのですが、動作させてみたらこんな感じです↓
http://shingari1582.hp.infoseek.co.jp/cgi-bin/index.html(左フレームからログファイルへ入れます)
書き換え前と変わった事は一番上に「""; 」という記号が入った事だけのようです。
ソースを見てみたところ、<meta name="keywords" content=""></head>の後にスタイルシートが来ているので反映されないのかな?と思うのですが…関係ないでしょうか。
元もとのprint OUT $css;の位置がおかしいのかな?とも思うのですが、それだったら\.docからのcssも反映されませんよね。
現在a:hover以下のcssが反映されていないようです。
自分で別にcss用の変数を作ってみたらどうかと思いいろいろいじってみたのですが、表示されなくなってしまったりしてお手上げ状態です…orz
よろしければアドバイスお願いいたします…。
0517nobodyさん
04/11/02 03:54:29ID:???#CSS
$css = <<CSSEND;
<style type="text/css"><!--
.doc { font-size: $honbunsize; color: $honbuncolor font-family : Verdana;}
.sub { font-size: $titlesize; color: $titlecolor; font-family : Verdana;}
.date { font-size: $datesize; color: $datecolor; font-family : Verdana;}
a:link {color:000000;text-decoration:none;}
a:hover {color:666666;text-decoration:none;}
a:visited {color:000000;text-decoration:none;}
a:active {color:000000;text-decoration:none;}
FONT { font-family : Verdana;}
BODY { line-height : 120%;}
--></style>
CSSEND
じゃあ、これで。
不要な\と\nと"と;を削除しただけ。
SyntaxErrorはないから多分いけるはず。
動作確認は面倒なのでやってないけど。
#>516のリンク先のhtmlソースには一応css部分出力されてるみたい
#有効になってるかどうかはわからんけど
0518nobodyさん
04/11/04 08:51:40ID:???ttp://haiiro.info/up/file/1469.txt
このCGIで NGワードを設定出来るようにしたいのですが
可能でしょうか?
宜しくお願いします。
0520518
04/11/04 13:11:29ID:/4YiSBg1スミマセン。詳しくお教えいただけないでしょうか?
0521nobodyさん
04/11/04 17:36:00ID:???これ以上何を聞きたいのだろうか…
丸投げしたいのならスレ違い。
自分で何とかしたいのなら、どこがどう解らないのかを書く。
【 スクリプト改造依頼スレ 】(丸投げ) part2
http://pc5.2ch.net/test/read.cgi/php/1092304968/
0522nobodyさん
04/11/06 21:18:18ID:???【種別】 ダイスチャット
【言語】 perl
【備考】 ttp://www.big.or.jp/~t-shun/trpg/trpg_cgi/dicechat/dchat03.html
これのようにダイスを振るフォームがあるのではなく、発言欄にコマンドを入れるようなもの。
正確には、COMCHAT-EX(KENT-WEB)に追記することによって
実装できるダイス用の構文が欲しいかも。
179 Name_Not_Found [sage] New! 04/11/06 19:49:11 ID:???
それは改造になるんじゃ?
0524nobodyさん
04/11/17 22:33:22ID:???【配布先URL】ttp://happy.honesto.net/cgi/download/lchat.html
【. 置き場所 .】ttp://botejako.com/zony/chat.txt
自分で多少改造したものです。
【ヘルプ内容】
チャットの発言が表示される上の部分に表示される参加者名を
左から発言・入室したのが早い順に更新・発言した際に並び替えて
表示させるようにしたいのですがどうしてもできません。
今の状態だと、入室した順にしかなっていないようです。
参加者リスト(present.dat)の先頭に毎回追加すればいいのだと思うのですが、
push〜〜をunshift〜〜に変えてみてもうまくいきません。
それが見当違いのことをしてるかどうかもわかりません。
何かヒントをいただけないでしょうか、お願いします。
0525nobodyさん
04/11/17 22:35:28ID:A5o7/dm+0526nobodyさん
04/11/22 19:28:58ID:???− 完( ´∀`) −
0527nobodyさん
04/11/22 22:20:50ID:???有料なら請け負うが…
0529nobodyさん
04/11/23 02:43:22ID:???いやぁ、つまらん改造だから、スクを見る気になれないだけ。
有料なら請け負うが…
527 :nobodyさん sage :04/11/22 22:20:50 ID:???
いやぁ、つまらん改造だから、スクを見る気になれないだけ。
有料なら請け負うが…
527 :nobodyさん sage :04/11/22 22:20:50 ID:???
いやぁ、つまらん改造だから、スクを見る気になれないだけ。
有料なら請け負うが…
527 :nobodyさん sage :04/11/22 22:20:50 ID:???
いやぁ、つまらん改造だから、スクを見る気になれないだけ。
有料なら請け負うが…
0530nobodyさん
04/11/24 05:44:42ID:???いやん、つまらん改造ですので、スクを見る気になれませんわ。
私を満足させられる対価を頂けますなら請け負いますけれど…
0531nobodyさん
04/11/26 17:09:14ID:???【配布先URL】http://hp.bird.to/info/ranking.html
【依頼内容】スコアと表示されてる数字の間に.とかを入れる(9999を9.999と表示)ようにしたいのですが、どのように改造すればいいでしょうか?
アドバイスお願いします。
0532nobodyさん
04/11/30 18:53:24ID:???↑ここのサイトのデータベース改造してます。
regist.cgi、search.cgiは変更しましたがエラーになったのでデフォルト。
regist.htmlのみ変更してます。
複数登録したいのでregist.htmlのリストボックスをチェックボックスに改造中なのですが、
チェックボックスに変更した後、WEB上で動作確認した所
チェックボックスで選択した項目で最後の物のみ反映されて
他の項目は反映されません。
【例】
<input type="checkbox" name="PREF" value="1" border="0">1
<input type="checkbox" name="PREF" value="2" border="0">2
<input type="checkbox" name="PREF" value="3" border="0">3
<input type="checkbox" name="PREF" value="4" border="0">4
<input type="checkbox" name="PREF" value="5" border="0">5
Aに対して2つの項目を登録するとして
1と4を選択すると4のみ、2と3を選択すると3のみ
と言った状況です。
regist.cgi、search.cgiもいじらなくてはいけない事は分かるんですが、
何処をどうやって良いのか分かりません_| ̄|○
誰か、教えてください。。。
長文、すいませんでした。
0533nobodyさん
04/12/01 04:25:16ID:???http://www.google.co.jp/search?as_q=perl+%E8%A4%87%E6%95%B0%E9%81%B8%E6%8A%9E&num=100&hl=ja&c2coff=1&btnG=Google+%E6%A4%9C%E7%B4%A2
0534nobodyさん
04/12/04 20:50:36ID:8LV5OOZoインフォシークなので直リンができないので、中継地点を作ってます。
http://keizibann.hp.infoseek.co.jp/tyatto/tyuukei.html
↑から入ったチャットの、一番上あたりに、
参加者の名前を表示させるにはどうすればいいですか?
スクリプトはこれ↓です。
http://keizibann.hp.infoseek.co.jp/a.txt
よろしくお願いします。
0535nobodyさん
04/12/04 21:24:16ID:???通報済み
0536nobodyさん
04/12/05 06:13:44ID:???知恵袋で質問した人だよね。
漏れは丸投げスレに誘導したんだが、工房スレに来たということは自分で改造できるんだね。
じゃ、改造の流れを説明するぞ。
まずKENTの所(http://www.kent-web.com/)に行ってcomchatをダウンロードして来い。
comchat.cgiの在室者処理の所をパクれ。
変数名をK's Chat Ligthにあうように弄れ。
以上。
0537nobodyさん
04/12/05 06:14:55ID:???これは余計だなお
0538nobodyさん
04/12/05 16:51:08ID:+UKjgSSzついでに寄ったから間違えた。。。
でもありがとう。がんばります。
0539nobodyさん
04/12/12 03:38:36ID:???ttp://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi
これに2ちゃんと同じsage機能をつけたいのですが上手くいきません。
0540nobodyさん
04/12/12 03:39:20ID:???----------------------------------------------------
if($PM{'res_go_up'} == 1){
undef $tp_match_flag;
local($tp_loop_counter)=0;
foreach $tmp_parent(@NEW_BLOODS){
# 3スレッドまで上へ持って行く
# それ以上にすると負荷が上がるのでやめる
last if($tp_loop_counter >= 3);
if(($tmp_parent eq "$9")||($tmp_parent eq "$11")){
$tp_match_flag = 1;
last;# 検出したら抜ける
}
$tp_loop_counter++;
}
if($tp_match_flag == 1){
push(@GOUP_MESSAGE, $_);
$all_message++;
}else{
push(@MESSAGE, $_);
$all_message++;
}
}else{
push(@MESSAGE, $_);
$all_message++;
}
----------------------------------------------------
0541nobodyさん
04/12/12 03:40:26ID:???----------------------------------------------------
if($email == $sage){ #### $sage=sageというのを作った
push(@MESSAGE, $_);
$all_message++;
}
else{
undef $tp_match_flag;
local($tp_loop_counter)=0;
foreach $tmp_parent(@NEW_BLOODS){
# 3スレッドまで上へ持って行く
# それ以上にすると負荷が上がるのでやめる
last if($tp_loop_counter >= 3);
if(($tmp_parent eq "$9")||($tmp_parent eq "$11")){
$tp_match_flag = 1;
last;# 検出したら抜ける
}
$tp_loop_counter++;
}
if($tp_match_flag == 1){
push(@GOUP_MESSAGE, $_);
$all_message++;
}else{
push(@MESSAGE, $_);
$all_message++;
}
}
----------------------------------------------------
0542nobodyさん
04/12/12 04:12:51ID:???書き込むと上に上がらなくなってしまいました。
試しに変更した
if($email == $sage)
を
if($PM{'res_go_up'} == 0)
にしてレスを入れたらちゃんと上がりました。
if($email == $sage)
が間違えているのでしょうか?
どなたご教授頂けないでしょうか?
長くなってすみません。
0543nobodyさん
04/12/12 06:05:55ID:???== は数値の比較
eq が文字列の比較
0545nobodyさん
04/12/12 17:10:46ID:cJqt4xtP依頼:携帯から投稿された絵文字が記録されているログを開き
$text = &emoji($text);
の様に絵文字変換ルーチンを通せば
携帯3キャリア相互変換、PC表示ができる様にさせたい。
&emoji; の部分をお願い致します。
0547nobodyさん
04/12/14 09:19:31ID:Q99fVzSYこちらで配布している「シンプル日記」の改造をお願いします
(作者さんが多忙のせいか、更新放置されているので・・・)
改造項目は日付の横に任意の画像アイコン(セレクトタグで)を載せたいです
自分で改造できなくて情けない・・・
宜しくお願いします
0548nobodyさん
04/12/14 10:10:33ID:???スレ違い
■ 自分で改造できない場合には
【 スクリプト改造依頼スレ 】(丸投げ) part2
http://pc5.2ch.net/test/read.cgi/php/1092304968/2(テンプレ)
05506
05/01/07 23:40:43ID:???【配布先URL】 http://cgiscriptmarket.com/script.html
【. 置き場所 .】 http://www36.tok2.com/home2/boboburajiru/xxx/data/bobo_20050107233603.lzh
【ヘルプ内容】
途中までやりましたがココからがわかりません。
・枠がどうしても青色。黒色に変えたい。枠の太さも1pxに。
・日付に「'」が入ってしまう。
・1 名前 : 内容 5/06 12:40 とひとつのformで表示したい。
・見かけ上だけ消してるだけなので要らないソースは消してしまいたいがどれを消していいかわからない。
お願いします。
05526
05/01/07 23:59:44ID:???スレ違いですか?
0553nobodyさん
05/01/08 00:55:46ID:???丸投げスレとperlスレみたいにあちこち書いてるだろ。
他のスレに書くなら取り消すなり移動する旨ぐらい書け。
だからマルチと言われる。
それに自分でいじってるんだろ?
だからここへ誘導されたんだ。
↓自分がどちらなのかよく考えろ。
■ 自分で改造できない場合には
【 スクリプト改造依頼スレ 】(丸投げ) part3
http://pc5.2ch.net/test/read.cgi/php/1105046286/2(テンプレ)
■ 自分で改造するアドバイスが欲しい場合には
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc5.2ch.net/test/read.cgi/php/1077525387/79(テンプレ)
05546
05/01/08 16:21:33ID:???・枠がどうしても青色。黒色に変えたい。枠の太さも1pxに。
・日付に「'」が入ってしまう。
こっちが★三 【 スクリプト改造工房 PART 8 】 ★三 です。
見かけ上だけ消してるだけなので要らないソースは消してしまいたいがどれを消していいかわからない。 rmで表示したい。
・1 名前 : 内容 5/06 12:40 とひとつのformで表示したい。
0555nobodyさん
05/01/14 22:12:47ID:???【配布先URL】 ttp://www.tohoho-web.com/wwwsoft.htm
【ヘルプ内容】 検索結果を、5件ごとや10件ごとに表示させるようにしたいです
自分がいじった部分のソースを貼ります
sub search1 {
local($dir) = $_[0];
local(@filelist, $file, $filename);
opendir(DIR, $dir);
@filelist = readdir(DIR);
closedir(DIR);
$begin = $FORM{'page'} * $hyouji;
$end = $bigin + $hyouji;
if($end > @filelist) {
$end = @filelist;
}
(続く)
0556555
05/01/14 22:13:34ID:???for ($a = $bigin; $a < $end; ++$a) {
if ($file eq ".") { next; }
if ($file eq "..") { next; }
$filename = "$dir/$file";
if (-d $filename) {
if ($recursive_flag) {
&search1($filename);
}
} else {
&search2($filename, $dir);
}
}
if ($end < @filelist) {
$nextpage = $FORM{'page'} + 1;
print "<a href=\"$ENV{'SCRIPT_NAME'}?page=$nextpage\">次へ</a>\n";
}
# }
}
0557555
05/01/14 22:18:04ID:???結果は検索が一件もされず「次へ」のみが表示されてしまいます
アドバイス、解決法よろしくお願いします
0558nobodyさん
05/01/15 19:29:07ID:???久しぶりに改造工房にお客が来たのに放置されているなぁ〜
sub search1の@filelistだが、お前はこの配列に検索に引っかかったものが入っていると思っているだろ?
残念。
@filelistには対象ディレクトリの中にある全てのファイルが格納されている。
試しに
closedir(DIR);
のあとに
errexit("@filelist");
って入れてごらんよ。
漏れならsub search1とsub search2を大改造しる。
opendir(DIR, $dir);
で、指定してた拡張子のファイルのみを
@filelistに入れていく。
0559555
05/01/15 23:08:47ID:???指摘、アドバイスありがとうございます
となるとforループ自体がおかしいことになりますね
なんだか煮詰まってテンパってきました
もちょっとガンガってみますです…
0560nobodyさん
05/01/16 03:38:30ID:???たいていは件数によって次ページ送りの機能がついているから。
0561nobodyさん
05/01/17 11:01:28ID:gvEGsU/w【. CGI名 .】 HiLink Type-B
【配布先URL】 ttp://www.e-hws.net/cgi_index.html
簡易表示の方法をちょっと変えたいです。新着順とランキング順しかソート方法が無いのですが、
これをタイトル(サイト名)で50音表示できるように変更したいです。
利用方法としては「ランキング表示」リンクボタン(?)を「50音表示」とし、クリックするとで50音順で
並ぶというものです。
表示方法なんかを改造してるので、行数が合わないと思われるので、名前で場所を伝えます。
sub mainの「表示データ作成」にある「# ランキング表示の場合、ソートする」をどうにかしたら良いんですよね?
$ititleと$jtitleがサイト名のようです。
さらに、その下の「if( $iclicknum < $jclicknum ){」の部分を書き換えれば良いとは思うのですが…
素人ながらに「if( $ititle < $jtitle ){」ってしてみましたが、案の定変化無しです。
どのようにしたら50音順に並べる事が可能ですか?
宜しくお願いします。
0563555
05/01/18 19:32:37ID:???眺めて悩んでいたらなんかわかってきました
558さん560さん、アドバイスありがとうございました
0564nobodyさん
05/01/18 20:55:07ID:???このスレは改造工房であり、改造済みのスクリプトを手渡すわけではないので再配布禁止には当たらないかと…
それにまだ改造したものを設置してないので、メールはまだしなくてもよいかと…
要するにヒントだけ与えれば質問者が何とかするって言うスレなので問題はないかと…
>>561
今ちょっと忙しいので、そのうちスクを見てみるわ。
0566561
05/01/19 10:15:04ID:sYVj0TcQフォロー&返答ありがとうございます。
ばっちり出来ました。
文字列は数字じゃないから数字の演算式記号は使えないって事で覚えててOKでしょうか?
アドバイスありがとうございました!
0567730
05/01/23 11:37:56ID:???会員制掲示板のPerlCGIスクリプトです。普通の掲示板(KENTさんの書籍のスクリプトを参考に、過去ログ
作成機能と検索機能を削除した)に、IP制限とパス制を組み合わせ改造しました。
✓で特定のIP(@allow)だったら認証画面(&admin)を出し、パスが合ったら掲示板を表示させる(&bbs)。
IPおよびパスが合わなければエラーを返す、・・・つもりでした。しかし下記のスクリプトでは認証画面は
表示しますが、パスを入力しても認証画面、パスミスでも認証画面になるという状態で、
どうにも煮詰まってしまいました。どこがおかしいのかご教授下さい。これでもIP制限は動作しています。
スクリプトはここにアップしました。該当部分だけ。
http://up.isp.2ch.net/up/af9977328ccc.txt
0568730
05/01/23 12:14:51ID:???【スクリプト名】
Web拍手(公式HPから配布版DL。2004年10月。)
【CGIソース】
kaiseki.cgiだけ。
http://up.isp.2ch.net/up/18cf046e2758.txt
【改造した内容】
●過去15日分のデータを保存し表示するのを、31日分にする。(crap.cgiとkaiseki.cgi)
●アクセス解析機能を追加し、拍手した人のホスト名をaccess.datに保存する。(crap.cgi)
●このスクリプトへアクセスしたときの画面にはaccess.datへのリンクを張る。
●DLしたままのスクリプトでは、解析グラフのタグがぐちゃぐちゃだったので
そこも変更。時間ごとのグラフも縦表示から横表示に変更し、31日表示を
しやすくした。
●グラフの画像も横表示に対応させた。
[現在困っていること]
上記改造を加えたあと先週までは問題なく動作していたのですが、今日アクセス
してみたらスクリプトエラーが発生していました。拍手機能は動作しています。
kaiseki.cgiは、上記改造後何も手を加えていないので普通は起こりえないエラーです。
ただ原因として、ローカルに保存していたこのスクリプト(アプロダに挙げたもの)が
間違っていて、サーバーで動作していたのはサーバー側で直接書きなおしたからでミラーリング
していなかった。それをFTPソフトの誤動作で全ファイルを送信したために、動かないローカルの
スクリプトで更新されてしまった・・・というのが考えられます。
#FTPソフトのログにはこのファイルを送信したという記録はないのですが、一昨日以前のログが
#消えているのでわからない。
そこでUPしたこのスクリプトを眺めてみたのですが、どこがおかしいのかわかりません。
pcheck.cgi(Perlスクリプト文法チェッカ)ではsyntax errorの発生はありませんでした。
なにか間違っているところがありましたら教えてください。
0570567
05/01/23 16:52:48ID:???UPしなおしました。
>>567
http://yellow.ribbon.to/~mintplace/a.txt
>>568
http://yellow.ribbon.to/~mintplace/kaiseki.txt
0571555
05/01/23 22:33:51ID:a5mA126v【. CGI名 .】 WwwSearch Ver3.15 - 検索フォーム
【配布先URL】 ttp://www.tohoho-web.com/wwwsoft.htm
【ヘルプ内容】 検索結果を、「次へ」ボタンを押して、次の件をひょうじさせたいです
5件ごとや10件ごとの表示は最初だけは表示できるようになりました
「次へ」ボタンを押して、次の件をひょうじさせたいのですが
うまくいきません
この文を最後に追加しました
print "<form method=\"POST\" action=\"$script?page=$page&word=$word\">\n";
print "<input type=\"submit\" value=\"次へ\">";
print "</form>";
「次へ」ボタンを押しても検索結果が出てきません
何かたりないのでしょうか
かなり悩みましたが答えが見つかりません
ヒント、アドバイスお願いします
0572nobodyさん
05/01/23 22:37:48ID:???>571の文の前に
$page=$FORM{'page'};
$word=$FORM{'word'};
を実行しています
$scriptには自身のCGIファイルの名前が入ってます
0574nobodyさん
05/01/24 00:33:32ID:???かなり勘で答えるけど、
<form method=\"POST\" action=\"$script?page=$page&word=$word\">
これをこんな風にしたらだめ?
<form method=\"POST\" action=\"$script¥">
<input type=\"hidden\" name=\"page\" value=\"$page\">
<input type=\"hidden\" name=\"word\" value=\"$word\">
それと、$pageが、ボタンを押したら変化する(=数字が増えたり減ったり)
ようになってますか?
(FORMのほうの数字が固定だったら、最初のページしか動かない。)
0575572
05/01/24 01:12:24ID:???掲示板スクリプト眺めてるんですが
一向にらちがあかないのです;;
>574
ありがとうございます
試してみましたが、結果はやっぱり同じでした
「次へ」を表示するとこまではいいんですが
押しても、検索フォームだけ出て結果は出ないのです
ソースも晒したほうがいいでしょうか?
0576572
05/01/24 01:16:02ID:???うっかりしてました
この文の直前に
$nextpage = $FORM{'page'} + 1;
をしています
print "<input type=\"hidden\" name=\"page\" value=\"$nextpage\">\n";
にしても結果変わらずです
0577nobodyさん
05/01/24 01:33:30ID:???page=$pageとword=$wordという値を受け取ってどういう処理をさせてる?
0578572
05/01/24 09:52:41ID:???sub readform {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
} else {
$query_string = $ENV{'QUERY_STRING'};
}
@a = split(/&/, $query_string);
foreach $x (@a) {
($name, $value) = split(/=/, $x);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
}
の後
$page = $in{'page'};
$word = $in{'word'};
を実行してます
(続く)
0579572
05/01/24 10:03:39ID:???if ($word =~ /[\x80-\xff]/) {
# 日本語が含まれているフラグ
$jflag = 1;# 日本語が含まれている
# 一度EUCに変換する
&jcode'convert(*word, "euc");
# 全角空白を半角空白に置換する(EUCの空白は#A1A1)
$word =~ s/([\x80-\xff][\x80-\xff]|[\x00-\x7f])/($1 eq "\xa1\xa1") ? " " : $1/eg;
# SJISモードであればSJISに変換する
if ($kcode_file eq "sjis") {
&jcode'convert(*word, "sjis");
}
}
sub search1の中から抜粋
if (defined($FORM{'WORD'})) {
# メタ文字を無効化する
if (!$jflag) {
$word =~ s/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/\\$1/g;
}
# 検索語を分割する
@words = split(/ +/, $word);
# 検索する
print "<dl>\n";
@dirs = split(/ +/, $target_dir);
foreach $dir (@dirs) {
&search1($dir);
}
0580572
05/01/24 10:07:38ID:???今は使ってません
最初の一回目は5件表示されるのに
「次へ」を押すと検索フォームだけ出て、結果が出ないのがはがゆくてなりません
これで参考になりますでしょうか?
0581nobodyさん
05/01/24 10:18:02ID:f8wXJteDPerlってデバッガ無いの?
PHPだとZend入れてればIEの右くりメニューからデバッガ起動するよ。
0582572
05/01/24 10:28:28ID:???sub search2の中から抜粋
$bigin = $FORM{'page'} * $hyouji;
$end = $bigin + $hyouji;
if($end > @filelist) {
$end = @filelist;
}
中略
if ($bigin <= $a) {
if ($a < $end) {
$h_k++;
print "<dt>■ <a href=\"$target\" target=\"out\">";
$title =~ s/<[^>]*(>|$)//g;
$title =~ s/[\r\n]+//g;
&jcode'convert(*title, $kcode_cgi);
if ($title eq "") {
$title = $target;
}
print "$title</a>\n";
if ($print_filename) {
print "( <a href=\"$target\" target=out>";
$target =~ s/$tdir\/?//;
print "$target</a> )\n";
}
print "<dd>";
$imin = $i - $how_many_lines;
if ($imin < 0) { $imin = 0; }
$imax = $i + $how_many_lines;
if ($imax > $#lines) { $imax = $#lines; }
0583nobodyさん
05/01/24 10:29:17ID:CX5KANJQ$line = $lines[$j];
&jcode'convert(*line, "euc");
line =~ s/<[^>]*(>|$)//g;
$tmp = $word;
&jcode'convert(*tmp, "euc");
if ($jflag) {
$tmp =~ s/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/\\$1/g;
}
foreach $w (@words) {
$w2 = $w;
&jcode'convert(*w2, "euc");
$line =~ s/($w2)/<b>$1<\/b>/ig;
}
&jcode'convert(*line, $kcode_cgi, "euc");
print "$line ";
if ($end >= @filelist) {
exit;
=@ }
}
if ($h_k == $hyouji) {
$nextpage = $FORM{'page'} + 1;
print "<form method=\"POST\" action=\"$script\">\n";
print "<input type=\"hidden\" name=\"page\" value=\"$nextpage\">\n";
print "<input type=\"hidden\" name=\"word\" value=\"$word\">\n";
print "<input type=\"submit\" value=\"次へ\">";
print "</form>";
}
}
}
0584nobodyさん
05/01/24 12:14:55ID:???0585nobodyさん
05/01/24 12:35:13ID:???✓ # アクセスチェック
if ($mode eq ''){ &admin; }
if ($FORM{'pass'} ne "$pass") {&error("パスワードが違います");}
if ($mode eq 'regist'){ ®ist; }
&bbs;
exit;
sub check { # アクセス制限
$host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2) || $ENV{'REMOTE_ADDR'};
foreach $i (@allow) {
if ($host =~ /$i/) { return; }
}
&error("アクセスが許可されていません");
exit;
}
sub admin { #認証
&header;
print << "_ID";
<form action="$script" method="POST">
<input type=hidden mode=bbs size="8">
<input type=text name=pass size="8">
<input type=submit value="認証">
</form>
_ID
&footer;
exit;
}
全体がわからんけどこんなところか。
ただしこれだけじゃなくて全体にも手を入れないと動かんよ。
0586572
05/01/24 18:07:17ID:???うpしました
http://www.uploda.org/upload.cgi?mode=dl&file=34893
受信パスは「cgi」です
よろしくお願いします
0587567
05/01/24 22:09:17ID:???わかってみれば、にんともかんとも(滅)
お騒がせしました。
>>566についてはまだです。
パス認証だけどうしてもうまくいきません(TT)
0588nobodyさん
05/01/25 04:15:56ID:???のパスワード認証&自動発行スクリプト
ttp://cat.zero.ad.jp/mouse/download/psw/ezpsw_cgi.txt
まず、115行のメールアドレス入力欄
<INPUT name="mail_add" size="30"><BR>
を
<INPUT name="mail_add_a" size="30"><BR>
<select name="mail_add_b">
<option value="\@docomo.ne.jp">\@docomo.ne.jp</option>
<option value="\@ezweb.ne.jp">\@ezweb.ne.jp</option>
<option value="\@c3.ezweb.ne.jp">\@c3.ezweb.ne.jp</option>
</select>
のように2段階入力にして、
("mail_add_a"はメアドの@までのアカウント、
"mail_add_b"は@以降のドメイン名として代入)
147行 $mail_add = $in{'mail_add'}; の部分で
上記フォームから受け渡される"mail_add_a"と"mail_add_b"を連結して
変数 $mail_add に代入されるようにしたいのですが、
$in{'mail_add'}; の部分をどのように書き換えれば2つの文字列を連結させられるでしょうか?
0589588
05/01/25 04:31:03ID:???147行はメアドの書式をチェックする部分です。
0592572
05/01/27 21:43:23ID:???# このスクリプトの名前
$script = "kensaku2.cgi";
(78〜79行目辺り)の部分をスクリプトの名前に変えてください
よろしくお願いします
0593572=586
05/01/28 22:52:33ID:wG0bpuZuttp://www.uploda.org/upload.cgi?mode=dl&file=36634
デバッグしてみると
「次へ」ボタンが押された時、検索語が受け渡されていないようです
どこをいじればいいかわからなくなってきました
アドバイスお願いします
0594nobodyさん
05/01/29 16:02:16ID:BgaXde9b【ヘルプ内容】
このCGIについている、特定のIPからのアクセスを拒否するアクセス制限を、逆に特定のIPからのアクセスだけOKにするアクセス制限に変更したい。どうすればよいか。
DLしたままのファイルで、sub axs_checkのflagを逆にしてみたらスクリプトエラーになってしまい、他にどうすればよいかわからなくなった。
ーーここからスクリプト
@deny = (
"hogehoge.com",
);
&decode; #フォームデコード
&axs_check; #アクセス制限
#(中略):フォームの設定が数行
&html; #BBS本体表示
# アクセス制限
sub axs_check {
&get_host;
if ($deny[0]) {
local($flag)=0;#ここを1にして・・・その下の$flag=1を0にするとスクリプトエラー。
foreach (@deny) {
#↓これは、@denyにないIPならループ抜けの意味ですよね?違う?(・・、
if ($_ eq '') { last; }
$_ =~ s/\*/\.\*/g;
if ($host =~ /$_/) { $flag=1; last; }
}
if ($flag) { &error("許可されていないアクセスです!") }
}
}
0595594
05/01/29 16:03:22ID:???sub get_host {
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
# ホスト名取得に gethostbyaddr関数を使用する場合は$gethostbyaddr = 1;にします。
$gethostbyaddr = 1;
if ($gethostbyaddr) {
if ($host eq "" || $host eq "$addr") {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
}
}
if ($host eq "") { $host = $addr; }
}
0596nobodyさん
05/01/29 16:57:47ID:???俺もperlをちょこっといじって遊んでるくらいの人間なんで、あんま自信ないけど・・・
if ($deny[0]) {
local($flag)=0;
foreach (@deny) {
#↓これは、@denyから取り出した内容($_)が空('')だったらループ抜け、だと思
if ($_ eq '') { last; }
$_ =~ s/\*/\.\*/g;
if ($host =~ /$_/) { $flag=1; last; }
#↑アクセスした人のホスト($host)に@denyから取り出した内容($_)が
#↑含まれていたら$flagの値を1にしてループを抜ける
#↑つまり「$flag==1なら拒否」
# これを「$flag==1なら許可」に変えたい → 言い換えると「$flag=!1なら拒否」
}
if ($flag=!1) { &error("許可されていないアクセスです!") }
#↑ということでここをこう変更すればいけるんでは?
}
ただ「特定のIPからの制限」なら、$hostじゃなくて$addrにするべきなんじゃ?って気がするけど
■ このスレッドは過去ログ倉庫に格納されています