• 27-10-2009, 00:17:13
    #1
    Üyeliği durduruldu
    Simdi ornek vererek anlatmak istiyorum. Ornegin, www.abc.com diye bir siteyi kodlamakta oldugumu varsayayim ve index.php`nin icerigini disardan header.php ve footer.php alanlarini icine require yaptim, ve diyelim bir galeri actim onunda dosyalari galeri dizininin altinda simdi ben galeri icin olusturacagim index.php icin anadizindenki header php ve footer.php`yi nasil require edicem ? Bunu almak cok basit verirseniz linki /../header.php olur ama bu sefer anadizindeki index.php calismaz hale gelicek, peki /header.php ver derseniz buda olmiycak ki site kodladigimiz icin kendi sunucumda calisiyorum bu nedenle public_html in icine baska bir klasor actim orda calisiyorum bu gibi bir durumda ne yapmam gerekir ?


    http://john.mcclumpha.org/php/A_solu..._paths_in_PHP/


    Bu makalede bu konu uzerine yazilmis ama daha cok kafa karistiran cinsten olmus bu konu hakkinda fikri olan yardimci olursa iyi olur hep karsima cikan bir sorun ...
  • 27-10-2009, 05:29:47
    #2
    Kurumsal PLUS
    // Ana dizindeki için
    $dizin = "/";
    // Klasördeki için
    $dizin = "../";
    Bu kodları require yapmadan önce ekleriz. header ve footer'daki linkleri ise şu şekilde düzenleriz:
    <a href="<?=$dizin?>index.php">Anasayfa</a>
  • 27-10-2009, 05:39:46
    #3
    Üyeliği durduruldu
    peki Bartuc bey linki
    Alıntı
    <?=$dizin?>index.php"
    bu sekilde verdigimiz zaman demektirki dosya anadizindedir peki ben anadizinde calismiyorsam ne olucak ? ki kendi sunucumda yaptigim icin siteyi sitemde parties klasoru altinda yapiyorum bundan dolayi is karisiyor ingilizce dokumanda guzel cozum bulmus birisi ama nasil tam kavrayamadim


    daha acik olsun diye yaptigim isi tam yaziyim, header ve footer php yarattim yaptigim her sayfada bu alanlari require yapiyorum. birde galeri dizini yaptim bunun icinde galeriler var 10 tane bunun icindeki galerilerin tek php dosyalari var hepsi ayri klasorler icinde mesela a gerisi ise linki /parties/gallery/a-gallery/ seklinde ben header.php`de link verirken /index.php yazarsam siteismi/index.php koyuyor ki bu isime yaramaz ana dizinde calismiyorum, parties/index.php yazarsam ki cozumu boyle yapiyordum ben siteyi tasidiktan sonra partieslerin hepsini silmem gerekicek cunku musterinin sitesinde anadizinde olucak.
  • 27-10-2009, 05:44:00
    #4
    Kurumsal PLUS
    CoMMaNDoS adlı üyeden alıntı: mesajı görüntüle
    peki Bartuc bey linki bu sekilde verdigimiz zaman demektirki dosya anadizindedir peki ben anadizinde calismiyorsam ne olucak ? ki kendi sunucumda yaptigim icin siteyi sitemde parties klasoru altinda yapiyorum bundan dolayi is karisiyor ingilizce dokumanda guzel cozum bulmus birisi ama nasil tam kavrayamadim
    İşte verdiğim diğer kodları require'den önce eklerseniz sorunsuz çalışacaktır. Anasayfadaki dosyalara $dizin = "/"; klasörlerdeki dosyalara ise $dizin = "../"; şeklinde eklenmeli.
  • 27-10-2009, 10:20:13
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Yapman gereken dosya include ederken tam yolu yazmak.

    index.php içeriğin
    <?php
    define('kutuphane','/home/benimsitem/kutuphane/');
    require_once(kutuphane.'header.php');
    require_once(kutuphane.'footer.php');
    ?>
    Aynı şekilde galleri içinde yapabilirsin önemli olan tam yolu yazmak.
    index.php dosyası /home/benimsitem/public_html/ içindede olsa /home/benimsitem/public_html/galeri/ içindede olsa her zaman footer.php ve header.php dosyaların sorunsuz şekilde eklenecektir çünkü tam yolu yazıyoruz.
  • 27-10-2009, 10:22:26
    #6
    Üyeliği durduruldu
    S4l1h adlı üyeden alıntı: mesajı görüntüle
    Yapman gereken dosya include ederken tam yolu yazmak.
    @S4l1h üstad in dedigine bir alternatif olarakta göreceli olarak üst dizine cikmak için ../ şeklinde üst dizini belirtebilirsiniz.

    ./ bu dizini belirtirken ../ bir üst dizini iki üst dizin ise ../../ şeklinde tanimlanadabilir
  • 27-10-2009, 10:41:37
    #7
    Aslında birden fazla yöntem bulunuyor.
    http://php.net/chdir ilede dizini değişebiliriz ve yine sorunsuz şekilde dosya ekleyebiliriz.
    Dosyaların en üstüne
    chdir('../kutuphane');
    şeklinde yazarak dizini değiştirebiliriz.

    footer.php ve header.php dosyalarının /home/benimsitem/kutuphane/ dizininde olduğunu varsayarsak yine
    /home/benimsitem/public_html/index.php içeriği
    <?php 
    chdir('../kutuphane/');
    require_once('header.php'); 
    require_once('footer.php'); 
    ?>
    /home/benimsitem/public_html/galeri/index.php içeriği
    <?php 
    chdir('../../kutuphane/');
    require_once('header.php'); 
    require_once('footer.php'); 
    ?>
  • 27-10-2009, 11:43:18
    #8
    Kurumsal PLUS
    S4l1h adlı üyeden alıntı: mesajı görüntüle
    Yapman gereken dosya include ederken tam yolu yazmak.

    index.php içeriğin
    <?php
    define('kutuphane','/home/benimsitem/kutuphane/');
    require_once(kutuphane.'header.php');
    require_once(kutuphane.'footer.php');
    ?>
    Aynı şekilde galleri içinde yapabilirsin önemli olan tam yolu yazmak.
    index.php dosyası /home/benimsitem/public_html/ içindede olsa /home/benimsitem/public_html/galeri/ içindede olsa her zaman footer.php ve header.php dosyaların sorunsuz şekilde eklenecektir çünkü tam yolu yazıyoruz.
    open_basedir koruması buna izin vermeyecektir.
  • 27-10-2009, 12:39:33
    #9
    Bartuc adlı üyeden alıntı: mesajı görüntüle
    open_basedir koruması buna izin vermeyecektir.
    Dediğiniz sabit bişey değildir.
    <?php
    phpinfo();
    ?>
    şeklinde dosya yükleyip open_basedir değerine bakmak lazım.
    kendi deneyimim cpanel ve safe_mode on olan sunucuda sorunsuz bir şekilde çalışıyor.
    Çünkü sonuçta include ettiğimiz dosya bizim dizinimizde bulunuyor open_basedir değeri genelde ya null dur yada /home/benimsite:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp şeklinde birşeydir.
    Sonuç olarak kutuphane klasorude bizim dosya alanımızda olduğu için sorun olmayacaktır.{ bknzpen_basedir değerindeki /home/benimsite:}
    Deneyip sonuçu buraya yazabilirsiniz.