bildirgec.org

php hakkında tüm yazılar

PHP de Thumbnail göstermek.

Yavzas | 12 June 2009 16:44

Asp kullananların Persist JPG kullanarak resimlerini gayet başarılı olarak thumbnail yaptıklarını gördüm. benim sorum ise;

PHP de bu sorun nasıl çözülmelidir? En iyi Thumbnail oluşturan class hangisidir? veya thumbnail oluşturmak yerine resmi kaydederken thumbnail olarak kaydetmek daha mı mantıklı olur? Teşekkürler.

CodeIgniter’da RSS Kütüphanesi ile Site Takibi

fatigue | 31 May 2009 08:15

Rss, “Really Simple Syndication” kelimelerinin baş harflerinin bir araya gelmesi ile oluşmuş bir site takip formatıdır. Bir sitedeki tüm değişikliklerin Rss formatına alınmasının ardından, başka siteler ya da kullanıcılar tarafından takip edilebilirliği artar. Ziyaretöiler sürekli yeni bir şey var mı? diyerek sitenize gelmeyi bir süre sonra unuturlarsa, bu opsiyon sayesinde sitedeki yeniliklerden anında haberdar olurlar.

CodeIgniter, standart paketine dahil olan RSS kütüphanesi ile kullancıların kolaylıkla sitedeki yenilikleri takipçilerine aktarmalarına olanak sağlar. Rss kütüphanesi kullanarak bir blog sitesine eklenen her yeni yazıyı takip amacıyla bir Rss.xml oluşturalım.

7 ücretsiz ve güçlü dosya yöneticisi (Ajax/PHP/JS)

filezza | 23 May 2009 20:02

Web projelerinizde kullanmak için güçlü bir dosya yöneticisi arıyorsanız, basit kullanımları ve özelleştirilebilir arayüzleri ile ücretsiz olarak sunulan, aşağıdaki listelenmiş dosya yöneticilerine göz atabilirsiniz.

Aşağıdaki Php,Javascript veya ajax tabanlı dosya yöneticileri, dosyaları sunucu üzerinden kolayca yönetmenizi sağlayacak, arama, yükleme ve indirme, düzenleme, kopyalama, silme gibi işlemleri ve daha fazlasını hızlı ve basit olarak yapmanıza imkan tanıyacaktır.

1. AjaXplorer

Ajax File Manager
Ajax File Manager

demoindir

2. fileNice

Php File Manager
Php File Manager

demoindir

Haxe ile multiplatform web programcılığı

cydoma | 14 May 2009 17:10

Bugün tanıştığım güze bir programlama dili olan Haxe (heks okunur) hakkında kısa bir bilgi vermek istiyorum. (Şimdiyedek bildirgeç’te yayınlanmamış olmasını şaşırtıcı buldum doğrusu)

Haxe diğer programlama dillerinin aksine her türlü platformda çalıştırılabilen multiplatform bir dildir. Haxe ile yazdığınız programınızı .js, .swf, .php ya da NekoVM bytecode olarak kaydedip kullanabilirsiniz.

Severek oynadığımız MyBrute oyununun da Haxe ile kodlandığını sitenin footerından biliyoruz.

Düzenlenebilir jquery ağaç yapısı – PHP Kodlu

mekya | 09 May 2009 17:11

İngilizce adına editable-jquery-tree-with-php-codes dediğimiz, kulağa biraz garip gelse de veya ben biraz garip çevirmiş olsam da Türkçe adına Düzenlenebilir jquery ağaç yapısı – PHP Kodlu dediğimiz bu bileşen, bir projede kullanmak üzere hazırladığım ama projenin hayata geçememesinden dolayı kullanamadığım jquery javascript çercevesi üzerinde çalışan, simple tree eklentisini kullanan basit bir ağaç yapısı (treeview).Bazı arkadaşlar kullanırlar diye google code da bir proje oluşturdum ve duyduğuma göre ecnebi ve yerli dostlardan bileşeni kullananlar varmış.

Bana göre diğerlerinden farkı php kodlu olması ve eleman ekleme, silme, düzenleme ve sürükle bırak işlemlerini kolayca yapması.

Şu an bu bileşen hem veritabanı (mysql) üzerinde hem de dosya sistemi üzerinde verilerin dosya ve klasör tipinde tutulmasını sağlıyor.

Umarım bazı arkadaşların işine yarar.

Resimlerde Güvenlik

yenidem | 24 April 2009 13:18

Özellikle sosyal ağ ve benzeri sitelerde profilimize resim eklerken iki kez düşünürüz, acaba eklediğimiz resim ne kadar güvende veya yetkisiz kişiler bu resme ulaşabilir mi diye. Web konusuna biraz hakim olan kişiler bilir ki bir dosyanın -bu resim dosyası veya herhangi bir dosya olabilir- sunucu üzerindeki yolunu biliyorsak o dosyaya erişmek oldukça basittir. Örneğin günümüzde yaygın olarak kullanılan facebook’a eklediğimiz resimler için her ne kadar gizlilik ayarı yaparsak yapalım resim dosyasına sağ tıklayıp adresini kopyaladığımızda facebook’a üye olmayan kişilerin bile bu resmi açabildiğini görebiliriz.
Güvenlik için resim dosyasının tam adresini sayfaya yansıtmadan bir sorgu ile veritabanından çekmek de mümkün ama bazı durumlarda bu yöntem sorun çıkarabilmekte, örneğin /resim.php?id=5 şeklinde bir resim dosyasına eriştiğimizi varsayıyorum, bu yolu başka bir siteye direk eklemek istediğinizde eklenebilecek uzantıların jpg, gif veya png olabileceği şeklinde bir uyarı ile karşılaşmak mümkün. Ayrıca bu yöntemde kötü niyetli kullanıcıları aldatamazsınız, resmin fiziksel yolunun bu olmadığını bileceklerdir.
Resimleri güvenli bir hale getirmenin bir diğer yolu ise resimleri direk veritabanına gömmek, nitekim bu yöntem oldukça zahmetli ve veritabanının şişmesi açısından pek tercih edilen yöntem değil.
Gelelim kullanımı daha kolay ve güvenli olan yöntemimize; htaccess yardımıyla öncelikle jpg veya png uzantılı dosyaların da birer PHP dosyası gibi işletilmesini sağlayalım, yani sunucumuzun belirlediğimiz dizininden JPG uzantılı bir dosya talep edildiğinde sunucumuz bu dosyayı öncelikle PHP filtresinden geçirsin ve kullanıcıya o şekilde sunsun. Bunun için apache sunucuda htaccess dosyasına ekleyeceğimiz kod;

1
AddType application/x-httpd-php .jpg

Şimdi de istemci tarafından talep edilen php yazılımına gelelim;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$dakika = date("i"); // Saatimizin dakikasını alalım. Burada deneme amaçlı dakikayı baz alıyoruz, Gerçek uygulamalarda kullanıcı kimlik kontrolu yapılabilir.
$sonrakam=substr("$dakika", -1); // Dakikanın son hanesini alalım.
// Dakika eğer tek sayıysa resmi göstermeden betiği durduralım.
if ( $sonrakam == 1 || $sonrakam == 3 || $sonrakam == 5 || $sonrakam == 7 || $sonrakam == 9 ) {
die('şuanda olmaz!');
}
else {
// Dakikamız tek sayı değilse betik çalışmaya devam etsin.
$dosya = "orj/gercekResim.png"; // Gösterilecek resmin gerçek yolunu girelim. Betiği geliştirmek için veritabanı sorgusu yapılabilir.
header("Content-type: image/jpeg");
$resim = imagecreatefrompng("$dosya");
imagejpeg($resim);
imagedestroy($resim);
}
?>

Web’de Blending Options

Nodtveidt | 24 April 2009 10:08

arkadaşlar başlıktan da biraz anlaşılacağı gibi,
web sayfasında photoshop’daki blending options gibi bir özellik kullanabiliyomuyuz onu öğrenmek istiyorum, belki jquery belki mootools belki php herangi birisinde olabilir diye düşündüm. örnek vericek olursak, zemin rengi kırmızı olan bir sayfa ve bu sayfada bg.image ‘i siyah beyaz bir resim olan bir
div elementimiz var diyelim, phtoshopta üssteki layerın blending modunu mutiply yaptığımızda nasıl beyazlar kırmızı oluyorsa webdede aynısını becerebilen herhangi bir “iey” warmı merak ettim. çok alakasız bir soru ama ğer bulursam çok işime yarıyacak. teşekkülrer şimdiden

CakePHP ile basit bir ziyaretçi defteri – 2

ceyranci | 20 April 2009 15:10

Bir önceki yazımda oluşturduğumuz ziyaretçi defterine herkes yazı yazabiliyordu. Şimdi de bu ziyaretçi defterine yazı yazmak için üye girişi yapma zorunluluğu ekleyeceğiz.
Ziyaretçi defterinde yazdığımız yazıların saklanacağı bir tablo oluşturmuştuk. Şimdi de kullanıcı bilgilerinin saklanacağı bir tablo oluşturacağız. Fakat bu tabloyu oluşturmadan önce diğer tablomuzda bir değişiklik yapmamız lazım. Ziyaretçi defterinde oluşturduğumuz tablo şu şekildeydi:

1
2
3
4
5
6
7
CREATE TABLE `defter`.`posts` (
`id` INT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`created` DATETIME NOT NULL ,
`title` VARCHAR( 128 ) NOT NULL ,
`body` TEXT NOT NULL ,
`user` VARCHAR( 32 ) NOT NULL
) ENGINE = MYISAM

Buradaki user alanını user_id olarak değiştirip VARCHAR( 32 ) yerine de INT( 8 ) yazıyoruz. Değişiklik yaptıktan sonraki hali:

1
2
3
4
5
6
7
CREATE TABLE `defter`.`posts` (
`id` INT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`created` DATETIME NOT NULL ,
`title` VARCHAR( 128 ) NOT NULL ,
`body` TEXT NOT NULL ,
`user_id` INT( 8 ) NOT NULL
) ENGINE = MYISAM

Bunu yapmadan önce user bir string değere karşılık geliyordu ve ziyaretçi defterine yazı eklerken kullanıcı tarafından giriliyordu. Şimdi ise user_id oldu ve bir sayıya karşılık geliyor. Yani birazdan oluşturacağımız users tablosunda yer alan kullanıcıların id değeri.
Ali isminde bir kullanıcımız olsun. Ali’nin id’si 17 olsun ve Ali ziyaretçi defterine bir yazı eklemek için giriş yapsın. Ali, ziyaretçi defterine bir yazı yazdığında bu yazının user_id değeri 17 olur. Yazıyı ekrana yazdırırken de id’si o yazının user_id değeri olan kullanıcın adı yani name değeri veritabanından okunur. Şimdi ziyaretçi defterimizi geliştirmeye başlayalım. Ziyaretçi defterini oluşturmadıysanız buradan oluşturduktan sonra yazının geri kalan kısmını okumaya devam edin.
Oluşturduğumuz veritabanında (defter) users isminde bir tablo oluşturalım.

1
2
3
4
5
6
7
CREATE TABLE `defter`.`users` (
`id` INT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 32 ) NOT NULL ,
`password` VARCHAR( 64 ) NOT NULL ,
`email` VARCHAR( 128 ) NOT NULL ,
`created` DATETIME NOT NULL
) ENGINE = MYISAM

Model Oluşturma
Şimdi cakeyol/app/models/ dizini içine user.php ismiyle user modelimizi oluşturup içine şunları yazalım:

1
2
3
4
5
6
7
<?php
class User extends AppModel
{
var $name = 'User';
var $hasMany = 'Post';
}
?>

PHP ile ziyaretçi bilgilerini tespit etmek

darkhorn | 20 April 2009 13:15

PHP‘yle sitenizi ziyaret eden kullanıcı hakkında envai çeşit bilgiye hasıl ulaşabileceğiniz ile ilgili bir yazı hazırladım. Envai çeşitten kastım, IP adresinden sunucu protokolüne kadar istemcinin sunucuya gönderdiği çeşitli bilgiler. Görelim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
echo "IP adresi: " . $REMOTE_ADDR . "<br />";
echo "Uzak host: " . gethostbyaddr($_SERVER['REMOTE_ADDR']) . "<br />";
echo "Web tarayıcısı: " . $HTTP_USER_AGENT . "<br />";
echo "Referans adresi: " . $HTTP_REFERER . "<br />";
echo "Kullanıcının dilleri: " . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . "<br />";
echo "sıkıştırma isteği: " . $_SERVER['HTTP_ACCEPT_ENCODING'] . "<br />";
echo "Sunucu protokolü: " . $_SERVER['SERVER_PROTOCOL'] . "<br />";
echo "HTTP bağlantısı: " . $HTTP_CONNECTION . "<br />";
echo "Karakter seti: " . $_SERVER['HTTP_ACCEPT_CHARSET'] . "<br />";
echo "Kabul: " . $HTTP_ACCEPT . "<br />";
echo "İstek metodu: " . $_SERVER['REQUEST_METHOD'] . "<br />";
echo "Uzak port: " . $REMOTE_PORT . "<br />";
echo "HTTP_VIA (proxy sağlayıcısı): " . $HTTP_VIA . "<br />";
echo "Gerçek IP (proxy üzerinden isen): " . $HTTP_X_FORWARDED_FOR . "<br />";
echo "Çerezler: " . $HTTP_COOKIE . "<br />";
?>

