Kategoriler
Php fonksiyonlari

Birden fazla array islemlerini birlestirme

Elinizin altindan birden cok array degiskeni varsa bunlari tek degisken icerisind etoplayarak kullanmak daha mantikli olacaktir. Bunun icin asagidaki fonksiyon tam kendi :)

public function array_merge_recursive_distinct ( array &$array1, array &$array2 )
{
  $merged = $array1;

  foreach ( $array2 as $key => &$value )
  {
    if ( is_array ( $value ) && isset ( $merged [$key] ) && is_array ( $merged [$key] ) )
    {
      $merged [$key] = array_merge_recursive_distinct ( $merged [$key], $value );
    }
    else
    {
      $merged [$key] = $value;
    }
  }

  return $merged;
}

 

Kategoriler
Amo-Seo-PR Php fonksiyonlari Webmaster yardım

PHP ile Arama motoru (SEO) dostu linkler hazirlamak

Arama motoru dostu linkler hazirlamak icin cok guzel bir fonksiyon arkadaslar. Basit iki adimda kolayca ve sunucuya fazla yuk olusturmadan php ile linkleri, yazilari kolayca arama motorlarina uygun sekilde duzenleyebilirsiniz. Biraz acmak gerekirse url rewrite yani link yapisi ile alakali seo duzenlemesidir.

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

Curl ve UserAgent Değiştirme

Arkadaşlar user agent bilgisi değiştirmeyi göstereceğim .Curl ile herhangi bir web sitesinden bilgi çekerken,user agent sayesinde örneğin arama motoru gibi gözükebiliriz.Bu sayede veri çektiğimiz web sitesinden engellenmemiş oluruz.Yada tarayıcımızı değiştirebiliriz.Çünkü bazı web siteleri eski sürüm tarayıcıları engelliyor.

Kategoriler
Php fonksiyonlari Webmaster yardım

Php ile cache sistemi [Basit ve degisken File cache]

Daha oncede yazdigim bir konuydu, simdi sizlere iki baslik altinda konu hakkinda detay verecegim.
1 – Sabit ve degismeyen sayfa cacheleme
2 – >devamli degisen ayni kalmayan sayfalari cacheleme

1. konudaki cache ile 1-2 sayfanizin cachesini almak istediginizde kullanabileceginiz bir sistem olarak karsiniza cikacak. Cok fazla degisen siteniz yoksa, belli sayfalarda cok fazla sorgu varsa veya fonksiyon, bunlarin sunucuya yuk oranini en aza indirgemek icin kullanilabilir.

Bu 1. konudaki basit cache olayina ornek vermek gerekirse bu siteye bakabilirsiniz: http://www.videolin.com

sadece ana sayfasinda kullandigim cache kodlari hem acilisin hizini hemde kullandigim bir kac php ve sql sorgusunun siteye yuk getirmesi, yavas acilmasi gibi bizi zor duruma dusurecek sorunlardan kurtarmaktadir.

Basit Cache Mantigi:

Kullanacagimiz cache sisteminin nasil isledigini anlatarak baslamakta yarar var. Kisaca sayfanin uzerine ve altina yerlestirdigimiz bir kac php kodu sayesinde orta kisimda olusan sorgular, fonksiyolar gibi olaylari tek bir dosyada toplayarak, 2. kez cagrildiginda bu dosyadan yardim almasi diyebiliriz.

Ozetle mantigin basit isleyisi:

Ziyaretci siteye girer —-> sayfayi once cache varmi kontrol eder —-> cache yoksa cache alir, varsa cache dosyasindan yukler

FAydasi: 2. kez cagliral sayfa cachelendigi icin php ve sql sorgularini calistirmadand irek cacheye alinan sabit html kodlarini cagiracak ve sayfaya isleyerek bize gosterecektir.

bu sayfa acilisini %50 sunucuyu yorma, kasma gibi olaylarida %60 azaltir..

Tek sayfalik Basit Cacheye ornek:

yukarida bahsettigim 1. konuda ve basit cache mantiginda kullanilacak kodlar asagida verilmistir:

$cachedosyasi = "cache/index.kuaza";
if (file_exists($cachedosyasi)) {
include($cachedosyasi);
exit;
}
ob_start();
<!-- Php kodlari ve mysql sorgulari -->
$ch = fopen($cachedosyasi, 'w');
fwrite($ch, ob_get_contents());
fclose($ch);
ob_end_flush();

 

yukaridaki kod genel olarak bir cache alma sisteminin ana mantigini olusturmaktadir.
sirasiyla:
cache dosyasini tanimliyoruz
cache dosyasini kontrol ediyoruz
varsa cacheyi cagiriyoruz ve islemi sonlandiriyoruz
cache yoksa kodlar arasindakileri html olarak cacheliyoruz
sonrasinda islem en basa doner..

Eger bu cachede zaman siniri eklemek istiyorsaniz, yani belli araliklarla dosya belirlediginiz sureden eski ise yenilenmesini saglamak isterseniz kucuk bir zaman kontrol kodu ile islemi basarili bir sekilde saglamis olursunuz. Bu ornekde asagida renklendirilerek verilmistir:

$cachedosyasi = "cache/index.kuaza";
if (file_exists($cachedosyasi) && (time() - 2700 < filemtime($cachedosyasi))) {
include($cachedosyasi);
exit;
}
ob_start();
<!-- Php kodlari ve mysql sorgulari -->
$ch = fopen($cachedosyasi, 'w');
fwrite($ch, ob_get_contents());
fclose($ch);
ob_end_flush();

 

Yukaridaki renkli kisimda bulunan 2700 ibaresi saniye cinsinden hesaplamak icindir. eger cache alindan dosya 2700 saniyeden eski ise yenisini olusturmaktadir.

cachelenecek alanida ob_start(); acip ob_end_flush(); kodlariyla bitiriyoruz, ve arada kalan sorgular, fonksiyonlar saf htmlye cevrilerek cache alinmis olur.

Degisen Sayfalar icin cache mantigi:

SAbit kalmayan ve devamli olarak get, post methoduyla degisesen sayfalariniz olabilir. Yada bu metodlarin disinda TEK bir dosyadan birdan fazla icerige hukmediyorsaniz basit cache sistemi etkisiz kalacaktir. Cunku ayni dosya uzerinden cachelenen dosya 1 tane olacagindan ve ayni isimde kalacagindan, baska konuda sayfa cagirdiginda onceki cache alinan sayfayi gostereceginden isinize yaramayacaktir. Ancak cachelenen dosya ismini adres satirindaki urlye yada sayfaniza gelen get,post metodundaki bir veriye gore yaptirabilirsiniz. boylece her sayfa degistiginde o sayfaya ait cache alinir. Ornek vermek gerekirse video siteniz var ve bu video sitesinde tek dosyadan islem yaptirarak milyonlarca video gosteriyorsunuz ziyaretcilerinize.
soyle ornek bir kac link gostereyim ben size:

  1. http://www.videof.net/video/kffacxfA7G4/Justin_Bieber__Baby_ft_Ludacris.html
  2. http://www.videof.net/video/uhLhdKGINzU/Usher__OMG_Official_Video.html
  3. http://www.videof.net/video/ZM3CYEdr5fA/Bruce_Springsteen__Eyes_on_the_prize_LIVE_in_DUBLIN.html
  4. http://www.videof.net/video/Pdw27j_usP0/maNga__We_Could_Be_The_Same_Turkey.html

yukarida verdigim linkler tek bir dosya uzerinden gosterilmektetir ve bu tarz siteler ve sistemler icin kullanilacak en guzel cache yontemi url yada adres satirindan gelen isteklerin cache edilen dosyaya eklenmesidir. Ben bu sitede verdigim ornek linklerde cache kullanmiyorum, cunku sunucu kasacak bir yapida degil. ancak sunucuyu mahfedecek duzeyde fonksiyon ve sql sorgusu barindiran sistemlerde kullanmanizi oneririm. Dilerseniz boyle bir sistemde kullanilacak cache kodlarini paylasarak aciklamaya gecelim.

$cachedosyasi = "cache/".md5($_SERVER['REQUEST_URI']).".kuaza";
if (file_exists($cachedosyasi) && (time() - 2700 < filemtime($cachedosyasi))) {
include($cachedosyasi);
exit;
}
ob_start();

<!-- Php kodlari ve mysql sorgulari -->
$ch = fopen($cachedosyasi, 'w');
fwrite($ch, ob_get_contents());
fclose($ch);
ob_end_flush();

 

Yukaridaki ornek benim kullandigim mantikla ayni urlden aldigim bilgiyi md5 ile sifreleyip cache ediyorum. Boylece sacma karakterler varsa cache ederken sorun cikartmasini engelliyoruz.

Eger adres satirindaki urlye gore degilde gelen get yada post daki bilgilere gore cache yapmak isterseniz yukaridaki koddaki: $_SERVER[‘REQUEST_URI’] kismini bunlardan biriyle degismeniz yeterli:
$_GET[‘GETMETODU’] yada $_POST[‘POSTMETODU’]

Boylece cache alirken ayni adres urlsiyle yada ayni get veya post bilgisiyle karsilastiginda cache ettigi onceki dosyayi cagirecektir. ve boylece herzaman ayni dosyayi ziyaretciye gostermeyecektir..

Koydugumuz zaman sinirinida dilediginiz sekilde dusurebilir yada uzatabilirsiniz. Ben saniye cinsinden yazdim. Varin siz hesaplayin gerisini :)

Bu arada kodlari kullarnirken dosya yolunu gosterirken kullandigim cache/… yolunu olusturmaniz gerek yoksa cache almaz, hatada verebilir. olusturduktan sonra cache klasorunuze chmod 777 ayarini verirseniz sorunsuz sekilde cache olusturup, silip yeniden kaydedebilir..

***

Bu dokumanda herhangi bir yanlis bilgi yada tutarsiz gordugunuz yerler varsa yorum olarak duserseniz en kisa surede duzenlemeye calisirim..

Yanlisim olduysa simdiden kusuruma bakmayin..

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

PHP 5.3.0’a geçmeden dikkat etmeniz gerekenler!

artık hosting firmalarının bir çoğu php sürümlerini 5.3.0 a geçirmeye başlamışken internet programlamacı arkadaşların dikkat etmesi gereken bir kaç önemli nokta var.

Gerek daha önceki sürüme göre yazılan scriptleri 5.3.0 a uyarlama konusunda gerek yeni uygulamalarınızda bazı eski php fonksiyonları vs leri kullanılmaz durumda ve deprecated hatası alıyorsanız aşağıya bir göz atın derim.

* call_user_method() yerine use call_user_func() kullanılmalı
* call_user_method_array() yerine (use call_user_func_array() kullanılmalı
* define_syslog_variables() kullanılmamalı
* dl() php extention kütüphanelerini yükleyen bu fonksion iptal edildi. kullanılmaması öneriliyor.
* ereg() yerine preg_match() kullanılmalı. düzenli ifadelere göre string aramalarında çokça kullandığımız bu metoda dikkat edilmeli
* ereg_replace() yerine preg_replace() kullanılmalı bul değiştir türü işlemlerinde kullanılır.
* eregi() yerine preg_match() i parametresi ile kullanılmalı
* eregi_replace() yerine preg_replace() kullanılmalı
* set_magic_quotes_runtime() ve magic_quotes_runtime() eskidi, php 6.0 da tamamen kalkıyor.
* session_register() yerine $_SESSION superglobal ı kullanılmalı
* session_unregister() yerine $_SESSION superglobal ı kullanılmalı
* session_is_registered() yerine $_SESSION superglobal ı kullanılmalı
* set_socket_blocking() yerine stream_set_blocking() kullanılmalı
* split() yerine preg_split() kullanılmalı
* spliti() yerine preg_split() iparametreli kullanılmalı
* sql_regcase() artık kullanılmayacak php 6.0 ile tamamen kalkıyor.
* mysql_db_query() yerine mysql_select_db() ve mysql_query() kullanılmalı
* mysql_escape_string() yerine SQL’e birşeyler kayıt ederken özel karakterlerden kaçmaya yarayan mysql_real_escape_string() kullanılmalı

* is_dst parametresi mktime(). fonksiyonunda iptal edildi yerine yeni zaman fonksiyonları kullanılmalıdır.

herkesin dikkatine … the don is out.

Kaynak

Kategoriler
Deneme Yazıları Eğitim - öğretim İnternet Dünyası Ivır Zıvır Php fonksiyonlari

Cache sisteminizi kendiniz hazirlayin! [PHP]

Konunun detaylarina baslamadan once webmaster arkadaslara bir kac goudum ve nasihatim olacak. Haddim olmayabilir ancak bunu bir nevi dikkate almaniz hepinizin yararina olacaktir.

Webmaster: Bir script kodlarken, hazirlarken mumkun oldugunca sorgu sayisini kisitli tutun yada bu tarz sistemlerde hava, su kadar degerli olan cache sistemlerini kullanin. Yoksa kendini hazirlayin. Bir kac mantikla yapilmayacak sey yoktur.

Alici: Bir script alirken, dikkat edin, yaptigi sorgu sayisi baslarda farkedilmeyecek kadar az olabilir, ancak yuksek hitlerde sunucunuz dahi dayanamayacak noktaya gelecektir. Ya kilitlenecek yada is yapamaz halde yavaslayacaktir.

Yanlis kodlama, php’nin urettigi hata kodlari, yuksek boyutlarda sorgu sayisi, mysql sorgularindan bahsediyorum, baslarda hitiniz 10-20 kisiyken farkedilmezdir. ancak hitiniz 500-1000 tekil e ciktiginda, anlik olarak gelen her kisi scriptteki hatali kodlari tekrar calistiracaktir, yada cok fazla sorgu varsa her kiside ayri sorgu sayisi ortaya cikacagindan sunucunuz, hostunuz kisa surede susptende olur, yani kapanir.

Buna ornek vermek gerekirse sistemine asina oldugum wordpress i secmek istiyorum: WordPress sistemini aslinda herkes yuksek hitlerde sistemi kastigi, zorladigi, kilitledigi sekillerde bilirsiniz. Aslinda oyle degildir. Standart wordpress temasinda ana sayfa sorgu sayisi 25 lerde iken, prof. bir magazine temasinda bu sayi 150-200 lere kadar cikar.. bu ornektir, 50 de olur, 100 de. Burada anlik hitiniz 50 ise sunucunuz aninda kilitlenecektir, yada inanilmaz bir yavaslama olacaktir. sebebi ise cok fazla sorgu sayisi ile hem apache ye, hemde apacheden cok mysql programina yuklenmeniz. sonucunda bunu makine kaldiramaz ve kilitlenir. sitenize bir sure ulasilamaz.

Bu kadar uzun bir baslangic yazmamin sebebi, konuyu daha iyi kavrayabilmeniz arkadaslar. Yuksek sorgular hostu oldurur, o olurkende siz bitersiniz.. Bunu dedigim gibi baslarda anlamazsiniz, ama ilerde cok kotu sekilde hissedersiniz..

Yakin zamana kadar bende bu konuda sorgu azaltma calismalari yapiyordum, ancak cache sistemi bu konuda tam aradigim seydi. sitenize giren bir kisi 200 sorgu varsa temada onu calistirir, sonrasinda cache ile sayfa komle cacheye alinir. sonrasinda girenlerin hepsi sorgu calistirmaz, cache edilen HTML dosyasini calistirir. Bu sekilde anlik 50 kisi varsa 50 kiside HTML bir dokuman calistiracaktir, yani mysql ye yuklenmede %85 e varan dususler olacaktir. Bu sitenizin guncelligine gore degisir, cok az guncellenen bir siteniz varsa cache sistemi sizin can damariniz olacaktir.

Yuksek sorgulu temalardan birisi de KuazaHaber temasidir. bunu farkettigimde sorgu azaltma yoluna gittim, bu seferde tema temaliktan cikmak uzereydi, neden cache denemeyeyim diye icimden gecirdim. Hali hazirda cache eklentileri istedigim gibi degildi, sistemi kasmasinin yaninda pekde gozle gorulur bir faydasini farkedemedim ben.

Sonuc olarak 150 ye varan sorgu sayisi cache sistemi sayesinde 11 e dustu. Bu 11 sorguda sitenin en ust kismindakiler, menuler. ondan asagisini cache ile sayfaladigim icin her giren HTML olarak bunu goruyor, ve sorgu yapmiyor sunucumuza..

Tamam kuaza uzatma dediginizi duyar gibiyim, yukarida yazdiklarimi kavradiginizi umid ederek asil konumuz olan sisteminizi cache ile kurtarabileceginiz konuya giriyorum..

CAche sistemine giris:

Cache kodlari 2 kisimdan olusur.

  1. kisim en ustte cacheye alinan, baslanan yer.
  2. kisim cachenin kapatildigi yer.

eger cache ile calisiyorsaniz 2. kisimdan sonrasini sitede gosteremeyeceginizi bilmenizi isterim. bu sebeple mantik kullanarak kendi sisteminizi gelistirebilirsiniz

Yani daha kolay anlayabilmeniz icin bir ornek vermek istiyorum:

<Cache kodlari>

kodlariniz, sorgulariniz

</cache kodlari>

bu sekilde kodlarinizi yerlestirdiginizde aradaki sorgular cache ye alinir. En guzelide cache ye sure koyabiliyorsunuz. yani cache edilen dosya 15 dk dan eski ise yenisi ile degistirilir.

ben size dakikali olarak cache alma kodlarini paylasacagim, sonrasinda aciklamasini yapacagim, dikkatle takip edin:

Cache ust kisim kodlari:

$cache_dosyasi= “kuaza_anasayfa”;
$cachefile = “cache/”.$cache_dosyasi.”.html”;
$cachetime = 60 * 60; // 60 * 60 = 1 saat
if (file_exists($cachefile) && (time() – $cachetime < filemtime($cachefile))) {
include($cachefile);
echo “<!– Kuaza onbellek sistemi “.date(‘jS F Y H:i’, filemtime($cachefile)).” –>n”;
exit;
}
ob_start();

yukaridaki kod dan sonras cache almak istediginiz kodlar geliyor.

en alt kismida asagidakileri ekleyerek cache leme islemi icin sayfa araligimizi belirliyoruz:

Cache alt kisim kodlari:

$fp = fopen($cachefile, ‘w’);
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();

Iki kodu birlestirerek bir ornek vermek istiyorum. Eminim sonrasinda mantigi anlamis olursunuz:

$cache_dosyasi= “kuaza_anasayfa”;
$cachefile = “cache/”.$cache_dosyasi.”.html”;
$cachetime = 60 * 60; // 60 * 60 = 1 saat
if (file_exists($cachefile) && (time() – $cachetime < filemtime($cachefile))) {
include($cachefile);
echo “<!– Kuaza onbellek sistemi “.date(‘jS F Y H:i’, filemtime($cachefile)).” –>n”;
exit;
}
ob_start();

echo “kuazadan selamlar arkadaslar. bu echo ettigimiz yazi cache sistemi sayesinde cache klasorune html olarak kaydedilecek. burada php yada sql sorgularida kullanabilirsiniz, sizin gordugunuz sekilde cachelendigi icin sonraki acilmasinda sorgu degil html sayfa karsiniza cikacaktir :)”;

$fp = fopen($cachefile, ‘w’);
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();

bu kodlari tabiki <? php …. ?> kodlari arasina almaniz gerek sonrasinda calistirdiginizda orta kisimda echo ettigimiz yazi daha acmis oldugunuz cache klasorune html seklinde yani bu isimde: kuaza_anasayfa.html kaydedilecektir.

bu islemin saglikli yapilabilmesi icin, oncelikle cache klasorunun chmod ayarinin 777 olmasi gerek.

Birazda kodlardaki alanlardan bahsedelim:

$cache_dosyasi= “kuaza_anasayfa”;

Yukaridaki alinti yaptigim kod kisminda kuaza_anasayfa ismini degiskene atiyoruz ve sonrasinda bunu cachefile degiskeni kisminda kullaniyoruz. Bunu bu sekilde eklememdeki sebep wordpress yada farkli bir scripte daha cabuk uyarlanabilmesidir. Girilen sitedeki get yada post methodu ile gelen bir veriyi alarak degiskene atarsiniz sonrasinda bunun isminde cache dosyasi yaratilir. sonraki zamanlarda ayni post yada get metodundan ayni bilgi gelirse cache dosyasi gosterilecektir. hayir farkli bir sey gelirse o isimde yeni bir cache olusturacaktir.

Ben bunu tam anlayabilmeniz icin wordpress den ornek vermek istiyorum: WordPress de yazi okuma sayfasina girdiginizde aslinda p=YAZI IDSI seklinde bir link olusur.. Siz buradaki p= den sonrasini get metodu ile cache kismana alip degiskenimize yazdirirsaniz, o yaziya ait cachemiz olmus olur. Sonrasinda girilen diger yazilar icinde o ID de farkli bir cache olusturacagi icin sitenizin cogu sayfasi cachelenecek ve gelen ziyaretciler size zarar degil, kar getirecektir..

Ornegin kendi sitem olarak hdvideoclip.com da ana sayfa ve video izleme kisimlarinda cache kullaniyorum, yukaida bahsettigim sekilde ve inanilmaz hizli aciliyor sayfalar. Sonucda sorgu olmadigi icin html sayfa aciliyor. Bu hem ziyaretciyi size baglar, hemde hostunuz, sunucunuz sorgu sayisinin fazlaligindan kasilmaz.

o sitede ornek bir videoya bakin: timbaland-scream-ft-keri-hilson-nicole-scherzinger-9319.html

acilisi nasil ? Turkiyede iseniz youtube yasak oldugu icin yavaslamalar olabilir, yada siz acarken biz saldiri aliyorsak yavas acilabilir. onun haricinde hizini gormenizi isterim.

sistem wordpress bu sebeple once o sayfanin ID sini degiskene atiyorum. Ornek:

$cache_dosyasi = $konuIDSI;

Sonasinda da bu sekilde kullaniyorum:

$cachefile = “cache/yazi-“.$cache_dosyasi.”.html”;

ve cacheye kaydetmesi bu sekilde oluyor: yazi-KONU IDsi.html

Cache dosyasinin ne kadar surede CACHE de kalacagini ise burada belirliyoruz:

$cachetime = 60 * 60; // 60 * 60 = 1 saat

10 dk da bir cache alsin istiyorsaniz bu sekilde yapin:

$cachetime = 10 * 60; // 10 * 60 = 10 dakika

Buradaki 60 = 60 saniyedir, yani 1 dakikadir. bu sekilde hesaplamanizi yapabilirsiniz.

sonrasinda da cacheden aldigimiz saat bilgisini belirledigimiz sure ile karsilastiriyoruz ve gecmis ise yeni cache almasini, gecmemis ise cacheyi gostermesini istiyoruz:

if (file_exists($cachefile) && (time() – $cachetime < filemtime($cachefile))) {
include($cachefile);
echo “<!– Kuaza onbellek sistemi “.date(‘jS F Y H:i’, filemtime($cachefile)).” –>n”;

Yukarida da yazdigim gibi, yukaridaki kod tarihleri ve saatleri karsilastiriyor, belirledigimiz dakikanin ustunde degil ise cacheyi gosteriyor, ustunde ise buradan tekrar basliyor cache almaya: ob_start(); ve buradan da bitiriyor: ob_end_flush();

Ben wordpress den ornek verdim, kullandiginiz her sisteme entegresi cok basit bir kod uygulamasidir bu. Bu kalibi kullanarak sizde sistemlerinizi Cacheleye bilir. Sunucunuzun rahatlamasini %50 ye varan performans artisini saglayabilirsiniz..

Bu cache uygulamasinin, hem size, hem hostinginize, hemde varsa sunucunuza yarari cok olacaktir. Bunun yaninda sitenizin arama motorlarinca daha cok indexlenmesine, hizli acildigi icin arama motorlarinin daha cok sitenizi ziyaret etmesine, hizli acildigi icin ziyaretcinin sitenize bir daha gelmesine ve daha bir cok konuya arti olarak etkisi vardir. Bu sebeple uyglarken, yada gelistirirken bildiklerinizi ogrendiklerinizi diger webmaster arkadaslarla paylasmayi unutmayin. Birbirimizin kuyusunu kasmak yerine bilgiyi paylastikca buyumeyi ogrenmenin vakti geldi sanirim..

Konuyu kapatmadan yukaridaki kodlar ile cache kullandigim sistemlere goz atarak sonucu gorebilirsiniz:

hdvideoclip.com: Ana sayfa ve video izleme kismi

makaleci.org: Ana sayfa ve haber okuma kismi

Farkli konularda yine yazacagim, simdilik esenlikle kalin..

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
Güncel Haberler Php fonksiyonlari Program Anlatımları Programlama Dilleri Resimli anlatım Webmaster yardım

CuteFTP ile .htaccess dosyaları

 

Bazı alışkanlıkları kıramıyoruz zaman zaman.  Yıllardır utility diskimde yangında ilk kurtarılacak tool’larım arasında durur CuteFTP.  Çok alternatif denesemde aileden biri olmuş, vazgeçemiyorum.

Local makinalarımda .htaccess değiştirmek rahat olsada, uzaktaki makinada bazen bu eziyet olabiliyor. FTP ile bağlandığım makinaya upload yaparken, aklıma gelen değişikliği .htaccess’de anında değiştirmek istesemde CuteFTP . (nokta) ile başlayan dosyaları filtreleyip göstermediği için, herseferinde ssh bağlantısı kurmak pico açmak bana pek pratik gelmiyordu.

 

Bende CuteFTP’yi nasıl .htaccess gösterebilir hale getirebilirim diye kendime sordum. Sonuçta klasörü listeliyor ve belli kritere uyanları gösteriyorsa, filtre seçenekleride olmalı değil mi?

Sorun şöyle çözüldü;

# Önce CuteFTP üzerinde listelenen .htaccess görmek istediğiniz siteyi seçip sağ tıklayarak Site Özelliklerini seçin (Site properties) – Kısaca seçimi yapıp Alt+Enter’a da basabilirsiniz.

01

# Açılan ayar sayfasında Action sekmesine geçin, Filter… butonuna basın

02

# Açılan Filter sayfasında Enable Filtering seçili olmalı ve Serverside Filtering bölmesi altında Enable Serverside Filtering seçili olmalıdır.

Remote Filter yanında bulunan -a -al gibi list değerleri ekleyerek dizini ne şekilde listelemek istediğinizi belirtebilirsiniz. Ben -al tercih ediyorum.

CuteFTP

Bu aşamalardan sonra artık .htaccess dosyanızı CuteFTP altında görebileceksiniz.

Kaynak

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