サポート » 使い方全般 » IPの他ドメイン指定でコメント承認待ちに出来ないか

  • 解決済 gan318

    (@gan318)


    イタズラや挑発的なコメントをする人がいる為に、
    現在、ディスカッションの設定を使って、IPに該当すると承認待になる設定をしているのですが、
    marunouchi.tokyo.ocn.ne.jp
    というドメインは、IPがコロコロ変わるらしく、
    書き込まれては、そのIPを追加という、いたちごっこの状態となっています。

    そこで、このドメインから書き込まれたときのみ、承認待ちになるようにしたいのですが、
    そういう設定は出来ますでしょうか?

    もしくは、ドメイン指定で、コメント禁止でもいいです。

    よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    gan318さん、こんにちは。

    下記のような感じでいかがでしょう。
    テーマのfunctions.phpに追記すれば動くかと思います。
    ただし、ホスト名を取得するにはDNSリクエストによる外部ネットワークの影響を受けやすくなります。IPによる指定であれば部分的であっても問題ないので、該当するホストの上位3ブロック程度までIPの範囲が判れば、その方が速度的に有利になりますし、無関係なIPを承認待ちにすることも少ないでしょう。

    • 承認待ちにするホストは、配列にて複数指定可能です。
    • ホスト名が取得できなかった場合にも承認待ちになるようにしています。
    function moderate_required_comment_gray_host( $approved ) {
    
    	if ( $approved != 1 ) { return $approved; }
    
    	$gray_hosts = array(
    		'marunouchi.tokyo.ocn.ne.jp'
    	);
    	$gray_hosts = implode( '|', array_map( 'preg_quote', $gray_hosts, array( '/' ) ) );
    
    	$comment_host = $_SERVER['REMOTE_HOST']?$_SERVER['REMOTE_HOST']:gethostbyaddr( $_SERVER['REMOTE_ADDR'] );
    	if ( $comment_host == $_SERVER['REMOTE_ADDR'] ) {
    		return 0;
    	}
    
    	if ( preg_match( "/$gray_hosts/", $comment_host ) ) {
    		return 0;
    	} else {
    		return 1;
    	}
    }
    
    add_filter( 'pre_comment_approved', 'moderate_required_comment_gray_host' );
    トピック投稿者 gan318

    (@gan318)

    ありがとうございました。
    幸い、IPの重複が出てきたので、とりあえずIPで様子を見て、
    それでダメだった場合、この方法を取らせて頂きます。

    詳しいご教示ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「IPの他ドメイン指定でコメント承認待ちに出来ないか」には新たに返信することはできません。