4e4en Posted December 4, 2004 Report Share Posted December 4, 2004 (edited) Man būtu vajadzīgs koda paraugs kas atfiltrē nost visus simbolus neieskaitot ciparus no 0 līdz 9 un manējais ko es uztaisīju ir šitāds, bet manuprāt viņš nav drošs un var saturēt kādu caurumu piemēram XSS vai kādu citu un kods ir te function filter($data) { $data=ereg_replace("[a-zA-Z]","",$data) $data=ereg_repalce("<>{}[];:'\"\\/|+=_-)(*&^%$#@!~`","",$data); $data=ereg_repalce(" ,.?","",$data); return $data; } un izmanto šādi: $id=filter($_GET['id']); Vai kāds var ieteikt kādu citu variantu kur atļauj tikai ciparus no 0 līdz 9 un PILNĪGI visus pārējos atfiltrē?? Edited December 4, 2004 by 4e4en Link to comment Share on other sites More sharing options...
Aleksejs Posted December 4, 2004 Report Share Posted December 4, 2004 Regulārās izteiksmes galīgi nav mana stiprā puse, bet, ja vajag tikai ciparus, tad: ereg_replace('![0-9]','',$data); Link to comment Share on other sites More sharing options...
bubu Posted December 5, 2004 Report Share Posted December 5, 2004 $data = preg_replace('/[^\d]/', '', $data); Link to comment Share on other sites More sharing options...
Digital-X Posted December 8, 2004 Report Share Posted December 8, 2004 ja vajag ciparus izmanto intval() Link to comment Share on other sites More sharing options...
Venom Posted December 9, 2004 Report Share Posted December 9, 2004 kas ir XSS? Link to comment Share on other sites More sharing options...
bubu Posted December 9, 2004 Report Share Posted December 9, 2004 ja vajag ciparus izmanto intval() Tas neko nefiltrēs. intval() mēģinās pārkonvertēt doto stringu uz integeru, bet ja būs kāds burts pa vidam, tad nekas nesanāks. Link to comment Share on other sites More sharing options...
Venom Posted December 9, 2004 Report Share Posted December 9, 2004 (edited) ā) - stringam jābūt ciparam, e.g. $_POST['x']=='23', pārbaudāms ar if ($_POST['x']*1) (ar izņēmumu, ja tas var būt =='0', || $_POST['x']==='0') jo ja viens no multiplikātoriem būs strings, tas tiks pārkonvertēts par 0 (būtībā, var arī plusēt 0) bē) jādabon vienalga kādus ciparus no stringa, e.g. ja pārbauda seriāņiku: $len=strlen($_POST['x']); $number=''; while(--$len>-1) if ($_POST['x']{$len}==0 || $_POST['x']{$len}*1) $number.=$_POST['x']{$len}; Edited December 9, 2004 by Venom Link to comment Share on other sites More sharing options...
Aleksejs Posted December 9, 2004 Report Share Posted December 9, 2004 (edited) Es arī sākumā gribēju ieteikt intval, bet problēma rodās, ja jāapstrādā, piemēram, 30 simbolu garas ciparu virknes - tādā gadījumā intval nedos pareizu rezultātu. vai šāda problēma ir aktuāla šī jautājuma autoram, tas jau ir cits jautājums. P.S. XSS laikam domāts Cross Site Scripting Edited December 9, 2004 by Aleksejs Link to comment Share on other sites More sharing options...
Recommended Posts