Oca 28th, 2009
yazar Zihni.
Javascripteki ayrılmış kelimeler(reserved words), button ismi ve fonksiyon olarak kullanıldığında çatışma(collision) meydana geliyor.
Hata Mesajı:
1
| this.form.submit is not a function |
“Submit” metodunu kullandığım yer:
1
| <select onchange="this.form.submit();"> |
Buton adı olarak “submit” kulladığım yer:
1
| <input type="submit" name="submit" value="Ekle"> |
Buton adını “submit”ten başka bir adla, örneğin “ekle” olarak değiştirdiğimde sorun düzeliyor.
1
| <input type="submit" name="ekle" value="Ekle"> |
Kategori: Document Object Model, PHP.
Etiketler: çarpışma · collision
Oca 25th, 2009
yazar Zihni.
Veritabanına gönderilen her bir değişken mysql_real_escape_string()
işlevinden geçirilerek sql enjeksiyonlarına karşı önlem alınabilir.
Bu işlev veritabanları için özel anlamı olan karakterleri escape-kurtarma işlemine tabii tutar,
bu karakterlerden bazıları: \n, \r, \, ‘, ”
Aşağıdaki gibi kullanıcı adı ve şifre alanlarından oluşan bir giriş formumuz olsun:
1
2
3
4
5
6
7
8
9
10
11
12
| <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>mysql_real_escape_string</title>
</head>
<body>
<form name="form1" action="" method="post">
Kullanıcı adı:<input type="text" name="kullanici_adi" value="" /> <br />
Şifre<input type="password" name="sifre" value="" /> <br />
<input type="submit" value="gönder" name="gonder" /></div>
</body>
</html> |
Kullanıcının formdan aşağıdaki bilgileri gönderdiğini varsayalım.
1
2
| $_POST['kullanici_adi'] = 'zihni';
$_POST['sifre'] = "' OR ''='"; |
Kullanıci adi ve sifre verilerinin veritabanında olup olmadığını kontrol edelim
1
2
3
4
5
6
7
8
| <?php
$sorgu = "SELECT * FROM kullanicilar
WHERE kullanici_adi='{$_POST['kullanici_adi']}' AND sifre='{$_POST['sifre']}'";
$sonuc = mysql_query($sorgu) or die(mysql_error());
$satir = mysql_fetch_array($sonuc);
echo $satir['kullanici_adi'];
?> |
mysql’e gönderilen sorgu aşağıdaki gibi olur:
1
| SELECT * FROM kullanicilar WHERE kullanici_adi='zihni' AND sifre='' OR ''='' |
Görüldüğü gibi sifre geçersiz olsa bile sorgu sonucu başarılı olur.
Eğer formdan gelen bilgileri mysql_real_escape_string() işlevinden geçirdikten sonra veritabanına gönderirsek:
1
2
3
4
5
6
7
8
9
10
11
| <?php
$sorgu = sprintf("SELECT * FROM kullanicilar
WHERE kullanici_adi='%s' AND sifre='%s'",
mysql_real_escape_string($_POST['kullanici_adi']),
mysql_real_escape_string($_POST['sifre']) );
$sonuc = mysql_query($sorgu) or die(mysql_error());
$satir = mysql_fetch_array($sonuc);
echo $satir['kullanici_adi'];
echo $sorgu;
?> |
mysql’e gönderilen sorgu aşağıdaki gibi olur ve bir sonuç döndürmez.
1
| SELECT * FROM kullanicilar WHERE kullanici_adi='zihni' AND sifre='\' OR \'\'=\'' |
Kategori: PHP.
Etiketler: güvenlik · mysql_real_escape_string · sql enjeksiyon
Oca 21st, 2009
yazar Zihni.
Örneğin, aşağıdaki gibi mysql Date türünde bir stringimiz olsun.
2009-06-20
Bunu aşağıdaki biçimde göstermek isteyelim.
20 Haziran 2009 , Cumartesi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| function tarihBicimle($girdi)
{
global $aylar,$gunler;
preg_match("/([0-9]{4})-([0-9]{2})-([0-9]{2})/",$girdi,$eslesme);
$yil = $eslesme[1];
$ay = intval($eslesme[2]);
$gun = $eslesme[3];
$gunMetin = $gunler[date("w",mktime(0,0,0,$ay,$gun,$yil))];
$tarih=$gun.' '.$aylar[$ay].' '.$yil .' , '.$gunMetin;
return $tarih;
}
$aylar = array(1=>"Ocak",2=>"Şubat",3=>"Mart",4=>"Nisan",5=>"Mayıs",6=>"Haziran",7=>"Temmuz",8=>"Ağustos",9=>"Eylül",10=>"Ekim",11=>"Kasım",12=>"Aralık");
$gunler = array(0=>"Pazar",1=>"Pazartesi",2=>"Salı",3=>"Çarşamba",4=>"Perşembe",5=>"Cuma",6=>"Cumartesi");
echo tarihBicimle("2009-06-20");
Çıktı:
20 Haziran 2009 , Cumartesi |
Kategori: PHP.
Etiketler: Tarih Biçimleme · Türkçe Tarih
Oca 20th, 2009
yazar Zihni.
İstemci bilgisayarda sakladığımız çerezler, $_COOKIE süper küreseline atanırlar.
Aşağıdaki kod, tüm çerezleri getirir, sonrasında çerezin değerini boş dizge ve geçerlilik süresini geçmişe ayarlayarak siliyoruz.
1
2
3
4
5
| <?php
foreach ($_COOKIE as $isim => $deger){
setcookie($isim,"",time()-60*60*24, "/", ".zihni.net");
}
?> |
Kategori: PHP.
Etiketler: Çerez silme · Cookie silme
Oca 13th, 2009
yazar Zihni.
Bir yazı yazdığımızı varsayalım, bu yazıyla ilgili diğer yazılardan okuyucularımızı haberdar etmek istiyoruz, yapmamız gereken ilgili yazıların bağlantılarını geri izleme sistemimize dahil etmek.
Örneğin geri izleme ile ilgili bir yazı yazdığımı ve bu yazıyı yazarken aşağıdaki kaynaklardan faydalandım diyelim,
http://www.shapcy.com/geri-izleme-trackback-nedir/
Bu kaynaktan okuyucularında haberdar olmasını istiyorsam, yukardaki adresi wordpress geri izleme sistemine giriyorum.
Kategori: PHP.
Etiketler: Geri İzleme · trackback