Bilqi Forum  

Geri git   Bilqi Forum > > >

ÖDEVLERİNİZİ BULMAKTA ZORLANIYOMUSUNUZ!

SORUN ANINDA CEVAPLIYALIM.

TÜM SORULARINIZA ANINDA CEVAP VERİLECEKTİR !

Sitemize Üye Olmadan Konulara Cevap Yazabilir Ayrıca Soru Cevap Bölümüne Konu Açabilirsiniz !

Yeni Konu aç Cevapla
 
Seçenekler Stil
Alt 08-04-2009, 13:11   #1
PaParazi
Moderator
 
PaParazi - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Mar 2009
Mesajlar: 1.494
Tecrübe Puanı: 1000
PaParazi has much to be proud ofPaParazi has much to be proud ofPaParazi has much to be proud ofPaParazi has much to be proud ofPaParazi has much to be proud ofPaParazi has much to be proud ofPaParazi has much to be proud ofPaParazi has much to be proud of
Standart Ders 10--PHP Dilinde Dosya İşlemleri

PHP Dilinde Dosya İşlemleri - 1 // Yeni başlayanlar



PHP ile bir dosya üzerinde işlem yapmak her zaman bize lazım olabilecek bir olaydır. Özellikle MySQL ve benzeri veritabanı sistemlerinin desteklenmediği sunucularda ya da sayaç, maillist ve benzeri uygulamalarda verileri bir dosya üzerine yazıp bir dosya üzerinden okumak daha akıllıca ve işlevseldir. Bu makalede dosyaları açmayı, kapatmayı, dosya üzerine yazmayı, dosyaları okumayı, yeni dosyalar yaratmayı, silmeyi ve dosya yönetimi ile ilgili daha nice yararlı bilgileri anlatmaya çalışacağım.



Giriş olayını fazla abartmadan hemen konuya girmekte sanırım yarar var. Çünkü bana oldukça uzun sürecek bir konuymuş gibi geliyor..



Dosyayı Açmak



Bir dosya üzerine yazmak ya da bir dosyayı okumak için öncelikle o dosyayı açmamız gerekir. Dosyamızı açabilmemiz için gereken fonksiyon fopen(); fonksiyonudur. Aşağıda bu fonksiyonun yazım kuralını görüyorsunuz.





Kod:

fopen("dizin\dosya", dosya_modu);Fonksiyonun ilk argümanı açacağınız dosyanın tam yolunu belirteceğiniz bölümdür. Eğer script`iniz açacağınız dosya ile aynı dizinde ise ekstradan dizin belirtmenize ihtiyaç yoktur. İkinci argüman ise dosya modudur. Buraya yazacağınız değer, dosyayı ne amaçla açtığınızı simgeleyecektir. Dosya modları şu şekildedir;

r: Dosyayı başından itibaren okumak için aç.

r+: Dosyayı başından itibaren hem okumak hem de yazmak için aç.

w: Dosyayı başından itibaren yazmak için aç. Eğer dosya mevcut değilse yeni bir dosya yarat, mevcutsa tüm içeriği sil.

w+: Dosyayı başından itibaren hem okumak hem de yazmak için aç. Eğer dosya mecvut değilse yeni bir dosya yarat, mevcutsa tüm içeriği sil.

a: Dosyayı başından itibaren yazmak için aç. Eğer dosya mevcut değilse yeni bir dosya yarat, mevcutsa dosyanın sonundan itibaren ekleme yap.

a+: Dosyayı başından itibaren okumak ve yazmak için aç. Eğer dosya mevcut değilse yeni bir dosya yarat, mevcutsa dosyanın sonundan itibaren ekleme yap.

Bir dosyayı açarken kullanacağımız dosya moduna dikkat etmeliyiz. Script`in işlevine göre uygun bir mod ile dosyayı açmalıyız. Aşağıdaki örnekten yararlanarak fopen(); fonksiyonunun kullanımı hakkında bilgi edinebilirsiniz.





Kod:

if (fopen("kayitlar.txt", "a+")) echo("Dosya açıldı.");

else echo("Dosya açılamadı.");Ayrıca yine fopen(); fonksiyonu sayesinde uzak sunucudaki ftp yahut http protokolünü kullanan belgeleri de açabiliriz. Fonksiyonun içine adres yazarken uymamız gereken mutlak kural adresi http://www.ornek.com/ şeklinde yazmaktır. Eğer sondaki yatık çizgiyi koymazsak fonksiyon görevini yerine getirmez. Genelde uzaktaki belgelere sadece okuma moduyla erişebiliriz. Diğer modlara izin verilmesi durumunda güvenlik tehlikesi yaratabileceğinden genelde sadece okuma izni verilir. Bununla ilgili bir örnek yazalım;





Kod:

fopen("http://www.ornek.com/", "r");Bu fonksiyonu kullanırken alabileceğiniz muhtemel bir hata vardır ki, o da "Permission Denied" yani bu işlemi yapmaya izninizin olmadığını belirten bir hatadır. Bu durumda chmod ayarlarına göz atmanız sorunu çözmek için yeterli olabilir.



Dosyaya Yazmak ve Dosyayı Kapatmak



PHP ile bir dosyaya yazmak için öncelikle o dosyayı açmamız gerekir. Bunu fopen(); ile nasıl yapacağımızı sanırım öğrendik. Dosyaya yazmak için PHP dilinde fputs(); ve fwrite(); fonksiyonları kullanılır. İkisinin de yazım şekli aynıdır. Aşağıdaki örneği inceleyin.





Kod:

Bu örnekte görüldüğü gibi ilk olarak yazacağımız metinleri belirledik, sonra dosyamızı açtık. Buraya kadar herşey bildiğimiz şeylerdi. Sonra yazı yazmak için fputs(); fonksiyonundan yararlandık. Son olarakta açtığımız dosyayı kapattık. fputs(); ve fwrite(); fonksiyonlarının genel yazım kuralı yukarıdaki örnekte kullandığımız gibidir. Yukarıdaki örnekte fonksiyonumuza sadece iki argüman girdik. Bunlar haricinde tercihe bağlı olarak kullanılan bir üçüncü argüman daha vardır. Bu argüman sayesinde dosyaya yazılacak olan maksimum byte sayısı belirtilir ve bu sayıya ulaşana dek yazım işlemi devam eder. Örneğimizde fputs($ac, $yazi1, 5); gibi bir değişiklik yaparsak, $yazi1 için sadece 5 byte`lık veri yazılacak ve fonksiyon sonlandırılacaktır.



Dikkat ettiyseniz yazacağımız metinlerin arasında \t \n gibi karakterler bulunuyor. Bunların ne anlama geldiğini de yeri gelmişken izah edeyim. PHP ile çıktı aldığımız zaman kaynak kodlar genelde bitişik olarak ve düzensiz bir şekilde gelir. Bu elbette sayfa tasarımına yansımaz fakat kaynak kodları incelemeye çalıştığımızda bizi zor durumda bırakabilir. İşte bu karakter gruplarının kimisi burada devreye giriyor. Kimisi ise PHP tarafından kullanılan dolar işareti ($) ve ters bölme işareti (\) gibi işaretleri etkisizleştirmeye ve kullanabilmemize yarar. Kısaca bunların işlevlerini açıklamak gerekirse şunlar yazılabilir:

\\: Ters bölü işareti.

\': Tek tırnak işareti.

\": Çift tırnak işareti.

\$: Dolar işareti.

\r: Kaynak kod içinde satır başı yapmak için kullanılır.

\t: Kaynak kod içinde sekme (tab) yapmak için kullanılır.

\n: Kaynak kod içinde yeni satıra geçer.

Konuyu fazla dağıtmadan dosya işlemlerine geri dönelim. Örneğimizde bilmediğimiz bir başka fonksiyon ise dosyayı kapatmaya yarayan fclose(); fonsiyonudur. Bu fonksiyonun yazım kuralı örnekte görüldüğü gibidir, yani bağlantıyı yüklediğimiz değişkeni fonksiyon içerisine yazarak kolayca bağlantıyı kapatabiliriz.



Dosyayı Okumak

feof(); Fonksiyonu

fgets(); ve fgetss(); Fonksiyonları

fgetc(); Fonksiyonu

readfile(); Fonksiyonu

file(); Fonksiyonu

fread(); Fonksiyonu

Dosya açmayı, yazmayı ve kapatmayı öğrendikten sonra bunları nasıl okuyacağımızı öğrenme vakti de geldi. Öncelikle dosya okuma işlemleri için kullanacağımız fonksiyonları ve bunların işlevlerini belirtelim.



feof(); Fonksiyonu: Bir dosyanın sonuna kadar okunup okunamadığını belirtir. Başka bir deyişle bir dosyayı baştan sona okumak için kullanılır. Zaten fonksiyonun ismi "File End Of File" anlamına gelir. Okunmaya çalışılan dosyanın sonuna erişilmesi durumunda sonuç true (1) olarak dönecek, aksi durumda ise false (0) olarak dönecektir. Genel olarak bir while döngüsü eşliğinde kullanılır. Yazım kuralı aşağıdaki gibidir;





Kod:

feof($ac);Görüldüğü gibi bu fonksiyon tek bir parametre içerir ve içerdiği parametrede bir dosyayı açmak için kullandığımız değişkenin ismidir.



fgets(); ve fgetss(); Fonksiyonları: Bir dosyadan satır satır veri okumak için fgets(); fonksiyonu kullanılır. Yazım kuralı şöyledir;





Kod:

fgets($ac, 256);Burada $ac değişkeni fopen(); ile dosyayı açan değişkendir. 256 rakamı ise maksimum okunacak byte miktarıdır. Fonksiyon yukarıdaki haliyle 255 byte okuyup sonlandırılacaktır.



Bir de benzer olarak fgetss(); fonksiyonu vardır. Bu fonksiyonun benzerinden tek farkı, okunan dosya içerisindeki HTML tag`lerini yok ediyor olmasıdır. Yazım kuralı şöyledir;





