0, 'cron_referer' => 0, 'referer' => array(), 'referer_regexp' => 0 ) ); } /** * Apply the blacklist filter if active * * @return TRUE if referer matches blacklist. * * @since 1.0.0 * @changed 1.3.0 */ public static function apply_blacklist_filter() { /* Skip if blacklist is inactive */ if ( self::$_options['active_referer'] != 1 ) { return false; } /* Regular Expression filtering since 1.3.0 */ if ( isset(self::$_options['referer_regexp']) && self::$_options['referer_regexp'] > 0 ) { /* Get full referer string */ $referer = ( isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : '' ); /* Merge given regular expressions into one */ $regexp = '/' . implode( "|", array_keys( self::$_options['referer'] ) ) . '/'; if ( self::$_options['referer_regexp'] == 2 ) { $regexp .= 'i'; } /* Check blacklist */ return preg_match( $regexp, $referer) === 1; } else { /* Extract relevant domain parts */ $referer = strtolower( ( isset( $_SERVER['HTTP_REFERER'] ) ? parse_url( $_SERVER['HTTP_REFERER'], PHP_URL_HOST ) : '' ) ); /* Get blacklist */ $blacklist = self::$_options['referer']; /* Check blacklist */ return isset( $blacklist[ $referer ] ); } } }