admin: 30 Ağustos 2009 | kategori: Php | 5 yorum var
Birçok web yer sağlayıcı firma sunucularında dosya alım limitlerini her türlü yönden kısıtlarlar. Gerek upload ile gerekse yedek içe aktarımı özellikleriyle. Bu gibi durumlarda çok büyük MySQL yedeği olan biz kullanıcılar zor durumda kalırız ancak çözüm getirelemeyecek hiçbir sorun yoktur bu alemde.
Bu sorunu çözmek için kullanacağımız yöntem yedek dosyamızı ftp ile erişilebilir (mümkünde sadece sizin bildiğiniz bir klasör adı kullanın, örneğin: 1a2s3d4f) duruma getirerek bir script aracılığıyla parça parça girdi yapmaktır. Kullanacağımız script php ile yazılmış olan BigDump‘dır.
İlk olarak bigdump.php‘yi indirmemiz gerekiyor. Ardından bize sunulan panel üzerinden veritabanını oluşturup bigdump.php dosyasını biraz düzenlemeliyiz.
BigDump düzenlemesi:
bigdump.php‘yi herhangi bir metin editörü ile açtıktan sonra aşağıdaki satırları oluşturduğumuz veritabanı ve elimizdeki veritabanı yedeğine göre düzenlememiz gerekiyor.
$db_server = 'localhost'; //bu değer çok büyük ihtimalle localhost olarak kalacaktır ancak bazı firmalar MySQL için farklı sunucu kullandıkları için IP adresi girmeniz gerekebilir.
$db_name = 'vt_adi'; //bu değer oluşturduğunuz MySQL veritabanının adıdır.
$db_username = 'vt_kullanici';
$db_password = 'vt_kullanici_sifresi';//bu değerlerde MySQL veritabanına bağlanırken kullanacağımız kullanıcı erişim bilgileridir.
$filename = '1a2s3d4f/yedek.sql'; //bu değişkende bigdump.php dosyasının bulunduğu klasörde yer alan 1a2s3d4f klasörünün içinde yedek.sql dosyasını belirliyoruz. 1a2s3d4f gibi bir dosya adı kullanmamın nedeni yedek.sql dosyasına erişimin zorlaştırılmasıdır.
Diğer kısımlara müdahale etmedik. Ben sadece bu değişikleri yaparak bigdump.php dosyasını çalıştırdığımda Start Import linkini kullanarak sorunsuz şekilde aktarım sağladım.
UYARI: Aktarım işleminden sonra bigdump.php ve yedek.sql (örneğimizde) dosyalarını sunucu üzerinden siliniz.
Oluşabilecek sorunlar:
Karşılaştığım tek sorun olan satır boyutu yetersizliğinin üstesinden $linespersession = 3000; değerini yükselterek geldim. Ben 9999 yaptım ve sorunsuz şekilde devam etti. Eğer yetersiz olursa bu değerinde üstüne çıkabilirsiniz.
Eğer bunlar dışında bir sorun ile karşılaşıyorsanız yorum kısmında belirtebilirsiniz, elimden geldiğince yardımcı olmaya çalışırım.
etiketler: aktarım, bigdump, bigdump.php, içe, içeaktarım, import, mysql, Php, yedek
admin: 31 Temmuz 2009 | kategori: Php | 1 yorum var
Aslında bu örnekte php ile bir dosya indirmeyeceğiz, asıl amacımız varolan bir dosyanın direk indirilmesini engellemek ve dosya indirilirken bazı veritabanı işlemleri yapmak. İşlem sırasındaki dosyanın kendi sunucumuzda olması ya da dış bir sunucuda bulunması herhangi bir sorun teşkil etmez.
<?php
$site = "microturk.net";
$dosya = "http://www.microturk.net/dosyalar/deneme.zip";
$ref = @$HTTP_REFERER;
if (!stristr($ref,$site) == false) {
header("Location: $dosya");
} else {
echo "Bu dosya direk indirilemez. <a href=\"$dosya\">tikla</a>";
}
?>
Bu dosyadaki değişkenleri istediğiniz gibi değiştirerek tekrar kullanabilirsiniz. Örneğin $site değişkenini dosyanın indirme bağlantısının bulunduğu bağlantı ile değiştirin. Bu değişken ile ziyaretçinin direk mi geldiği yoksa farklı bir yol ile mi geldiği sınanmaktadır.
Örneğin bu dosyayı dosya.php şeklinde kaydettiğinizi varsayalım ve veritabanınızda bulunan dosyaları indirtmek için kullanacaksınız. Size örnek teşkil etmesi amacıyla şu yöntemi önerebilirim. Dosyaya bağlantı verirken indirtmek istediğiniz dosyanın veritabanındaki belirleyici bir değerini verebilirsiniz, bu genellikle id olur. Örnek olarak dosya.php?id=33. Ardından dosya içinden bu değeri $_GET['id'] ile çekebilir ve veritabanı fonksiyonlarınızı hazırlayarak çekebilirsiniz. Sonra edindiğiniz dosya özellikleri ile çıktıyı değiştirebilirsiniz. Belki de dosyanın kaç kez indirildiğini saymak için header işlecinden sonra veritabanına ekleme yapan bir kod eklersiniz kim bilir.
Bu yazı sadece bir yol göstericidir. Eğer takıldığını noktalar olursa yorum olarak belirtebilirsiniz. İşinize yaradıysa da yorum yazın, malum yorum blogcunun ekmeğidir 
etiketler: dosya, download, indirme, kod, örnek, Php, sayaç, upload
admin: 31 Mayıs 2009 | kategori: Php | 14 yorum var
Bazı sunucular güvenlik nedeniyle php ile gelen mail() fonksiyonunu engellerler. Bu durum spam’e engel olmak ya da sunucu üzerine binen yükü azaltmak için konulmuş olabilir. Her neyse, bizim yapmaya çalıştığımız smtp sunucusu üzerinden bir hesap kullanarak php ile mail göndermektir. Bu konuda bahsedeceğim ek fonksiyon ile mailleri php ile smtp üzerinden gönderebilirsiniz: phpmailer. İsterseniz ek olarak ssl kullanarak mailleri şifreleyebilirsiniz.
Mail formunuzu hazırladğınızı ve formun action kısmındaki php dosyasında olduğunu varsayarak;
require_once("class.phpmailer.php");
$mail = new PHPMailer(); //nesneyi oluşturuyoruz
$mail->IsSMTP(); //smtp kullanmak için
$mail->Host = "mail.microturk.net"; //mail sunucunuz
$mail->Port = 587; //25. portta olabilir
$mail->SMTPAuth = true; //onayı aktive ediyoruz
$mail->Username = "posta@microturk.net"; //kullanılacak eposta adresi
$mail->Password = "micromicrobaba"; //şifre
$mail->From = $_POST['eposta']; //formdan gelen mail adresi
$mail->Fromname = $_POST['isim']; //formdan gelen isim
$mail->AddAddress("ataturk@microturk.net","Mustafa Kemal Atatürk");
$mail->Subject = $_POST['konu']; //formdan gelen konu
$mail->Body = $_POST['mesaj']; //formdan gelen mesaj
if(!$mail->Send())
{
echo 'Gönderim Hatası: ' . $mail->ErrorInfo;
exit;
}
echo 'Mesaj başarıyla gönderildi';
Eğer hazır örneği görmek istiyorsanız bu sayfayı, bilgisayarınıza indirerek kendinize göre düzenlemek için bu sayfayı ziyaret edin.
etiketler: authentication, mail, onay, Php, phpmailer, smtp
admin: 24 Mayıs 2009 | kategori: Bloglama, Php | 18 yorum var
Uzun süredir dandik firmalardan ucuz diye hosting alıyordum ve malumunuz uptime yerlerde sürünüyordu. En sonunda Natro‘dan bir hosting paketi sahibi oldum ve blogumu oraya taşımaya başladım. Sunucular Windows olduğundan ve IIS üzerinde çalıştığından kalıcı bağlantılar içinde index.php olmadan çalışmıyordu. http://www.microturk.net/index.php/yazi-basligi şeklinde olması gerekiyordu. Bunu düzeltebilecek ve sanki .htaccess kullanıyormuş gibi kalıcı bağlantıları düzgün kullanmamı sağlayacak bir çözüm yolu aramaya başladım.
Mantık şu: index.php olmadan sayfalar 404 hatası vereceği için bunu kullanabiliriz. Yani eğer 404 sayfasına gelen url’deki gerekli bilgileri alıp 404 sayfasına doğru bir şekilde include edebilirsek istediğimiz sayfayı görüntüleyebiliriz. Bu durumda aslında hata sayfasında olacağız ancak gelen çıktı tam istediğimiz şey olacak.
İlk olarak emin olmamız gereken husulardan biri Hosting firmanız hata sayfalarına URL yönlendirme imkanı veriyor mu onu kontrol etmek olmalı. Kendime göre anlatıyorum; Natronun bana sunduğu Hosting panelinde “Web Sitesi Yönetimi” sekmesinde “Hata Sayfaları”nı düzenleyip istersem bir URL’e yönlendirebiliyorum. Bu sayfayı kullanarak bir sonraki adımda ftp’den aktararak 404 sayfalarını yönlendireceğim sayfayı belirliyorum. Ben dosya adı olarak wp-seo-link-holder.php belirledim. Ardından bu dosyayı bilgisayarımda oluşturum içine aşağıdaki kodları ekleyerek ftp’den Wordpress ana dizinine aktardım.
<?php
$gelenVeri = $_SERVER['QUERY_STRING'];
$_SERVER['REQUEST_URI'] = substr($gelenVeri, strpos($gelenVeri, ':80')+3);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>
Şimdi sırada Wordpress ayarlarından kalıcı bağlantıları istediğimize göre düzenelemek var.
index.php/%category%/%postname%
yerine artık
/%category%/%postname%
yazabiliriz.
etiketler: bağlantı, kalıcı, link, Php, seo, wordpress