THE ROOMのPOWER SEARCHというCGIリンク集を組み込んでいるのですが、自動登録リンクからか、サイトとは関係の無い迷惑な登録者が後を絶たず困っています。

自動登録リンク集に一つだけ登録した事が失敗でした。ですが、登録を削除しようにも、まだ登録されていないのです。つまり、登録だけさせてメアドを保存し、表示されないことによって解除が出来ないというしくみになっているのかと思います。
そこで仕方ないので、このPOWER SERACHの相手サイトからの溜まった登録申請を一括削除しようかと思ったのですが、それが出来ません。
一括削除するにはどのソースをさわればよいのでしょう?ps_search.cgiの中に、ソースを追加して“一括削除する”というボタンを作りたいのですが、詳しい方ご回答宜しくお願い致します。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2007/09/18 12:14:19
  • 終了:2007/09/20 11:26:50

ベストアンサー

id:Mook No.3

Mook回答回数1312ベストアンサー獲得回数3912007/09/19 19:42:55

ポイント200pt

状況がいま一つ見えないのですが、ps_admin.cgi で登録申請の確認をしたときに、申請の件数が多数あるという状況なのでしょうか。

環境としては、申請モードを有効(ps_perf.cgi で $regmode = 1;)になっているという理解で進めます。


KUROX さんが指摘しているように、承認待ちの申請は

.../powersearch/data/regreq.dat

ファイルにありますので、すべて削除するのであれば、このファイルを空にしてしまえばよいでしょう。


どうしても、ボタンによって対応したいというのであれば、下記の変更です。

変更対象は ps_admin.cgi(行が変わるので後ろから書いています) です。


396行目(拒否するの後ろ)に下記を追加

<input type="submit" value="拒否する">
</form>

<form method="post" action="./ps_admin.cgi">
<input type="hidden" name="act" value="reg4">
<input type="hidden" name="page" value="$page">
<input type="hidden" name="pass" value="$pass">
<input type="hidden" name="name" value="$site[9]">
<input type="hidden" name="sitename" value="$site[4]">
<input type="submit" value="すべての申\請を拒否する">
</form>

EOD

154行目(reg3の前:どこでもいいのですが)にreg4を追加

#******************************************************************************
sub reg4{
#すべて拒否
&filelock("regreq");
copy( $regreq, "${regreq}.bak" );
open (IO,"+<$regreq");
truncate(IO,0);
close (IO);
&fileunlock("regreq");

$message = <<EOD;
<b>すべての申\請を削除しました。<br>
<form method="post" action="./ps_admin.cgi">
<input type="submit" value="戻る">
<input type="hidden" name="pass" value="$pass">
</form>
EOD
$action = "登録申\請確認";
&html_output;
}

71行目に reg4 を挿入

elsif ($act eq "reg2"){®2;}
elsif ($act eq "reg3"){®3;}
elsif ($act eq "reg4"){®4;}

20行目に

use File::Copy;

を挿入


これにより、すべての申請をクリアしますが、念のため regreq.dat.bak にコピーをとっています。

ただし、毎回上書きされますので保存されるのは直前の状態です。


http://dream.lib.net/room/cgi/e_ps.html

id:akr-x

圧巻です。なんと言ったらいいか…。

本当に有難う御座います。毎回皆様のスキルの高さに驚かされますが、mook様には本当に驚きです。有難う御座います。

2007/09/20 11:25:40

その他の回答(2件)

id:KUROX No.1

KUROX回答回数3542ベストアンサー獲得回数1402007/09/18 19:39:38

ポイント50pt

必ず、regreq.datのバックアップを取って

元に戻せるようにしてください。


#登録申請用のファイル

$regreq = "./data/regreq.dat";

このファイルがあると思いますが、

エディタなどで開いて、削除したい申請データを削除すれば

いいと思います。たぶん1行で1件のデータだと思います。

これで不整合とか起きるようなら、元に戻してください。

この方法では無理だということです。

http://q.hatena.ne.jp/answer

id:akr-x

秀丸で試みましたが、空欄でした。

他に読み込む方法はありますか?

2007/09/19 12:15:06
id:minkpa No.2

minkpa回答回数4178ベストアンサー獲得回数552007/09/18 22:03:37

ポイント27pt

POWER SEARCHは一つずつしか削除出来なかったと思います。

法的措置をとるなど警告文を強くしてみてはいかがでしょうか。

http://q.hatena.ne.jp/1190085257

id:akr-x

やはり、皆さん苦労する問題なのですか?

困ったものです…。

ご回答有難う御座います。

2007/09/19 12:17:09
id:Mook No.3

Mook回答回数1312ベストアンサー獲得回数3912007/09/19 19:42:55ここでベストアンサー

ポイント200pt

状況がいま一つ見えないのですが、ps_admin.cgi で登録申請の確認をしたときに、申請の件数が多数あるという状況なのでしょうか。

環境としては、申請モードを有効(ps_perf.cgi で $regmode = 1;)になっているという理解で進めます。


KUROX さんが指摘しているように、承認待ちの申請は

.../powersearch/data/regreq.dat

ファイルにありますので、すべて削除するのであれば、このファイルを空にしてしまえばよいでしょう。


どうしても、ボタンによって対応したいというのであれば、下記の変更です。

変更対象は ps_admin.cgi(行が変わるので後ろから書いています) です。


396行目(拒否するの後ろ)に下記を追加

<input type="submit" value="拒否する">
</form>

<form method="post" action="./ps_admin.cgi">
<input type="hidden" name="act" value="reg4">
<input type="hidden" name="page" value="$page">
<input type="hidden" name="pass" value="$pass">
<input type="hidden" name="name" value="$site[9]">
<input type="hidden" name="sitename" value="$site[4]">
<input type="submit" value="すべての申\請を拒否する">
</form>

EOD

154行目(reg3の前:どこでもいいのですが)にreg4を追加

#******************************************************************************
sub reg4{
#すべて拒否
&filelock("regreq");
copy( $regreq, "${regreq}.bak" );
open (IO,"+<$regreq");
truncate(IO,0);
close (IO);
&fileunlock("regreq");

$message = <<EOD;
<b>すべての申\請を削除しました。<br>
<form method="post" action="./ps_admin.cgi">
<input type="submit" value="戻る">
<input type="hidden" name="pass" value="$pass">
</form>
EOD
$action = "登録申\請確認";
&html_output;
}

71行目に reg4 を挿入

elsif ($act eq "reg2"){®2;}
elsif ($act eq "reg3"){®3;}
elsif ($act eq "reg4"){®4;}

20行目に

use File::Copy;

を挿入


これにより、すべての申請をクリアしますが、念のため regreq.dat.bak にコピーをとっています。

ただし、毎回上書きされますので保存されるのは直前の状態です。


http://dream.lib.net/room/cgi/e_ps.html

id:akr-x

圧巻です。なんと言ったらいいか…。

本当に有難う御座います。毎回皆様のスキルの高さに驚かされますが、mook様には本当に驚きです。有難う御座います。

2007/09/20 11:25:40
  • id:Mook
    多くのポイントとイルカありがとうございました。


    お気づきだとは思いますが、
    71 行目に挿入部分が文字化けしてますので、
    (pre 記法中での &reg は別の文字になってしまうので)

    elsif ($act eq "reg2"){&reg2;}
    elsif ($act eq "reg3"){&reg3;}
    elsif ($act eq "reg4"){&reg4;}

    に読み替えてお試しください。
  • id:KUROX
    >秀丸で試みましたが、空欄でした。
    >他に読み込む方法はありますか?

    サーバー側のファイルを見てください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません