Kategoriler
Php uygulamalari

PHP | Blogger sitenize otomatik yazi gonderme!

Benim gibi zamanı olmayan yada uğraşmak istemeyen üşengeçler olabilir. Yakın zamanda faydalandığım bir php class uygulamasını düzenledikten sonra yayınlamak istedim.

blogger-e-yazi-gonderme-php

Genelde paravan blogları bulunan kişilerin tercih edeceği bir yöntem olan blögger sitenize otomatik yazı gönderme uygulamasını servis ediyorum. Uzun uzadıya anlatmayacağım dosyaları aşağıdaki bağlantıdan indirebilirsiniz.

İndir: http://bit.ly/1kuoKwN

Kodları basit tutmaya çalıştım. Özellikle form kısmını. Dosya açıp düzenlemenize gerek kalmadan giriş bilgilerinizi ve hangi blögger bloğuna yazıyı göndereceksiniz İD sini yazıp alt kısımdaki başlık, açıklama ve etiket kısmını doldurup göndermeniz yetiyor. Örnek bir resim yukarıda ekledim, bu yazı yayınlandığında sorunsuz şekilde çalışıyor ve kullanılıyordu :)

Uygulamayı geliştirebilirsiniz arkadaşlar yada basit şekliyle (suanki gibi) kullanabilirsiniz. Geliştirmeyi yada kullanmayı düşünen arkadaşlar önerim güvenlik alanında da kodlarda güncelleme yapmanız. Güvenlik konusuna fazla zaman ayırmadım, basit ve ham şekliyle sunmak istedim. Geliştirmek isteyen arkadaşlar her türlü önlemi ve güvenliği ekleyebilirler.

Kullanım konusuna gelince, yapmanız gereken tek şey, dosyaları host’unuza yüklemek ve blögger.php dosyasını tarayıcınız ile açmak. Karşınıza çıkan form’ü kullanarak içeriklerinizi kolayca ve hızlı bir şekilde blögger bloğunuza gönderebilirsiniz.

Bunu daha hızlandırmak isteyen arkadaşlar içeriklerini databaseden çekerek while yada foreach döngüleri arasına kodları yerleştirerek içeriğinizi gönderebilirsiniz. Yada cron job ile dosyanın belli aralıklarda çalışarak databaseden belli sayıda içeriği paravan bloglarınıza göndermesini sağlayabilirsiniz.

Burda dikkat etmeniz gereken bir diğer konu günlük belli bir sayıda içerik girilmesine izin veriyor blögger, sonrasında resimli güvenlik önlemi piyasaya çıkıyor. Bu gibi bir durumda uygulama ile yazı göndermeniz imkansız oluyor çünkü güvenlik kısmını geçemiyor (geliştirmek isteyen varsa buyursun bu konuda). Ancak bu önlem dediğim gibi günlüktür, sonraki gün tekrar belirli bir limite kadar uygulama ile bloğunuza yazı gönderebilirsiniz. Yanlış anlaşılmasın, bu limite ulaşıldığında blögger panelinizden yine yazı gönderebilirsunuz, tek farkla güvenlik kodu istiyor sizden, yani resimdeki harfleri doğrulamanızı. Daha doğrusu insanmışın sen kardeşim diye yüzüne bağırıyor da diyebilirsiz.

Kelime yada harf hataları olabilir, mazur görün, sormak istediklerinizi konu altından yada mail yolu ile bana ulaştırabilirsiniz. Bir sonraki konuya kadar esenlikle kalın :)

Kategoriler
Genel Konular

Php de array filter fonksiyonu ile dizi icindeki…

Php de array_filter() fonksiyonu ile dizi icindeki bos dizileri temizleyebiliyorum. Cok iyi oldu bu ya :D Yalniz dikkat etmek lazim negatif degerli dizileride filtreleyebilir.

Php array dizilerinden bos olanlari silme

Kategoriler
Php uygulamalari Php ve mysql Webmaster yardım

Php ile sql cache uygulamasi: Sisteminizi rahatlatin, sitenizi hizlandirin!

Sql cache, file cache ile nerdeyse ayni mantiga sahip bir php cache uygulamasidir. Tek farki sql cache verileri disk uzerinde degil mysql tablolarinda tutmasidir. Bunun file cache’ye gore bir cok artilarinin oldugunu dusunuyorum. Cunku bazi olumsuz durumlar file cache yapisinin iyi sekilde calisamamasina neden oluyor. Ornegin kullandiginiz hostun yada sunucunun disk yapisinin veya yazma hizinin dusuk olmasi cache sirasinda yavaslamalar ve optimasyon sorunlari yasamasina neden olur. Ozellikle SATA diskler uzerinde bu biraz daha gozle gorulur derecede kendini hissettirmektedir. SSD ve sas disk yapilari file cache icin en uygun olanlari ancak bunun eksikliginde sizlere sql cacheyi tavsiye edecegim. Mysql yapisi hizli islem yapmaya cok musait, file cacheden daha hizli ve aktif sekilde kullanim alani yaratir size.

Normalde localhostda sql cache yazisi icin denemeler ve testler yapiyordum, bunun icin bir kalip hazirladim, bu kalibi kullanarak birden fazla alan icin cache olusturabilirsiniz. Hazirladigim kalipda sadece cache alinacak alanin ismi ve cachede bekletilecegi suresini girmeniz yeterli olacak. Ve cache alinacak alanida belirttikten sonra hic ellemeden zamani geldiginde o bolum kendini guncellemis olacak. Mantik olarak cache alinan alanin ne kadar cachede kalacagi ve ne kadar ayni sorgunun gosterilecegini belirtebiliyoruz. boylece cache almadan onceki 50,100lerce sorguyu tek sorguya indirgemis olacagiz.

Uygulama iki bolumden olusuyor:

1: Fonksiyon bolumu, sizin duzenlemenize gerek olmayan bolum.

2: Cache icin kullanacaginiz kalip kod yigini.

Anlatima baslarken bunun biraz karisik gelebilecegini ancak mantik yuruttugunuzde gayet basarili bir calisma oldugunu anlayacaksiniz. Ayni tarz sistemi ayri tablo acmadan, sadece hazirladigim kod yiginini kullanarak wordpress de de istediginiz alani (buyuk sorguya neden olan yerleri) cache ye alabileceksiniz ki bu wordpress icin olan dokumani bir sonraki yazimda yazacagim.

Oncelikle kodu uygulayacaginiz sayfada mysql baglantisinin saglanmis olmasi gerekli, eger mysql baglantisi saglanmamis ve yeni basliyorsaniz asagidaki mysql baglanma kod yapisini kullanabilirsiniz, tabi oncesinde bu islem icin database olusturmaniz gerekli, yada var olan databaseye baglanti acmaniz gerekli asagidaki kod ile:

$conn = mysql_connect("localhost", "KULLANICI", "SIFRE");

if (!$conn) {
echo "baglantida sorun var: " . mysql_error();
exit;
}

if (!mysql_select_db("DATABASE")) {
echo "kullanilamiyor bu database: " . mysql_error();
exit;
}

Kendinize gore duzenlemeyi unutmayin.

Bu islemin hemen ardindan cache verilerini tutacagimiz tablomuzu mevcut databasemize eklememiz gerekli. Asagidaki kodu phpmyadmin den sorgu kismindan uygulayin:

CREATE TABLE IF NOT EXISTS kuaza_sqlcache (

id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
cache_ismi varchar(64) NOT NULL DEFAULT '',
cache_icerik longtext NOT NULL,
cache_zamani varchar(30) NOT NULL DEFAULT '',
cache_suresi int(10) NOT NULL DEFAULT '60',
PRIMARY KEY (id),
UNIQUE KEY cache_ismi (cache_ismi)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

Sorguladiginiz bu tabloya cache alanlari icin bize gerekli olan bilgileri kaydedecegiz, ve tekrar sonrasinda ekrana yazdiracagiz.

Simdi sira fonksiyonlarimiza geldi. Normalde fonksiyonlari kullanmamistim testlere ilk basladigimda, ancak hem kolaylik saglamasi hemde yeni arkadaslarin fonksiyonla olan baglarini guclendirmek adina boyle bir yol sectim. Hemde cache alacagimiz kalip kod yigini daha temiz ve sade bir duruma geldi. yinede bunu yazdigima bakmayin, anlayanlar icin basit, anlamayanlar icin biraz fazla gorunebilir :)

Bu fonksiyonlari ister ayri sayfadan, istersenizde cache alacaginiz sayfada bir yere ekleyin. Eger coklu bir sistemde calisiyorsaniz her sayfaya include ettiginiz belli dosyalariniz vardir, bu include ettiginiz dosyanin icerisine eklemeniz daha mantikli olacaktir.

/* Cache kontrol alani, buradan once kontrol yaptirip, sonrasinda gerekli islemlere baslayacagiz. */
function c_cachekontrol($cacheismi,$bilgiiste=""){
$sorgu=mysql_query("select cache_ismi,cache_icerik,cache_zamani,cache_suresi from kuaza_sqlcache where cache_ismi = '$cacheismi'");
$bilgi = mysql_fetch_array($sorgu);
if($bilgi > 0)
{
if($bilgiiste == "cache_zamani"){
return $bilgi["cache_zamani"];
}elseif($bilgiiste == "cache_suresi"){
return $bilgi["cache_suresi"];
}elseif($bilgiiste == "cache_icerik"){
return $bilgi["cache_icerik"];
}
}else{
return "tabloyok";
}
}

/* eger mysql tablomuz yoksa yeni tablo ve cache alinan kodlari tabloya yazdiracagiz,
boylece sonraki calistirmamizda bu kaydettigimiz tablodan cache alinacak.
*/
function c_yenicacheac($cacheismi,$cacheicerik,$cachesuresi="60"){
$alhepsini = $cacheicerik;
$zaman = time();
$yeniekle = mysql_query("INSERT INTO kuaza_sqlcache
(cache_ismi, cache_icerik, cache_zamani, cache_suresi)
VALUES ('$cacheismi', '$alhepsini', '$zaman','$cachesuresi')");
/*
Bu alanida sorgunun gerceklesip gerceklesmedini arka planda yani kullanici arayuzunde gostermeden ekrana basiyoruz.
Bunu gormek icin kaynak kod kismina bakmaniz yeterli olacaktir.
*/
if($yeniekle) {
return "";
} else {
return "";
}
}

/* Eger cache suresi belirledigimizden eski ise bu alan ilede varolan cache alanini guncelliyoruz. */
function c_cacheguncelle($cacheismi,$cacheicerik,$cachesuresi="60"){
$alhepsini = $cacheicerik;
$zaman = time();
$guncelle = mysql_query("UPDATE kuaza_sqlcache SET cache_icerik = '$alhepsini', cache_zamani = '$zaman', cache_suresi = '$cachesuresi' WHERE cache_ismi = '$cacheismi'");
/*
Bu alanida sorgunun gerceklesip gerceklesmedini arka planda yani kullanici arayuzunde gostermeden ekrana basiyoruz.
Bunu gormek icin kaynak kod kismina bakmaniz yeterli olacaktir.
*/
if($guncelle) {
return "";
} else {
return "";
}
}

Kod icerisinde ki alanlari anlayabileceginiz sekilde yorumlamaya calistim.

Simdi ise en can alici noktaya geldik diyebilirim. Cache almamizda bize en cok yardimci olacak alanlardan birisi, kalip kod yigini alanina geldik. Bunu sisteminize entegre etmeyi basardiginiz,da sonraki uygulamalarda zorluk cekmeyeceginize eminim. Bir kere yapan, sonraki eklemelerde zorlanmayacaktir.

Kod icerisinde gerekli aciklamalari yaptim, ancak sonrasinda da olayi daha iyi kavrayabilmeniz icin onemli bolumleri detayli sekilde yazacagim:

/*
cacheye alacaginiz bolum icin bir isim girin, 
boylece birden fazla alani cache alacaginizda farkli isimlerle 
yeni alanlar acabilirsiniz.
*/
$cacheismi = "cachedeneme4"; 

/*
Cacheye aldiginiz kodlarin ne SIKLIKLA yenilenecegini,
guncellenecegini buradan belirtebilirsiniz. Dakika cinsinden bir sayi girmeniz yeterli.
5 = 5 dakika, 60 = 1 saat.
*/
$cachesuresi = "160";

/*belirledigimiz cache ismini kontrol ettiriyoruz, varsa sonraki islemlere geciyoruz, yoksa yeni alan girip cache bolumu olusturuyoruz.*/
$bilgi = c_cachekontrol($cacheismi);

/* if ile daha once cache tablosunun acilip acilmadigini kontrol ediyoruz, eger tablo var ise sonraki adima geciyoruz. */
if($bilgi != "tabloyok"){

/* Buradan bize yardimci olacak cache zamanini ve belirlediginiz suresini aliyoruz. */
$db_cache_zamani = c_cachekontrol($cacheismi,"cache_zamani");
$db_cache_suresi = c_cachekontrol($cacheismi,"cache_suresi");

$cachetime = 60 * $db_cache_suresi; // 60 ile belirledigimiz cache suresini carparak suanki zamandan cikartacagiz, bir sonraki adimda.

/* 
if ile cachelenen icerigin zamanini hesapliyoruz ve 
daha once belirttigimiz dakikadan daha az ise (yani cache zamani icerisinde ise) cache zamani, 
direk cacheli alani ekrana yazdiriyoruz.
*/
if (time() - $cachetime < $db_cache_zamani) {

# cache belirttigimiz zaman icerisinde ise ekrana bastiriyoruz. Boylece tek sorguda hersey halletmis olduk.
echo unserialize(base64_decode(c_cachekontrol($cacheismi,"cache_icerik")));
echo "";
}else{
/*Eger cachenin suresi belirledigimiz dakikayi asmis ise, 
o zaman burdan yeniden normal kodlarimizi calistiriyoruz ve 
cache alanini guncellemesini sagliyoruz. */
ob_start();




// Cachelenecek kodlar ve sorgular alani (aynisi)





/* Ekrana basilan alanin kodlarini html alarak, var olan tabloyu yeniden guncelliyoruz. */
 echo c_cacheguncelle($cacheismi,base64_encode(serialize(ob_get_contents())),$cachesuresi); 
 
 ob_end_flush();
 }
 /* Zaman kontrol if fonksiyonu alani bitti, daha once actigimiz ve 
 tablo var yok kontrolu yaptigimiz if icin else alanina geciyoruz
 */

 }else{
 /* Eger sql cache alaninda belirledigimiz isimde bir cache alani yoksa, 
 buradan kodlarin html yapisini alarak yeni cache alanini ekliyoruz. 
 */
 ob_start();




// Cachelenecek kodlar ve sorgular alani (aynisi)





/* Alinan html kodlari yeni eklenecek tablomuza ekliyoruz. */
 echo c_yenicacheac($cacheismi,base64_encode(serialize(ob_get_contents())),$cachesuresi); 

 ob_end_flush();
 }
 /* Ve gerekli if kontrolleri bitti, yaptigimiz sorgu sayilari 1000 ken 2 oldu, hayirli olsun :) */

Kodlarin icerisinde butun alanlarin ne islem ve ne fonksiyon gorevi gordugunu belirttim.

Yinede unutmamaniz gereken kalip kod yigini alanindaki “Cachelenecek kodlar ve sorgular alani (aynisi)” kismi ikiside ayni olacak, yani bu alana cache alinmasini istediginiz sorgularinizi, kodlarinizi girmeniz gerekli. Genelde yuksek soegular oluyor, 50,60 sorgu gibi, o zaman buradaki uygulama ile sorgu sayisi 2 ye kadar dusecektir. Boylece gerek acilislarda olsun, gereksede sonraki sayfa gezintilerinde sitenizde gozle gorulur hizlanma olacaktir. bunun yaninda sunucunuzu yada hostunuzu rahatlatmasida cabasi :)

Bu uygulamanin faydasi bir tek mysql sorgularinda olmuyor arkadaslar, sistemi zorlayacak php sorgularinda veya fonksiyonlarinda da cache alma islemi uygulandigi icin ciddi derecede sisteminizi rahatlatacaktir.

Sitenizin hizlanacaginida hesaba katarsaniz hem kullanici sitenize girdiginde keyifli zaman gecirir, hemde arama motorlari icin cazip bir alan haline gelir. Guncellik konusuna deginmiyorum, orasi size bagli. Ancak hic bir kullanici, siz bile bir sayfanin acilmasini 5 saniye beklemek istemezsiniz :)

Uygulamayi gelistirmeye yetecek zamanim olursa el atar arada bir yenilikler eklemeye calisirim, bunun haricinde gelistirme amacli kodlari kullanacak arkadaslara simdiden basarilar diliyorum. Anlamadiginiz bir yer olursa konu altindan yorum ile beni uykumdan edip, pc basina cagirabilirsiniz.

Sevgiyle kalin, bol kodlu gunler :)

Kategoriler
Centos hakkında Günlük hayat Linux Web sunuculari Nginx Webmaster yardım

Centos sunucularda panelsiz Websunucusu (php, mysql) ve NGINX kurmak, yonetmek!

Sunucu bazli yardimsal makalelerime hizlica devam ediyorum arkadaslar. Bu yazimda size panelsiz olarak websunucusu kurmayi anlatacagim.

Bu anlatimla neler yapabileceksiniz ?:
* Bir websunucunuz olacak (apache)
* php uygulamalarini calistirabileceksiniz
* Mysql veritabani yonetim yazilimini kuracagiz.
* BIND (dns) kuracagiz (ama calistirmayacagiz)
* Yeni domain eklemeyi, web tarayicisi ile bu domaine erismeyi ogreneceksiniz.
* Bu islemlerden sonra NGINX ile daha hizli bir websunucusu kuracagiz.
* Yardimci olabilecek modulerede yer verecegim.

Makale sirasinda bize gereken programlari bilgisayariniza indirip kurun:
* Winscp (Windows ortaminda sunucunuza erismenizi ve kolayca duzenleme yapabilmenizi saglar, bir ftp programi gibi)
* Putty (ssh ile sunucuya erismemizi ve unix ortaminda programlari kurmamizi saglayacak)

Gerekli olan programlari kurup actiktan sonra sunucunuza baglanin, bundan sonraki anlatim bunu dusunerek anlatilacaktir..

l: Websunucusu apache dahil bize yardimci olacak php, mysql ve bind modullerini kuralim
Ssh programimizi acalim (putty), ardindan asagidaki kodu yazarak onaylayin:

yum -y install httpd php mysql bind mysql-server php-mysql

Bu islemden sonra sunucumuza apache http websunucusu, bunun yaninda dns uygulamalariniz icin yonetmenize imkan verecek bind (named), php ve mysql, ve bunlarin bir arada derlenmesi islemi bitmis olacak..

A: Apache ve mysql programlarini, sunucunuza restart (reebot) atildiktan sonrada, otomatik baslatilmasi icin, asagidaki kodu sshden uygulayin:

/sbin/chkconfig httpd on
/sbin/chkconfig mysqld on

Apache’yi ve mysql’yi baslatalim:

service httpd start
service mysqld start

B: Mysql root sifrelerimizi olusturalim
mysql kurulduktan sonra sifre degistirilmesi gereklidir, bunun icin asagidaki kodu ssh ekranindan calistirin, ancak once SIFRENIZ kismini kendi yeni sifrenize gore degistirin, bu sifre mysql ye erismede kullanacaginiz guvenlik kodu olacak.

/usr/bin/mysqladmin -u root password 'YENI-SIFRENIZ'
/usr/bin/mysqladmin -u root -h test.kuaza.com password 'YENI-SIFRENIZ'

Restart atmak icinde asagidaki kodu kullanabilirsiniz:

service mysqld restart

C: Yeni domain ve dosyalari icin kullanici ekleme (kullanici izinleri dahil)
ilk olarak sunucunuzun IP adresine yada Hostname domainine girildiginde acilmasini istediginiz alanlari tanimlayalim. Bu ilk domain ekleme islemimiz olacak, dikkatlice takip edin, sonraki adimlarda yeni domain eklemek istediginizde ayni islemi tekrarlamaniz gerekecek.

Oncelikle Hostname (Ornek: test.kuaza.com) domaini icin kullanici ve izinlerini olusturalim: Bu hostname sunucunuzun ismi niteligindedir, asagidaki kodu ssh ile uygulayin:

useradd DOMAIN-ISMI

Ornek: useradd test.kuaza.com

Sonrasinda sunucunuzda /home/ dizini altina kullanici klasoru olusturulmus oldu. Sitemizin dosyalari bu klasor altinda yer alacak, ornegin: resim, html ve php dosyalariniz. Burada olusturulan kullanici klasorune chmod ayari verecegiz. Kullanici klasorunun chmod ayari 711 olmali. Ornek resimdeki gibi:

Simdi /home/ klasoru altinda olusturulan yeni kullanici klasoru icine girin ve asagidaki isimlerde 2 tane klasor olusturun: bunu winscp programi ile yapin.

public_html
logs

Sonrasinda sag tik yapin acilan listede en altdakini secin: Properties ‘i secin: Bu kisimda klasorlere kullanici izinlerini verecegiz, boylece icerisine yukleyecegimiz dosyalara tarayicimiz ile erisim mumkun olacak. Ornek Winscp ile asagidaki resimdeki gibi yapabilirsiniz: Group ve Owner kisimlarini ayni secin, root olmamasi gerek, secmek icin tiklayin orda diger kullanici ismi cikacaktir, onu secin, ornek resimde mevcut. Eger root secili ise tarayici ile dosyalariniza erismek mumkun olmayacaktir:

Simdi public_html kalasoru icine ornek bir resim, php yada html dosyasi yukleyin, bu dosya deneme yaparken calisip calismadigini anlamak icin kullanacagiz.

D: Apache konfigurasyon dosyasina domain ile bilgileri girelim:
Bunu yapmamiz gerekli, cunku gelen istekleri apache hanki klasore yonlendirecek bunun tanimlamasini girecegiz.

Bu ayarida C: anlatimi kisminda oldugu gibi her domain ve kullanici eklendiginde yapmaniz gerekli. Cunku apachenin domain calistirilmak istendiginde hangi klasoru acacagini belirlememiz gerekli, aski halde siteye girilmek istendiginde apache standart dosyasi acilacaktir.

Apache yapilandirma dosyasini acalim (winscp ile): /etc/httpd/conf/httpd.conf

Bunu aratin ve bulun:

#NameVirtualHost *:80

Bu sekilde duzeltin: 

NameVirtualHost SUNUCU-IP-ADRESINIZ:80

Eger sunucunuzda birden fazla ip belirlemek istiyorsaniz altina yeni IP yi asagidaki sekilde eklemeniz gerekli:
NameVirtualHost YENI-SUNUCU-IP-ADRESINIZ:80

Bunu her yeni IP icin yapmaniz gerekli.

Sonrasinda en alta gelerek her domain icin ayri ayri ekleyecegimiz asagidaki kodlari ekleyin:

ServerName test.kuaza.com
ServerAlias www.test.kuaza.com

##Domain ve dosyalar icin kok dizin belirliyoruz
DocumentRoot /home/test.kuaza.com/public_html
##Domain ve dosyalar icin kok dizin belirliyoruz

ServerAdmin kuaza.ca[AT]gmail.com
UseCanonicalName Off

## Hata dosyalarinin tutulacagi yeri belirtiyoruz
ErrorLog /home/test.kuaza.com/logs/test.kuaza.com-error_log
CustomLog /home/test.kuaza.com/logs/test.kuaza.com-access_log common
## Hata dosyalarinin tutulacagi yeri belirtiyoruz

##Bu kisim useradd XXX diye belirledigimiz domaine ozel kullanici izinleri

suPHP_UserGroup test.kuaza.com test.kuaza.com

SuexecUserGroup test.kuaza.com test.kuaza.com

##Bu kisim useradd XXX diye belirledigimiz domaine ozel kullanici izinleri

Bu kodu her domain ekleyeceginiz zaman kopyalayarak yeni domaine uyarladiktan sonra en alta ekleyin. Bunu hostname domaini ve ip adresiniz icinde uygulayin, boylece ip adresini adres satirina girerek ulasmak istendiginde istediginiz bir sayfayi actirabilirsiniz. aksi halde ilk tanimladiginiz domain acilacaktir IP adresi ile girilmeye calisildiginda :)

Bu ayardan sonra apache sunucusuna restart atalim:

service httpd restart

Eger bir hata vermez ise sorunsuz sekilde domaini adres satirindan calistirdiginizda acilacaktir.
Ornek: http://test.kuaza.com
Ornek resim:

Gordugunuz gibi bu adimlardan sonra panelsiz olarak websunucumuz hazir oldu, calisiyor. Suanda BIND yani dns yonetici uygulamasi isimize yaramiyor, daha dogrusu baslatmadik. Baslatsakta calismaz, hata verecektir, cunku konfigurasyon dosyasi ve sunucuda bagli domainler icin yapilandirma dosyalari olusturmamiz gerekli. bu suan icin gerekli degil, cunku gelismis ozellikleri kullanmak isterseniz yapmanizi tavsiye ederim. Ornegin webmail, yeni ns olusturmak, Domaine ozel ip belirlemek gibi. Ilerleyen donemlerde zamanim olursa BIND (dns zone) uygulamasi hakkinda da makale yazacagim, bu makaleye hitafen.

Sizde artik panelsiz olarak sunucunuzu kurabilir, yonetebilirsiniz.

2: Panelsiz sunucuda NGINX kurulumu
Sunucumuzu nginx ile guclendirerek daha hizli ve rahat bir sunucu hazirlayabiliriz. Apache tek basina yuksek hitli sitelerde bunun altindan kalkamayabilir. Cunku apache her dosya icin yeni bir slot yani islem baslatir. Bu statik, resim, html,css,js gibi dosyalarida icerir. Buda kisa surede apachenin uygulayacagi islem gucunun dolmasina neden olur. cogu zaman bu islem gucu asildiginda sitenize ulasilamama, gec acilma gibi bir cok sorunla karsilasirsiniz. Ancak Nginx websunucusu ile statik dosyalarin islenmesi cok daha kolay olur ve apache ye diger uygulamalari calistirmak icin alan ve islem gucu saglanir. isterseniz panelsiz bir sunucuda nginx kurulumu icin detayli bir dokumanin anlatimina baslayalim :)

Oncelikle nginx’i yum yardimi ile kuralim: Nginx derlemesi yum deponuzda olmayabilir, bu yuzden asagidaki adimlari takip edin.

Sunucunuza uygun olani secin ve ssh den calistirin:
CentOS 5

rpm -Uvh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm

CentOS 6

rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

Kendinize uygun olan kismi uyguladiktan sonra nginx otomatik kurulum dosyasi yum depolarina eklenmis oldu, ilk kullandigimiz kurulum kodunu tekrar sshden calistiralim:

yum install nginx

Bunun ardindan nginx’in kurulmus olmasi gerekli. Bu adimdan sonra tek yapacagimiz sey hesabimizdaki domainleri tanimlamak.

Orjinal kurulan nginx konfigurasyon dosyasinda cogu sey belirtilmemistir ve eksiktir. Ozellikle nginx in gzip ozelligi bile acik degildir ve bununla beraber cogu faydali ozellikleri acmak icin asagidaki islemleri sshden uygulayin:

rm -rf /etc/nginx/nginx.conf
cd /etc/nginx/
wget www.makaleci.com/dersler/nginx/nginx.conf

Bu islemden sonra hesabimizdaki siteleri nginx’e tanitalim. Bunun icin her siteyi ayri ayri tanitacagimiz konfigurasyon dosyasini acalim (winscp ile):

/etc/nginx/conf.d/default.conf

Dosya icerisindekileri komple silin ve asagidakileri ekleyin:

server {
access_log off;
error_log /var/log/httpd/nginx.errors.DOMAIN.com.log warn;
listen 80;
server_name DOMAIN.com www.DOMAIN.com;

# Nginx'in calistirmasini istediginiz statik dosya uzantilarini belirleyin.
location ~* .(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|js|css)$ {
root /home/DOMAIN.com/public_html; # Burda domaine ait kok dizini belirtiyoruz.
}

location / {
proxy_send_timeout 90;
proxy_read_timeout 90;

proxy_buffer_size 4k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

proxy_connect_timeout 30s;

proxy_redirect http://www.DOMAIN.com:81 http://www.DOMAIN.com;
proxy_redirect http://DOMAIN.com:81 http://DOMAIN.com;

proxy_pass http://DOMAIN-IP ADRESI:81/;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Sonrasinda icerisinde goreceginiz BUYUK harfle yazdigim yerleri nginx’e tanitacaginiz domaine gore duzenleyin.
NOT: Bu kod kalibini her domain icin ayri ayri, alt alta ekleyerek yeniden eklemeniz gerekli. Yani her domain icin bu kalibi kullanin ve alt alta ekleyerek kaydedin.

E: Ilk acacagimiz domaini belirttikten sonra bu ayar ile apache’yi acalim ve port ile tanimladigimiz domaine ozel bolumu nginx icin duzenleyelim.

Apache yapilandirma dosyasini acalim (winscp ile): /etc/httpd/conf/httpd.conf
Bunu aratin:

Listen 80

Bununla degistirin: 

Listen 81

Sonrasinda ekledigimiz sunucu ve domain ip lerinin sonundaki port numarasini nginx e yonlendirecegimiz port ile degistirelim:
Bunu aratin:

NameVirtualHost SUNUCU-IP-ADRESINIZ:80

Bununla degistirin: 

NameVirtualHost SUNUCU-IP-ADRESINIZ:81

 

Ve domain kisimlarindaki portuda 81 ile degistirin. Yukarida apache kurulduktan sonra domaini belirttigimiz kod kismi var, en sonda olmasi gerekli. O koddaki 80 kisimlarinida 81 ile degistirecegiz.

Her domain icin ayridir, BULUN:

<VirtualHost IP-ADRESI:80>

DEGISTIRIN:

<VirtualHost IP-ADRESI:81>

Yani kisaca arkadaslar apache yapilandirma dosyasi icindeki acik olan :80 portunu :81 ile degistiriyoruz. Boylece Domaine gelen istekleri NGINX e gondermis olacagiz.

F: mod_rpaf kurulumu
Oncelikle mod_rpaf kurulumu icin gerekli olan uygulamalari yum yardimi ile kuralim:

yum install httpd-devel gcc

Sonrasinda mod_rpaf i kuralim ve derleyelim:

cd /usr/local/src
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Sonrasinda tekrar apache konfigurasyon dosyasini acalim: /etc/httpd/conf/httpd.conf

Aratin: 

LoadModule

 


Bu kismi buldugunuzdan emin olur, apache modullerinin listesini goreceksiniz, alt alta 20-30 tane olmasi gerekli. Bu listenin en sonuna, bir satir asagiya gecip asagidaki kodu ekleyin:

LoadModule rpaf_module modules/mod_rpaf-2.0.so
# mod_rpaf Konfigurasyon alani, Sunucunuzda bulunan IP adreslerini eklemeyi unutmayin
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.0.0.1 SUNUCU-IP-ADRESI
RPAFheader X-Forwarded-For

 

Sunucunuzda kac tane ip adresi belirlenmis ise bunlari SUNUCU-IP-ADRESI kismina ve her birini bir bosluk birakarak ard arda ekleyin., Kaydedip cikin.

G: PCRE kütüphanesini Yüklemek (Guncel versiyon: pcre 8.20)

Son sürümü buradan indirebilirsiniz:

cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.20.tar.gz
tar xvfz pcre-8.20.tar.gz
cd pcre-8.20
./configure

Sanirim suanda herseyi sorunsuz halletmissinizdir, yani umuyorum :) Asagidaki son adimida uygulayarak ayarlari duzenledigimiz modullerle birlestirelim, etkinlestirelim:

Apache restart atalim:

service httpd restart

Nginx restart atalim:

service nginx restart

Bu adimlardan sonra eklediginiz domaini adres satirindan acarak gozlemleyin, aciliyorsa guzel. acilmiyorsa atladiginiz bir yer var yada yaparken hata almis, hata yapmis olabilirsiniz. Eger nginx in calisip calismadigini kontrol etmek istiyorsaniz bu siteye girerek sorgulatin.

Server kismindan nginx ve versiyon numarasini goruyorsaniz sorunsuz sekilde nginx calisiyor demektir. Tabi en ustdeki kisminda boyle olmasi gerekli: HTTP/1.1 200 OK =>

Ornek calisma ve testler sirasinda kullandigim domaini sorgulattigimda cikan sonuc:

3: Panelsiz sunucuda Mysql kullanimi= Mysql database olusturma, kullanici olusturma, database silme
Sitelerimize erisiliyor, php, html dosyalarimizda calisiyor, nginxde sorunsuz olarak isliyor. O zaman gelin bir wordpress sitesi kuralim :) Ama once mysql database ve kullanici olusturmamiz lazim, bunu bir cozelim once :)

SSH panelimize girelim (putty), ardindan asagidakini yazip enter yapin: (mysql’ye baglanalim)

mysql -u root -p

Ardindan mysql sifrenizi isteyecek sizden, dokumanin baslarina dogru mysql sifrenizi yenilemeyi gormustunuz, burda yaptiginiz sifreyi yazip enter yaparak mysql programina baglanin.

Sonrasinda asagidaki kodu kullanarak database olusturalim:

CREATE DATABASE db-isminiz-buraya;

db-isminiz-buraya: bu kismi olusturacaginiz database ismi ile degistirin ve enter yapin, sonrasinda asagidaki gibi bir mesaj cikacak, bu islemi dogru yaptiginiz anlamina gelir, aksi halde hata yapmissiniz demektir:

Query OK, 1 row affected (0.00 sec)

Simdide Database adina kullanici ve sifre belirleyelim:

GRANT USAGE ON db-isminiz-buraya.* to [email protected] IDENTIFIED BY 'db-sifreniz-buraya';

db-isminiz-buraya: az once olusturdugumuz db ismi aynen yazin.
db-kullanici-adiniz-buraya: database icin kullanici adini yazin.
db-sifreniz-buraya: Olusturdugunuz kullanici icin sifre belirleyin.

Ve Database ile kullanici ismini birbirine baglayalim:

GRANT ALL ON db-isminiz-buraya.* to [email protected] ;

db-isminiz-buraya: az once olusturdugumuz db ismi aynen yazin.
db-kullanici-adiniz-buraya: database icin kullanici adini yazin.

Olusturdugunuz bir datebaseyi silme:

DROP database db-isminiz-buraya;

db-isminiz-buraya: Silmek istediginiz db ismi aynen yazin.

Bu islemlerin her kademesinde Query OK seklinde cikti verecek, bu sorunsuz islemleri hallettiniz anlamina gelecektir. Suanda database ve kullanici hesaplarini olusturmus olduk. Artik wordpress kurarken db bilgilerini istediginde yukarida yaptigimiz kullanici adi, database adi ve sifreyi kullanabilirsiniz..

Arkadaslar dokumani hazirlamak bekledigimden uzun surdu. Bir ara sizofreniye baglamaya baslamistim. Sanirim 2-3 gundur uzerinde calisiyorum. Bu test icin 2 vds ile calistim, bu vdslerin sponsorlugunu saglayan kisi ve kurumlar ile ilgili yakin zamanda bir yazi yazacagim, burdan hepsine gonulden tesekkur ediyorum.

Galiba biraz yoruldum, dinlenme moduna gececegim. Dokumanda gozunuze carpan bir yanlislik, hata varsa yorum olarak yazmanizi rica ediyorum. Ayrica kurulum yapmaya calisan arkadaslar, olaki bir sorunla karsilasirsaniz lutfen yorum birakin, dokumani en iyi haliyle guncellemeye calisacagim.

Dokumanda Turkce karakter kullanamiyorum, klavyemden oturu, epey uzun ve yorucu oldugu icinde Turkce karakterleri duzeltmeye zamanim yok. Bu konuda anlayis gostereceginizi umuyor, arkamdan kufretmeyeceginizi dusunuyorum :)

Kategoriler
Amo-Seo-PR Php ve mysql Webmaster yardım

Php ve Mysql ile dinamik sitemap sayfalari hazirlamak

Genelde Hazir sistemler icin eklentiler yada moduller bulunur bu tarz uygulamalar icin. Gunumuzde artik sitemap uygulamasi olmayan site neredeyse cok az, ve olmasi gereken bir sey haline geldi. En buyuk sebeplerinden biriside arama motorlarinin sitenizin iceriginden daha cabuk ve hizli haberdar olabilmesidir.. Php ve mysql kullanan sistemler icin eger iceriginiz cok fazla degilse sitemap generator sitelerini kullanarak sitemap olusturabilirsiniz, ancak devamli guncellenen ve artik site iceriginizdeki sayfalar 50-100 bin’i gecmeye basladiginda sitemap generator siteleri artik size yardim edemeyecektir. cunku cogu belli bir limite kadar izin veriyor, daha fazlasi icin ucret istiyorlar. Ancak basit bir kac uygulama yazarak bunu hem otomatik, hemde basite indirgeyerek google ve dengi arama motorlari icin sitemizi daha cazip hale getirebiliriz..

Kategoriler
PhpKF Forum Web Site Tanıtımları Webmaster yardım

Türk yapımı php+mysql forum sistemi (PhpKF)

Bu yazimda sizlere tamemen turk yapimi bir forum sistemi olan PhpKF hakkinda bir kac sey yazacagim. Bunlarin basinda devamli olarak acik kaynak ve Turk projelerinin desteklenmesi gerektigini belirtmek istiyorum. Pardus gibi bu sistemde acik kaynak ve grur listemizden. Simdi uzun suredir bildigim ama ancak detayli incelemeye zaman ayirabildigim phpKF ‘nin gercekten cok basarili bir calismanin urunu oldugunu soylemek istiyorum. Bir cok ucretli forum sisteminin dengi niteliginde.

PhpKF hakkinda daha fazla bilgiye buradan ulasabilirsiniz. Sistemi denedigimde gercekten hizi ilk gozume takilan konu oldu. Nasil bir kodlama, nasil bir cache sistemi var bilmiyorum ama paralis atilan bir cok forum sisteminden cok daha verim alabileceginiz bir alt yapiya sahip.

Anladigim kadariyla 3-4 yildir gelistirme asaminda ve devamli gelistirilmeye devam ediyor. Bu sistemin ilk zamanlarini hatirliyorumda suan geldigi nokta gercekten etkileyici. Bence gelistirici arkadaslarinda katki saglayabilecegi ve adini tum dunyaya duyurabilecegi bir sistem olabilir. Bunun icin sizde yeni bastan bir forum sistemi yazmak yerine phpKF catisi altinda gelistirici niteliginde calisabilirsiniz. Script yazarinin buna hayir diyecegini dusunmuyorum acikcasi.

Forum sisteminden bahsetmek gerekirse baslica ozellikleri tema desteginin olmasi, eklenti desteginin olmasi, portal sisteminin olmasi, profesyonel forum sistemlerindeki bir cok ozelligi icerisinde barindirmasi, yonetim paneli, uyelik, paneli forum yonetimi bir cok konuda ihtiyaclari karsilayabilecek duzeyde. Birgun MJ de de kullanmak istedigim bir sistem :)

Bu sorum sistemi beni cok memnun etti gercekten. Grurlanmayi kenara birakip sistemin cok iyi islemesi ve hizi: Vay canina! dedirtir cinsden. Bu yapinin bir parcasi olmak bence guzel olurdu. Suanki durumum da benim icin zor gibi gorunebilir ama php bilen veya gelistirmek isteyen arkadaslarimizin bu sistem uzerinde de eklenti, tema gibi uygulamalar hazirlamasi cok iyi olurdu.

Son olarak phpKF yi bize kazandiran arkadaslara cok tesekkur ederim, destek sitesinde yazan isimleri bu konu altinda da yayinlayalim:
Sistemi Sıfırdan Kodlama ve Tasarım – Adem YILMAZ
Portal özelliği, tasarımı ve bazı grafikler – Yücel KAHRAMAN
SEO Özelliği – Gündüz Can YILMAZ

Bu listenin dahada artmasi dilegiyle, hepinize tesekkurler..

Kategoriler
İnternet Dünyası Php uygulamalari Webmaster yardım

Facebook’a Video yukleme uygulamasi (php)

Web siteniz uzerinden kullanicilarin facebook sitesine bilgisayarlarindan video yuklemelerini saglamak artik cok kolay. Facebook’un en guzel tarafi API destekli ve devamli gelistirilebilir eklenti ozelligi olmasi bence.. Kullanicilarinizin sitenizle olan iletisimini ve etkilesimini artirmak icin facebook API’lerini kullanmanizi tavsiye ederim.

Baslangic olarak Facebook sitesinde bir api anahtari olusturmaniz gerekli. Bunun icin buraya girerek bir api olusturun. API uygulamasinin ismi, aciklamasi ve site adresi gibi kisimlari, uygulamayi calistiracaginiz siteye gore hazirlanmali. Bunu istememin sebebi uygulama calistirildiginda kullanicinin facebook a baglanip bunun onaylanmasi istenecek. Burada Site adresiniz, uygulama ismi gibi bolumler gosterilecek. Kullanici onayindan sonrada upload alanina gidilecek ve kullanicinin bilgisayarindan video yukleyebilmesi saglanacaktir.

Api Uygulamasini olusturduktan sonra asagidaki kodlari sitenizde yeni bir php dosyasi olusturarak icine ekleyin:

<HTML>
<HEAD>
<TITLE>Kuaza Facebook video upload eklentisi..</TITLE>
<META name="description" content="">
<META name="keywords" content="">
<META name="generator" content="Makaleci / Kuaza">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080">
<?php
 $app_id = "SENIN_APP_ID";
 $app_secret = "SENIN_APP_SECRET_KODUN";
 $my_url = "SAYFANIN_TAM LINKI";
 $video_title = "YUKLENECEK VIDEONUN BASLIGI";
 $video_desc = "YUKLENECEK VIDEONUN ACIKLAMASI";

 $code = $_REQUEST["code"];

 if(empty($code)) {
 $dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
 . $app_id . "&redirect_uri=" . urlencode($my_url)
 . "&scope=publish_stream";
 echo("<script>top.location.href='" . $dialog_url . "'</script>");
 }

 $token_url = "https://graph.facebook.com/oauth/access_token?client_id="
 . $app_id . "&redirect_uri=" . urlencode($my_url)
 . "&client_secret=" . $app_secret
 . "&code=" . $code;
 $access_token = file_get_contents($token_url);

 $post_url = "https://graph-video.facebook.com/me/videos?"
 . "title=" . $video_title. "&description=" . $video_desc
 . "&". $access_token;

 echo '<form enctype="multipart/form-data" action="'.$post_url.'
 "method="POST">';
 echo 'Please choose a file:';
 echo '<input name="file" type="file">';
 echo '<input type="submit" value="Upload" />';
 echo '</form>';
?>

</BODY>
</HTML>

Kodlarin icindeki asagidaki alanlari kendinize gore duzenleyin:

$app_id = "SENIN_APP_ID";
 $app_secret = "SENIN_APP_SECRET_KODUN";
 $my_url = "SAYFANIN_TAM LINKI";
 $video_title = "YUKLENECEK VIDEONUN BASLIGI";
 $video_desc = "YUKLENECEK VIDEONUN ACIKLAMASI";

Bu kisimlari ilerde kodlamayi gelistirerek upload formu kismindan eklenebilir hale getirebilirsiniz. Boylece butun kullanicilariniz kolayca videolarini sizin siteniz uzerinden facebook’a yukleyerek paylasabilir.

Daha sonra uygulamayi calistirdiginizda (php dosyasini) sizi facebook’a yonlendirecek ve uygulamayi onaylamanizi isteyecek. Onaydan sonra video upload alanina geleceksiniz. ornek asagidaki gibi bir sayfa:

Video dosyasini secip upload et butonuna tikladiginizda dosyaniz facebook’a yuklenmeye baslayacaktir. sonrasinda yuklenen videonun ID adresi geri donderilecektir. Ornek bir video upload’indan sonra asagidaki gibi bir geri donus sayfasi olusmaktadir:

Ve videonuz yuklenmis oldu :) Facebook profil sayfaniza girerek videonun yuklenip yuklenmedigini gorebilirsiniz. Ben ornek bir resim daha ekliyorum, upload dan sonra bu sekilde gorunecektir:

Bu uygulamanin anlatimin sonuna geldim galiba. Herhangi bir sorun olursa buradan yorum yazabilirsiniz. Uygulamayi gelistirmek isteyen arkadaslar daha fazla bilgiyi facebook sitesinde buradan bulabilirler.

Kolay gelsin.

Kategoriler
Php fonksiyonlari Webmaster yardım

Php güvenlik kodu uygulaması (captcha)

Merhaba arkadaslar, bu yazimda size cok guzel bir Php güvenlik kodu uygulaması (captcha) betigi paylasacagim. Baslamadan once demo gormek isteyenler buraya bakabilirler.

Peki nedir bu güvenlik kodu (captcha)?
Gelistirilmesinin amaci bilgisayar ile insanlari birbirinden ayirt ederek sitelere ve sunuculara gelecek olan anlik saldiri girisimlerini engellemek diyebiliriz. Daha net ifade etmek gerekirse genelde sitelere uye girisi, uye olma, yorum yapma gibi bolumlerde kullanilan, bilgisayar programlarinin, botlarin birden fazla girisimde bulunarak, siteyi hedef alan saldirilara yada icerigin calinmasina neden olan acigin kapatilmasina yaramaktadir.

Kategoriler
Php fonksiyonlari

Php ile Dosya Çekme ve İndirme (CURL)

Dersimiz Php ile Dosya Çekme ve İndirme. Php de CURL Yöntemini kullanacağız ve bu yöntem ile bir çok konunun başlangıcını anlamış olacaksınız. İlerde sizde ciddi konularda haber, video, resim botları hazırlayabilir, daha gelişmiş sistemler için girişler, 3. parti yazılımlara bağlanmak için ara scriptler yazabilirsiniz..

Şimdi bir çok kişinin başlaması için güzel bir örnek hazırladım bir kaç dokümanla beraber çok güzel bir şekilde düzenledim. Canlı olarak denedim, test ettim sorunsuz şekilde istediğimizi yerine getirecek bir başlangıç scripti oldu. Neler yaptığını ve nasıl yaptığını bir kaç maddede toplayalım.

Neler yapar ?
* url adresi belli, resim yada dosya yi karşı taraftan kendi sunucunuzda istediğiniz bir klasöre çeker, indirir.
* çekmek istediğimiz dosyanın ismini rastgele sayı ile benzersiz şekilde kaydeder.
* çektiğiniz dosyanın yolunu ve kaydedildiği yeni ismini ekrana yazdırır.

Nasıl yapar ?
* Url ile get metodu kullanarak dosya adresini yazıyoruz ve gerisini kodlarımız hallediyor :)

Nasıl kullanılır ?
Urlde aşağıdaki örneği kullanmanız yeterli:

http://www.DOMAIN.com/kodsayfaniz.php?v=Dosya_Adresi

Php ile Dosya Çekme ve İndirme ( CURL )
Php ile Dosya Çekme ve İndirme ( CURL )

Ve sirada Kodlar var:

Kodlari Php kodlarinin Arasina ekleyiniz.

$linkcik=$_GET['v']; // Adres satirindan dosya yolunu aliyoruz ve degisekene atiyoruz. 

// Bi kisimdan dosyamizi cekecek fonksiyona giris yapiyoruz.
function dosya_indir($link,$name=null)
{

$link_info = pathinfo($link);  //Yol bilgilerini deðiþkene atýyoruz.
$uzanti = strtolower($link_info['extension']); //Dosyanýn uzantýsýný deðiþkene atýyoruz.
$file = ($name) ? $name.'.'.$uzanti : $link_info['basename'];
$yolcuk = "dosya/".$file; // Dosya/ buradan cektigimiz dosyanin kaydedilecegi yeri seciyoruz, sonunda / isareti olmak zorunda ve klasorun yazma izni (777) olmali.

$curl = curl_init($link);
$fopen = fopen($yolcuk,'w');

curl_setopt($curl, CURLOPT_HEADER,0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);
curl_setopt($curl, CURLOPT_FILE, $fopen);

curl_exec($curl);
curl_close($curl);
fclose($fopen);

}

//cekme islemi bitti sira diger kisimalarda.

$rasgele_sayi = rand(1,10000000); // Rastgele sayi olusturup, degiskene atiyoruz.

dosya_indir($linkcik,$rasgele_sayi); // ilk satirda get metodu ile aldigimiz linki degiskene atamistik, burada url adresini ve bir onceki sayirda random sayimizi ekliyoruz, inecek dosyayi ve ismini belirliyoruz.

// islem tamamlandi dosyalar cekildi, simdide cekilen dosyayi ve yeni ismini ekrana yazdiralim..
echo "Cekilen dosya baglantisi: ".$linkcik;
echo "

Yeni dosya ismi: ".$rasgele_sayi;

// Bitti: By kuaza dan sevgilerle. Makaleci.com sitesi okurlarina saygilar..

Ben kodlara aciklamalari yazdim, anlamadiginiz yer olursa yorum olarak yazin guncellerim yaziyi..

Kategoriler
İnternet Dünyası Php fonksiyonlari Webmaster yardım

PHP Sayfalama Kodu [Basit Düzey]

Makelemizin konusu PHP ile sayfalandırma. Sayfalandırma tam olarak 1 2 3 …. 5 6 7 …. 20 21 22 şeklinde sayfaların sıralanmasıdır. İlk olarak burda kullanacagımız degişkenleri tanımlayalım.

<?php
$sayfa_sayisi= 7; // Bu degisken toplam kac tane sayfamiz oldugunu gosteriyor
$sayfa=1; // Bu degisken ise simdi hangi sayfada oldugumuzu gosteriyor.
?>
 

Eger sayfa sayımız 10 dan kucuk olursa yukardaki gibi bir gosterime gerek duymadan. Direk sayfa numaralarını gosterelim. Arkadaşlar biz burda sayfalara link vermeden direk sayfanın numarasını gosteriyoruz siz tabiki de kullanırken bu sayfalara link vereceksiniz.

<?php
$sayfa_sayisi= 7; // Bu degişken toplam kac tane sayfamiz oldugunu gosteriyor
$sayfa=1; //d Bu degişken ise şimdi hangi sayfada oldugumuzu gosteriyor.
if ($sayfa_sayisi<=10) {
// eger sayfa sayimiz 10 dan kucuk olursa burasi işleyecek
for ($a=1; $a<=$sayfa_sayisi;$a++) {
// sayfa sayisi kadar donguyu dondurduk
echo "$a | "; // her dongude sayfa numarasini gosterdik
}
}
?>
 

Şimdi ise sayfa sayımız 10 dan buyuk oldugu durumlarda ne yapacagımıza bi bakalım. Neden 10 dan buyuklerde bu yontemi kullanmıyoruz ? cunku; 100 tane sayfamız oldugunu varsayalım o zaman 100 yane link gorunecek bu da hoş bir goruntu olmaz.

<?php
$sayfa_sayisi= 15; //10 dan buyuk olma durumunu inceleyecegimiz icin 15 yapiyorum.
$sayfa=7; // Bu degişken ise şimdi hangi sayfada oldugumuzu gosteriyor.
if ($sayfa_sayisi<=10) {
// eger sayfa sayimiz 10 dan kucuk olursa burasi işleyecek
for ($a=1; $a<=$sayfa_sayisi;$a++) {
// sayfa sayisi kadar donguyu dondurduk
echo "$a | "; // her dongude sayfa numarasini gosterdik
}
}
else{
// Sayfa sayisi 10 dan buyuk olursa
// ilk uc sayfa
for ($a=1; $a<=3; $a++) {
echo "$a | ";
}
// sonraki sayfalar
switch ($sayfa) {
case ($sayfa<=3):
// sayfa 3 ten kucukse
$sayfa_sayisi0=$sayfa_sayisi-1; // sayfa sayisindan onceki sayfa
echo "… $sayfa_sayisi0 | $sayfa_sayisi";
break;
case ($sayfa==4):
// sayfa 4 eşitse
$sayfa1=$sayfa+1; // secili sayfadan sonraki sayfa
$sayfa_sayisi0=$sayfa_sayisi-1; // sayfa sayisindan onceki sayfa
echo "$sayfa | $sayfa1 … $sayfa_sayisi0 | $sayfa_sayisi";
break;
case ($sayfa==5):
// sayfa 5 eşitse
$sayfa0=$sayfa-1; // secili sayfadan onceki sayfa
$sayfa1=$sayfa+1; // secili sayfadan sonraki sayfa
$sayfa_sayisi0=$sayfa_sayisi-1; // sayfa sayisindan onceki sayfa
echo "$sayfa0 | $sayfa | $sayfa1 … $sayfa_sayisi0 | $sayfa_sayisi";
break;
case ($sayfa==$sayfa_sayisi):
// sayfa sayfa sayisina eşitse
$sayfa0=$sayfa-1; // secili sayfadan onceki sayfa
echo "… $sayfa0 | $sayfa";
break;
case ($sayfa==($sayfa_sayisi-1)):
// sayfa sayfa sayisindan 1 eksikse
$sayfa0=$sayfa-1; // secili sayfadan onceki sayfa
$sayfa1=$sayfa+1; // secili sayfadan sonraki sayfa
echo "… $sayfa0 | $sayfa | $sayfa1";
break;
case ($sayfa==($sayfa_sayisi-2)):
// sayfa sayfa sayisindan 2 eksikse
$sayfa0=$sayfa-1; // secili sayfadan onceki sayfa
$sayfa1=$sayfa+1; // secili sayfadan sonraki sayfa
echo "… $sayfa0 | $sayfa | $sayfa1 | $sayfa_sayisi";
break;
case ($sayfa==($sayfa_sayisi-3)):
// sayfa sayfa sayisindan 3 eksikse
$sayfa0=$sayfa-1; // secili sayfadan onceki sayfa
$sayfa1=$sayfa+1; // secili sayfadan sonraki sayfa
$sayfa_sayisi0=$sayfa_sayisi-1; // sayfa sayisindan onceki sayfa
echo "… $sayfa0 | $sayfa | $sayfa1 | $sayfa_sayisi0 | $sayfa_sayisi";
break;

default:
$sayfa0=$sayfa-1; // secili sayfadan onceki sayfa
$sayfa1=$sayfa+1; // secili sayfadan sonraki sayfa
$sayfa_sayisi0=$sayfa_sayisi-1; // sayfa sayisindan onceki sayfa
echo "… $sayfa0 | $sayfa | $sayfa1 … $sayfa_sayisi0 | $sayfa_sayisi";
break;
}
}
?>
 

Sayfalama kodunu bitirdik. sayfa ve sayfa_sayisi degişkenlerini degiştirerek kodlarımızı deneyebilirsiniz. 

Ahmet EROL