Preg_match Anti Spam POST

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

.NET Developer

Functie omschrijving .NET developer met ervaring gezocht! Voor een softwarebedrijf in de regio Veenendaal zijn wij op zoek naar een .NET developer met een aantal jaar ervaring. Jij bent zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Verder ben je bezig met nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en productspecialisten om zo mooie producten te creëren. Bedrijfsprofiel De organisatie waar je voor gaat werken is een snelgroeiende softwareleverancier en allround dienstverlener. Deze organisatie heeft zowel klanten die

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van Software Developer! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van ervaren

Bekijk vacature »

Programmeur / Developer

Voor een familiebedrijf in Doetinchem, actief in de machinebouw voor de food-sector, zijn wij op zoek naar een programmeur / developer. In deze functie ben je werkzaam in een team van 5 medewerkers. Je werkzaamheden bestaan onder andere uit het verhelderen van requirements vanuit de opdrachtgever, de klant en de afdeling ontwikkeling. Je verricht haalbaarheidsstudies en werkt specificaties uit die je afstemt met de opdrachtgever. Je ontwerpt design in software en stemt af met je collega's. De huidige vision-systemen zijn geschreven in C software, welke draait op een CUDA platform. Je schrijft en codeert software en zal gaan testdraaien. Tot

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Ervaren PHP Developer

Functieomschrijving PHP Developer met brede ervaring gezocht! Ben jij een Full Stack PHP Developer met brede ervaring die toe is aan een volgende stap? Lees dan snel verder! Voor onze eindklant in de regio Nunspeet zijn wij op zoek naar een ervaren PHP Developer die het IT Team van deze organisatie gaat versterken. Wij zoeken een enthousiaste en breed georiënteerde IT-er die er voor gaat zorgen dat deze innovatieve organisatie de volgende stap gaat maken. Om deze functie goed uit te kunnen voeren moet je communicatief goed zijn en in staat zijn om zelfstandig problemen op te lossen. Daarnaast bestaat

Bekijk vacature »

Medior/senior Fullstack developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Medior C# Developer

You'll build modern applications for Coolblue's back office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become a Medior C# Developer at Coolblue? You regularly participate in brainstorm sessions about user experience, data, and task flow with the UX Designer, Product Owner, and Data Scientists in your team. Besides that you will create disconnected, highly congruent, and testable code that can easily be maintained and is future-proof. Want to become C# Developer at Coolblue? Read below if the job suits you. You enjoy doing this Working with various types of

Bekijk vacature »

Front end developer React

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Fullstack Developer

Functieomschrijving Voor een erkende werkgever in regio Etten-Leur zijn wij op zoek naar een Fullstack Developer met PHP/Laravel ervaring. Je gaat aan de slag met het bouwen van maatwerk software voor klanten die actief zijn in een specifieke markt. Als fullstack developer ben je samen met een enthousiast team van 7 collega’s verantwoordelijk voor de ontwikkeling, beheer en innovatie van informatiesystemen voor klanten in een specifieke branche. Verder ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Ervaring met Laravel is een must. Om de klant zo goed mogelijk te

Bekijk vacature »

Full-stack developer

Als Full-stack developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Samen met je SCRUM team werk je aan zowel de front- als de back-end. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en echt het verschil te kunnen maken. Ons ontwikkelteam bestaat uit ruim 40 ontwikkelaars, testers, scrum

Bekijk vacature »

Medior Front-end Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte websites die in eigen beheer zijn. In onze vestiging in Nederweert zit onze development afdeling en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé Medior Front-end Developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het uitwerken van designs tot functionele layouts Je

Bekijk vacature »

Medior/senior Python developer

Functie Bedrijven komen bij deze organisatie om technische vraagstukken op te lossen en hierin ook tot oplossingen te komen waar ze zelf misschien niet aan gedacht hadden. Jij gaat vanuit je ervaring dus niet alleen hands-on aan de slag met het ontwikkelen, maar zult ook zeker adviseren en proactief meedenken met de klant. Er zijn meerdere lange en/of korte projecten en het type klanten is heel uiteenlopend. Zo kun je terecht komen in een multidisciplinair scrumteam waarin je als Python developer meewerkt, of juist voor een kleiner (Greenfield) project aan de slag gaan waarin je veel breder bezig bent. Door

Bekijk vacature »

Junior PHP Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale aspecten van Coolblue. Wat doe je als Junior PHP Developer bij Coolblue? Als Junior PHP Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen om te groeien als Junior Developer. Op dat moment komt je wil om steeds te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te kunnen maken. Je sterk analytisch vermogen komt dan ook goed

Bekijk vacature »

Java developer - procesoptimalisatie (Inhouse)

Functie Wat ga je doen als Java developer? Jij als back end developer hebt al enige ervaring opgedaan in jouw vakgebied. Voornamelijk het werken met Java en Spring spreekt jou aan. Jij wordt samen met je collega developers in het team verantwoordelijk voor de gehele back end van de applicatie. Hierdoor heb jij veel zelfstandigheid in je rol en zul je ook zelf beslissingen samen met de PO maken. Er wordt gewerkt volgens de SCRUM methodiek, om zo structuur te creëren in de werkzaamheden. Binnen de 2-wekelijkse sprints pak jij je taken op die samen met de PO afgestemd zijn.

Bekijk vacature »
Pello Mugica-Gonzalez

Pello Mugica-Gonzalez

12/02/2011 17:31:37
Quote Anchor link
Hallo,

Ik zit met een klein en vrij simpel beginnersprobleempje. Ik heb een simpele "wall" ontworpen met 1 enkele form waar je gewoon wat tekst kunt in voegen en bij de submit komt dat dan op de wall.

Maar nu worden bij het posten van die tekst eerst enkele controles gedaan. O.a. op lengte, leegte, enz. Maar ik zou graag ook iets maken tegen spam.

Zo zou ik bvb alle ongewone tekens dat je in een normale tekst niet nodig hebt zoals / < > $ * % enz (uitgezonder leestekens( . , ; : ( ) ) en @) willen uitsluiten. En ik zou ook willen tegen gaan dat er mensen een spam doen met veel de zelfde letters na elkaar, dus laat ons zeggen dat je maar maximum 2 dezelfde letters naast elkaar moogt voegen(bvb: haaaaaaaaaaaaaaaallooo)


Zoals ik al eerder zij ben ik een beginner maar ik denk dat ik dit kan oplossen met een preg_match maar ik ben helemaal niet bekend met strings. Kunnen jullie mij daar bij helpen en zeggen hoe je er aan komt?

Alvast bedankt,
Pello
Gewijzigd op 12/02/2011 17:32:37 door Pello Mugica-Gonzalez
 
PHP hulp

PHP hulp

14/11/2024 23:01:01
 
Wouter J

Wouter J

12/02/2011 19:05:38
Quote Anchor link
Hallo Pello,

Een goede tutorial daarvoor is Regular expressions.
Daarin wordt alles uitgelegd.
De regex om alle tekens op A-Z, a-z, 0-9 en .,;:()@ te willen blokkeren kan je bijv. Deze regex proberen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$regex
= '/[^A-Za-z0-9\.,;:\(\)]/';
$preg = preg_match($regex, $_POST['iets']);
if($preg === false) {
  echo 'Dit is spam!';
}

else {
  echo 'Je hebt normaal gereageerd!';
}

De uitleg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
[          Begin van een character class
^          Match alle tekens met uitzondering van tekens in deze character class
A-Z        Match A-Z (door de eerdere ^ wordt het eigenlijk match niet)
a-z        Match a-z
0-9        Match 0-9
\.,;:\(\)  Match .,;:(). Doordat . () tekens zijn die je bij speciale regexen kan gebruiken moet je deze door middel van de backslash \ als gewone teken declareren.
]          Einde character class


Voor de meerdere letters achterelkaar kan je doen met grouping metacharacters. Dit zijn (). Alles wat hier tussen staat wordt onthouden. Dit kan je weer terug halen met \1 \2, enz.
Voorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$regex
= '/(.{1})(\1)/';
?>

Uitleg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
(         Dit is het begin van een metacharacters
.         In een regex matched de . alles behalve spaties
{1}       Door middel van {1} geven we aan dat het precies 1 keer mag matchen.
)         Einde metacharacters
(\1)      Nu kijken we of de letter 2 keer achter elkaar staat. Dit doen we doormiddel van \1. Hierin staat de informatie van het stukje van het eerste haakje

Om 2 keer achter elkaar te kijken wordt een beetje gevaarlijk. Want je kan in woorden als een ook 2 keer eenzelfde letter hebben. Dus je kan beter kijken op 3 tekens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$regex
= '/(.{1})(\1)(\1)/';
?>


Dit wordt allemaal uitgebreid en beter uitgelegd in de tutorial die ik je net gaf. Ik raad je aan die te lezen en dan deze uitleg.
Gewijzigd op 12/02/2011 19:17:26 door Wouter J
 
Pello Mugica-Gonzalez

Pello Mugica-Gonzalez

12/02/2011 19:32:21
Quote Anchor link
Zeer wel bedankt Wouter!

Deze duidelijke uitleg is me zeer gunstig geweest, en ook de tut is zeer goed.
Hier zullen meerdere mensen gebruik van kunnen maken!

Ik test hem nu uit.


Toevoeging op 12/02/2011 19:54:28:

Ik heb hem zonet uitgetest en het blijkt niet te werken..

Weet je wat ik fout doe?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?PHP
        // Anti Speciale tekens
        if( !preg_match("/[A-Za-z0-9\'\"\.:;@!?\)\(]/", $ber) ) {
                   echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;">Je hebt ongeldige tekens gebruikt.<BR><B>Let op:</B> buiten leestekens zijn er geen speciale karakters toegelaten, dit om spam te voorkomen.</div>';
                   echo "<head>
                       <meta http-equiv='refresh' content='3; URL=index.php'>
                       </head>"
;
                
        }

