From: Sancar Saran (saran@sim.com.tr)
Date: Sun 22 Jun 2003 - 20:35:44 EEST
Sanirim iyi kotu birseyler yaptim. Asagidaki fonksiyon kodu, get veya
post edilmis degerleri kontrol etmek icin kullanilabilir.
Unutmadan, bu fonkisyon get veya post ettiginiz degerleri array olarak
gonderdiyseniz ise yarar. Soyleki
input type="text" name="hede[adi]"
input type="text" name="hede[soyadi]"
veya
index.php?hede[adi]=sancar&hede[soyadi]=saran
gibi.
Niye boyle birsekilde?
Icerisinde cok fazla eleman olan formlar yaparken veya cok fazla secenek
olan query string gonderdiginizde degerleri tek tek GET veya POST
supergloballerinden almak adami yoruyor.
Nasil Kullanilir.
$hede = do_var("hede"); bu hicbir kontrol yapmadan size post veya get
degelerini dondurur.
$hede = do_var("hede",'1'); bu standart kontrolu uygular [^A-Za-z0-9_]
$hede = do_var("hede",'1',"antin|kuntin|osman|mehmet"); bu sekilde
sadece belirtilen hede elemanlari kontrol edilir.
$hede = do_var("hede",'1','',"regexpatern"); bu sekilde tum hede
elemanlari sizin vermis oldugunu paterne gore kontrol edilir
$hede = do_var("hede",'1',"antin|kuntin|osman|mehmet","regexpatern"); bu
sekilde belirtilen hede elemanlari verilen paterne gore kontrol edilirler.
Niye Copyright falan fisman var. Bu benim yazmaya calistigim CMS sistemi
icinde kullandigim bir fonksiyon. Yarin triviri olmasin diye..
Kolay gelsin. (iyi de lan ben niye kendi sorumu kendim cevapliyorum,
delimiyim neyim ?)
<?php
/*
PHP?NET: Next Generation Web Site Generator Library.
(C) 2000 - 2003 By Sancar Saran
This software is dual licensed using BSD-Style and LGPL.
Where there is any discrepancy, the BSD-Style license will
take precedence. This means you can use it in proprietary
and commercial products.
*/
function do_var($strVar,$strCheck=0,$strKeys=0,$strPattern=0)
{
$arrVarG = $_GET["$strVar"];
$arrVarP = $_POST["$strVar"];
$arrRet = array_merge($arrVarG,$arrVarP);
if(!$strPattern)
{
$strPattern = "[^A-Za-z0-9_]";
}
if($strCheck === "1")
{
@$arrKeys = array_keys($arrRet);
@$intSize = sizeof($arrRet);
if($strKeys)
{
$arrCKeys = explode("|",$strKeys);
$intCSize = sizeof($arrCKeys);
for($i=0;$i<$intSize;$i++)
{
for($z=0;$z<$intCSize;$z++)
{
if($arrKeys[$i] == $arrCKeys[$z])
{
if(preg_match("/$strPattern/",$arrRet[$arrCKeys[$z]]))
{
die("<div style=\"background-color:red; color:white;
font-weight:bold;\">\n SQL INJECTION DETECTED. SCRIPT EXECUTION
STOP<br></div>\n");
}
}
}
}
}
else
{
for($i=0;$i<$intSize;$i++)
{
if(preg_match("/$strPattern/",$arrRet[$arrKeys[$i]]))
{
die("<div style=\"background-color:red; color:white;
font-weight:bold;\">\n SQL INJECTION DETECTED. SCRIPT EXECUTION
STOP<br></div>\n");
}
}
}
}
return $arrRet;
}
?>
Sancar "Delifisek" Saran.