get beveiligen met preg_match (Opgelost)
tbsites - 25/08/2007 10:03 (laatste wijziging 25/08/2007 10:05)
Onbekend
Hallo,
Ik heb nu dit:
if( ! preg_match("(5|10|15|20)~" , $_GET['limit'] ) ) { echo 'Het getal moet bestaan uit 5,10,15 of 20!';}
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
marten - 25/08/2007 10:09
Beheerder
Waarom wil je dit in preg_match doen? Veel te omslachtig hiervoor.
<?php
if(ctype_digit($_GET['limit'])) {
if($_GET['limit'] == 5 || $_GET['limit'] == 10 || $_GET['limit'] == 15 || $_GET['limit'] == 20 ||) {
echo 'De GET is goed. GET variabele: ' . $_GET['limit'];
} else {
echo 'Het getal moet bestaan uit 5,10,15 of 20!';
}
} else {
echo 'Het getal moet bestaan uit 5,10,15 of 20!';
?>
<?php
if ( $_GET [ 'limit' ] == 5 || $_GET [ 'limit' ] == 10 || $_GET [ 'limit' ] == 15 || $_GET [ 'limit' ] == 20 || ) {
echo 'De GET is goed. GET variabele: ' . $_GET [ 'limit' ] ; } else {
echo 'Het getal moet bestaan uit 5,10,15 of 20!' ; }
} else {
echo 'Het getal moet bestaan uit 5,10,15 of 20!' ; ?>
tbsites - 25/08/2007 10:11
Onbekend
Doet het niet. Ik krijg geen errors maar de pagina is leeg
Stijn - 25/08/2007 10:14 (laatste wijziging 25/08/2007 10:18)
PHP expert
Let goed op marten (nu wordt je geowned ). Maak gebruik van array Kijk eens naar de volgende code:
<?
$limit = $_GET['limit'];
$allowed = array( 5 , 10 , 15 , 20 );
//controle
if( ! in_array( $limit , $allowed ) ) {
echo 'Het getal moet bestaan uit 5,10,15 of 20!';
} else {
echo $limit;
}
<?
$limit = $_GET [ 'limit' ] ;
$allowed = array ( 5 , 10 , 15 , 20 ) ;
//controle
echo 'Het getal moet bestaan uit 5,10,15 of 20!' ; } else {
}
edit
Je fout zat hem bij je preg_match. Je eindigt met een delemiter maar begint er niet mee. Dit had je geschreven:
preg_match("(5|10|15|20)~" , $_GET['limit'] )
En het moest dit zijn:
preg_match("~(5|10|15|20)~" , $_GET['limit'] )
Damn boukefalos was me voor
tbsites - 25/08/2007 10:19 (laatste wijziging 25/08/2007 10:21)
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)
Stijn - 25/08/2007 10:21
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.
tbsites - 25/08/2007 10:25
Onbekend
Is me gelukt.
Gesponsorde links
Dit onderwerp is gesloten .