login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Teken verbieden

Offline Voldemort - 03/04/2007 17:34 (laatste wijziging 03/04/2007 17:43)
Avatar van VoldemortPHP ver gevorderde Hoi iedereen,

Ik zou graag het teken \ willen blokkeren uit een string. Als ik dit doe:

  1. <?php
  2. if(strpos($_GET['var'],'\\') !== FALSE)
  3. echo 'Het teken komt voor';


en in het url staat

Citaat:
?var=


Dan zal deze code niet werken. Als er in het url staat:

Citaat:
?var=\


Werkt ze wel.

Citaat:
?var=\


Niet

Hoe kan ik dit werkende krijgen?

4 antwoorden

Gesponsorde links
Offline Grayen - 03/04/2007 17:52 (laatste wijziging 03/04/2007 17:57)
Avatar van Grayen PHP ver gevorderde
  1. <?php
  2. if(strpos($_GET['var'],"\\") !== FALSE)
  3. echo 'Het teken komt voor';


Hiervoor moet je dubbele quotes gebruiken, omdat bij enkele quotes het door php wordt gelezen zoals het letterlijk staat. Een goed voorbeeld hiervan is

  1. <?php
  2. $var = 'hallo';
  3. echo 'pietje zegt $var'; // output: pietje zegt $var
  4. echo "pietje zegt $var"; // output: pietje zegt hallo


Bij de eerste echo zal php het lezen zoals het er letterlijk staat. Maar bij de tweede waar dus dubbele quotes omheen staan, wordt de string waarde eerst nog gecontroleerd of er variables, backslashes (en waarschijnlijk nog wel meer dingen) in staan. Daarom zijn dubbele quotes ook iets minder snel, maar dit verschil is zo gigantisch klein dat je er niks van zal merken.
Offline ikkedikke - 03/04/2007 17:53
Avatar van ikkedikke PHP expert probeer het eens met dubbele quotes om die \\ in strpos.
Offline delta_004 - 03/04/2007 18:22
Avatar van delta_004 Onbekend ik denk dat preg_match('/\/', $string); beter is...
Offline Voldemort - 03/04/2007 18:25 (laatste wijziging 03/04/2007 18:29)
Avatar van Voldemort PHP ver gevorderde De fout lag elders in m'n script (andere pagina), dat is nu opgelost, nu heb ik deze code:

  1. <?php
  2. if(strpos($value,"\\") !== FALSE || strpos($value,"+") !== FALSE)
  3. echo '1 van de tekens komen voor.';


Alleen als er het url is:

?ding=+

En dan echo ik $_GET['ding'], dan komt er niet +, maar niks. Waarom is dit? Hoe valt het op te lossen?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.215s