★三 【 スクリプト改造工房 PART 8 】 ★三 at PHP
[2ch|▼Menu]
[前50を表示]
500:nobodyさん
04/10/23 16:20:45
【.  CGI名  .】 YY-BOARD v5.33
【配布先URL】 URLリンク(www.kent-web.com)
【. 依頼内容 】
BBQ規制とDSBL規制を適用したいです。よろしくお願い致します。

501:nobodyさん
04/10/23 16:49:01
>499 500
ここは改造工房だってことはわかっているよな?
まずはお前等の改造中のスクリプトを晒してもらおうか。
話はそれからだ。

安易に丸投げスレに逃げるんじゃねーぞ。

502:500
04/10/23 21:46:31
>>501
了解です。

こんな感じにしてみましたが、両方ともうまく機能してないみたいです。よろしくお願いします。

# 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';


503:nobodyさん
04/10/23 22:50:25
>>502
reverse (split /\./, $ENV{'REMOTE_ADDR'})
かな。

504:500
04/10/23 23:29:56
>>503
症状は、生ホストだとBBQリストに入っていないのにエラーメッセージが出る、串を使うとDSBLに入っているのにアクセスできる、というものです。

505:nobodyさん
04/10/30 14:11:34
【.  CGI名  .】 なんちてBLOG 記事INDEX付き バージョン        (必須)
【配布先URL】 URLリンク(nyats.com)       (必須)
【ヘルプ内容】
現在改造中のものです→URLリンク(shingari1582.hp.infoseek.co.jp)
メインはhtmlなのでcssを挿入してあるのですが、過去ログ表示用のCGI(現在改造中のもの)にもリンクやフォントのcssを入れたいと思いました。
$cssという因数があったので素人考えで適応させたいcss(a:linkから)をそのまま入れてみたのですが、
1行目は実行されても2行目からは反映されませんでした。
とほほさんの所等を参照してみたのですが、CGIに関しては本当に初心者で一体どうやって記事全体に反映されるようなcssを挿入すれば良いのか見当もつかなくて困っています。
何かヒントをいただければ嬉しいです、よろしくお願いします。

506:nobodyさん
04/10/31 01:03:45
URLリンク(hk2ch3.hp.infoseek.co.jp)
パーミッション設定とか色々手を尽くしたのですが
どうしても500エラーが起こるわけで…_| ̄|○
何故でしゃう。

507:nobodyさん
04/10/31 16:51:11
>>505-506
ファイルがないよ

508:nobodyさん
04/10/31 19:00:48
>>507
505のはファイル名のtypo
URLリンク(shingari1582.hp.infoseek.co.jp)

509:nobodyさん
04/10/31 21:29:48
>>505
動作確認してないけどヒアドキュメントにしたらいいんじゃないの?
下の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

510:nobodyさん
04/11/01 04:04:37
>>509
パッと見\nはおかしいと思うのだが…

511:nobodyさん
04/11/01 14:22:31 dvWt0D+J
保存先をCSV形式のファイルからデータベース(MySQL)に変更すにはどうすればいいのでしょうか?どなたか、おしえてくださいm(_ _)m
<?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);
}

512:nobodyさん
04/11/01 14:23:01
>>511の続き
// 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); //「内容」の書込み
}
}

513:nobodyさん
04/11/01 14:23:23
>>512の続き
$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>

514:nobodyさん
04/11/01 14:25:07
>>513の続き
<?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>

515:nobodyさん
04/11/01 15:24:26
>>511-514
マルチうざい

