• 22-07-2014, 00:35:07
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    merhaba arkadaşlar.
    php ile web projelerinde ana dizinin altında bulunan alt dizinlerdeki sayfalarda include yaptığımda /yapamadığımda genelde sorun yaşıyorum.daha doğrusu örneğin üst.php yi include etsem ana dizinde üstün içindeki css ler çalışırken ana dizin altın daki başka bir klasörden üstü include edince üstün içindeki include ettiklerim çalışmıyor
    sorun yol sorunu.
    çözümü ise base url galibada ben bunu kullanamadım..
    yardımlarınızı bekliyorum.. nasıl kullanacağım hususunda.
  • 22-07-2014, 00:38:51
    #2
    üstün içindeki include ettiklerim çalışmıyor derken php dosyaları mı, yoksa style(css) dosyaları mı?
  • 22-07-2014, 00:58:28
    #3
    hocam
    anadizinde
    index.php
    ana dizindeki klasörler
    -css
    -stil.css
    -ekle
    -ust.php
    -altsayfa
    -sayfa1.php


    hocam şimdi bu örnekten yola çıkarak

    üst.php ' ye stil.css i include ediyorum.
    index.php ' ye de ust.php yi include ediyorum.
    burada sıkıntısız çalışıyor..
    fakat,
    altsayfa klasöründe ust.php 'yi
    include(../ekle/ust.php) deyince include ediyor, fakat içindeki stil.css dosyasını dahil etmiyor
  • 22-07-2014, 01:38:00
    #4
    mustafayilmaz28 adlı üyeden alıntı: mesajı görüntüle
    hocam
    anadizinde
    index.php
    ana dizindeki klasörler
    -css
    -stil.css
    -ekle
    -ust.php
    -altsayfa
    -sayfa1.php


    hocam şimdi bu örnekten yola çıkarak

    üst.php ' ye stil.css i include ediyorum.
    index.php ' ye de ust.php yi include ediyorum.
    burada sıkıntısız çalışıyor..
    fakat,
    altsayfa klasöründe ust.php 'yi
    include(../ekle/ust.php) deyince include ediyor, fakat içindeki stil.css dosyasını dahil etmiyor
    Bu konumda kolaylaştırma ifadeleri (./ veya ../) çakıştığından doğru ifadeyi yakalamanız gerekiyor. Fakat bu yöntem için tavsiyem path dahilinde bir include işlemi yapmanız. Yani ana dizin ile.


    Örneğin:
    '/home/cpanel-kullaniciadi/public_html/' şeklinde tam isim belirterek yapabilirsiniz.


    veya birçok scriptin kullandığı yöntem:
    1. Scriptin ana dizininde (index.php misal) bu kodu çalıştırarak bu scriptin tam yolunu almak.
    define( 'ROOT_DIR', dirname(__FILE__) );

    2. Alt yollarda çalışacak include veya benzeri işlevleri alınan bu tam yol değerini kullanarak çalıştırmak.
    include( ROOT_DIR.'/include/functions.php' );
  • 22-07-2014, 01:44:33
    #5
    Ya da bütün alt saryafaları url'den gelen talebe göre index.php'ye include etmek.
  • 22-07-2014, 03:55:44
    #6
    hocam benim belirttiğim yapıda hangisinde kullanayım tam olarak.
    en üst dizinde bulunan index.php de kullanmak zorundamıyım yoksa ekle dizini içindeki üst.php de kullansam olurmu?1 seçeneği
  • 22-07-2014, 10:53:08
    #7
    Hocam olay şu: ust.php'de css dosyasının yolunu css/stil.css olarak belirlemişsiniz. Bu yol ana dizin içindeki php dosyaları için doğru. css dosyasının çekildiği ust.php, index.php gibi ana dizinde yer alan bi' php dosyasına include edildi ise çalışır, ama altsayfa dizini içindeki sayfa1.php dosyasından include edildi ise stil dosyasının yolu yanlış olacaktır. css/stil.css değil de ../css/stil.css şeklinde olması gerekir.

    Bunun için yapabilecekleriniz
    -@exselansTR_'nin dediği gibi bir sabit tanımlamak olabilir.
    -ana dizin yolunun parametre olarak gönderildiği bir fonksiyon olabilir.
    -ust.php'yi include etmeden önce ana dizin yolunu belirten bir değişken oluşturulup stil dosyaları vs. çekerken bu değişken kullanılabilir.
    -Tüm dosyalar url'den delen isteğe göre index.php içine include edilebilir (böylece dosyalar hep ana dizin konumuna göre okunur). Yani index.php'yi görsel tabanlı değil, sadece hangi dosyanın gösterileceğini belirten koordine merkezi olarak kullanırsınız ki bence hoş olan da budur.

    Edit: Bir de base konusu varmış.
    htaccess dosyasında "RewriteBase /" satırı ekler, index.php, header.php veya uygun yer hangi dosyanızda ise oraya
    <base href="<?php echo $siteurl; ?>/" />

    kodunu ekerseniz "okuncak dosyaları çekerken ilk / işaretini kullanmaya gerek kalmaz", mesela localde xxx isimli bir klasörde çalışıyorsanız "RewriteBase /xxx/" derseniz $siteurl değikeninde de bu yolu belirtirseniz site içi dosyalar için /xxx/ şeklinde başlayan yollar kullanmanıza gerek kalmaz
  • 22-07-2014, 11:27:32
    #8
    Hocam css den önce / işareti koyun yeter. Yani;
    /css/stil.css
  • 22-07-2014, 16:12:31
    #9
    CanArs12 adlı üyeden alıntı: mesajı görüntüle
    Hocam css den önce / işareti koyun yeter. Yani;
    /css/stil.css
    Arkadaşın da dediği gibi sadece / işareti koyun

    sizin dizini belirtirken kullandığınız

    include("../blabla.css")

    bu satırdaki .. işaretinin anlamı bir önceki dizin anlamına geliyor sen zaten en üst dizinde isen bir üst e daha çıkmana gerek yok...

    şöyle bir yapı olsa idi alt klasörden üst klasör e çıkıp oradaki bir php i include etmek isteseydin

    o zaman .. komutu işe yarayacaktı ama alt dizine gireceksen buna gerek yok