Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 10-05-2006, 12:36 PM
Quarterbore Quarterbore is offline
 
Join Date: Mar 2005
Location: Valley Forge PA
Posts: 538
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Need preg_match help using array for match (regexps with variables)

Here is the background:

I am trying to block out a pair of IP hosts because of a problem member that seems to be able to get new IPs each time they dial in... I have figured out the code to get the IP and resolve the HOST. I ave learned that even the host will have multiple proxy versions like as fllows:

cache-rtc-aa10.proxy.aol.com
cache-rtc-ad04.proxy.aol.com
cache-ntc-ad10.proxy.aol.com
cache-ntc-ad06.proxy.aol.com

So, I have programed a preg_match to block "proxy.aol.com"

I need to be able to look for partial text matches inside a longer string and I know how to do this without using a variable for the code I am trying to match as follows:

PHP Code:
if (preg_match ("/proxy.aol.com/i"$host)) {eval(standard_error(fetch_error('problem_ip_address')));} 
Well, the code above worked but my stalker decided to go out and get additional internet accounts so theycan log in... WHAT A PITA!

So, I tried to update my IP blocking scrpt (See: https://vborg.vbsupport.ru/showthread.php?t=127288) so that I can create a list of IP Hosts and block by those... Well, I discovered last night that my code does not work and I need some expert help finding a solution.

Here is the code I use to pull the array of HOSTS that should be blocked and compare it to the $host of the person that tripped the script:

PHP Code:
$blocked_hosts explode("\n"$vbulletin->options['ip_noview_host']); 
$count count($blocked_hosts);
for(
$i=0$i<=($count-1); $i++)
{
if (
$blocked_hosts[$i]){
       if (
preg_match ("/$blocked_hosts[$i]/i"$host)) {eval(standard_error(fetch_error('problem_ip_address')));}  
       }

I know that my array works and that the loop works properly to cycle through the values in the array and none are missed.

My problem is I can not find a reference on how I can include a variable inside the match term and use it in a conditional like this (RE the $blocked_hosts[$i])

I need to update my hack as I know this is not working and to fix this for my own problem guest I just have multiple "pre-matches" with each of the hosts I need to lock out listed in a series but this is not user friendly for non-coders...

I really need some help or an alternate way to address this problem...

Thanks!
Reply With Quote
  #2  
Old 10-05-2006, 01:07 PM
nico_swd's Avatar
nico_swd nico_swd is offline
 
Join Date: Dec 2005
Location: Spain
Posts: 170
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This should do it.
PHP Code:
$blocked_hosts explode("\n"$vbulletin->options['ip_noview_host']); 

foreach (
$blocked_hosts AS $hostname)
{
    
$hostname trim($hostname);
    
    if (
preg_match('/('$hostname .')/i'$host) AND !empty($hostname))
    {
        eval(
standard_error(fetch_error('problem_ip_address')));
    }  

Reply With Quote
  #3  
Old 10-05-2006, 01:21 PM
Quarterbore Quarterbore is offline
 
Join Date: Mar 2005
Location: Valley Forge PA
Posts: 538
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

THANK YOU!

I just tested this and it works within my script...

I will update my product and credits to you as I was up all night last night with my php books and Google but could not figure this out!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 07:02 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04042 seconds
  • Memory Usage 2,188KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (3)post_thanks_box
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete