PHP ile Flashget’e download uyartımı göndermek

Flashget indirme yöneticisi olarak çokça tercih edilen bir program. Flashget sistem tepsisinde (system tray) beklerken aynı zamanda web tarayıcınızı da indirme görevleri için izler. Flashget bu sayede bir dosyayı indirmeye başlamadan önce ekranda belirerek indirmeyi Flashget ile yapmak isteyip istemediğinizi sorar. Bu özellik bazı durumlarda çalışmayabiliyor.  Yani, flashget tarayıcıdan bir download gerçekleştiği halde olaya müdahil olmayabiliyor. Çözüm için PHP tarafından göndereceğiniz header satırları ile  Flashget’e tetiklenmesi için uyartım gönderebilirsiniz.

[php]

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment ; filename=a.exe");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize(‘a.exe’));

[/php]

Dosya ismini vermeden download adresi oluşturmak

Download sistemleriyle ilgilenenler için faydalı olacağını düşündüğüm bir uygulama.

http://site.com/download.php?id=4 dedik, dosya inmeye başladı ama, kaynağına baktığımızda dosyanın nerede olduğu ve dosya ismi yazıyor. Belki de biz bunu göstermek istemiyoruz. :) Basit uygulamalarda download.php sayfasında şu kod kullanılıyor;

[html]
<meta http-equiv="refresh" content="1;URL=".$filename[name]."" />
[/html]

Ama biz bunu yapmayacağız. Çünkü dosya ismini linkte göstermek istemiyoruz.

Fazla gevezelik etmeden uygulamaya geçeyim…

[php]
<?php
$connect = mysql_connect("hostname", "username", "password");
mysql_select_db("database");

//Veritabanına bağlandık. Sıra geldi verilerimizi çekmeye.
//Benim `file` tablomda `id` ve `filename` sütunları var diyelim.
//`filename` sütununda dosyanın ismini tutuyoruz. (file.zip gibi)

$query = mysql_query("SELECT * FROM `file` WHERE `id` = ‘".$_GET[‘id’]."’");
$show = mysql_fetch_array($query);

// files klasöründe dosyaları tutuyorum ben.
//Siz eğer başka bir klasörde tutuyorsanız değiştirebilirsiniz tabii ki.
header("Content-Type: application/x-msdownload");
header("Content-Disposition: attachment; filename=files/".$show[link]."");
?>
[/php]

İşte bu kadar. Bu kodları download.php olarak kaydedin. download.php?id=1 dediğinizde 1 numaralı verinin dosya ismini alır, files klasöründen bulur ve kullanıcının indirmesine izin verir. Dosyanızın ismi hiçbir şekilde görünmez. Geliştirmek ve güzelleştirmek size kalmış arkadaşlar. Kolay gelsin.

Kaynak: http://www.ilhankaraoglu.com/dosya-ismini-vermeden-download-sayfasi-olusturmak

Linux’un root parolasını sıfırlamak

Linux’unuzun root parolasını unuttuysanız, sistemi single modda başlatarak passwd komutunu kullanabilirsiniz. Buradaki örneği CentOS üzerinde uyguladık fakat grub loader kullanan tüm sistemlerde aynı işlemi gerçekleştirebilirsiniz. Sisteminizi yeniden başlattıktan hemen sonra boot menüsüne düşmek için herhangi bir tuşa basın. Daha sonra linux aşağıdaki gibi bir boot ekranı gelecek. Bu ekranda iken ‘e‘ tuşuna basın.
Okumaya devam et “Linux’un root parolasını sıfırlamak”

27. Ulusal Bilişim Kurultayı’na Davetlisiniz

Her yıl binlerce kişinin katıldığı ve onlarca etkinliğin düzenlendiği Türkiye Bilişim Derneği’nin büyük etkinliği BİLİŞİM 2010‘a davetlisiniz!

22-25 Eylül 2010 tarihlerinde Ankara Grand Rixos Hotel‘de düzenlenecek olan Türkiye’nin en büyük Bilişim etkinliği’nin bu seneki teması “Sosyal Dönüşüm”. Yerli ve yabancı bir çok konuşmacının farklı etkinliklerde konuşacağı, önemli panellerin düzenleneceği bu etkinliğe katılım ücretsizdir.

Etkinliğin programına www.bilisim.org.tr/program.html adresinden ulaşabilirsiniz. Kaydınızı gerçekleştirdikten sonra istediğiniz gün istediğiniz oturumlara katılabilirsiniz. Boyunluk kartınızı etkinlik alanındaki kayıt masasından alabilirsiniz. Bilişim 2010′da görüşmek üzere!

Siteground.com Hosting İncelemesi

Birkaç gün önce meşhur phpclasses‘ın hosting tavsileri dikkatimi çekti. Buradan görebileceğiniz gibi oldukça cazip özelliklerde hosting’ler bulmak mümkün. Çoğunun arasında fazla fark olmamasına rağmen tercihimi SiteGround‘dan yana kullandım. SiteGround’ın aylık $2.95 olan sınırsız disk alanı ve bandwidth‘e sahip paketinden satınaldım. Kayıt olup ödemeyi tamamladıktan hemen sonra cpanel bilgilerinizi adresinize gönderiyor. Reverse IP Lookup ile gördüğüm kadarıyla firma şu sıralar yeni bir sunucusunu devreye almış ve üzerinde barındırılan domain sayısı oldukça az. Datacenter’ı USA’da olan SiteGround‘ın Türkiye’den ping ortalaması 40ms civarlarında.

Web hosting

Okumaya devam et “Siteground.com Hosting İncelemesi”

e-Devlet Kapısı: Araç Muayene Randevuları

e-Devlet Kapısı üzerinden verilen hizmetler gün geçtikçe artıyor. Ülkemizde her yıl gerçekleşen 8.5 milyon muayene işlemi için gün ve saatine kadar randevular artık e-devlet kapısı üzerinden alınabiliyor

e-Devlet Kapısı üzerinden verilen hizmetler gün geçtikçe artıyor. Ülkemizde her yıl gerçekleşen 8.5 milyon muayene işlemi için gün ve saatine kadar randevular artık e-devlet kapısı üzerinden alınabiliyor.

www.türkiye.gov.tr adresine girdiğinizde ve araç muayene bölümünü tıklandığında,

  1. Araç muayene randevu kayıtları,
  2. Randevu listelemesi,
  3. Muayene istasyon bilgi sorgulaması,
  4. Muayene durum sorgulaması,
  5. Gezici muayene istasyon bilgi sorgulaması
  6. Randevu iptal hizmetleri

yapılabiliyor. www.türkiye.gov.tr adresinden verilen araç muayene randevu hizmeti Ulaştırma Bakanlığı Kara Ulaştırma Genel Müdürlüğü bilgi sistemi üzerinden yapılıyor. Yetkililer, randevu girişinde aracın ruhsat bilgilerinin girilmesi gerektiğine işaret ediyorlar.

Ülkemizde her yıl 8.5 milyon aracın muayenesi 193 sabit ve 71 mobil istasyondan yapılıyor. Bu yeni hizmetle birlikte, araç muayenesi sırasında yaşanılan uzun sıra bekleme işkencesi de sona ermiş oldu.

WordPress’in SQL Performansını İncelemek

WordPress‘in yüklenme hızı çalıştırdığı SQL komutlarının tamamlanma süresiyle doğrudan ilişkilidir. Bazen hasarlı bir MySQL tablosu, bazen bozulmuş bir indeks ve bazen de yanlış kodlanmış bir eklenti MySQL performasını çok ciddi ölçülerde düşürebilir (Hatta bu durumdan dolayı hosting firmanız tarafından uyarılabilirsiniz). SQL başarımının (performans) düşmesi sayfanızın geç açılmasına neden olur. Aşağıda anlatacağım yöntem ile WordPress’in hangi SQL’leri nekadar süre ile çalıştırdığını görebileceğiz. SQL’lerin çalışma süresi bize, başarım soruna daha iyi odaklanabilmek için kılavuzluk yapacak.

Okumaya devam et “WordPress’in SQL Performansını İncelemek”

LKD’nin SEÇSİS konusunda Basın Açıklaması

İnternet Tekonolojileri Derneği,
INETD’nin ve Linux Kullanıcıları Derneği,
LKD’nin SEÇSİS konusunda Basın Açıklaması

SEÇSİS’e  Denetim ve Daha Katılımcı bir Yapı Gerekir!

Seçimler, demokratik sistemin önemli bir parçasıdır. Anayasamız, 79. maddede “seçimin düzen içinde yönetimi ve dürüstlüğü ile ilgili bütün işlemleri yapma ve yaptırma görevinin” bağımsız bir yargı organı olan YSK tarafından yürütülmesi emretmektedir.
Daha önceki seçimlerde seçmen kütüklerinde bazı hatalar, son yerel seçimde de seçim sonuçlarının merkeze aktarımı ve  değerlendirilmesi sırasında bazı tıkanıklar yaşanmıştır.
Tüm bunlar, toplumda kaygıların doğmasına neden olmuştur. Bilişim alanındaki sivil toplum kuruluşları  olarak bu kaygıların giderilmesi ve daha saydam bir seçim yapılması konusunda görüş ve önerilerimizi paylaşmayı, toplumsal görevimiz sayıyoruz.
Okumaya devam et “LKD’nin SEÇSİS konusunda Basın Açıklaması”

Metinden Anahtar Kelime (keyword) Üretme

Aşağıdaki get_keywords fonksiyonu verilen metinde ençok geçen kelimeleri bulup sonucu meta keyword olarak geri döndürüyor. İkinci parametreye verilen değer kaç keyword’ün geriye döndürüleceğini belirliyor.

[php]
<?php
function filter( $item )
{
if (strlen($item) <= 3)
return false;
return true;
}

function strcount( $item )
{
GLOBAL $content;
return Array(substr_count($content, $item), $item);
}

function html2txt($document){
$search = array(‘@<script[^>]*?>.*?</script>@si’, // Strip out javascript
‘@<[\/\!]*?[^<>]*?>@si’, // Strip out HTML tags
‘@<style[^>]*?>.*?</style>@siU’, // Strip style tags properly
‘@<![\s\S]*?–[ \t\n\r]*>@’ // Strip multi-line comments including CDATA
);
$text = preg_replace($search, ”, $document);
return $text;
}

/**
* Remove HTML tags, including invisible text such as style and
* script code, and embedded objects. Add line breaks around
* block-level tags to prevent word joining after tag removal.
*/
function strip_html_tags( $text )
{
$text = preg_replace(
array(
// Remove invisible content
‘@<head[^>]*?>.*?</head>@siu’,
‘@<style[^>]*?>.*?</style>@siu’,
‘@<script[^>]*?.*?</script>@siu’,
‘@<object[^>]*?.*?</object>@siu’,
‘@<embed[^>]*?.*?</embed>@siu’,
‘@<applet[^>]*?.*?</applet>@siu’,
‘@<noframes[^>]*?.*?</noframes>@siu’,
‘@<noscript[^>]*?.*?</noscript>@siu’,
‘@<noembed[^>]*?.*?</noembed>@siu’,
// Add line breaks before and after blocks
‘@</?((address)|(blockquote)|(center)|(del))@iu’,
‘@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu’,
‘@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu’,
‘@</?((table)|(th)|(td)|(caption))@iu’,
‘@</?((form)|(button)|(fieldset)|(legend)|(input))@iu’,
‘@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu’,
‘@</?((frameset)|(frame)|(iframe))@iu’,
),
array(
‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘,
"\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0",
"\n\$0", "\n\$0",
),
$text );
return strip_tags( $text );
}