516:505
04/11/01 23:13:08
>508
ファイル名間違えていました…訂正ありがとうございます。
>509
回答有難うございました!
#css以下を書き換えて動作させてみたのですが、反映されませんでした。
mainをちゃんと作ってないのですが、動作させてみたらこんな感じです↓
URLリンク(shingari1582.hp.infoseek.co.jp)(左フレームからログファイルへ入れます)
書き換え前と変わった事は一番上に「""; 」という記号が入った事だけのようです。
ソースを見てみたところ、<meta name="keywords" content=""></head>の後にスタイルシートが来ているので反映されないのかな?と思うのですが…関係ないでしょうか。
元もとのprint OUT $css;の位置がおかしいのかな?とも思うのですが、それだったら\.docからのcssも反映されませんよね。
現在a:hover以下のcssが反映されていないようです。
自分で別にcss用の変数を作ってみたらどうかと思いいろいろいじってみたのですが、表示されなくなってしまったりしてお手上げ状態です…orz
よろしければアドバイスお願いいたします…。

517:nobodyさん
04/11/02 03:54:29
>>516
#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部分出力されてるみたい
#有効になってるかどうかはわからんけど

518:nobodyさん
04/11/04 08:51:40
おはようございます。

URLリンク(haiiro.info)

このCGIで NGワードを設定出来るようにしたいのですが
可能でしょうか?
宜しくお願いします。

519:nobodyさん
04/11/04 12:02:05
>>518
変数にNGワードが入ってたらエラーで弾けばよかろ

520:518
04/11/04 13:11:29 /4YiSBg1
>>519
スミマセン。詳しくお教えいただけないでしょうか?

521:nobodyさん
04/11/04 17:36:00
>>520
これ以上何を聞きたいのだろうか…
丸投げしたいのならスレ違い。
自分で何とかしたいのなら、どこがどう解らないのかを書く。

【 スクリプト改造依頼スレ 】(丸投げ) part2
スレリンク(php板)

522:nobodyさん
04/11/06 21:18:18
178 Name_Not_Found [sage] 04/11/06 16:26:41 ID:???
【種別】 ダイスチャット
【言語】 perl
【備考】 URLリンク(www.big.or.jp)
      これのようにダイスを振るフォームがあるのではなく、発言欄にコマンドを入れるようなもの。

正確には、COMCHAT-EX(KENT-WEB)に追記することによって
実装できるダイス用の構文が欲しいかも。


179 Name_Not_Found [sage] New! 04/11/06 19:49:11 ID:???
それは改造になるんじゃ?

523:nobodyさん
04/11/06 21:22:07
>>522
>>521

1つ上のレスぐらい読めや

524:nobodyさん
04/11/17 22:33:22
【.  CGI名  .】LIGHT CHAT
【配布先URL】URLリンク(happy.honesto.net)
【. 置き場所 .】URLリンク(botejako.com)
         自分で多少改造したものです。
【ヘルプ内容】
チャットの発言が表示される上の部分に表示される参加者名を
左から発言・入室したのが早い順に更新・発言した際に並び替えて
表示させるようにしたいのですがどうしてもできません。
今の状態だと、入室した順にしかなっていないようです。
参加者リスト(present.dat)の先頭に毎回追加すればいいのだと思うのですが、
push〜〜をunshift〜〜に変えてみてもうまくいきません。
それが見当違いのことをしてるかどうかもわかりません。

何かヒントをいただけないでしょうか、お願いします。

525:nobodyさん
04/11/17 22:35:28 A5o7/dm+
書き込みないようなのでageさせてもらいますです。

