vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Ban a user based on a string contained (https://vborg.vbsupport.ru/showthread.php?t=111173)

JPnyc 03-23-2006 01:44 PM

Ban a user based on a string contained
 
in the post or signature? I want to ban a user automatically, based on the presence of a particular text string contained in the post or sig. I'll code it myself (even though PHP isn't among my languages) but I need a hint 1st. Where would such a function best be placed? Which file(s)? Would it be in the showthread template ? Or New Thread/reply? Thanks for any clues.

Here's the compound if I have so far:

if (strpos($post[message], "Blah") !== false)&&(strpos($post[message], "BlahBlah")!==false)&&(!can_moderate($thread['forumid'], 'caneditthreads') && (!can_moderate($thread['forumid'], 'caneditposts'))

Is there a simpler way of testing usergroup? Something like $bbuserinfo[$usergroup] or something along those lines? Thanks for any help

Ok, I found the easier method to test for usergroup: $bbuserinfo['usergroupid']; Now what I need is the working statement. How does one change usegroup? Is it anything like

$vbulletin->userinfo['usergroupid']=8; //that?

JPnyc 03-27-2006 10:51 PM

Is this any closer?

if (strpos($post[signature], "Blah") !==
false)&&(strpos($post[signature],
"BlahBlah")!==false)&&($bbuserinfo['usergroupid']!=0)&&($bbuserinfo['usergroupid']!=1)&&($bbuserinfo['usergroupid']!=2)
{

$db->query_write("UPDATE user SET usergroup = 'bannedID#' WHERE
userid=postuserid");
}

Krofh 03-28-2006 04:50 PM

You're getting there with the second one... the query is close, but I think the end should be:

Code:

if (strpos($post[signature], "Blah")&&strpos($post[signature],
"BlahBlah"))
{
$db->query_write("UPDATE user SET usergroup = 'bannedID#' WHERE
userid=".$post['userid']);
}

I think though that bbuserinfo gets the information of whoever's viewing the page, not the poster, so you probably don't want that in there. You don't need the "!== false" bits, it'll return true if it finds the string "Blah". The && is a logical AND, so the way this script runs is if it finds "Blah" AND "BlahBlah" in the signature then it'll ban them... if you want it to ban the user on either of them, you need a logical OR (||), so it'd be like this:

Code:

if (strpos($post[signature], "Blah")||strpos($post[signature],
"BlahBlah"))
{
$db->query_write("UPDATE user SET usergroup = 'bannedID#' WHERE
userid=".$post['userid']);
}

If you were to be more specific as to exactly what you wanted (usergroups and strings and everything), it'd be a bit easier for us to help you write code for what you're doing. :)

JPnyc 03-28-2006 10:27 PM

Oh thanks, I was beginning to think I had bad breath or something :). Yes, I know it's an AND and that's what I need. Either string might be present in the sig of someone I don't wish to auto-ban. Only 1 party should have both. I test for them separately just in case something is between them.

I'll probably omit the usergroup tests. That was just to be sure that mod, supers, and admin groups would be exempted, but there's no way they'd have all the strings I'll test for in their sigs. No one will except the user I want to ban.

Thanks LOADS man, this is my 1st attempt at writing anything in PHP. Based on what you've shown me, I'm probably just going to test for the presence of 3 strings (with ANDs) and omit the other tests. Thanks again.


All times are GMT. The time now is 07:07 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.00930 seconds
  • Memory Usage 1,716KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (4)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete