2011-06-24 36 views
11

sự khác biệt giữa là gì:

$_SERVER['SCRIPT_NAME'] 

$_SERVER['PHP_SELF'] 

Cảm ơn bạn.

+0

xem: http://stackoverflow.com/questions/279966/php-self-vs-path-info-vs-script-name-vs-request-uri – amosrivera

+1

Bạn cũng có thể muốn xem xét hằng số ma thuật \ _ \ _ FILE__ - http://php.net/manual/en/language.constants.predefined.php – dqhendricks

Trả lời

2

Tên cũ là tên tập lệnh (ví dụ: /foo.php), sau là đường dẫn URI yêu cầu (ví dụ: /foo.php/123).

+1

Không chính xác. Có, PHP_SELF là toàn bộ đường dẫn url từ cuối tên miền đến chuỗi truy vấn, nhưng sau khi mod_rewrite được thực thi và trước khi các bí danh được thực thi. –

9

Chúng phải chứa cùng thông tin. Tuy nhiên, về lịch sử và kỹ thuật nói, có một sự khác biệt giữa hai người.

SCRIPT_NAME được định nghĩa trong đặc điểm kỹ thuật CGI 1.1 và do đó là tiêu chuẩn. Điều này có nghĩa là nó sẽ có sẵn không có vấn đề gì ngôn ngữ kịch bản bạn đang sử dụng.

PHP_SELF được triển khai trực tiếp bởi PHP và miễn là bạn đang lập trình bằng PHP, nó sẽ ở đó.

+0

Tên 'PHP_SELF' là duy nhất cho PHP, nhưng vì nó là toàn bộ đường dẫn URL, nó thực sự là một tiêu chuẩn được định nghĩa trong IETF, dưới một tên khác. –

5

Hầu hết thời gian đó là như nhau, nhưng $_SERVER['SCRIPT_NAME'] ít spoofable hơn $_SERVER['PHP_SELF'], vì vậy bạn nên sử dụng SCRIPT_NAME nếu bạn muốn sử dụng lại dữ liệu mà ở đâu đó trên đầu ra của bạn.

Kiểm tra that article trên các kết quả khác nhau thu được.

+1

bạn nên thoát khỏi dữ liệu động bất kể mức độ giả mạo của nó. – knittl

+0

@knittl: vâng, đúng vậy, việc tái sử dụng nó mà không thoát đúng cách sẽ là một vấn đề an ninh, nhưng nó sẽ nguy hiểm hơn nhiều với một điều dễ bị giả mạo. – regilero

+1

Có, nó là giả mạo hơn, nhưng chỉ vì nó là toàn bộ đường dẫn URL (thu được sau khi mod_rewrite). Vì vậy, nó phụ thuộc vào những gì chúng ta cần. Nếu chúng ta chỉ cần phần SCRIPT_NAME, thì OK, chúng ta sử dụng nó. Nếu chúng ta cần toàn bộ đường dẫn URL, chúng ta sử dụng PHP_SELF và, tất nhiên, chúng ta không nên tin tưởng nó - đó là đường dẫn URL. –

Các vấn đề liên quan