?>
Gewijzigd op 12/02/2011 19:58:07 door Pello Mugica-Gonzalez
 
Wouter J

Wouter J

12/02/2011 20:13:48
Quote Anchor link
Een ? moet je ook met een \ ervoor doen.
 
Pello Mugica-Gonzalez

Pello Mugica-Gonzalez

12/02/2011 20:30:25
Quote Anchor link
Hmm heb het aangepast maar werkt nog steeds niet. Het is gelijk of hij de check gewoon negeert.

Dit is mijn script dan is het wat duidelijker.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?PHP
function postmsg($naam, $ber)
    {

        if(antiflood() == true)
          {

        echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;">Je kunt maar 1 bericht per minuut plaatsen!</div>';
        echo "<head>
            <meta http-equiv='refresh' content='3; URL=index.php'>
            </head>"
;
        exit();
       }

        $naam = mysql_real_escape_string($naam);
        $ber = mysql_real_escape_string($ber);
        
        // Anti Speciale tekens
        if( !preg_match("/[A-Za-z0-9\'\"\.:;@!\?]/", $ber) ) {
                   echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;">Je hebt ongeldige tekens gebruikt.<BR><B>Let op:</B> buiten leestekens zijn er geen speciale karakters toegelaten, dit om spam te voorkomen.</div>';
                   echo "<head>
                       <meta http-equiv='refresh' content='3; URL=index.php'>
                       </head>"
;
                
                exit();
                
        }

        
        // Anti vijfdubbel lettergebruik tekens
        if( preg_match("/(.{1})(\1)(\1)/", $ber) === false ) {
                   echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;"><B>Let op:</B> Je kan slechts 5 maal dezelfde letter in 1 woord gebruiken, dit om spam te voorkomen.</div>';
                   echo "<head>
                       <meta http-equiv='refresh' content='3; URL=index.php'>
                       </head>"
;
                      
                exit();        
        }

        
        // Controleren of er een veld leeg is
        if(empty($naam) || empty($ber) || $naam == "Kies een schuilnaam.")
            {

                       echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;">Alle velden moeten worden ingevuld.<BR>Vergat je uw schuilnaam niet in te vullen?</div>';
                         echo "<head>
                            <meta http-equiv='refresh' content='3; URL=index.php'>
                            </head>"
;
                exit();
            }

            
        // Controleren of het bericht langer is dan 250 karakters
        if (strlen($ber) > 400)
            {

                       echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;">Een bericht mag maximum 400 karakters bevatten.</div>';
                         echo "<head>
                            <meta http-equiv='refresh' content='3; URL=index.php'>
                            </head>"
;
                exit();
            }

            
        // Controleren of het bericht korter is dan 5 karakters
        if (strlen($ber) < 5)
            {

                       echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;">Een bericht moet minumum 5 karakters bevatten.</div>';
                         echo "<head>
                            <meta http-equiv='refresh' content='3; URL=index.php'>
                            </head>"
;
                exit();
            }

        
        // Controleren op scheldwoorden    
        $searchWord = array("kut", "hoer", "loser", "motherfucker", "aars", "viagra", "penis", "kut", "vagina", "aarsridder", "klootzak", "hoer", "zwerver", "dikzak", "dik", "lelijk", "lul", "eikel", "homo", "teringlijer", "fuck", "fuckyou", "rot");
        foreach($searchWord as $word)
        {

         if(strpos($ber, $word) != false) {
                    echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;">Hou het vriendelijk.</div>';
                   echo "<head>
                            <meta http-equiv='refresh' content='3; URL=index.php'>
                            </head>"
;
                exit;
          }
        }

        
                
        // Als alles goed is, naar de database sturen
        $sql = "INSERT INTO shout (naam, bericht) VALUES ('".strip_tags($naam)."', '".strip_tags($ber)."')";
        $res = mysql_query($sql);

      echo '<div style="margin-top: 150px; font-size: 30px; color: #999999;">Je bericht is geplaatst.</div>';
      echo "<head>
            <meta http-equiv='refresh' content='3; URL=index.php'>
            </head>"
;
    }


?>
Gewijzigd op 12/02/2011 20:32:15 door Pello Mugica-Gonzalez
 
Wouter J

Wouter J

13/02/2011 12:36:30
Quote Anchor link
@pello,
Sorry zie nu de fout. Als er iets matched is het spam. Dus je moet niet kijken of preg_match true weergeeft.
Zo ja -> Spam
Zo nee -> Normaal bericht

En nog wat extra's. Met het extraheren van de regex (staat uitgelegd in de tutorial) kun je ook nog zorgen dat de gebruiker ziet welke tekens er verkeerd waren.
Gewijzigd op 13/02/2011 12:37:07 door Wouter J
 
Peter Hunt

Peter Hunt

18/02/2011 22:53:29
Quote Anchor link
Zomaar even een opmerking, er zijn natuurlijk ook geldige woorden met 3x dezelfde letter. Vaak hoort daar dan bijvoorbeeld een trema op, zoals "een reeele kans", maar die wordt nog wel eens achterwege gelaten :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.