11 Ocak 2025

PHP Dizin İşlemleri: Daha Derine İnelim

 

PHP Dizin İşlemleri: Daha Derine İnelim

Verdiğiniz örnekler, PHP ile dizin oluşturma ve silme işlemlerinin temelini çok güzel bir şekilde açıklıyor. Ancak, bu konuda daha da derinleşerek, bazı ek noktalara ve olası senaryolara değinmek faydalı olacaktır.

Dizin Oluşturma (mkdir)

  • İzinler (chmod): İkinci parametre olarak verilen 0777 gibi izinler, oluşturulan dizinin okuma, yazma ve yürütme izinlerini belirtir. Ancak, güvenlik açısından tüm kullanıcılar için tüm izinleri vermek her zaman önerilmez. Daha spesifik izinler belirlemek için chmod fonksiyonunu kullanabilirsiniz.
  • Çoklu Dizin Oluşturma: Tek seferde birden fazla dizin oluşturmak için mkdir fonksiyonunu iç içe kullanabilir veya recursive olarak dizin oluşturabilirsiniz.
  • Hata Kontrolü: mkdir fonksiyonu başarısız olursa, nedenini anlamak için error_get_last() fonksiyonunu kullanabilirsiniz.
  • Özel Dizinler: mkdir fonksiyonu ile özel dizinler (örneğin, . ile başlayan gizli dizinler) de oluşturabilirsiniz.

Dizin Silme (rmdir)

  • Boş Dizin Kontrolü: rmdir fonksiyonu sadece boş dizinleri silebilir. Dizin içinde dosya veya alt dizin varsa, önce bunları silmeniz gerekir.
  • Recursive Silme: İç içe dizinleri silmek için recursive olarak rmdir fonksiyonunu kullanabilir veya glob ve unlink kombinasyonuyla tüm dosyaları silerek dizini boşaltabilirsiniz.
  • Hata Kontrolü: rmdir fonksiyonu başarısız olursa, nedenini anlamak için error_get_last() fonksiyonunu kullanabilirsiniz.

Ek Fonksiyonlar ve Konular

  • file_exists: Bir dosya veya dizinin var olup olmadığını kontrol eder.
  • is_dir: Verilen yolun bir dizin olup olmadığını kontrol eder.
  • is_file: Verilen yolun bir dosya olup olmadığını kontrol eder.
  • glob: Belirli bir pattern'e uyan dosya veya dizinlerin listesini döndürür.
  • rename: Bir dosya veya dizinin adını değiştirir.
  • copy: Bir dosyayı veya dizini kopyalar.
  • scandir: Bir dizindeki tüm dosya ve alt dizinlerin listesini alır.
  • realpath: Verilen yolun mutlak yolunu döndürür.
  • dirname: Verilen yolun dizin kısmını döndürür.
  • basename: Verilen yolun dosya adını döndürür.

Güvenlik

  • Göreli Yollar: Güvenlik açıklarından kaçınmak için mutlak yollar kullanın. Göreli yollar, beklenmedik sonuçlara neden olabilir.
  • İzin Kontrolü: Kullanıcıların izinsiz dosyalara erişmesini engellemek için izinleri dikkatli bir şekilde ayarlayın.
  • Girişleri Temizleme: Kullanıcıdan alınan girişleri temizleyerek, dizin yolunda zararlı karakterlerin olmasını önleyin.

Örnek: Recursive Dizin Silme

PHP
function sil($dizin) {
    foreach (glob($dizin . '/*') as $dosya) {
        is_dir($dosya) ? sil($dosya) : unlink($dosya);
    }
    rmdir($dizin);
}

sil('dosyalar/resimler');

Örnek: Çoklu Dizin Oluşturma

PHP
function olustur($dizin, $izinler = 0755) {
    if (!is_dir($dizin)) {
        mkdir($dizin, $izinler, true); // true, recursive oluşturma
    }
}

olustur('dosyalar/resimler/2023');
olustur('dosyalar/belgeler');

Sonuç olarak, PHP ile dizin işlemleri, web uygulamalarında sıkça kullanılan önemli bir konudur. Bu işlemleri yaparken güvenlik, performans ve okunabilirlik gibi faktörleri göz önünde bulundurmak önemlidir. Verilen örnekler ve ek bilgiler, bu konuda daha iyi bir anlayış kazanmanıza yardımcı olacaktır.

Ek olarak, PHP'nin sunduğu diğer dosya ve dizin işlemleriyle ilgili daha fazla bilgi için PHP resmi dokümantasyonunu inceleyebilirsiniz.

PHP POST Metodu Örneği

<?php
echo "<pre>";

if (isset($_POST['sayi'])) {
$sayi = $_POST['sayi'];

if ($sayi === "") {
echo"Lütfen bir değer giriniz";
}else {
if($sayi % 3 == 0) {
echo "Girdiginiz sayi ($sayi) 3'e tam bölünebilir";
} else {
$ilkBolunen= $sayi + (3 - $sayi % 3);
echo "Girdiğiniz sayı ($sayi) 3'e bölünemez. Bölebileceğiniz ilk sayi $ilkBolunen'dir.";
}
}
}

?>

<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>POST</title>
</head>
<body>

<form action="odevpost.php" method="post">

<input type="number" name="sayi" placeholder="Sayi"><br>

<button type="submit"> Gonder </button>
</form>




</body>
</html>

PHP Get Kullanımı

 <!DOCTYPE html>

<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>POST</title>
</head>
<body>

<form action="get.php" method="get">

<input type="text" name="isim" placeholder="Isim"><br>
<input type="text" name="soyisim" placeholder="Soyisim"><br>

<label>Diller</label><br>
<label>PHP</label>
<input type="checkbox" value="php" name="dil[]"><br>
<label>NODEJS</label>
<input type="checkbox" value="node" name="dil[]"><br>
<label>JS</label>
<input type="checkbox" value="js" name="dil[]"><br>

<button type="submit"> Gonder </button>
</form>




</body>
</html>
get.php dosyasi =>
<?php
error_reporting(E_ALL);

echo '<pre>';

function filtre($p)
{
return is_array($p) ? array_map('filtre', $p) : htmlspecialchars(trim($p));
}

$dizi = array_map('filtre', $_GET);

print_r($dizi);


?>

PHP Post Kullanımı

form.php dosyası => 

<!DOCTYPE html>

<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>POST</title>
</head>
<body>

<form action="post.php" method="post">

<input type="text" name="isim" placeholder="Isim"><br>
<input type="text" name="soyisim" placeholder="Soyisim"><br>

<label>Diller</label><br>
<label>PHP</label>
<input type="checkbox" value="php" name="dil[]"><br>
<label>NODEJS</label>
<input type="checkbox" value="node" name="dil[]"><br>
<label>JS</label>
<input type="checkbox" value="js" name="dil[]"><br>

<button type="submit"> Gonder </button>
</form>




</body>
</html>

post.php dosyası =>
<?php
error_reporting(E_ALL);

function filtre($p)
{
return is_array($p) ? array_map('filtre', $p) : htmlspecialchars(trim($p));
}

$dizi = array_map('filtre', $_POST);

echo "<pre>";

print_r($dizi);

?>

PHP String Fonksiyonları

 <pre>

    <?php

$metin = 'Şahin Turgut Ersever';

//echo strlen($metin); // metinsel ifadenin kaç harfli oldugunu gosteriyor
//$array = (explode(' ', $metin));//ayırma dizi elemanlarını
//echo implode(' ', $array);//birleştirme dizi elemanlarını
//$array = str_split($metin,2 );//diziyi 2 2 böldük Ş harfi tek çünkü 2 byte olduğu için türkçe karakter
//print_r($array);

/*
$metin = ltrim($metin);//başındaki boşluğu temizliyor yani sol tarafındaki
$metin = rtrim($metin);//sonundaki boşluğu temizliyor yani sağ tarafındaki
echo strlen($metin);
*/

/*
$metin = substr($metin, 5, 6);//metinin bellir bir yerinden kesebilmeyi sağlıyor
echo $metin;
*/

/*
$metin = strtolower($metin); // bütün harfleri küçültürüyor
$metin = strtoupper($metin); // bütün harfleri büyütüyor
echo $metin;
*/

/*
$metin = ucfirst($metin); //ilk kelimenin ilk harfini büyütüyor
$metin = ucwords($metin); //kelimelerin ilk harfini büyütüyor
echo ($metin);
*/

/*
$metin = str_replace('Turgut', 'ahmet', $metin);//kelimenin içerisindeki ifadeyi değiştiriyor
echo $metin;
*/

?>
</pre>

PHP Dizi Fonksiyonları 3

 <pre style="font-size: 20px;">

    <?php
//$dizi = ['bir'=>'Araba', 'iki'=>'Bisiklet','üç'=>'Uçak','dört'=>'Kamyon'];
/* echo current($dizi);//bir dizideki geçerli öğeyi döndürür
echo next($dizi);//bir dizideki dahili işaretçisini ilerletir
echo prev($dizi);//bir dizideki dahili işaretçisini geri götürür
echo end($dizi);//dizideki en son elemanı getirir
echo reset($dizi);//ilk elemana tekrar götürüyor
*/

/* extract($dizi);//dizinin anahtarlarını değişken olarak kullanmamıza yarıyor
echo $bir;
*/

$dizi = [
2 => 1,
5 => 2,
8 => 0,
1 => 20,
];

asort($dizi);//anahtarlarıyla ilişkisini bozmadan küçükten büyüge sıraladı
print_r($dizi);
arsort($dizi);//anahtarlarıyla ilişkisini bozmadan büyükte küçüge sıraladı
print_r($dizi);

ksort(($dizi)); // anahtarlarına göre küçükten büyüğe sıraladı
print_r($dizi);

krsort(($dizi)); // anahtarlarına göre büyükten küçüğe sıraladı
print_r($dizi);

?>
</pre>

PHP Dizi Fonksiyonları 2

 <pre style="font-size: 35px;">

   <?php
error_reporting(E_ALL);

$array = ['Şahin','Ahmet','Mehmet','Mustafa'];
array_shift($array);//dizinin başlangıç değerini kaldırır bir elemanı çıkartır yani
array_pop($array);//dizinin sonundaki değeri kaldırır elemanı yok ediyor
$newArray= array_slice($array,0,3);//bir dizinin belirlediğin bölümünü döndürür
print_r($newArray);
print_r($array);
$sayilar = range(1,5);
print_r(array_sum($sayilar));//bir dizideki elemanların değerinin toplamını getirir
print_r(array_product($sayilar));
var_dump(in_array('Ahmet',$array));//bir dizide bir değerin varlığını araştırır

$dizi = ['Ahmet', 'Mehmet', 'Şahin', 'Mustafa'];

array_push($dizi,'Kemal');//dizinin sonuna yeni eleman ekliyor
array_unshift($dizi, 'Ali');//dizinin başına yeni elemanı ekliyor
print_r($dizi);
print_r(array_keys($dizi));//dizideki bütün anahtar ve keyleri döndürüyor

?>
</pre>