Ben bu bir tarayıcıya yazdırılan bir url, ... olabilir ki kötü dosyanın tam dizin yolunu açığa ve potansiyel bir kırık link yaratıyor olduğunu, çünkü güvenlik etkilendiği olacak sanmıyorum.
Bu bir HTML belgesi olarak basılmış olup olmadığını küçük bir yan not olarak, ben size girdi $ yol, bir [komut] etiketi (XSS) gibi bir şey içeren sadece-durumda ... Htmlentities gibi bir şey olsa çıkışını geçiyor sanırım.
Biraz daha güvenilir olsa da bu hale getirmek için, ben bazen set değil ya, 'DOCUMENT_ROOT' eşleşen tavsiye etmem, ya da maç (örneğin Apache yeniden yazma kuralları engel başlattığınızda). Olmaz
Ben yeniden yazmak için ise, ben sadece 'HTTP_HOST' her zaman yazdırılır emin olur ...
function make_url($path, $secure = false){
return (!$secure ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].str_replace($_SERVER['DOCUMENT_ROOT'], '', $path);
}
... Ve mümkünse sadece yol geçer, böylece arama kodu güncellemek, bu yüzden bile (yol 'DOCUMENT_ROOT' eşleşmiyor ne olur yani) 'DOCUMENT_ROOT' kaldırarak dikkate gerek yok .. .
function make_url($path, $secure = false){
return (!$secure ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].$path;
}
Bu işlevi var ... neden sorusunu kalkıyor hangisi?
Benim web sitelerinde, ben sadece ayarlar komut yürütme uzaklaştırmak tanımlanmış bir değişken var:
$GLOBALS['webDomain'] = 'http://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');
$GLOBALS['webDomainSSL'] = $GLOBALS['webDomain'];
O (fonksiyonları gibi) her yerde ulaşılabilir böylece ben GLOBALS kullanabilirsiniz ... ama sen de yapma düşünebilirsiniz Nerede bir sabit Eğer bu değer değişmez biliyorum eğer (ben bazen daha sonra bu değerleri değiştirmek, (define) site geniş yapılandırma dosyası, örneğin, ben web sitesi için bir HTTPS / SSL sertifikası varsa).