Kod:

fgetss($ac, 100, "<b>");Yukarıda görüldüğü gibi ilk olarak dosyayı açmak için kullandığımız $ac değişkenini yazdık, sonra maksimum okunacak veriyi yazdık. En son yazdığımız argüman ise yok edilmemesini istediğimiz HTML tag`leridir. Fonksiyon belirtilenler haricindeki tüm tag`leri yok edecektir. Son bölüm isteğe bağlı olarak yazılabilir, hiçbir şey yazılmaması halinde tüm tag`ler yok edilecektir. Bu fonksiyonu kullanabileceğiniz alanlar genel olarak üyelerin üzerinde işlem yapabildiği dosyalar denilebilir. Örneğin üye bilgilerinin tutulduğu bir kayıt dosyamız var ve biz üye bilgilerini bu dosyadan alıyor olalım. Üye eğer kötü niyetli bir kişiyse herhangi bir bilgisini HTML kodu olarak girip sayfa düzenimizi bozabilir, hatta bir nevi hackleyebilir. Yazacağı bir JavaScript kodu ile kendi sayfasına yönlendirebilir. Kısacası sitenizi kötü emellerine alet edebilir. Bunları engellemek için PHP`ye dosyadan veri okuturken HTML tag`lerini yok etmek isteyebiliriz. İşte bu noktada bu fonksiyon işimize çok yarayacaktır.



fgetc(); Fonksiyonu: Bir dosyadan tek bir karakter okumak için fgetc(); fonksiyonu kullanılır. Fonksiyon her çağrıldığında bir karakter okuyacaktır. İçerisine tek bir parametre alır, bu da makalemizde $ac olarak gösterdiğimiz dosyayı açmamıza yarayan argümandır. Yazım kuralı şöyledir;





Kod:

fgetc($ac);Bir örnekle pekiştirelim;





Kod:

$ac = fopen("kayitlar.txt", "r");

echo fgetc($ac);

fclose($ac);Görüldüğü gibi öncelikle dosyamızı açtık, sonra tek bir karakter okutmak için fgetc(); fonksiyonunu kullandık ve en son olarak dosyamızı kapattık.



readfile(); Fonksiyonu: Bir seferde tüm dosyayı okumak için bu fonksiyonu kullanırız. Fonksiyon icra edilirken öncelikle dosya açılır, sonra okunur ve çıktı verilir. Dosyayı kendiliğinden açtığı için ekstadan bir fopen(); kullanmamıza gerek kalmaz. Genel yazım kuralını gösteren bir örnekle bu fonksiyonu geçelim;





Kod:

readfile("kayitlar.txt"); // Evet sadece bu kadar..file(); Fonksiyonu: Bu fonksiyon ile dosya açılır, okunur ve her satırı bir diziye (array) kaydedilir. readfile(); fonksiyonu ile oldukça benzerdir fakat tek farkı çıktıyı bir dizi değişkenine atıyor olmasıdır. Aşağıdaki örneği inceleyin;





Kod:

$dizi = file("kayitlar.txt");

print_r($dizi);

echo "<br>".$dizi[3];Burada dosya öncelikle açıldı, okundu ve her satırı $dizi dizisine birer eleman olarak kaydedildi. Sizin oluşturduğunuz kayitlar.txt belgesinin 4 satıra eşit ya da 4 satırdan fazla olduğunu düşünürsek yukarıdaki örnek gayet başarılı çalışacaktır. file(); fonksiyonu içerisine sadece kullanılacak olan dosyanın adresini alır. Başka bir parametre almaz.



fread(); Fonksiyonu: Bir dosyanın istediğimiz kadar kısmını okumak için bu fonksiyonu kullanırız. Dosyadan çekeceğimiz veri miktarını byte değerinden yazarız. Yazım kuralı aşağıdaki gibidir.





Kod:

fread($ac, veri_miktari);Bunu bir örnekle pekiştirelim;





Kod:

$ac = fopen("kayitlar.txt", "r");

echo fread($ac, 6); // Toplam 6 byte miktarında veri okuyoruz.

fclose($ac);Dosyayı Silmek && Yeni Bir Dosya Yaratmak



Dosya silmek için unlink(); fonksiyonunu kullanırız. Yazım kuralı aşağıdaki gibidir. İçerisine sadece silinecek olan dosyanın adresini alır.





Kod:

unlink("kayitlar.txt");Yeni bir dosya yaratmak için ise touch(); fonksiyonu kullanılır. Tek bir parametre alır, bu parametre de dosya adını belirtir. Yazım kuralı aşağıdaki gibidir.





Kod:

touch("kayitlar.txt");Dosya işlemlerinin birinci bölümü burada bitti. Makalede bir dosya üzerinde okuma ve yazma işlemlerini ve ayrıca dosya silme ve yaratma işlemlerini öğrendik. Bunları öğrenirken pek örnek veremedim, gelecek makalede zaten gerekli örnekleri bulacaksınız.
PaParazi isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla

Bookmarks


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
Sizin Konu Yanıtlama Yetkiniz var
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı

Gitmek istediğiniz klasörü seçiniz


Şu Anki Saat: 18:29


İçerik sağlayıcı paylaşım sitelerinden biri olan Bilqi.com Forum Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. bilqi.com hakkında yapılacak tüm hukuksal Şikayetler doganinternet@hotmail.com ve streetken27@gmail.com dan iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde bilqi.com yönetimi olarak tarafımızdan gereken işlemler yapılacak ve size dönüş yapacaktır.
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimisation provided by DragonByte SEO v2.0.36 (Lite) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.

Android Rom

Android Oyunlar

Android samsung htc

Samsung Htc

Nokia Windows