vehbiakdogan

Senior Sofware Developer

PHP

Php xss açıklarından korumak için bir fonksiyon

php ile get yada post methodu ile veri gönderirken direk veritbanından sorgu yapılması xss açığına veye injeksyon açığına yol açar.
bunlardan korunmak için bazı filtrelemeler yapmak gerekir.aşağıdaki fonksiyonumz ile get methodunda gönderdiğimiz idler için bir filtreleme yaptık sizde foonksiyonumuz üzerinde oynayarak diğer verileriniz için uygun hale getirebilirsiniz.
Fonksiyonumuz:

 function filtre($id) {  
return strip_tags(trim(addslashes(intval($_GET[$id]))));
}
//çalışma şekli
echo filtre($_GET['id']);


PHP

Php ile googleye ping atma sitemap gönderme fonksiyonu

Aşağıdaki fonksiyon ile google webmastere girmeden site haritanızı yani sitemap dosyanızı googleye otomatik olarak gönderebilirsiniz.
Bu dosyanın günlük haftalık yada aylık çalışmasını istersenizde cpanel ayarlarında cron Job ayarlarından yapabilirsiniz.

 // sitemap adresiniz yazan yere sitemap yolunu yazarak kaydediniz ardından çalıştırdığınızda otomatik olarak pingleme olacaktır   
function pingAt($sitemap){
$ping = "http://www.google.com/webmasters/sitemaps/ping?sitemap=$sitemap";
return file_get_contents($ping);
}
echo pingAt("Sitemap Adresiniz");

PHP

Php ile doğum tarihine Göre üye yaşını bulmak

Girilen bir doğum tarihine göre yaş hesaplama yapmayı görelim.
bu yazımızda php nin DataTime sınıfını kullandık.

 function uyelik_yasi($kayitTarihi)  
{
$kt = new DateTime($kayitTarihi);
$fark = $kt->diff(new DateTime('NOW'));
if($fark->y>0){
return $fark->y.' Yıl'.($fark->m>0?' '.$fark->m.' Ay':'');
}
elseif($fark->m>0 OR $fark->d>0){
return trim(($fark->m>0?$fark->m.' Ay ':'').($fark->d>0?$fark->d.' Gün':''));
}
else{
return 'Bugün';
}
}
PHP

Php ile bir Domainin bitiş süresini bulan fonksiyon yazalım

Arkadaşlar aşağıdaki fonksiyonu domainbul.php olarak kaydedip çalıştırırsanız girilen sitenin domaininin ne kadar süresi kaldığını görebilirsiniz.

 <?php  
$site = 'www.vehbiakdogan.blogspot.com';
function bul($baslangic, $bitis, $metin)
{
@preg_match_all('/' . preg_quote($baslangic, '/') . '(.*?)'. preg_quote($bitis, '/').'/', $metin, $dizi);
return @$dizi[1];
}
$al = file_get_contents("http://www.whois.com.tr/?q=".$site);
$icerik = bul('<td>', '</td>', $al);
echo $icerik[1];
?>
PHP

Php ile bir metnin E-mail olup olmadığını kontrol etmek

Girilen bir Metnin email formatına uygun olup olmadığını kontrol etmeyi ve buna göre işlem yapmayı göstereceğim
hemen bi php dosyası açalım ve kodlarımızı yazmaya başlayalım.
Öncelikle form kısmımızı oluşturalım

 <form action="?acr=email" method="post">  
Email <input type="text" name="mail" /><br>
<input type="submit" name="gonder" value="Test Et" />
</form>

ardından php kodlarımızı yazmaya başlayalım
öncelikle filter_var() fonksiyonunu Açıklayalım.

filter_var()

filter_var() fonksiyonumuz fşltreleme işlemi yapar ve iki paramtre alır 1. parametresi değişkenimiz ikinci parametremiz ise neye göre filtre uygulanacağıdır. biz örneğimizde FILTER_VALIDATE_EMAIL Kullanarak Emaile göre filtrelemesini söylemiş olduk.
şimdi kodlarımızı yazabiliriz.

 <?php  
$email = mysql_real_escape_string($_POST['mail']); // email adresini aldık
/*
filter_var($degisken,Uygulanacak filtre)
*/
if(filter_var($email,FILTER_VALIDATE_EMAIL))
{
echo '<script>alert("Doğru Bir Email adresi girdiniz");</script>';
}else{
'<script>alert("Lütfen Geçerli Bir email adresi giriniz");</script>';
}
?>
<form action="?acr=email" method="post">
Email <input type="text" name="mail" /><br>
<input type="submit" name="gonder" value="Test Et" />
</form>
PHP

Php ile Tekil-çoğul Ziyaretçi sayacı

Merhaba arkadaşlar bu yazımda sizlere PDO kullanarak bir ziyaretçi sayacı yapmayı göstereceğim

Öncelikle bir sayac adında veri tabanı açalım ve aşağıdaki sql sorgusunu çalıştıralım.

 CREATE TABLE IF NOT EXISTS `hit` (  
`gun` int(11) NOT NULL,
`ay` int(11) NOT NULL,
`yil` int(11) NOT NULL,
`simdi` int(11) NOT NULL,
`sayac` int(11) NOT NULL,
`ip` varchar(100) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

Ardından Bir php dosyası açalım ve kodlarımızı yazmaya başlayalım.
Herzamanki gibi kodların içine gerekli açıklamayı yazdım anlamadığınız yerleri sorabilirsiniz.

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<style type="text/css">
.sayac{
background:#ccc repeat;
border:1px dashed #555;
border-radius:10px;
color:#000;
width:300px;
margin:0px auto;
}
p{
border-bottom: 3px solid #fff;
}
</style>
<?php
function vehbiakdoganSayac()
{
$host='mysql.hostinger.web.tr'; // mysql host
$user='u622378237_admin'; // kullanıcı adı
$pass=''; // şifresi
$vt='u622378237_admin'; // veri tabanı adı
try {
$db = new PDO('mysql:host='.$host.';dbname='.$vt, $user, $pass);
} catch (PDOException $v) {
echo 'Bağlantı Başarısız: ' . $v->getMessage();
}
// Veri tabanı bağlantımızı yaptık
$bugun=date("d"); // bugünün tarihi
$ay=date("m"); // bu ay
$yil=date("Y"); // bu yıl
$onlineSuresi=time()-2*60*60; // iki dakika aktif olmazsa onlineden düşecek
$ip=$_SERVER['REMOTE_ADDR']; // ziyaretçinin ip si
$bugunGiris=$db->query("SELECT * FROM hit WHERE ip='$ip' AND gun='$bugun'")->rowCount(); // bugün o ip ile girilmişmi
if($bugunGiris!=0){ // yani bugün girilmişse
$al=$db->query("SELECT * FROM `hit` WHERE `ip`='".$ip."' AND `gun`='".$bugun."'")->fetch();
$guncelle=$db->query("UPDATE `hit` SET `sayac`='".($al['sayac']+1)."' WHERE id='".$al['id']."'"); // çoğulu 1 artırdık
}else{ // griş yapılmamışsa kaydettirelim
$db->query("INSERT INTO `hit` SET `gun`='$bugun', `ay`='$ay', `yil`='$yil', simdi='".time()."', sayac='1',ip='$ip'");
}
// evet sıra geldi online, tekil ve çoğulu Göstermeye
// online Kişi
$online=$db->query("SELECT * FROM hit WHERE simdi>='$onlineSuresi'")->rowCount(); // onlnie kişilerimiz
// çoğul hitler
$bugunx=$db->query("SELECT SUM(sayac) FROM hit WHERE gun='$bugun' AND ay='$ay' AND yil='$yil' ORDER BY id desc")->fetch();
$bugun_cogul=$bugunx['SUM(sayac)']; // bugün çoğul
$dunx=$db->query("SELECT SUM(sayac) FROM hit WHERE gun='".($bugun-1)."' AND ay='$ay' AND yil='$yil' ORDER BY id desc")->fetch();
$dun_cogul=$dunx['SUM(sayac)']; // dün Çoğul
$ayx=$db->query("SELECT SUM(sayac) FROM hit WHERE ay='$ay' AND yil='$yil' ORDER BY id desc")->fetch();
$buay_cogul=$ayx['SUM(sayac)']; // bu ay çoğul
$toplamx=$db->query("SELECT SUM(sayac) FROM hit ORDER BY id desc")->fetch();
$toplam_cogul=$toplamx['SUM(sayac)']; // toplam çoğulumuz
// tekil hitler
$bugun_tekil=$db->query("SELECT * FROM hit WHERE gun='$bugun' AND ay='$ay' AND yil='$yil'")->rowCount(); // bugün tekil
$dun_tekil=$db->query("SELECT * FROM hit WHERE gun='".($bugun-1)."' AND ay='$ay' AND yil='$yil'")->rowCount(); // dün tekil
$buay_tekil=$db->query("SELECT * FROM hit WHERE ay='$ay' AND yil='$yil'")->rowCount(); // dün tekil
$toplam_tekil=$db->query("SELECT * FROM hit")->rowCount(); // dün tekil
echo"<div class='sayac'>
<p>Online: $online </p>
<p>Bugün Tekil: $bugun_tekil</p>
<p>Bugün Çoğul: $bugun_cogul</p>
<p>Dün Tekil: $dun_tekil</p>
<p>Dün Çoğul: $dun_cogul</p>
<p>Buay Tekil: $buay_tekil</p>
<p>Buay Çoğul: $buay_cogul</p>
<p>Toplam Tekil: $toplam_tekil</p>
<p>Toplam Çoğul: $toplam_cogul</p>
</div>";
}
vehbiakdoganSayac();
?>

Evet arkadaşlar ben sayfamızı ziyaretci-sayaci.php diye kaydettim . ziyaretci-sayaci.php sayfamızı çalıştırınca ekrana hit bilgileri gelecektir. uygulamanın indirme linkine Buradan Ulaşabilirsiniz.

PDOPHP

Ajax ile anlık veri gönderme

jQuery ile ajax post işlemi yapmayı göstereceğim arkadaşlar jQuery ajax ile anlık veri gönderip alabilirsiniz.
Öncelikle kodları verip ardından açıklamak istiyorum arkadaşlar

Önce jQuery Kütüphanesini Sayfamıza Dahil edelim <

 <!DOCTYPE html>  
<html lang="tr-TR">
<head>
<meta charset="UTF-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
</head>
<body>
</body>
</html>

Ardından bir form oluşturalım Ve jQuery kodlarınmızı yazıp açıklayalım

 <!DOCTYPE html>  
<html lang="tr-TR">
<head>
<meta charset="UTF-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script type="text/javascript">
function posted(){
$.ajax({
type:'POST',
url:'ajax.php',
data:$('#vehbiakdogan').serialize(),
success:function(sonuc){
$(".yazdir").html(sonuc);
}
})
}
</script>
</head>
<body>
<form id="vehbiakdogan" method="post">
<div class="yazdir"></div>
<input type="text" name="isim" />
<input type="submit" onclick="posted(); return false;" name="gonder" />
</body>
</html>

Şimdi Kodlarımızı açıklayalım

Öncelikle $.ajax() şeklinde bir fonksiyon oluşturduk ve parametre olarakta verilerimizi göndrme şeklimizi falan girdik şimdi parametrelerimizi açıklayalım.

  • type : type parmatremiz verielri gönderme tipimizi tanımlar örn: post,get
  • url : url parametremiz verilerimizi göndereceğimiz sayfamızdır.
  • data : data parametremizde göndereceğimiz verilerimizi gösteriyor serialize() fonksiyonu ise bizim formdaki tüm name i dolu olan formları almamızı sağlıyor.
  • success : success parametremiz ise ajax işlemimiz başarılı ise ne yapacağını gösterir biz eğer başarılıysa id si yazı olan divimize ajax.php den gelen yanıtı yazdırdık
  • ajax.php sayfamız

     <?php  
    if(isset($_POST)){
    echo $_POST['ad'];
    }

    Eğer ajax işlemimiz başarılıysa classı yazdir olan divimize textboxa yazdığımız veri yazacaktır.

    Javascript-jQueryPHP

    Php stripslashes() ve addslashes() Fonksiyonları


    Evet Arkadaşlar Sizlere Bu makalemde Benim çok işime yarayan stripslashes() ve addslashes() Fonksiyonlarından bahsedeceğim 🙂
    Öncelikle Fonksiyonların Ne işe yaradıklarını anlatayım :

    stripslashes() Fonksiyonu

    stripslashes() Fonksiyonumuz bir string veritipini parametre olarak alıyor ve içindeki tüm tersbölü () işaretlerini silme işlemini yapıyor örnek verecek olursak :

    <?
    $string = 'Vehbi akdoğan';
    echo stripslashes($string); // Ekranda Vehbi akdoğan Yazacak
    ?>

    Evet arkadaşlar Örneğimizi Çalıştırırsanız Daha kolay Anlarsınız 🙂

    addslashes() Fonksiyonu

    addslashes() Fonksiyonumuz ise gene string vir veritipini parametre olarak alıyor ve stringimizdeki tüm tırnak işaretlerinin (‘) Yanına (‘) tersbölü işareti ekliyor örnek verirsek :

    <?
    $string = 'Vehbi'akdoğan';
    echo addslashes($string); // Ekranda Vehbi'akdoğan Yazacak
    ?>

    Şeklinde olacaktır.

    Fonksiyonların Kullanım Alanları

    Evet gelelim bu fonksiyonların kullanım alanlarına
    Arkadaşlar Nerde Nasıl kullanlır Hiç araştırmadım ama Ben 1 yerde kullandım ve çok işime yaradı sizlerede ordan bahsedeyim :
    Veri tabanında PDO ile kodlama yaparken (mysqlde de aynımı bilmiyorum) tek tırnak(‘) ve ters bölü() işaretlerini Veritabanına kaydettiremiyordum araştırdım ve tek tırnak ve ters bölünün mysql da açığa sebep oldukları için PDO da kaydedilmediğini gördüm daha sonra nasıl yapayım derken addslashes() Fonksiyonuyla Karşılaştım Ve Verimi veritabanına kaydettirirken addslashes() fonksiyonunu kullandım verinin kaydedildiğini gördüm 🙂 Başka nerede nasıl kullanılırlar hiç araştırmadım artık onlarıda siz araştırırsınız 🙂

    Birdahaki Makalemde Görüşmek Üzere …

    PDOPHP

    Php Bazı Metin Fonksiyonları

    Selam Arkadaşlar Bu Yazımda Sizlere Php de kullandığımız bazı metin fonksiyonlarından bahsetmek istiyorum
    ilk olarak strlen() Fonksiyonundan Başlayalım

    strlen() Fonksiyonu

    Evet Arkadaşlar strlen() Fonksiyonu php de Girilen Metinde kaç Karakter olduğunu bulur Ve 1 parametre alır Bir örnekle açıklayacak olursak

    <?php
    $metin = 'Vehbi Akdogan'; // 12 Karakter Var

    echo $strlen($metin); // Ekranda 12 Yazacaktır
    ?>

    Evet Arkadaşlar Gördüğünüz Gibi bir string tanımladık ve bunun kaç karakter olduğunu öğrenmiş olduk

    strpos() Fonksiyonu

    strpos() Fonisyonu bir metin içinde başka bir metin bulma işlevini görür ve 2 parametre alır bunlar aranacak metin ve aranacak kelimedir. Fonksiyon Geriye Buldugu Değerin Sayısını Geri Döndürür . Bir örnek Verecek olursak ;

    <?php
    $metin = 'Vehbi Akdogan'; // içinde arama yapacağımız metin
    $sira = strpos($metin,'vehbi'); metnin içinde vehbi kelimesini arayacağız
    echo $sira.' Da Bulundu';
    ?>

    Ekranda 0 Yazacaktır Neden diye sorarsanız stringi fonksiyonumuz arka planda diziye atayıp öyle arama yapıyor bu yüzden ilk eleman her zaman 0 olacaktır

    substr() Fonksiyonu

    substr() Fonksiyonumuz ise Bir Metnin içinden Belirli bir bölümü almak için kullanılır Ve 3 parametre alır bunlar metin,baslanacak karakter,biriş karakteri dir.Bir örnek Verirsek ;

    <?php
    $metin = 'Vehbi Akdogan'; // Kesilecek Metin
    $sira = substr($metin,0,5); ilk 5 karakteri aldık
    echo $sira; // ekranda vehbi yazacaktır
    ?>

    str_word_count() Fonkisyonu

    str_word_count Fonksiyonu ile Bir metnin kaç kelimeden olduğunu bulabiliriz ve str_word_count fonksiyonumuz 1 parametre alır . Örnek verecek olursak ;

    <?php
    $metin = 'Vehbi Akdogan'; //metnimiz
    $kac = str_word_count($metin); kaç kelime olduğuna bak
    echo $sira; // 2 yazacaktır
    ?>

    Evet Arkadaşlar Aklıma Gelen Fonksiyonlar Bunlardı Başka merak Ettiğiniz Fonksiyonlar Varsa iletişim kısmından bana sorabilirsiniz 🙂

    PHP

    Php İle Veri tabanı Kullanmadan Sayfalama

    İyi günler arkadaşlar bu yazımda sizlere php ile basit bir sayfalama mantığı göstereceğim. genelde sayfalamalar mysql ile yapılır ama mysql kullanmayan arkadaşlarımız vardı biz nasıl yapacağız dediler onlar için bu makaleyi hazırlayayım dedim 🙂
    Öncelikle birtane test.php dosyası oluşturalım Ve içine Aşağıdaki Kodları Yazalım Ardından Kodları tek tek açıklayacağım

    Evet Arkadaşlar if Kısmını en son anlatacağım orayı görmezden gelin
    Öncelikle Gördüğünüz Üzere Bir dizi oluşturduk Ardından her sayfada kaç tane içerik olacağını gösterdik mesela ben 5 yapmışım bu her sayfada 5 içerik olsun anlamına geliyor. Ardından Bizim Her sayfamızda 5 tane olduğunda kaç sayfamız olur diye onu hesapladık burdaki ceil() fonksiyonu kafanızı karıştırmasın (ceil fonksiyonu ondalıklı bir sayıyı kendisinden sonraki pozitif tam sayıya yuvarlar örneğin 0,6 sayısının ceil(0,6) sonucu 1 olarak ekrana gelecektir.). Ardından sayfada görünecek 5 elemanın alt ve üst sınırını belirledik 1. sayfadaysak eğer 1-5 arası 2. sayfadaysak 5-10 arası gibi daha sonra for döngüsüyle önce içeriklerimizi yazdırdık
    daha sonra SAyfalarımızı ekrana yazdırdık burda dikkat ettiyseniz GET methodunu kullandık GET Methodunu bilmeyenler PHP Ders10 Formlar – Get ve Post Methodu adlı makalemize bakabilirer.
    Evet Sayfalarımızıda ekrana yazdırdıktan sonra Sayfa 2 ye tıklandığında $_GET[‘id’]=2 olacak eveeett şimdi gelelim en üstteki if kısmımıza
    üstteki if kısmımızın anlamı Diyoruzki if($_GET[‘id’]) Yani Eğer benim sayfamda bir get methodu varsa sen $id = $_GET[‘id’]; id yi get methodundan gelen id ye eşitle eğer yoksa $id yi 1 yap devam et diyoruz Burda $id değişkenimizi 1 yapmamızın sebebi get methodu olmassa eger kullanıcı sayfamıza yeni girmiştir ve yeni giren kişiye birinci sayfamız açılsın diye yapıyoruz 🙂

    Anlamadığınız yerleri yorum atarak , sosyal ağlardan , iletişim kısmından Bana iletebilirsiniz Birdahaki yazımda Görüşmek Üzere …

    PHP