PHP İstenen Page Nasıl Belirlenir

3 Cevap

Başlangıçta argümanları almak görmezden, isteği işleme ve / /index.php için gibi (en azından temel) eşleştirmeleri ele dosyayı tanımlamak için herhangi bir kolay yolu var mı?

Ne olursa olsun olsun argümanlar aynı değeri döndürür ve bu değer değil URI, istenen dosya, ne de şu anda yürütülen dosyası ({[(hariç İdeal ne arıyorum, $_SERVER['REQUEST_URI'] gibi bir şeydir 1)]}). Diğer bir deyişle, bir $_SERVER['REQUESTED_FILE'] ya da bir. Ben böyle bir şey görmedim. O var mı, ya da ben elle bir şeyler yazmak gerekiyor?

Update Here are some example URLs paired with what I would like the result to be:

example.com/mypage.php       : /mypage.php
example.com/                 : /index.php
example.com/foo/?hello=world : /foo/index.php

Ve bu dönüş değerleri bile dahil dosyaları doğrudur. Yanıtlamadan önce aşağıda benim cevap bakın, ben aradığımı buldum.

3 Cevap

Ben kendimi dışarı test etmeye karar verdim. $_SERVER['SCRIPT_NAME'] değişken bir dizin dosyası olsa bile, istenen dosya yolunu sunar ve olmadan parametreleri veya başka bir şey olsun. Bu path dosyası içerir, ancak ancak güvenlik açığı olmadan, sadece PHP_SELF gibi, belge kök dizinine göreli olarak görünüyor bana PHP belgelerine durumları.

https://gist.github.com/dimo414/5484870: Buraya bu test etmek için kullanılan kod

Çıkış isterken example.com/?foo=bar:

__FILE__:               /var/www/index.php
PHP_SELF:               /index.php
SCRIPT_NAME:            /index.php
REQUEST_URI:            /?foo=bar
parse_url(REQUEST_URI): /


__FILE__:               /var/www/pathtest.php
PHP_SELF:               /index.php
SCRIPT_NAME:            /index.php
REQUEST_URI:            /?foo=bar
parse_url(REQUEST_URI): /

Ve çıkış isterken example.com/index.php/<strong>XSS</strong>:

__FILE__:               /var/www/index.php
PHP_SELF:               /index.php/XSS # note the XSS exploit (this is bold in browser)
SCRIPT_NAME:            /index.php     # No exploit here
REQUEST_URI:            /index.php/%3Cstrong%3EXSS%3C/strong%3E
parse_url(REQUEST_URI): /index.php/%3Cstrong%3EXSS%3C/strong%3E


__FILE__:               /var/www/pathtest.php
PHP_SELF:               /index.php/XSS
SCRIPT_NAME:            /index.php
REQUEST_URI:            /index.php/%3Cstrong%3EXSS%3C/strong%3E
parse_url(REQUEST_URI): /index.php/%3Cstrong%3EXSS%3C/strong%3E

Gördüğünüz gibi, $_SERVER['SCRIPT_NAME'] her zaman başlangıçta herhangi bir güvenlik riski olmadan, URL dosyası yani, isteği ele dosyayı geri verir.

$_SERVER['PHP_SELF']

Gerçek senaryoyu dönmelidir. Ama orada various methods.

Tüm çeşitli dosya ile ilgili ortam değişkenlerinin bir matris için daha iyi bir bağlantı vardı ama ben bulamıyorum. O kadar dönerse ben düzenlemek edeceğiz.

Düzenleme: Ben buldum a nice SO thread that details the differences between them.

Muhtemelen $_SERVER['PATH_INFO'] arıyor

Ayrıca onunla bazı other fancy things yapabilirsiniz