Beste leden,
Ik heb een contactformulier en deze wil ik graag goed beveiligen.
Nou heb ik op naam een controle staan. Hierin wil ik ook graag hoofdletter (A-Z), punten (.), spaties ( ) en streepjes (-) accepteren. Iemand een idee hoe ik dit het beste kan toevoegen aan deze code?
Bedankt!PHP Code:
if(isset($input) && trim($input) != '' && preg_match('/^[a-z\s]{5,}$/', $input))
Verder heb ik ergens gelezen dat je een contactformulier heel gemakkelijk spamvrij maakt door een onzichtbaar veld te creeren. Iemand een voorbeeld of code hiervan? Het zou via CSS onzichtbaar gemaakt kunnen worden. Iemand een idee?
Bedankt!
- PHP controle
-
16-02-2010, 12:21 #1
- Berichten
- 940
- Lid sinds
- 16 Jaar
PHP controle
-
-
16-02-2010, 12:46 #2
- Berichten
- 257
- Lid sinds
- 15 Jaar
Onzichtbaar veld maken: neem een tekst-veld of text area. Geef die een 'name' die voor de hand ligt zoals 'message' en hang er een class of id aan.Vervolgens maak je in een externe css file voor die class of id het veld onzichtbaar met display:none en visibility:hidden.In je PHP controleer je als het formulier gepost wordt dat het veld wel leeg is. Zo niet dan is het waarschijnlijk niet door een persoon ingevuld en negeer je het formulier.
Aanvullend bericht:
https://www.sitedeals.nl/scripting-ph...ntactform.htmlLaatst aangepast door Ruud van der Velden : 16-02-2010 om 12:52 Reden: Automatisch samengevoegd.
-
16-02-2010, 16:57 #3
- Berichten
- 940
- Lid sinds
- 16 Jaar
Ruud bedankt! Ik heb een form genaamd 'note' aangemaakt. Message was al bezet in het script. Hoe kan ik nu controleren op inhoud? Het moet dus zo zijn dat wanneer er iets staat er een error komt of niet? Dus wat er nu staat alleen dan omgekeerd? Maar hoe doe ik dat?
PHP Code:/**
* Validate the message input. Check if its NOT empty.
*
* @param string $name
* @param string $input
* @param string $message
* @return bool
*/
public function isEmpty($note = '')
{
if(isset($input) && trim($input) != '')
{
return true;
}
else
{
$this -> setErrorMessage($note);
return false;
}
}
-
16-02-2010, 17:04 #4
- Berichten
- 336
- Lid sinds
- 17 Jaar
Je doet te lastig:
PHP Code:if (empty($_POST['note'])){
//Hier je true code
} else{
//hier false code
}
-
16-02-2010, 17:21 #5
- Berichten
- 297
- Lid sinds
- 16 Jaar
-
16-02-2010, 17:22 #6
- Berichten
- 991
- Lid sinds
- 16 Jaar
Dit is een onzichtbaar veld:
Code:<input type="hidden" name="hidden" />
-
16-02-2010, 17:29 #7
- Berichten
- 587
- Lid sinds
- 16 Jaar
@ Jeroen, Sam: De functie van Joost is juist nog net iets efficiënter dan gewoon empty().
- Dus dat hij te moeilijk doet, is onterecht :)
Het is gewoon juister aangezien zijn code ook spaties in overweging neemt
wanneer een gebruiker een spatie indrukt in een textveld is dit veld niet leeg.
- Maar een spatie is waarschijnlijk niet de verwachte invoer.
-
16-02-2010, 17:39 #8
- Berichten
- 297
- Lid sinds
- 16 Jaar
@ Jeroen, Sam: De functie van Joost is juist nog net iets efficiënter dan gewoon empty().
- Dus dat hij te moeilijk doet, is onterecht :)
Het is gewoon juister aangezien zijn code ook spaties in overweging neemt
wanneer een gebruiker een spatie indrukt in een textveld is dit veld niet leeg.
- Maar een spatie is waarschijnlijk niet de verwachte invoer.
-
16-02-2010, 17:41 #9
- Berichten
- 587
- Lid sinds
- 16 Jaar
inderdaad, de bedoeling was goed - de syntax iets minder ;-)
-
16-02-2010, 19:19 #10
- Berichten
- 940
- Lid sinds
- 16 Jaar
Heren,
Bedankt voor de correcties maar ik zal eerlijk zijn, ik ben een huidig script aan het upgraden. Ik heb dus geen echte PHP kennis maar kan van een script wel het een en ander aanpassen.
Als het efficiënter kan dan graag maar de zaken die er nu genoemd zijn zeggen mij niet veel. Hier je true code wordt er gezegd. Ik heb geen idee wat daar neer te zetten.. Zouden jullie iets meer informatie willen geven? Het gaat er mij dus om alle karakters te blokken. Spatie zal niet snel gebeuren maar een mens zal er nooit een spatie neerzetten dus blokken zou ik zeggen.
Hoe ik het dus dacht is dit
PHP Code:/**
* Validate the message input. Check if its NOT empty.
*
* @param string $name
* @param string $input
* @param string $message
* @return bool
*/
public function isEmpty($note = '[B]HIER[/B]')
{
if(isset($input) && trim($input) != '')
{
return true;
}
else
{
$this -> setErrorMessage($note);
return false;
}
}
@ Tom, het moet via CSS anders snapt de spamrobot het nog. Dat is de bedoeling niet. Het moet echt hidden zijn.
-
16-02-2010, 19:43 #11
- Berichten
- 257
- Lid sinds
- 15 Jaar
Inderdaad, een veld van type=hidden is absoluut niet wat hier bedoeld wordt. Een spambot zal nooit een dergelijk veld proberen te wijzigen omdat dat nooit verwacht wordt. Kijk nog maar eens goed naar mijn voorbeeld.
Ik begrijp je bedoeling niet met de input parameter van je functie isEmpty(). Wat achter het =-teken staat is een default waarde voor het geval je geen parameter mee zou geven bij de aanroep. Volstrekt nutteloos in dit geval lijkt me.
Maak het ook niet moeilijker dan het is: je hoeft alleen maar te checken dat die variabele $_POST['note'] leeg is (als je het betreffende veld 'note' noemt). Een check op $_POST['note'] == '' zou voldoende moeten zijn. Spaties e.d. hoef je hier allemaal geen rekening mee te houden. Alles anders dan '' betekent gewoon ongeldig dus form afwijzen.
-
16-02-2010, 23:09 #12
- Berichten
- 940
- Lid sinds
- 16 Jaar
@ Ruud, zou je dit iets concreter kunnen maken? Hoe kan ik dit in mijn huidige script plakken?
Het bovenste stuk heb ik zelf niet bedacht? Dit is de check op het veld 'naam'. Deze heb ik iets aangepast en kwam tot dit resultaat. Hoe kan ik dit aanpassen zodat het de juiste check bevat?
-
17-02-2010, 09:12 #13
- Berichten
- 257
- Lid sinds
- 15 Jaar
@ Ruud, zou je dit iets concreter kunnen maken? Hoe kan ik dit in mijn huidige script plakken?
Het bovenste stuk heb ik zelf niet bedacht? Dit is de check op het veld 'naam'. Deze heb ik iets aangepast en kwam tot dit resultaat. Hoe kan ik dit aanpassen zodat het de juiste check bevat?
Staat een concreet voorbeeld van mij incl. html, css en php. Dit zou je gewoon in je eigen code moeten kunnen implementeren als je iets van PHP kent.
-
17-02-2010, 10:43 #14
- Berichten
- 394
- Lid sinds
- 16 Jaar
-
17-02-2010, 10:56 #15
- Berichten
- 297
- Lid sinds
- 16 Jaar
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic