Kullanici'lardan
alinan bazi verilerin icinde gecen "(cift tirnak),' (tek tirnak)
gibi karekterlerin PHP tarafindan elimine edilmesi/ guvenli
hale getirilmesi islemi
Problem : Bazi karekterlerin goz ardi edilmesini veya
pasifize edilmesini istiyorsunuz.
Cozum: addslashes (), veya quotemeta () fonksiyonlarindan
birini kullanabilirsiniz.
Ornek :
Not: $guvenli_ifade derken demek istedigimiz SQL veritabanlari
ile calisirken,veriyi tabloya eklerken saglanacak guvenlik
anlaminda dusunulmesi gereklidir.Yaptigimiz islem kisaca bazi
veritabanlarinin ozel islem yaptigi karekterleri,veritababnina
gondermeden once bazi PHP fonksiyonlari ile elimine etmek,onlerine
basitce bir \ isareti eklemektir.
<?php
$ifade = "Serkan'in bacagi, yavas yavas iyilesiyor degil
mi?";
$guvenli_ifade = addslashes ($ifade);
//$ifade degiskenin sakladigi deger artik "Serkan\'in bacagi
yavas yavas iyilesiyor degil mi?"olacaktir...
$ifade = "Oktay $ dolarlarlari cok sever,soyleyin dogru
degilmi?";
$gozardi_edilmis_ifade = quotemeta ($ifade);
//$ifade degiskenin sakladigi deger "Oktay \$ dolarlari
cok sever,soyleyin dogru degilmi?" olacaktir...
?>
SQL sorgulari ile veritabaninda- veri islemleri yapilirken-
genellikle '," gibi karekterlerin veri icinde bir sekilde
pasifize hale getirilmesi gereklidir.Bu karekterler bazi veritabani
sistemleri icin ozel anlamlar ifade ederler.PHP'nin bu konuda
bize onerdigi addslashes () bu is icin cok kullanislidir.
quotemeta () fonksiyonu ile reg.exp islemleri yapmadan
once veri icerisindeki ozel karekterler elimine edilmektedir.Boylece
reg.exp islemlerimizin bizim istemedigimiz sonuclari dondurmesi
engellenir.
Not: Eger perl-uyumlu reg.exp kullaniyorsaniz mutlaka preg_quote
() fonksiyonu kullanilmalidir.
PHP ayni zamanda URL sikistirma ve cozme sistemlerini de desteklemektedir.urldecode
() ve urlencode () fonksiyonlari ile bu islemleri
asagidaki gibi gerceklestirebiliriz:
<?php
$ifade = "serkan'in bacagi yavas yavas iyilesiyor";
$ifade = urlencode ($ifade);
/*
Bu durumda artik $ifade degiskeni icinde zoyle bir veri
saklaniyor:
"serkan%27in+bacagi+yavas+yavas+iyilesiyor"
*/
$ifade = urldecode ($ifade);
/*
Simdi $ifade degiskeni icinde saklanan veri ilk haline dondu:
" serkan'in bacagi yavas yavas iyilesiyor"
*/
Bir baska bize gerekli elimine etme teknigi ise HTML etiketleri
icin kullanilan htmlspecialchars () fonksiyonudur.Ornek
vermek istersek :
<?php
$ifade = 'Shakespeare'in "Hamlet" isimli calismasi mukemmel
sayilabilir.';
print htmlspecialchars ($ifade);
?>
Bu programin ekrandaki ciktisi su sekilde olacaktir. "Shakespeare'in
"Hamlet" isimli calismasi mukemmel sayilabilir."
Yanlizca &,",<, ve > karekterleri degilde butun
HTML etiketlerinin bu sekilde elimine edilmesi isteniyorsa
htmlentities () fonksiyonunu kullanilmalidir.
Serkan Hadi Ceylani
serkan@turk-php.com
|