login  Naam:   Wachtwoord: 
Registreer je!
 Forum

get beveiligen met preg_match (Opgelost)

Offline tbsites - 25/08/2007 10:03 (laatste wijziging 25/08/2007 10:05)
Avatar van tbsitesOnbekend Hallo,

Ik heb nu dit:

  1. if( ! preg_match("(5|10|15|20)~" , $_GET['limit'] ) ) { echo 'Het getal moet bestaan uit 5,10,15 of 20!';}



Het is dus de bedoeling om alleen 5,10,15 of 20 toe te staan. maar dat werkt niet ik krijg altijd 'Het getal moet bestaan uit 5,10,15 of 20! te zien. weet iemand wat ik fout doe? En nog een vraagje: Als ie goedd is hoe laat je dan de get zien.

8 antwoorden

Gesponsorde links
Offline marten - 25/08/2007 10:09
Avatar van marten Beheerder Waarom wil je dit in preg_match doen? Veel te omslachtig hiervoor.

  1. <?php
  2. if(ctype_digit($_GET['limit'])) {
  3. if($_GET['limit'] == 5 || $_GET['limit'] == 10 || $_GET['limit'] == 15 || $_GET['limit'] == 20 ||) {
  4. echo 'De GET is goed. GET variabele: ' . $_GET['limit'];
  5. } else {
  6. echo 'Het getal moet bestaan uit 5,10,15 of 20!';
  7. }
  8. } else {
  9. echo 'Het getal moet bestaan uit 5,10,15 of 20!';
  10. ?>
Offline tbsites - 25/08/2007 10:11
Avatar van tbsites Onbekend Doet het niet. Ik krijg geen errors maar de pagina is leeg
Offline Stijn - 25/08/2007 10:14 (laatste wijziging 25/08/2007 10:18)
Avatar van Stijn PHP expert Let goed op marten (nu wordt je geowned ). Maak gebruik van array Kijk eens naar de volgende code:

  1. <?
  2. $limit = $_GET['limit'];
  3. $allowed = array( 5 , 10 , 15 , 20 );
  4.  
  5. //controle
  6. if( ! in_array( $limit , $allowed ) ) {
  7. echo 'Het getal moet bestaan uit 5,10,15 of 20!';
  8. } else {
  9. echo $limit;
  10. }


edit

Je fout zat hem bij je preg_match. Je eindigt met een delemiter maar begint er niet mee. Dit had je geschreven:

  1. preg_match("(5|10|15|20)~" , $_GET['limit'] )


En het moest dit zijn:

  1. preg_match("~(5|10|15|20)~" , $_GET['limit'] )


Damn boukefalos was me voor 
Offline Rik - 25/08/2007 10:14
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Fout in jouw eigen script was dat je de delimter op het begin bent vergeten...
  1. if( ! preg_match("~(5|10|15|20)~" , $_GET['limit'] ) ) { echo 'Het getal moet bestaan uit 5,10,15 of 20!';}
Offline tbsites - 25/08/2007 10:19 (laatste wijziging 25/08/2007 10:21)
Avatar van tbsites Onbekend @Boukefalos: het doet het maar bijv. 100 is nu ook toegestaan dus alle cijfers(behalve 1) zijn toegestaan en letters niet. en ik wil dat de get een arrey word dus dat hij op meerder plekken beveiligd word(als hij goed is)
Offline Stijn - 25/08/2007 10:21
Avatar van Stijn PHP expert
tbsites schreef:
@Boukefalos: het doet het maar bijv. 100 is nu ook toegestaan dus alle cijfers(behalve 1) zijn toegestaan en letters niet.
Maak dan gebruik van mijn array oplossing, makkelijker dan die regulaire expressies en sneller in parsen en uitbreiding.
Offline Rik - 25/08/2007 10:21 (laatste wijziging 25/08/2007 10:23)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Eigenlijk moet je al die bedragen dan ook nog eens apart tussen haakjes zetten...

Ik zou voor Stijn's oplossing gaan, dat werkt veel makkelijker.  
Offline tbsites - 25/08/2007 10:25
Avatar van tbsites Onbekend Is me gelukt.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s