MultiServis.Net //PHP El Kitabı

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>

Bazi ozel karekterlerin ('," gibi) guvenli bir sekilde kullanilmasi... Yazar: Serkan Tarih: 01/03/02

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 &quot;Hamlet&quot; 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

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>