WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hjälp med blockering av spam (https://www.wn.se/forum/showthread.php?t=35446)

Domine 2009-03-01 18:32

Hej!

Har problem med att få ord blockerade i formulär.. har inte mkt koll på php än.. Mina kunder blir iallfall nedspammade av en idiot som marknadsför sitt företag.. Kan inte någon hacka sönder hans site.. :angry: Jaja till problemet:

Kod:

if (preg_match('/(trams|skräp|bluff)/ui',$values,$m))
 {
 $valid_postback = false;
 echo "test : ".$m[1];
 }

Skulle inte detta stoppa att formulär går iväg?? söksträngen values är ju namn,epost,message.. kanske inte kan ha values som söksträng? Någon som vet, eller är det som att fråga er var jag har bilen parkerad...

pontuscs3 2009-03-01 21:15

Lite mer info om vad det är du vill blockera hade varit intressant! Alltså mer exakt värde som du är ute efter.

Samt är det så att han spammar från din sida med något formulär eller handlar det om att han har fått eposterna?

Och om values är en array så kan du inte kolla på det sättet utan får köra foreach.

Jag skulle gjort något i stil med:
Kod:

$checkd = 0;
foreach($value as $check){
if(preg_match("string", $check){
$checked = 1;
}
}

if($checkd == 0)
{
  mailform....
}
else
{
 echo "Du får inte spamma min mailform!!";
}

Om du vill hacka hans sida så får du lagra $_SERVER["REMOTE_ADDR"] och försöka pinga hans ip... :ph34r:

martine 2009-03-01 21:23

Domine, jag har just svarat på samma fråga som du ställt i en annan tråd. Håll dig till en tråd - det hjälper varken dig eller andra att göra inlägg överallt. (Jag är ju inte moderator här men jag kan tänka mig att du riskerar att få ditt medlemskap avsagt på det här sättet.)

Domine 2009-03-01 22:32

Jo jag vet att du svarade mig genom förra tråden Martine! Tack för det! Men jag lyckades inte trots ditt svar... Anledningen till att jag nu är här, är för att jag ansåg denna tråd mer relevant (php), och kanske därför får ett svar snabbare än att vänta på fel tråd. Så.. det var fel tråd från början, men nu är det rätt! Det är väl bra att man på eget initiativ behåller ordningen :)

Moderator får gärna flytta frågeställningen i andra tråden om jag gjort fel.

Hur som helst..

Haha ja på me luvan och pinga.. lol :o

Företaget spammar mina annonsörer via "svara-annons"-formulären. Jag vill kunna blocka flera utvalda ord samt spärra vissa e-postadresser från att skicka via formulären. Jag har som sagt fått till hjälp den koden jag skrev in här ovan, men det blir lik förbannat något som skiter sig, mailen skickas trots detta..


Får prova ett tag till.. Här är koden ialf, ska testa igen få se pontus!

Kod:

<?php

require_once('../includes/startup.inc.php');

if (is_form_submit('submit_form') && ($_SERVER['REMOTE_ADDR'] != 'xx.xxx.xxx.xxx'))

{
        $class['ok'] = '';
        $class['error'] = ' error';
        $class['type_error'] = ' typeError';

        $class['name'] = $class['ok'];
        $class['email'] = $class['ok'];
        $class['subject'] = $class['ok'];
        $class['body'] = $class['ok'];

        $values['name'] = strip_html(get_from_request('name', ''));
        $values['email'] = strip_html(get_from_request('email', ''));
        $values['subject'] = strip_html(get_from_request('subject', ''));
        $values['body'] = strip_html(get_from_request('body', ''));

        $valid_postback = true;
        $postback_errors = array();


        if (strlen($values['name']) == 0)
        {
 *$valid_postback = false;
 *$class['name'] = $class['error'];
 *array_push($postback_errors, $texts['advert_email_name_error']);
        }

        if (strlen($values['email']) == 0)
        {
 *$valid_postback = false;
 *$class['email'] = $class['error'];
 *array_push($postback_errors, $texts['advert_email_email_error']);
        }
        else if (is_invalid_email($values['email']))
        {
 *$valid_postback = false;
 *$class['email'] = $class['type_error'];
 *array_push($postback_errors, $texts['advert_email_email_type_error']);
        }

        if (strlen($values['subject']) == 0)
        {
 *$valid_postback = false;
 *$class['subject'] = $class['error'];
 *array_push($postback_errors, $texts['advert_email_subject_error']);
        }

        if (strlen($values['body']) == 0)
        {
 *$valid_postback = false;
 *$class['body'] = $class['error'];
 *array_push($postback_errors, $texts['advert_email_body_error']);
        }

 *
        // anitspam check
 * * * * *
        if ($valid_postback)
        {
 *$antispam = new anitspam_class($db, $cfg);

 *if (!$antispam->validate_log_post())
 *{
 *        $valid_postback = false;
 *        array_push($postback_errors, $texts['general_antispam_error']);
 *}
        }


        $_SESSION['temporary']['postback_errors'] = $postback_errors;
        $_SESSION['temporary']['values'] = $values;
        $_SESSION['temporary']['classes'] = $class;


        if ($valid_postback)

osv...................................

Förresten!! Just innan ja posta hitta denna:

Kod:

<?php
$blockwords="xxxxxx";

if(!empty($blockwords)&&!empty($_POST)){$useBlocks=explode(",",$blockwords);foreach($useBlocks as $blockWord){foreach($_POST as $Name=>$Value){$Value=trim($Value);$Value=strtolower($Value);if(!empty($Value)&&strpos($Value,$blockWord)!==false){exit();}}}}?>

Det verka funka, är det en bra lösning? Dock skulle jag vilja att det såg ut som om mailen gick iväg... nu blir det exit.. Det vore ju bra om man iallfall kunde lura spammarna att tro det funkar, så de i alla fall slösar bort sin tid... hehe :P

Tack


Alla tider är GMT +2. Klockan är nu 00:20.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson