Merhabalar,
Erasmusun tadını alıpta döndüğünde deptesyona girmeyen yoktur tabiki de. Bu depresyonik hareketler sonrasında erasmus ile tekrardan yurt dışına gidebileceğimi öğrenen ben, Üniversitenin erasmus sayfasını takibe almıştım. Erasmus ile staj yapmak için başvuruda bulunduktan sonra yerleştirmeleri beklerken farkettim ki sürekli siteye girip duyuru var mı diye kontrol etmekteydim. Yaptığım işi engellemeye başlayınca buna bir çözüm üretmek için biraz olan php bilgime başvurarak benim yerime siteyi kontrol eden ve duyuru olduğunda bana e-posta yolu ile bilgilendirme gönderecek script yazmaya çalıştım.
Script demeyelimde kod parçası. Temel olarak her saat başı verdiğim adrese gidip duyuru varmı diye kontrol ediyor. Nasıl olduğuna gelecek olursak;
[code language=”php”]
$domain = ‘http://erasmus.sdu.edu.tr/’;
$c = curl_init($domain);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$site= curl_exec($c);
curl_close($c);
[/code]
Burada $domain değişkeni kontrol etmesini istediğiniz sayfanın tam urlsini içermelidir. Örnek olarak ben SDÜ erasmus sayfasını yazdım. Ancak bu Url örneğin. “mustafaugur.com/kategori/erasmus/duyurular.html” benzeri de olabilir. 2. aşamaya geçmeden önce bu kodun çalışma prensibinden bahsedeyim. Bu bölüm uzak sunucuya bağlanırken bunu bir tarayıcı üzerinden çalışıyormuşcasına gerçekleştirir. Temel olarak geliştirilmiş bir scriptle kullanıcı adını ve şifreni girerek; örneğin, Facebookta gönderi paylaştrabilirsiniz.
Konumuza dönecek olursak benim bu kod ile yapmak istediğim sayfayı taramasını ve verdiğim 2 yazıyı arayarak arasında veri olup olmadığını kontrol etmesiydi.
[code language=”php”]
$aciklama = explode(‘<div class=”block-news”><div class=”item”>’,$site);
$aciklamason = explode(‘<img class=”new” src=”http://taslak.sdu.edu.tr/assets/themes/default/images/new-icon.png” /> <h2 class=”title”><a href=”/tr/haber/yedek-ogrenci-42-yerlestirme-sonuclari-6388h.html”>Yedek Öğrenci (42) Yerleştirme Sonuçları !!!</a></h2><p><a href=”/tr/haber/yedek-ogrenci-42-yerlestirme-sonuclari-6388h.html”></a></p></div>’,$aciklama[1]);
$sayi = strlen($aciklamason[0]);
$yazi = $aciklamason[0];
[/code]
Bu blokta gördüğünüz 2 değişken var $aciklama ve $aciklamason neden böyle olduğunu sormayın o an kafamda ne vardi bilmiyorum. Ama burada tamımlamamız gereken şey ise duyurunun gerçekleşeceği sayfanın kaynak kodlarında yatıyor. Örnek verecek olursak:
[code language=”html”]
<div class=”block-news”>
<div class=”item”>
<img class=”new” src=”http://taslak.sdu.edu.tr/assets/themes/default/images/new-icon.png” /> <h2 class=”title”><a href=”/tr/haber/yedek-ogrenci-42-yerlestirme-sonuclari-6388h.html”>Yedek Öğrenci (42) Yerleştirme Sonuçları !!!</a></h2>
<p><a href=”/tr/haber/yedek-ogrenci-42-yerlestirme-sonuclari-6388h.html”></a></p>
</div>
<div class=”item”>
<h2 class=”title”><a href=”/tr/haber/erasmus-yabanci-dil-sinavindan-42-alan-ogrencilerin-dikkatine-6333h.html”>Erasmus Yabancı Dil Sınavından 42 Alan Öğrencilerin Dikkatine !!!</a></h2>
<p><a href=”/tr/haber/erasmus-yabanci-dil-sinavindan-42-alan-ogrencilerin-dikkatine-6333h.html”></a></p>
</div>
</div>
[/code]
Burada gördüğünüz gibi duyurular class=”block-news” div’i içerisine alınmış durumda. Buradan yola çıkarak verilen son duyuru ile bu divin bitişinden ayırırak arasında veri olup olmadığını kontrol ettirebiliriz. Bu ne işe yarayacak derseniz. Eğer yeni bir duyuru gelirse şuan olan duyuru ile bu div blogunun arasına gelmiş olacak buda demektirdi arada bir veri varsa yeni duyuru var demektir.
2. kod blogundaki değişkenlerin içeriklerine baktığınızda demek istediğimi anlayacaksınız.
Sıra geldi bu bilgiyi kontrol edip bize haber vermesinde 2.blogu incelerseniz $sayi adında bir değişken tanımlanmış ve strlen kodu ile $aciklamason[0] değişkenini içinde yatan verinin karakter sayısını sayıyor. Bunu basit bir if fonksiyonu ile 0 olup olmadığını kontrol edebiliriz bunuda örnek ile;
[code language=”php”]
if(!$sayi == 0 ) {
$mesaj=’Erasmus Sayfasında yeni duyuru’;
$mailelement = “MIME-Version: 1.0rn”;
$mailelement .= “Content-type: text/plain; charset=utf-8rn”;
$mailelement .= “From: Duyuru takiprn”;
mail(‘[email protected],,’UYARI’,stripslashes($mesaj),$mailelement); }
else { echo’<span style=”font-size: 20px;”><strong>Erasmusta</strong> Yeni Duyuru Yok</span><br/>’. $aciklamason[0];}
[/code]
Bu şekilde gösterebilirim. Burada eğer $sayi 0 a eşit değilse ki bu yeni duyuru olduğunu gösterir, e-posta gönder diyoruz. Değilse ekrana yeni duyuru olmamasını yazdırmasını istedim. Bu dosyayı sunucuya gönderdikten sonra sadece yapmanız gereken zamanlanmış görevlerden bu dosyayı istediğiniz sıklıkla çalıştırmasını sağlamak.
Biliyorum ki çok karmaşık bir şey değil ama yinede bana cok faydası oluyor. Belkide cok daha kolay bi kodlama ile de yapılabilir ama bildiğim yoldan anlatmak daha doğru bir bilgi kaynağı olacakır.