Açıklama:
Uzak host; IP adresinin alan adını görebilirsiniz, örneğin 144.122.250.220 IP’sinin alan adı y22-27.pclabs.metu.edu.tr, böylece ziyaretçinin hangi bilgisayarı kullandığını ya da hangi domain’de olduğunu öğrenebiliyoruz. Ya da bir web sitesi, dolayısıylşla gerçek ziyaretçi mi yoksa bot mu olduğu fikrine de ulaşabiliriz.
Web tarayıcısı; web tarayıcısının tam çözümü. Örneğin Firefox 3.0.8’inkisi şöyle: Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8
Referans adresi; sayfaya hangi adresten geldiğiniz.
Kullanıcının dilleri; kullanıcının kendi tarayıcısında belirttiği diller.
Sıkıştırma isteği; tarayıcı web sayfasının sıkıştırılmış halini istiyorsa burada belirtir. Uzun yıllardır tüm tarayıcılar böyle bir istekte bulunurlar (gzip isteği), amaç ağ trafiğini düşürmek. Google haricindeki botlar böyle bir istekte bulunmazlar, bu bilgiden yola ziyaretçinin bot olup olmadığını anlayabilirsiniz. Ayrıntılı bilgi için Kodaman’daki gzip yazısını okuyabilirsiniz.
Sunucu protokolü, web tarayıcıları HTTP/1.1 sunucu protokolüyle iletişim kurmak istediklerini belirtirler, oysa Google haricindeki birçok bot (web proxy’ler dahil) HTTP/1.0 protokolünü kullanır. Bu da insan ziyaretçiler ile bot ziyaretçileri birbirinden ayırt etmek için kullanılabilir.
HTTP bağlantısı; bağlantı süresiyle ilgili bilgi, web tarayıcıları (en azından Firefox-Apache ikilisi) keep-alive‘ı tercih ediyor. bir web proxy yazılımında denediğimde bu kısmın boş olduğunu farkettim.
İstek metodu ya da istek yöntemi; Genellikle GET (normal istek metodu), form’lardan bilgi gönderirken POST.
HTTP_VIA; eğer proxy üzerinden bağlanıyorsanız ve proxy de kendisini tanıtıyorsa burada proxy’yle ilgili bilgi bulunuyor, örneğin; 1.1 www.cc.metu.edu.tr:2003 (squid). Bunlar genellikle vekil sunucuların bulunduğu büyük kuruluşlarda olur ve yararlanmak için tarayıcıdan küçük bir ayar yapılması gerekir. Örneğin Firefox’ta bağlantı ayarlarından vekil sunucu ayarlarını otomatik tanı seçeneğinin işaretlenmesi gerekiyor.
Gerçek IP; proxy gerçek IP’nizi buradan bildiriyor.
Çerezler; sunucumuzdan tarayıcıya çerez bıraktıysak buradan görebiliriz.

Php ile hazırladığınız sitede Türkçe karakter sorunu

sundowach | 18 April 2009 13:51

Çoğumuz php ile hazırladığımız sayfaların karakter kodlamasından şikayetçi oluruz. Bütün karakter kodlama biçimlerini denemişsinizdir. “Ama nafile” diyorsanız bu yazıyı okuyun.
Bu sorun aslında tam tanıtamadığımızdan oluyor.
“ş,ğ” gibi karakterleri farklı gösterir. Kodları html meta-tag’ına yazsak bile yine aynı sonuçla karşılaşırız.
Yapacağımız şu:
Sayfanın başına şu kodu eklemek:
header(“Content-Type: text/html; charset=utf-8”);
?>
Böylece açılan sayfada karakterler normal haliyle görünmüş olur.