PHP include ve function olayı
PHP ile uzun zamandır uğraşıyorum fakat daha önce farketmediğim basit bir hatamı arkadaşım düzeltti. (Lise arkadaşlarım olmasa ne yapardım bilmiyorum. Seni seviyorum Maçka, Teşekkürler
)
Kısaca durum şu: include ettiğiniz veya require ile çağırdığınız bir “fonsiyon.php” dosyası içerisinde bulunan fonksiyonlar ayrı birer sayfaymış gibi derlenip, değişkenleri oluşturulup çağırdığınız dosyaya öyle geliyormuş. Bu yüzden fonksiyonlar anlamlı değerler alıp geri dönderemiyormuş. (Caner’in yalancısıyım. Biraz bakındım ama google’de pek bişe bilmiyor sanırım.)
Fakat çözümünü verdi arkadaşım sağolsun. Dosyayı “php” uzantılı olarak değilde farklı birşey yap, o zaman istediğin gibi çalışır dedi. Mesela: “fonksiyon.php” yerine “fonksiyon.uzanti” yaptığınızda dosyanın içindeki php kod parçaları sanki çağırdığınız dosyadaymışçasına iş görüyor.
Fakat bu çözüm biraz riskli çünkü bu şekilde oluşturulan bir dosya tarayıcı tarafından okunabilir hale gelir. Yani www.example.com/fonksiyon.uzanti dersen dosya içeriğini görebilirsin. Caner sağolsun buna da bir çözüm getirmiş, dosya adını tahmin edilemeyecek birşey yapacaksın. Mesela “kimsebilmeznecektigimi.dosyasi” yaparsak (sanırım kimse tahmin edemez
) kafadan uydurupta tarayıcıda görüntülenmesi zor olacaktır.
Eminim bu sorunun daha akılcı bir çözümü vardır fakat ben google ile yeteri kadar konuşamadım bu konu üstüne. Fikri olan varsa iletirse sevinirim
Kalın sağlıcakla…
23 Haziran 2008, 12:46 am tarihinde.
Selam Ganim:) include veya require ile çağrılan dosyanın uzantısının ne olduğu önemli değil. Yorumlayıcı sadece içerdiği kodlara bakar. Uzantının .php olması ayrı yorumlanacağı anlamına gelmiyor. Ve import edilen bu dosya içindeki kodlar her durumda ana script dosyamızın içindeki bir kod parçasıymış gibi davranıyor. Verilen bilgi hatalı. Bu konuyla ilgili bir problemin varsa başka bir şeyden kaynaklanıyordur;) İyi çalışmalar…
24 Haziran 2008, 6:33 am tarihinde.
Dostum fakat söylediğim şekilde bir problem yaşadım. php dosyası olarak include ettiğimde geri değer döndüremiyordum fakat bu şekilde gayet sağlıklı çalıştı. bende çalışınca irdelemedim.