Preg_match Anti Spam POST

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

JAVA Programmeur

Bedrijfsomschrijving Functieomschrijving We zoeken per direct enthousiaste software engineers die ons team komen versterken.We werken in DevOps teams met een sterk gevoel voor verantwoordelijkheid. Er wordt nauw samengewerkt met ons Business analyse team (BAT), met onze uitvoerende medewerkers en met de DevOps teams onderling binnen het domein. Het liefst hebben we veel en vaak interactie met onze interne en externe eindgebruikers om zo de juiste dingen te maken. We werken multidisciplinair in een dynamische omgeving. Achtergrond opdracht De Businesseenheid Examens is verantwoordelijk voor de logistiek van de staatsexamens Voortgezet (speciaal) onderwijs, Nederlands als 2e taal en schoolexamens. In het kader

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Voor een leuke opdrachtgever zijn wij op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Hoofddorp. Binnen deze functie vervul je een onsite learning programma waarbij je aan de slag gaat met PHP en Laravel. Hierbij ben je voornamelijk werkzaam op verschillende klantlocaties en is het jouw taak om hun wensen en eisen

Bekijk vacature »

Full stack developer Node.js, React Remote

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Front-End React Developer

As a Front-End React Developer you improve the user-experience of our web applications for your colleagues in Coolblue. How do I become a Front-End React Developer at Coolblue? As a Front-End React Developer you are responsible for developing user interface components and implementing them using React.js concepts and workflows. You work with the UX Designer and get energy from coming up with creative solutions and present these within the team. During the day you gather and welcome feedback on your technical and soft skills. Would you like to become a Front-End React Developer at Coolblue? Read below if the job

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Traineeship Front-end developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

Ervaren PHP developer gezocht!

Functie Het team bestaat inmiddels uit zo’n 25 collega’s met specialisten op het gebied van development, data(analyse), marketing, infrastructuur en finance. Ze hebben een supermodern pand en bieden hiernaast veel vrijheid en verantwoordelijkheid. Ze doen er alles aan om jou op te gemak te stellen. Zo kun je je eigen werkplek inrichten naar persoonlijke wensen, maar gaan ze bijvoorbeeld ook jaarlijks met elkaar wintersporten en zijn er andere leuke uitjes. Als onderdeel van één van de scrumteams ga je aan de slag, samen ben je medeverantwoordelijk voor het doorontwikkelen van hun business applicatie waar het traffic team dagelijks mee werkt.

Bekijk vacature »

Front end developer React Sportgames

Functie Als Front end developer ga jij aan de slag bij een gave en bekende organisatie op het gebied van sportgames. Jij gaat aan de slag in een scrumteam met 6 developers die gepassioneerd en actief bezig zijn om spelers kwalitatieve en mooie spelervaringen aan te bieden. Als scrumteam werken ze in drie wekelijkse sprints en begin je iedere ochtend met een stand-up. Als Front end developer werk jij bij deze organisatie voornamelijk met Javascript, html, css en React. Er wordt veel gebruikt gemaakt ook van C#, Docker en Kubernetes. Het team hecht veel waarde aan het leveren van hoogwaardige

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

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

25/11/2024 15:05:41
 
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.