526:nobodyさん
04/11/22 19:28:58
しかし回答出来る人間は居なかった


      − 完( ´∀`) −






527:nobodyさん
04/11/22 22:20:50
いやぁ、つまらん改造だから、スクを見る気になれないだけ。
有料なら請け負うが…

528:nobodyさん
04/11/23 00:04:37
一匹釣れたみたいよ>>526

529:nobodyさん
04/11/23 02:43:22
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:???
いやぁ、つまらん改造だから、スクを見る気になれないだけ。
有料なら請け負うが…

527 :nobodyさん sage :04/11/22 22:20:50 ID:???
いやぁ、つまらん改造だから、スクを見る気になれないだけ。
有料なら請け負うが…

530:nobodyさん
04/11/24 05:44:42
527 :nobodyさん sage :04/11/22 22:20:50 ID:???
いやん、つまらん改造ですので、スクを見る気になれませんわ。
私を満足させられる対価を頂けますなら請け負いますけれど…

531:nobodyさん
04/11/26 17:09:14
【CGI名】ランキングSP
【配布先URL】URLリンク(hp.bird.to)
【依頼内容】スコアと表示されてる数字の間に.とかを入れる(9999を9.999と表示)ようにしたいのですが、どのように改造すればいいでしょうか?
アドバイスお願いします。


532:nobodyさん
04/11/30 18:53:24
URLリンク(www.rescue.ne.jp)

↑ここのサイトのデータベース改造してます。
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もいじらなくてはいけない事は分かるんですが、
何処をどうやって良いのか分かりません_| ̄|○

誰か、教えてください。。。

長文、すいませんでした。

533:nobodyさん
04/12/01 04:25:16
こっちに貼っておけば良かったのかな?
URLリンク(www.google.co.jp)

534:nobodyさん
04/12/04 20:50:36 8LV5OOZo
配布されているチャットを改造したいです。

インフォシークなので直リンができないので、中継地点を作ってます。

URLリンク(keizibann.hp.infoseek.co.jp)
↑から入ったチャットの、一番上あたりに、
 参加者の名前を表示させるにはどうすればいいですか?

スクリプトはこれ↓です。
URLリンク(keizibann.hp.infoseek.co.jp)

よろしくお願いします。




535:nobodyさん
04/12/04 21:24:16
URLリンク(help.www.infoseek.co.jp)
通報済み

536:nobodyさん
04/12/05 06:13:44
>>534
知恵袋で質問した人だよね。
漏れは丸投げスレに誘導したんだが、工房スレに来たということは自分で改造できるんだね。

じゃ、改造の流れを説明するぞ。

まずKENTの所(URLリンク(www.kent-web.com))に行ってcomchatをダウンロードして来い。
comchat.cgiの在室者処理の所をパクれ。
変数名をK's Chat Ligthにあうように弄れ。

以上。

537:nobodyさん
04/12/05 06:14:55
>以上。

これは余計だなお

538:nobodyさん
04/12/05 16:51:08 +UKjgSSz
ここじゃなかったのか、、、。
ついでに寄ったから間違えた。。。

でもありがとう。がんばります。

539:nobodyさん
04/12/12 03:38:36
imgboard.cgiを利用中です。
URLリンク(www.big.or.jp)

これに2ちゃんと同じsage機能をつけたいのですが上手くいきません。

540:nobodyさん
04/12/12 03:39:20
3341行目からの
----------------------------------------------------
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++;
}
----------------------------------------------------

541:nobodyさん
04/12/12 03:40:26
を下のように書き換えました

----------------------------------------------------
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++;
}
}
----------------------------------------------------


542:nobodyさん
04/12/12 04:12:51
そうした所レスのメール欄にsageを入れようが入れまいが
書き込むと上に上がらなくなってしまいました。
試しに変更した
if($email == $sage)

if($PM{'res_go_up'} == 0)
にしてレスを入れたらちゃんと上がりました。

if($email == $sage)
が間違えているのでしょうか?
どなたご教授頂けないでしょうか?
長くなってすみません。

543:nobodyさん
04/12/12 06:05:55
質問を全部読んでないが(^^;
== は数値の比較
eq が文字列の比較

544:539
04/12/12 08:03:13
>>543
ありがとうございます。
if($email eq $sage)が正しいようですね。
しかし今度は下がらなくなった。_| ̄|○

545:nobodyさん
04/12/12 17:10:46 cJqt4xtP
参考:URLリンク(www.kent-web.com)
依頼:携帯から投稿された絵文字が記録されているログを開き
$text = &emoji($text);
の様に絵文字変換ルーチンを通せば
携帯3キャリア相互変換、PC表示ができる様にさせたい。
&emoji; の部分をお願い致します。


546:nobodyさん
04/12/12 18:53:39
>>545
まず、>>1の(3)の真ん中を音読してもらおうか?

547:nobodyさん
04/12/14 09:19:31 Q99fVzSY
URLリンク(www.kit.hi-ho.ne.jp)
こちらで配布している「シンプル日記」の改造をお願いします
(作者さんが多忙のせいか、更新放置されているので・・・)

改造項目は日付の横に任意の画像アイコン(セレクトタグで)を載せたいです
自分で改造できなくて情けない・・・
宜しくお願いします

548:nobodyさん
04/12/14 10:10:33
>>547
スレ違い

■ 自分で改造できない場合には
【 スクリプト改造依頼スレ 】(丸投げ) part2
スレリンク(php板:2番)(テンプレ)

549:nobodyさん
04/12/14 11:04:42
>>548
ありがとう、移動します
スレ汚してごめんなさい

550:6
05/01/07 23:40:43
【.  CGI名  .】 電光! v.5.20
【配布先URL】 URLリンク(cgiscriptmarket.com)
【. 置き場所 .】 URLリンク(www36.tok2.com)
【ヘルプ内容】 
途中までやりましたがココからがわかりません。
・枠がどうしても青色。黒色に変えたい。枠の太さも1pxに。
・日付に「'」が入ってしまう。
・1 名前 : 内容  5/06 12:40 とひとつのformで表示したい。
・見かけ上だけ消してるだけなので要らないソースは消してしまいたいがどれを消していいかわからない。

お願いします。

551:nobodyさん
05/01/07 23:53:58
>>550
マルチ乙!

552:6
05/01/07 23:59:44
誘導されてきました。。
スレ違いですか?

553:nobodyさん
05/01/08 00:55:46
>>552
丸投げスレとperlスレみたいにあちこち書いてるだろ。
他のスレに書くなら取り消すなり移動する旨ぐらい書け。
だからマルチと言われる。
それに自分でいじってるんだろ?
だからここへ誘導されたんだ。

↓自分がどちらなのかよく考えろ。

■ 自分で改造できない場合には
【 スクリプト改造依頼スレ 】(丸投げ) part3
スレリンク(php板:2番)(テンプレ)

■ 自分で改造するアドバイスが欲しい場合には
★三 【 スクリプト改造工房 PART 8 】 ★三
スレリンク(php板:79番)(テンプレ)

554:6
05/01/08 16:21:33
こっちが★三 【 スクリプト改造工房 PART 8 】 ★三 で
・枠がどうしても青色。黒色に変えたい。枠の太さも1pxに。
・日付に「'」が入ってしまう。
こっちが★三 【 スクリプト改造工房 PART 8 】 ★三 です。
見かけ上だけ消してるだけなので要らないソースは消してしまいたいがどれを消していいかわからない。 rmで表示したい。
・1 名前 : 内容  5/06 12:40 とひとつのformで表示したい。

555:nobodyさん
05/01/14 22:12:47
【.  CGI名  .】 WwwSearch Ver3.15 - 検索フォーム
【配布先URL】 URLリンク(www.tohoho-web.com)
【ヘルプ内容】 検索結果を、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;
  }

(続く)



556:555
05/01/14 22:13:34
    #foreach $file (@filelist) {
    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";
  }

# }
}



557:555
05/01/14 22:18:04
foreachのかわりにforでまわしてみたんですが
結果は検索が一件もされず「次へ」のみが表示されてしまいます
アドバイス、解決法よろしくお願いします


558:nobodyさん
05/01/15 19:29:07
>>555
久しぶりに改造工房にお客が来たのに放置されているなぁ〜

sub search1の@filelistだが、お前はこの配列に検索に引っかかったものが入っていると思っているだろ?
残念。
@filelistには対象ディレクトリの中にある全てのファイルが格納されている。
試しに
closedir(DIR);
のあとに
errexit("@filelist");
って入れてごらんよ。

漏れならsub search1とsub search2を大改造しる。
opendir(DIR, $dir);
で、指定してた拡張子のファイルのみを
@filelistに入れていく。

559:555
05/01/15 23:08:47
>558
指摘、アドバイスありがとうございます
となるとforループ自体がおかしいことになりますね
なんだか煮詰まってテンパってきました
もちょっとガンガってみますです…

560:nobodyさん
05/01/16 03:38:30
KENTのBBSのソースでも眺めれ。
たいていは件数によって次ページ送りの機能がついているから。

561:nobodyさん
05/01/17 11:01:28 gvEGsU/w
丸投げの方で放置されそうな勢いなので、自分で努力しつつこちらで質問します。

【.  CGI名  .】 HiLink Type-B
【配布先URL】 URLリンク(www.e-hws.net)
簡易表示の方法をちょっと変えたいです。新着順とランキング順しかソート方法が無いのですが、
これをタイトル(サイト名)で50音表示できるように変更したいです。
利用方法としては「ランキング表示」リンクボタン(?)を「50音表示」とし、クリックするとで50音順で
並ぶというものです。
表示方法なんかを改造してるので、行数が合わないと思われるので、名前で場所を伝えます。

sub mainの「表示データ作成」にある「# ランキング表示の場合、ソートする」をどうにかしたら良いんですよね?
$ititleと$jtitleがサイト名のようです。
さらに、その下の「if( $iclicknum < $jclicknum ){」の部分を書き換えれば良いとは思うのですが…
素人ながらに「if( $ititle < $jtitle ){」ってしてみましたが、案の定変化無しです。
どのようにしたら50音順に並べる事が可能ですか?

宜しくお願いします。


562:nobodyさん
05/01/17 18:56:00
>>561
規約は読んだのか?
再配布禁止&&使用者はメールで届出の義務あり

563:555
05/01/18 19:32:37
>560
眺めて悩んでいたらなんかわかってきました
558さん560さん、アドバイスありがとうございました

564:nobodyさん
05/01/18 20:55:07
>>562
このスレは改造工房であり、改造済みのスクリプトを手渡すわけではないので再配布禁止には当たらないかと…
それにまだ改造したものを設置してないので、メールはまだしなくてもよいかと…

要するにヒントだけ与えれば質問者が何とかするって言うスレなので問題はないかと…

>>561
今ちょっと忙しいので、そのうちスクを見てみるわ。

565:nobodyさん
05/01/19 05:16:19
>>561
惜しい。
Perlは数値か文字列かで比較演算子が異なる。
< の代わりに gt を使えば丁度だな。

566:561
05/01/19 10:15:04 sYVj0TcQ
>>564 >>565
フォロー&返答ありがとうございます。

ばっちり出来ました。
文字列は数字じゃないから数字の演算式記号は使えないって事で覚えててOKでしょうか?

アドバイスありがとうございました!

567:730
05/01/23 11:37:56
他スレから誘導されて来ました。

会員制掲示板のPerlCGIスクリプトです。普通の掲示板(KENTさんの書籍のスクリプトを参考に、過去ログ
作成機能と検索機能を削除した)に、IP制限とパス制を組み合わせ改造しました。
✓で特定のIP(@allow)だったら認証画面(&admin)を出し、パスが合ったら掲示板を表示させる(&bbs)。
IPおよびパスが合わなければエラーを返す、・・・つもりでした。しかし下記のスクリプトでは認証画面は
表示しますが、パスを入力しても認証画面、パスミスでも認証画面になるという状態で、
どうにも煮詰まってしまいました。どこがおかしいのかご教授下さい。これでもIP制限は動作しています。

スクリプトはここにアップしました。該当部分だけ。
URLリンク(up.isp.2ch.net)


568:730
05/01/23 12:14:51
ついでにお聞きします。

【スクリプト名】
Web拍手(公式HPから配布版DL。2004年10月。)

【CGIソース】
kaiseki.cgiだけ。
URLリンク(up.isp.2ch.net)

【改造した内容】
●過去15日分のデータを保存し表示するのを、31日分にする。(crap.cgiとkaiseki.cgi)
●アクセス解析機能を追加し、拍手した人のホスト名をaccess.datに保存する。(crap.cgi)
●このスクリプトへアクセスしたときの画面にはaccess.datへのリンクを張る。
●DLしたままのスクリプトでは、解析グラフのタグがぐちゃぐちゃだったので
 そこも変更。時間ごとのグラフも縦表示から横表示に変更し、31日表示を
 しやすくした。
●グラフの画像も横表示に対応させた。
[現在困っていること]
上記改造を加えたあと先週までは問題なく動作していたのですが、今日アクセス
してみたらスクリプトエラーが発生していました。拍手機能は動作しています。
kaiseki.cgiは、上記改造後何も手を加えていないので普通は起こりえないエラーです。
ただ原因として、ローカルに保存していたこのスクリプト(アプロダに挙げたもの)が
間違っていて、サーバーで動作していたのはサーバー側で直接書きなおしたからでミラーリング
していなかった。それをFTPソフトの誤動作で全ファイルを送信したために、動かないローカルの
スクリプトで更新されてしまった・・・というのが考えられます。
#FTPソフトのログにはこのファイルを送信したという記録はないのですが、一昨日以前のログが
#消えているのでわからない。

そこでUPしたこのスクリプトを眺めてみたのですが、どこがおかしいのかわかりません。
pcheck.cgi(Perlスクリプト文法チェッカ)ではsyntax errorの発生はありませんでした。
なにか間違っているところがありましたら教えてください。


569:nobodyさん
05/01/23 13:17:49
>>567-568
アップ先が表示できません


570:567
05/01/23 16:52:48
ありゃ。失礼しました。申し訳ないです(大汗)
UPしなおしました。
>>567
URLリンク(yellow.ribbon.to)
>>568
URLリンク(yellow.ribbon.to)

571:555
05/01/23 22:33:51 a5mA126v
再びすみません

【.  CGI名  .】 WwwSearch Ver3.15 - 検索フォーム
【配布先URL】 URLリンク(www.tohoho-web.com)
【ヘルプ内容】 検索結果を、「次へ」ボタンを押して、次の件をひょうじさせたいです

5件ごとや10件ごとの表示は最初だけは表示できるようになりました
「次へ」ボタンを押して、次の件をひょうじさせたいのですが
うまくいきません
この文を最後に追加しました

print "<form method=\"POST\" action=\"$script?page=$page&word=$word\">\n";
print "<input type=\"submit\" value=\"次へ\">";
print "</form>";

「次へ」ボタンを押しても検索結果が出てきません
何かたりないのでしょうか
かなり悩みましたが答えが見つかりません
ヒント、アドバイスお願いします

572:nobodyさん
05/01/23 22:37:48
書き忘れました

>571の文の前に

$page=$FORM{'page'};
$word=$FORM{'word'};

を実行しています

$scriptには自身のCGIファイルの名前が入ってます

573:nobodyさん
05/01/24 00:23:35
>>572
掲示板スクリプトを拾って読んでみたら応用できるんじゃない?

574:nobodyさん
05/01/24 00:33:32
>>572
かなり勘で答えるけど、
<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のほうの数字が固定だったら、最初のページしか動かない。)

575:572
05/01/24 01:12:24
>573
掲示板スクリプト眺めてるんですが
一向にらちがあかないのです;;

>574
ありがとうございます
試してみましたが、結果はやっぱり同じでした
「次へ」を表示するとこまではいいんですが
押しても、検索フォームだけ出て結果は出ないのです

ソースも晒したほうがいいでしょうか?

576:572
05/01/24 01:16:02
>574
うっかりしてました
この文の直前に

$nextpage = $FORM{'page'} + 1;

をしています

print "<input type=\"hidden\" name=\"page\" value=\"$nextpage\">\n";

にしても結果変わらずです

577:nobodyさん
05/01/24 01:33:30
そんな送信する側の記述を書かれたってわかるわけない。
page=$pageとword=$wordという値を受け取ってどういう処理をさせてる?

578:572
05/01/24 09:52:41
>577
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'};

を実行してます
(続く)

579:572
05/01/24 10:03:39
(続き)
 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);
  }


580:572
05/01/24 10:07:38
$pageは>576にも書いたのですが$nextpageにしてますので
今は使ってません
最初の一回目は5件表示されるのに
「次へ」を押すと検索フォームだけ出て、結果が出ないのがはがゆくてなりません
これで参考になりますでしょうか?

581:nobodyさん
05/01/24 10:18:02 f8wXJteD
>>580
Perlってデバッガ無いの?
PHPだとZend入れてればIEの右くりメニューからデバッガ起動するよ。

582:572
05/01/24 10:28:28
一番重要なトコ忘れてました
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; }


583:nobodyさん
05/01/24 10:29:17 CX5KANJQ
  for ($j = $imin; $j <= $imax; $j++) {
   $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>";
  }

 }
}


584:nobodyさん
05/01/24 12:14:55
部分だけじゃなくてどっかに全部うpしろや。

585:nobodyさん
05/01/24 12:35:13
>>567
✓ # アクセスチェック
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;
}

全体がわからんけどこんなところか。
ただしこれだけじゃなくて全体にも手を入れないと動かんよ。


586:572
05/01/24 18:07:17
>584
うpしました
URLリンク(www.uploda.org)
受信パスは「cgi」です
よろしくお願いします

587:567
05/01/24 22:09:17
>>568解決しました。jcode.plのパスが違ってました。
わかってみれば、にんともかんとも(滅)
お騒がせしました。

>>566についてはまだです。
パス認証だけどうしてもうまくいきません(TT)

588:nobodyさん
05/01/25 04:15:56
URLリンク(www.net-easy.com)
のパスワード認証&自動発行スクリプト
URLリンク(cat.zero.ad.jp)

まず、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つの文字列を連結させられるでしょうか?


589:588
05/01/25 04:31:03
付け足し
147行はメアドの書式をチェックする部分です。

590:nobodyさん
05/01/25 11:35:50
>>588
$mail_add = $in{'mail_add_a'} . $in{'mail_add_b'};

591:nobodyさん
05/01/25 21:21:27
>>590
解決しました。
vrytnx

592:572
05/01/27 21:43:23
忘れてました

# このスクリプトの名前
$script = "kensaku2.cgi";

(78〜79行目辺り)の部分をスクリプトの名前に変えてください
よろしくお願いします

593:572=586
05/01/28 22:52:33 wG0bpuZu
うpしなおしました
URLリンク(www.uploda.org)

デバッグしてみると
「次へ」ボタンが押された時、検索語が受け渡されていないようです
どこをいじればいいかわからなくなってきました
アドバイスお願いします

594:nobodyさん
05/01/29 16:02:16 BgaXde9b
【.  CGI名  .】 Design BBS 1.80 【配布先URL】 URLリンク(prism-web.com)
【ヘルプ内容】 
この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("許可されていないアクセスです!") }
 }
}


595:594
05/01/29 16:03:22
# ホスト名取得
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; }
}

596:nobodyさん
05/01/29 16:57:47
>594-595
俺も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にするべきなんじゃ?って気がするけど



597:594
05/01/29 21:54:11
>>596
if ($flag=!1) { &error("許可されていないアクセスです!") }
これだと500エラーになってしまいましたです。

if ($flag ne "1") にしてみましたが、こっちも500エラー。
if ($flag = "0")も500エラーでした。
>>594だったらちゃんと動作するんですけど・・・(><)

598:594
05/01/29 22:21:41
フラグを使わない方法を考えてみましたが・・・
sub axs_check {
 # ホスト名を取得
 &get_host;
 if ($deny[0]) {
  foreach (@deny) {
   if ($_ eq '') { &error("許可されていないアクセスです"); last;}
   $_ =~ s/\*/\.\*/g;
   if ($host eq~ /$_/) { last;}
   #こうしたら、@denyのIPでのアクセスがエラーになる。
   #$host ne にするとスクリプトエラーに。
  }
 }
}
お手上げです(TT)

599:594
05/01/30 01:16:06
たぶんできました。
sub axs_check {
 # ホスト名を取得
 &get_host;
 if ($deny[0]) {
  local($flag)=0;
  foreach (@deny) {
   $_ =~ s/\*/\.\*/g;
   if ($host =~ /$_/) { $flag=1; last; }
  }
  if (!$flag) { &error("許可されていないアクセスです!") ; exit;}
 }
}
これで何とか動作しました。
>>596さん、いろいろヒントありがとうでした。
>>595
>if ($_ eq '') { last; }
これ、@denyが空の設定がありうる、ということを失念しておりました(^-^;
#だってデフォルトからして空ではなかったので、なんて言い訳してみるテスト(ぉぉ

600:nobodyさん
05/01/30 05:18:46
つか、500エラーに対処できないのかね?
多分こいつは共有サーバでテストしながら改造している希ガス

601:594
05/01/30 11:57:38
なんかエラった(汗)

>>600
文法チェックの結果エラーがなく、
InternalServerErrorになる理由がわからないというだけの話です。
IPの判断に関してはローカルではテストできないので
確かに共有鯖にしましたけど、
ローカルでテストする方法あります?

602:nobodyさん
05/01/30 12:02:58
>>601
500エラーについて
CGI設置について質問 【Part2】
スレリンク(php板:2番)


603:nobodyさん
05/01/30 17:01:23
>>601
&get_host; をコメントアウトして代わりに
$host = 'ダミーのアドレス';を書けばいいだろ

604:nobodyさん
05/01/31 23:38:23
質問にあったスレが見当たらないのでお邪魔します
CGI配布場所  URLリンク(sugachan.dip.jp)
サンプル  URLリンク(sugachan.dip.jp)
特定IP・串からのアクセス・DLを弾きたいのですが
特定IPの場合
$set{'deny_host'} = ' ';に何を入れればいいのでしょうか?
そして上にIPを入れた場合は直リンからのDLも防げるのでしょうか
検索してみたのですがわけがわからず途方にくれています

605:nobodyさん
05/01/31 23:52:38
>>604
ここは改造スレなのでスレ違い。

CGI設置について質問 【Part2】
スレリンク(php板)

606:nobodyさん
05/02/03 10:49:14
丸投げスレッドから来ました。
期限が近いのでどうぞよろしくお願いします
【.  CGI名  .】 検索専用データベース Ver2.04
【配布先URL】 URLリンク(cgiroom.nu)
【. 置き場所 .】 URLリンク(hpcgi2.nifty.com)
【 依頼期限 】 出来れば1週間ほどで。
【. 依頼内容 】検索結果に画像を表示、新着情報等がわかるように。
の2点をしたいのですが、よくわかりません。
理想としては
URLリンク(rikunabi-next.yahoo.co.jp)
のような感じにしたいです。
どうぞよろしくお願いします。

607:nobodyさん
05/02/03 15:09:30
>>606
>丸投げスレッドから来ました。
>期限が近いのでどうぞよろしくお願いします

(゚Д゚)ハァ? スレ違いは帰れ

608:nobodyさん
05/02/04 00:30:42
>605
改造だと思っていたのですが、違っていたのですね
お礼が遅れてすいませんでした
ありがとうございます

609:606
05/02/04 10:07:39 x2xOcYLj
すみません、書き方がおかしかったです。
丸投ではなく、出来るだけ自分でどうにかしたいので
改造の方に来ました。という意味です。
>607様わかってもらえたでしょうか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4002日前に更新/341 KB
担当:undef