function get_keywords($content, $count)
{
$content = strip_html_tags($content);
$content = html_entity_decode($content);
$arr = str_word_count( $content, 1);
$arr = array_filter($arr, ‘filter’);
$arr = array_unique($arr);
$arr = array_map(‘strcount’, $arr);
arsort($arr);
foreach($arr as $item)
{
if ($i < $count)
$ret_arr[] = $item[1];
$i++;
}
return implode(‘,’, $ret_arr);
}

$content = file_get_contents(‘https://www.tankado.com/’);
echo get_keywords($content, 5);
?>
[/php]

WordPress options-permalink 403 Forbidden Hatası

Windows sunucularda karşılaştığım bu hata .htaccess dosyasından kaynaklanıyor. Eğer internette tarif edilen  yöntemlerini deneyip de çözüm bulamadıysanız .htaccess dosyasına  FollowSymLinks direktifini eklemeyi deneyin. .htacess dosyasına eklemeniz gereken 2 satır aşağıdaki gibi.

Options All -Indexes
Options +FollowSymLinks

.htaccess’i kullanan bir başka eklentiye sahip değilseniz .htaccess dosyasının tam içeriği aşağıdaki gibi olacaktır.

# BEGIN WordPress
Options +FollowSymLinks
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress

E-Dergi: UEKAE

Değerli Okurlar,

Uzun süredir hayalini kurduğumuz UEKAE Dergisi’nin bir yılı aşkın süren titiz ve özverili bir çalışma sonucunda hazırladığımız ilk sayısını sizlerle paylaşmaktan büyük heyecan, sevinç ve gurur duyuyoruz.

Dergimiz, kuruluş tarihi 60′lı yıllara uzanan UEKAE’nin, Ulusal Elektronik ve Kriptoloji Araştırma Enstitümüzün, temel uzmanlık alanları olan bilgi güvenliği, haberleşme ve ileri elektronik alanlardaki bilgi ve deneyimini siz okurlarımızla buluşturmayı amaçlıyor. Bir diğer hedefimiz de UEKAE dergisi ile ülkemizde bu uzmanlık alanlarında güvenilir Türkçe kaynak oluşturmak.

UEKAE Dergisi’nin her sayısında sizlerle uzmanlık alanlarımızdaki konulardan oluşan yazı dizileri ile karşınıza çıkıyor olacağız. Ayrıca, her sayının kapak konusunu ayrıntılı bir biçimde ele alarak sizlere konuyu farklı yönleri ile değerlendirme fırsatı sunmayı planlıyoruz. Enstitümüz uzmanlarının ve araştırmacılarının gerek akademik, gerek profesyonel çalışmalarını yansıtan makaleler bölümünün de son derece faydalı olacağı inancındayız. Başarı öyküsü bölümünde ise, kendilerini her zaman saygı ile andığımız, hem endüstri, hem akademi hem de Enstitümüz için önemli hizmetleri bulunan kişileri tanıtma imkanı bulacağız. Ayrıca dergimizde UEKAE ile ilgili haberleri ve ürünlerimize dair bilgileri de aktarıyor olacağız.

Dergimizin ülkemiz için kalıcı bir bilgi kaynağı olması ümidiyle çalışmalarımızı sürdürürken, siz değerli okurlarımıza keyifli okumalar ve esenlikler diliyoruz.

http://www.uekae.tubitak.gov.tr/home.do?ot=1&sid=74

UEKAE Dergisi Yayın Kurulu

3. Nesil (3G) Keylogger

Uzun zamandır listemde olup bir türlü aktarma fırsatı bulamadığım heyecan ve aynı zamanda korku verici bir çalışmadan bahsetmek istiyorum.

Keylogger denen yazılımları güvenlikle ilgili hemen herkes bilir. Keylogger bilgisayarın klavyesinde basılan tuşları bir yere kaydeder. Böylece programı kuran kişi, bir başkasının özel yazışmalarını veya parolalarını elde edebilir. Keylogger’ların yakın zamana kadar bilinen iki türü vardı. Çoğunlukla yazılım olarak kullanılan keylogger lar kolaylıkla bulunup kurulabilecek programlar. Yazılım keylogger’ların biraz daha profesyonel şekli olan donanım keylogger‘lar  klavye konnektörü ile pc’nin klavye portu arasına takılan küçük bir aparat şeklinde oluyor. Bilgisayara yazılım keylogger yüklemenin mümkün olmadığı durumlarda bu kullanılır. Bahsetmek istedğimiz yeni keylooger’ımız bilgisayara birşey takmaya ya da yüklemeye gerek bırakmayacak türden, dehşet uyandırıcı bir çalışma.

Okumaya devam et “3. Nesil (3G) Keylogger”

Delphi: Canvas does not allow drawing Hatası

Canvas does not allow drawing” hatası tuval çizime izin vermiyor gibi bir anlam taşıyor. Tuval ressamların resimlerini çizdikleri yüzeye verilen ad burada ise programdaki bileşenlerin görsel kısımlarına (arabirim) karşılık geliyor.

Canvas hatası iki nedenden kaynaklanabilir. Ya çizim yapacak kaynağınız kalmamıştır ya da multithread bir programda tuvali boyamaya çalışan iki fırça birbiriyle çakışıyordur. Dediğimiz gibi bu Canvas hatası ençok multithread programlarda karşımıza çıkıyor. VCL bileşenleri thread-safe değillerdir. Bu yüzden bileşenlerin görsel özellikleriyle işlem yaparken Synchronize fonksiyonunu kullanmalısınız. Synchronize’a parametre olarak verdiğiniz alt program thread-safe olarak çalıştırılır. Yani canvas sorunu çıkartacak görsel işlemleri güvenli bir zamanda icra ettirmiş olursunuz. Aşağıdaki thread örneğini inceleyebilirsiniz.
Okumaya devam et “Delphi: Canvas does not allow drawing Hatası”

Edit’in içeriğini OnChange Olayında Değiştirmek

Başlık ilk okunduğunda anlaşılabilecek türden olmadı biliyorum. Metin kutusunun içeriği değiştiğinde içeriğine müdahale etmek pek mümkün değildir (Yani OnChange yordamında  içeriği değiştirecek işlemler yapmak). OnChange olayında içeriği değiştirirseniz, oluşan değişiklikten dolayı OnChange tekrar çalıştırılır ve bu böyle sonsuza kadar devam eder. Aslında yığın (stack) dolana kadar devam eder. Yığın neden dolar derseniz, bir nevi recursive (özyineli) bir süreç başlatırsınız, yani her alt süreçten geri dönebilmek için, sürecin geri dönüş noktası (yordamın enson çağırıldığı konuma karşılık gelen bellek adresi) yığına kaydedilir ve LIFO (Last in First out) düzeniyle geri boşaltılır.

Bu tarz birşeye ihtiyaç duyduğumuzda OnChange olayı boşaltılırsa yukarıdaki gibi bir zincirleme reaksiyon başlamayacaktır. İşimiz bittiğinde de OnChange olayını eski haline geri çevirmeyi unutmamalıyız. Olayın içini boşaltmak için nil değerini kullanıyoruz. Aşağıda bir örnek yer alıyor.

[delphi]
procedure TForm1.Edit1Change(sender:Tobject);
begin
// OnChange olayinin ici bosaltiliyor
Edit1.OnChange := NIL;

// Edit1’in icerigini degistiren kodlar burada

// OnChange olayi yeniden yukleniyor
Edit1.OnChange := Edit1Change;
end;
[/delphi]

PHP için Güvenlik Kontrol Listesi

sk89q.com daha önce burada yayınladığı php güvenlik kontrol listesinin yazdırılabilir bir sürümünü PDF cheatsheet olarak yayınlamış. Sitede daha önce de bazı cheaatsheet‘ler yayınlamıştım.

[Yükleme bulunamadı.]