Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^2: Creating a whitelist

by htmanning (Friar)
on Jun 15, 2016 at 21:07 UTC ( [id://1165793]=note: print w/replies, xml ) Need Help??


in reply to Re: Creating a whitelist
in thread Creating a whitelist

Thanks for the great response. The database has a list of words on each line like, First, National, Bank. If someone enters "National Bank" it triggers the error even though both words are on the list. Point taken on quoting integers. I get the whitelist from the database like this:
$pointer7 = $sth7->fetchrow_hashref; $good_orgs = $pointer7->{'good_orgs'}; @orgs = split /\n/,$good_orgs;
I tried your code and it still triggers the error if the org has 2 words from the list in it. Hmm...

Replies are listed 'Best First'.
Re^3: Creating a whitelist
by tangent (Parson) on Jun 15, 2016 at 21:30 UTC
    The database has a list of words on each line like, First, National, Bank. If someone enters "National Bank" it triggers the error even though both words are on the list.
    "National Bank" does not match "First, National, Bank" because of the comma. Try stripping out the commas:
    $_ =~ s/,//g for @orgs;
      "National Bank" does not match "First, National, Bank" because of the comma. Try stripping out the commas:

      That still wouldn't match, because "National Bank" !~ /First National Bank/i;. Reversing the match would work in that instance, eg "First National Bank" =~ /National Bank/i;

      I'm curious as to why OP doesn't provide a list of allowed values that users can select from?

        Okay Monks,

        I'm still working on this. I thought I had it working, but this just doesn't work. The following sub looks right to me, but the "if" statement is not triggered.

        sub filter_good_orgs { print "Content-type: text/html\n\n"; $SQL7 = "SELECT * FROM badwords"; &Do_SQL7; $pointer7 = $sth7->fetchrow_hashref; $goodorg = $pointer7->{'goodorgs'}; $lc_org = lc($organization); @orgs = split /\n/,$goodorg; foreach $goodorg (@orgs) { print "Word: $goodorg, Org: $lc_org Found: $found<br>"; if ($lc_org =~ /$goodorg/i) { $found = 1; } } print "<br>Found: $found<br>"; if (!$found) { &error_suspect_org; } return; } # end filter_good_orgs subroutine
        Good org words are listing in the database, one per line:
        first national bank
        The above code returns the following when the organization is First National Bank:
        Word: first , Org: first national bank Found: Word: national , Org: first national bank Found: Word: bank , Org: first national bank Found: Found: Content-type: text/html
        Even if I switch the "if" statement around, it doesn't work.
        if ($goodorg =~ /$lc_org/i) { $found = 1; }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1165793]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2024-04-19 14:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found