Turkish Hacking Sabotage | Türkiyenin En Büyük Hack Ve Security Sitesi

Anasayfa Forumlar Yeni Mesajlar Bugünün Mesajları Üye Ol
Geri git   Turkish Hacking Sabotage | Türkiyenin En Büyük Hack Ve Security Sitesi > Webmaster > ASP / PHP / CGI
Sayfaya güncelle PHP de Dosyalama ve Dizin İşlemleri
Konu Bilgileri
Konu Başlığı
PHP de Dosyalama ve Dizin İşlemleri
Konudaki Cevap Sayısı
0
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
0
Cevapla
 
Seçenekler Arama Stil
PHP de Dosyalama ve Dizin İşlemleri
Alt
  (#1)
Dorylaion
 
Dorylaion - ait Kullanıcı Resmi (Avatar)
 
>Mesaj Sayısı: n/a
>Açtığı Konu: 5568

Level: -INF [♥ Bé-Yêu ♥]
Paylaşım: NAN / -INF
Güç: -INF / -INF
Tecrübe: NAN%

   
Standart PHP de Dosyalama ve Dizin İşlemleri - 04-20-2008



1. Dosyadan Okuma
2. Dosyaya Yazma
3. Dosya Kopyalama ve Silme
4. Mevcut Dosyaların Listelenmesi
5. Dizin Oluşturma
6. Dizin Kopyalama ve Silme
7. Dizinlerin Listelenmesi
8. Attribute ( Erişim İzinleri ve Deyimleri )


Hemen her programlama dili Dosyalama işlemlerini destekler. PHP'de bu işlemler için geniş pörtföye sahiptir. Bu işlemler dizisini madde madde ayrıntılarıyla inceleyip örneklendiricez.

Önce dosyalama işlemleri için temel prosedürleri maddeleyelim ;

a. Var olduğumuz dizini Tespit edelim
b. Dosyamızın var olduğundan emin olalım.
c. Çalışacağımız Dosyanın boyutunu öğrenelim
d. Dosya izinlerini kontrol edelim.
e. Dosyanın oluşturulduğu tarihi öğrenelim
f. Erişim izinleri tablosunu inceleyelim.


a. Var olduğumuz dizini Tespit edelim

Önce çalıştığımız alanı bulalım. Bu işlem için aşağıdaki basit komut dizisi işimizi görecektir.

<?
echo realpath(".");
?>

Bu komutları çalıştırdığımız takdirde karşımıza çalışan php dosyamızın sistem üzerinde hanki dizinde bulunduğunu gösterir. Dikkat edilmesi gereken husus tırnaklar içerisine yazdığımız değerdir. Biz yukardaki örnekte nokta girdik. Sistem dilinde nokta işareti mevcut dizini gösterir. İki nokta ".." bir alt dizini, "/" slaş işaretide kök dizini gösterir.

--------------------------------------------------------------------------------

b. Dosyamızın var olduğundan emin olalım.

Bir dosyanın var olduğunu aşağıdaki komut ile öğrenebiliriz.

<?
if ( file_exists("deneme.txt") ) { echo "Dosya var.";} else { echo "Dosya Yok";};
?>

Burada kullandığımız fonksiyon "file_exists()" dir. Parantez içerisine tırnaklar içerisine girdiğimiz veri var olduğundan emin olmak istediğimiz dosya olmalıdır. Dosya eğer mevcut ise "Dosya var." çıktısını alırız. Bu bölüme bir değişkende atayabilirdik. Kullanımı niteliklendirirsek girilen değerin dosyamı veya dizinmi olduğunuda öğrenebiliriz.

<?
if ( is_file("deneme.txt") { echo "Dosyadır."; } else { echo "Dosya değildir."; };
?>

Bu kodlarda girdiğimiz değerin bir dosyamı olduğunu bize verir.. Aynı işlemi dizin içinde gerçekleştirelim.

<?
if ( is_dir("deneme.txt") { echo "Dizindir."; } else { echo "Dizin değildir."; };
?>

Yukardaki komutlarda girilen değerin dizin olup olmadığını kontrol eder.


--------------------------------------------------------------------------------

c. Çalışacağımız Dosyanın boyutunu öğrenelim

Aşağıdaki kodlar ilede çalıştığımız dosyanın boyutunu öğreniyoruz.

<?
echo filesize("deneme.php");
?>

Bu değer bize dosya boyutunu "byte" cinsinden verir. Mevcut değerin KB karşılığını "1024" e bölersek KB, "1048576" ile çarparsakta MB cinsinden değeri bulmuş oluruz.


--------------------------------------------------------------------------------

d. Dosya izinlerini kontrol edelim.

Çalışıcağımız dosya üzerinde herzaman her işlemi yapamıyabiliriz. Dosya yazmaya izin vermeyebilir, veya aynı şekilde okunamazda olabilir. Bu kontrolleri aşağıdaki komutlarla yapabiliriz.

<?
if ( is_readable("deneme.php")) { echo "Dosya Okunabilir."; } else { echo "Dosyanın Okuma İzni Yok."; };
?>

Yukarıdaki kodlar dosyanın okuma izni olup olmadığını kontrol ederken ,

<?
if ( is_writable("deneme.php")) { echo "Dosya Yazılabilir"; } else { echo "Dosyanın Yazma İzni Yok."; };
?>

Bu kodlarda dosyanın yazma izni olup olmadığını kontrol eder.


--------------------------------------------------------------------------------

e. Dosyanın oluşturulduğu tarihi öğrenelim

Çalıştığımız dosyanın oluşturulma tarihini öğrenmek için aşağıdaki komutu kullanırız.

<?
echo date("d/m/y","deneme.php");
?>

Yukarıdaki komut bize dosyanın oluşturulma tarihini verir.


--------------------------------------------------------------------------------

f. Erişim izinleri tablosunu inceleyelim.

Şimdi dosya ve dizinler üzerinde çalışırken sıkça kullanacağımız erişim denetimlerine ait fonksiyon değerlerini inceleyelim. İlgili tablo aşağıdaki gibidir.

r Okunabilir
w Yazılabilir
a Dosya sonuna yazar.
r+ Okunabilir ve Yazılabilir
w+ Yazılabilir ve Okunabilir
a+ Dosya sonuna hem Okur hem Yazar

Yukardaki tablo çoğu dosyalama ve dizin üzerinde yaptığımız işlemlerde bize yardımcı olacak fonksiyonlarda kullanılacaktır.


--------------------------------------------------------------------------------

Dosyalama üzerine edinmemiz gereken temel bilgileri gördük. Şimdi uygulamalara geçebiliriz.


1. Dosyadan Okuma

Dosyalama işlemlerinde en çok kullanacağımız prosedürlerden biridir. Bir dosyayı okumak için aşağıdaki işlemi kullanırız.

deneme.txt adında bir dosya oluşturalım ve içerisindeki metni ekrana yazdıralım.

<?
readfile("deneme.txt");
?>

Görüldüğü üzre bir dosyanın içerisindeki bilgiyi okumak ve ekranda görüntüler. Çoğu programlama dilinde bir Metin dosyasının okunması için ayrıntılı ve komplike kodlar kullanılırken php bu işlem için oldukça kullanışlı bir fonksiyon verir bize.

Şimdi aynı işlemi bir diğer şekilde yapalım.

<?
$aktarim=file("deneme.txt";
echo join("",$aktarim);
?>

Bu şekildede bir metin dosyasının içeriğini alıp ekrana yazdırabiliriz. file() fonksiyonu metin okumak için hazırlanmamış olsada genel anlamı ile metin dosyaları için PHP tarafından atanmış bir fonksiyondur. Biz bu fonksiyonu bir metin dosyasının içeriğini ekrana yazmak için kullandık.

Şimdi birazdaha komplike bir örnek verelim ve hazır pasta yemiyelim, kendi pastamızı kendimiz yapalım.

<?
$islem=@fopen("deneme.txt",'r');
while ( ! feof ( $islem )) {
$aktarim= fgets ( $islem,10240 );
echo "$aktarim";
} fclose($islem);
?>

Bu kod dizisi bize "deneme.txt" dosyasının içerisindeki metin değerlerini ekrana yazdıracaktır. Kodları biraz inceleyelim.

$islem=@fopen() fonksiyonu dosya okuyabilmek için kullanılan profesyonel bir fonksiyondur. Bu fonksiyon ile $islem adında bir değişken atayıp okuma işlemini bu değişken vasıtası ile dosyanın içerisindeki veriyi ekrana yazdırırız. Bu bir dizi değişkenidir. Parantez içerisine gireceğimiz değer ("dosyaadi",'erisim') olacaktır. Tek tırnak içerisine dosyayı okumak için hangi erişim denetimi ile açacağımızı belirtir. Dosyanı yazma izni yok ise "w" seçeneğini belirtmemeliyiz.

while döngüsü ile değeri alırken parantez içerisinde "feof" değeri ile karşılaşırız. Bu değer "File end Of File" yani File değerinin sonuna gelene kadar demektir. ! ünlem işareti daha önceki dökümanlarda gördüğümüz üzre "Değil İse" anlamını taşır ve Dosya Sonu Değilse döngüye devam et anlamını taşır.

$aktarim değişkeni ilede veri alımının etaplarını bir değişken vasıtası ile kodumuza geçeriz. fgets değeri dosyanın içerisindeki veriyi alır, Burada kullanılan fonksiyonu incelersek fgets($islem,10240), $islem olarak dosyanın açıldığı dize değerini belirterek dosyayı 10'ar KB ile alacağımızı belirtiriz. Buraya 1 dersek dosyayı 1'er Byte olarak okur, 1024 yaparsak birer KB olarak okur.

echo "$aktarim"; diyerekte $aktarim değişkeni içerisindeki veriyi ekrana yazdırırız.

fclose($islem); diyerekte dosya okuma işlemini sonlandırdığımız belirterek kodumuzu tamamlarız.

Bir dizinin içerisindeki veriyi okumak için dosya adı bölümüne "dizin/dosyaadi" şeklinde girdi belirtmemiz gerekir. Bir alt dizindeki veriyi almak içinde "../dosya" şeklinde girebiliriz.

Görüldüğü üzere alanımız üzerindeki bir dosyayı bu şekildede rahatlıkla okuyabiliriz.



2. Dosyaya Yazma

Mevcut bir dosyaya bilgi girişi veya var olan bir dosyanın içerisindeki bilginin güncellenmesi ve sıfırdan yazılması için PHP ile aşağıdaki kodları kullanabiliriz.

<?
$metin="Ben bir Ceviz Ağacıyım, Gülhane Parkında..\n";
$islem=fopen("yenidosya.txt",'w');
fwrite($islem,$metin);
fclose($islem);
?>

Yukarıdaki işlem bize "yenidosya.txt" adında bir metin dosyası açıp içerisine $metin değişkeni içerisindeki veriyi girmemizi sağlar.

Yaptığımız işlemleri satır satır inceliyelim.

$metin değişkeni ile dosyamıza yazmak istediğimiz bilgiyi belirtiyoruz.

$islem değişkeninen fopen() fonksiyonunu atıyoruz ve ("dosyaadi",'erisim') şeklinde fonksiyonumuzu kullanıma açıyoruz. Bu fonksiyon bize yazma hakkı ile yeni bir dosya açıyor.

fwrite() fonksiyonu ilede ("işlemdeğişkeni",metin) şeklinde gireceğimiz veriyi dosyanın içerisine yazdırıyoruz.

fclose() fonksiyonu ile dosyalama işlemimizi sonlandırarak kod girişimizi tamamlıyoruz.

Görüldüğü üzere bir dosya oluşturmak ve içerisine veri girmek oldukça kolay ve pratik. Bu işlemi biraz daha teferruatlandıralım ve aynı metin dosyasının sonuna bir değer daha girelim.

<?
$metin="Ne sen bunun farkındasın, nede polis farkında.";
$islem=fopen("yenitosya.txt",'a');
fputs($islem,$metin);
fclose($islem);
?>

Bu kodlarlada yenidosya.txt dosyasının sonuna $metin değişkeninin içerisindeki veriyi ekliyoruz. Aradaki fark kullandımız fputs() fonksiyonudur. Bu fonksiyon ile dosyaya birşey yazarken dosyanın içerisindeki veriyi silmeden sonuna ekleriz.


3. Dosya Kopyalama ve Silme

PHP ile dosyalarımızı kopyalayıp silme olanağınada sahibiz. Bu işlemler için aşağıdaki kodları kullanabiliriz.

<?
copy("yenidosya.txt","yenidosya2.txt");
?>

yenidosya.txt'yi aynı içerik ile yenidosya2.txt dosya ismiyle kopyaladık. Görüldüğü üzere kullanımı gayet kolay, açıklamaya gerek yok. Dosya silmek içinde ;

<?
unlink("yenidosya2.txt")
?>

Kodlarını kullanabiliriz. Dosya silmek için "Unlink" komutunu kullanırız. Görüldüğü üzere bu işlemde oldukça basitdir.


4. Mevcut Dosyaların Listelenmesi

Kimi zaman alanımız üzerindeki dosyaları listelememiz gerekebilir. PHP bize bu olanağıda sağlar. Bu işlem için aşağıdaki komutlar işimizi görecektir.

<?
$islem=@opendir(".");
while (($tampon=readdir ($islem))){
if ( is_file($tampon)){echo "$tampon<br>";};
};
?>

Bu komutlar ile dizin olarak belirttiğimiz alandaki tüm dosyaları listeleriz. Komutları sırası ile inceleyelim.

$islem dizi değişkeninin içerisine @opendir() fonksiyonu ile değer girişine başladık. @opendir() fonksiyonu PHP'nin bize dosyalama işlemleri için atadığı fonksiyondur. Kullanımı oldukça basittir. @opendir(dizin) şeklinde atanabilir.

While döngüsü ilede $tampon adında bir tampon değişken atayıp $islem değişkeninin içerisindeki dizileri tek tek ayıklıyoruz ve readdir($islem) diyerek dizi değişkenini baz alarak dizindeki dosyaları readdir() fonksiyonu ile okuyoruz. Bu işlem bize dosya ve dizinlerin tümünü döndürür.

is_file fonksiyon değerini kullanarakta dönen değerlerin içerisinde dosya olanları ekrana yazdıracak bir sınama işlemi yapıyoruz.

Bu işlemler sonunda tüm dosyalar ( Gizli dosyalarda dahil ) listelenecektir.


5. Dizin Oluşturma

PHP ile dosyalama işlemlerindeki pratiklik dizin işlemlerindede geçerlidir. Dizin işlemlerine Basit bir örnekle giriş yapalım ve bir klasör oluşturalım.

<?
mkdir("Deneme",0777);
?>

Görüldüğü gibi PHP'De dosya işlemleri olduğu gibi dizin işlemleride aynı mantık ile çalışır. mkdir() fonksiyonunun kullanımı örnektede görüldüğü üzere mkdir("Klasör Adı", Erişim İzni) şeklindedir. 0777 erişim izni yani Attribute'dur. Bu değerler döküman sonunda ayrıntılı olarak anlatılacaktır.


6. Dizin Kopyalama ve Silme

Dizin kopyalama ve silme işlemleride dosyalama işlemlerinde olduğu gibidir. Hatta hemen hemen aynıdır diyebiliriz. Dizin kopyalama ve silme işlemleri için aşağıdaki kodlar işimizi görür.

<?
copy("Deneme","Deneme2");
?>

Yalnız bu fonksiyonu kullanırken dikkat edeceğimiz husus, Erişim denetimi yani "Permission" dur. Windows tabanlı sistemlerde bu kodu deniycek olursak bize Permission'lar izin vermiycektir. Her nekadar Attribute'u 777 bile olsa bu işlemi Windows tabanlı bir sistemde yapamayız. Unix sistemlerde Dizin kopyalama işlemi Erişim izni var ise rahatlıkla yapılabilir.

Mevcut bir klasörü silmek içinde Dosya işleminde kullanılan "Unlink" fonksiyonu kullanılır..

<?
rmdir("Deneme");
?>

Görüldüğü gibi Var olan bir dizini silmek için RmDir() fonksiyonunu kullanıyoruz. Hatırlıycak olursak dosya silmek için "Unlink" i kullanmıştık. dizin işlemlerinde kullanacağımız fonksiyon farklılık gösterir.


7. Dizinlerin Listelenmesi

Dizinlerin listelenmesi PHP'de dosyaların listelenmesi ile aynı fonksiyon ile kullanılır. Dosyaları listelediğimiz kodları hatırlıycak olursak küçük bir değişiklikle dizinleride listeleyebiliriz.

<?
$islem=@opendir(".");
while (($tampon=readdir ($islem))){
if ( is_dir($tampon)){echo "$tampon<br>";};
};
?>

Görüldüğü gibi yalnızca dizi değerinin bize dönen yanıtını sınarken is_file yerine is_dir fonksiyonunu kullandık.


8. Attribute ( Erişim İzinleri ve Deyimleri )

PHP ile dosyalama ve dizinler üzerinde yaptığımız işlemleri tamamladık. Şimdi dosyalama işlemlerinin erişim denetimlerini inceleyebiliriz. Unix ve türevi sistemlerde ( Linux, BSD, Vs. ) dosya ve dizin yapısı Windows'dakinden daha farklıdır. Her nekadar Windows üzerinde PHP çalıştırabiliyor olsakta PHP bize Unix'in temellerini baz alarak bu işlemleri yaptırır.. Bir dosyayı okumak, yazmak ve çalıştırmak için aşağıdaki şablonda anlatılan biçimde bu denetimleri sağlar.

Dosya Sahibi Gruplar Herhangi Bir Kullanıcı
Yazma 400 200 100
Okuma 40 20 10
Çalıştırma 4 2 1

Yukarıdaki tabloya göre örnek birkaç erişim denetimi için kod türetelim.

1. Yalnızca Yöneticinin Okuması, yazması ve çalıştırması mümkün olsun.
2. Yalnızca yöneticinin yazma izni olsun, diğer kullanıcılar okuyabilsin.
3. Tüm kullanıcılarda, yöneticide okuyup çalıştırabilsin ama yalnızca yönetici yazabilsin.
4. Tüm kullanıcılar ve yönetici okusun, yazsın ve çalıştırabilsin.

Şimdi tablodaki rakamları toplayarak Attribute Türetelim.

1. 700
2. 705
3. 755
4. 777

Görüldüğü üzere bu tablo ile Dosya erişimleri ve izinleri (Attributes) kontrol altında tutulur.. PHP ile dosya ve dizin işlemleri yapacak isek bu tabloyu benimsemek şartdır.
  
Alıntı ile Cevapla

Cevapla

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

Yetkileriniz
Yeni Mesaj yazma yetkiniz aktif değil dir.
Mesajlara Cevap verme yetkiniz aktif değil dir.
Eklenti ekleme yetkiniz aktif değil dir.
Kendi Mesajınızı değiştirme yetkiniz aktif değil dir.

Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı


Bütün Zaman Ayarları WEZ +3 olarak düzenlenmiştir. Şu Anki Saat: 07:20 AM .


Powered by Jelsoft Enterprises Ltd.
Content Relevant URLs by 3.0.0

Copyright ©2008 StarHackz.Com All Legal Reserved.
Since 2004


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553