TÜRKÇE KARAKTER KODU SORUNU
Hemen Her Yazılımcı Bu Sorunla Karşılaşır Hemde Bir Çok Defa Ne Kadar Çözümlese Bile ;)
Bu Sorunum Veritabanından Biçimsizce gelen(Soruişareti ,Çeşitli Şekiller vs.) Bazi karakterleri Düzeltmemizi gerektirdir yaklaşık 4.5 yıldır PHP ile Çalışıtorum ve halen yabancı kaldığım bircok kod var olduğunu keşfettim bunlardan biride iconv adlı bir fonksiyon Bu Fonsiyon Sayesinde Karakter Kodlarını Dilediginizce Oynamalar yapa bilirsiniz UTF-8 den ISO... Formatına veya Windows-1254 Formatına Dönüşüm Sağlaya bilirsiniz Basit Bir Örnek
ÇÖZÜM:
Fonksiyonun Kullanım Şekli:
önce bir HTML metin Editörü Araştırdık Ve Bu redactor.js Keşfettik Sade ve Kullanışlı bir Yazılım olması birde Basit Bir Şekilde Entegre Olanagi İşimizi Kolaylaştırdı Fakat Bir Şeyi Atladık Php Mysql Sorguları Bu Editor Sayesinde Html Formatında sorgu olarak Çalışıtordu ve Bilinir ki Html bol tırnak işareti içeren bir Dildir
Örnegin:
<a href='http://site.com'>Örnek..</a>
Burdaki Kırmızı İşarelti Tırnaklar Arka plandaki Sorgularımızı Surekli Bölüyordu
Şöyleki:
ÇÖZÜM:
Fonksiyonun Kullanım Şekli:
<?php echo iconv("ISO-8859-9", "UTF-8",$metin_veya_degisken); ?>WYSIWYG HTML EDİTÖR ENTEGRASYONU
önce bir HTML metin Editörü Araştırdık Ve Bu redactor.js Keşfettik Sade ve Kullanışlı bir Yazılım olması birde Basit Bir Şekilde Entegre Olanagi İşimizi Kolaylaştırdı Fakat Bir Şeyi Atladık Php Mysql Sorguları Bu Editor Sayesinde Html Formatında sorgu olarak Çalışıtordu ve Bilinir ki Html bol tırnak işareti içeren bir Dildir
Örnegin:
<a href='http://site.com'>Örnek..</a>
Burdaki Kırmızı İşarelti Tırnaklar Arka plandaki Sorgularımızı Surekli Bölüyordu
Şöyleki:
<?php
// Yukarıdaki örnek Html Kodumuz Bir Değişkene Atalım
$metin="<a href='http://site.com'>Örnek..</a>";
//bir MySQL Sorgusu çaliştıralım( MySql e Bağlandığımizi Varsayarak)
mysql_query('INSERT INTO tablo values("$metin")');
?>
Yukardaki Kod parcası Çalıştıgında PHPMyAdmin'de Şöyle bir hata Dönüşü olacaktır
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'http://site.com'>Örnek..</a>', 'sdasd', 'adasd')' at line 1
Gibi Bir Hata ile Karşılaşırız
ÇÖZÜM:
Bu Sorunu Çozmek için İse
mysql_real_escape_string() Fonksiyonu keşfetim bu fonksiyon sayesinde Tırnak işaretlerinin önüne slash (/) karakterı atıyor ve sorgu bütünlüğünü koruyor
mysql_real_escape_string() Fonksiyonu keşfetim bu fonksiyon sayesinde Tırnak işaretlerinin önüne slash (/) karakterı atıyor ve sorgu bütünlüğünü koruyor
Örneğin:
<?php
$metin="<a href='http://site.com'>Örnek..</a>";
iconv("UTF-8", "ISO-8859-9//TRANSLIT",mysql_real_escape_string("$metin"));
?>
Şeklinde Kullanıyoruz.
SON OLARAK SQL ACIKLARI(SQL INJECTİON)
yazılımcı her nekadar kodbilgisine güvensede böcekler sürekli Bu açıklar peşindedir GoogleBotlarbile İstemedende Olsa Açıklara sızıp Zararlar Verebiliyor
Bu tür Açıkların Genel Sebebi $_GET Değişkeninden Kaynaklanıyor Mesela
site.com?sayda_id=1
dendiğinde burda Arka planda
$_GET['sayfa_id'] dizesine Bir Değer Gönderiliyor Bizde Bu değeri Php Kodlarımızda Okuttuğumuzdan Büyük Bir Açık veriyoruz
Orneğin :
<?php
$id=$_GET[sayfa_id]; //Değer 1 olsun
mysql_query("Select *from tablo where id='$id'); //Yani Select *from tablo where id='1'
?>
Birde Zararli Bir Vatandaş Veya Bot Yazılım tarafından Kullanıldıgında
site.com?sayda_id=/1/' AND Delete from tablo
(site.com/?sayda_id=%271/%27%20AND%20Delete%20from%20tablo)
diye çalıştırdıgında kodumuz bu şekli alacaktır
<?php
$id=$_GET[sayfa_id]; //Değer /1/' AND Delete from tablo
mysql_query("Select *from tablo where id='$id');
//Yani Select *from tablo where id='/1/' AND Delete from tablo'
?>
Şeklinde Değişiklik olacaktır
Buda Bu tablomuz için Sorunlara Neden Olacaktır
ÇÖZÜM
Çözüm Çok Basıttir Eger Gelen Değişken Bir tamsayı ise örenk deki gibi Tamsayı kısmını okuturuz Bunu intval() Fonksiyonuyla Yapabiliriz
Örnegin
1ada23s değerli bir değişkenimiz olsun bu fonsiyona sokalım
intval("1ayda23n")
Çıktı:
123
şeklinde olur
Busayede Gereksiz Karakterler Ayıklanır ve Sağlıklı sorgu gercekleştırılır.
PROJEMİZİN SONHALİNE ULAŞABİLİRSİNİZ
http://kanserlemucadele.tk/
SON OLARAK SQL ACIKLARI(SQL INJECTİON)
yazılımcı her nekadar kodbilgisine güvensede böcekler sürekli Bu açıklar peşindedir GoogleBotlarbile İstemedende Olsa Açıklara sızıp Zararlar Verebiliyor
Bu tür Açıkların Genel Sebebi $_GET Değişkeninden Kaynaklanıyor Mesela
site.com?sayda_id=1
dendiğinde burda Arka planda
$_GET['sayfa_id'] dizesine Bir Değer Gönderiliyor Bizde Bu değeri Php Kodlarımızda Okuttuğumuzdan Büyük Bir Açık veriyoruz
Orneğin :
<?php
$id=$_GET[sayfa_id]; //Değer 1 olsun
mysql_query("Select *from tablo where id='$id'); //Yani Select *from tablo where id='1'
?>
Birde Zararli Bir Vatandaş Veya Bot Yazılım tarafından Kullanıldıgında
site.com?sayda_id=/1/' AND Delete from tablo
(site.com/?sayda_id=%271/%27%20AND%20Delete%20from%20tablo)
diye çalıştırdıgında kodumuz bu şekli alacaktır
<?php
$id=$_GET[sayfa_id]; //Değer /1/' AND Delete from tablo
mysql_query("Select *from tablo where id='$id');
//Yani Select *from tablo where id='/1/' AND Delete from tablo'
?>
Şeklinde Değişiklik olacaktır
Buda Bu tablomuz için Sorunlara Neden Olacaktır
ÇÖZÜM
Çözüm Çok Basıttir Eger Gelen Değişken Bir tamsayı ise örenk deki gibi Tamsayı kısmını okuturuz Bunu intval() Fonksiyonuyla Yapabiliriz
Örnegin
1ada23s değerli bir değişkenimiz olsun bu fonsiyona sokalım
intval("1ayda23n")
Çıktı:
123
şeklinde olur
Busayede Gereksiz Karakterler Ayıklanır ve Sağlıklı sorgu gercekleştırılır.
PROJEMİZİN SONHALİNE ULAŞABİLİRSİNİZ
http://kanserlemucadele.tk/