Điều này thật kỳ quặc, nhưng vì lý do nào đó, $_SERVER["SCRIPT_URI"]
sẽ không trả về tên miền khi tôi ở trong trang con/phụ nhưng sẽ chỉ hoạt động trên trang chính. Bạn không chắc chắn nếu nó do kịch bản (WordPress) hoặc máy chủ lưu trữ, nhưng xin vui lòng bạn có thể đề xuất bất kỳ giải pháp đáng tin cậy để lấy tên miền với PHP?
Trả lời
Nếu bạn cần tên miền, sử dụng:
$_SERVER['HTTP_HOST']
Ồ, cái này hoạt động tốt !! ngay cả với url viết lại trên. Cảm ơn –
Điều này có thể do viết lại URL, bạn có thể thử $ _SERVER ['REQUEST_URI'] thay vào đó nếu bạn muốn đường dẫn được gọi trong url.
Nếu bạn chọn phương pháp này, hãy lưu ý rằng nó có thể bị ảnh hưởng bởi các tiêu đề yêu cầu. –
Thật vậy. Theres url viết lại. Nhưng tôi không muốn con đường, tôi chỉ muốn kiểm tra tên miền. Có cách nào không? –
Tùy thuộc vào những gì bạn muốn, tôi muốn sử dụng một trong các cách sau:
- $ _SERVER [ 'PHP_SELF'] cho kịch bản tập tin vị trí
- $ _SERVER [ 'SERVER_NAME'] cho tên máy chủ
EDIT: Có thể PHP_SELF không phải là tốt nhất. Xem ý kiến.
Như tôi đã biết, việc sử dụng $ _SERVER ['PHP_SELF'] là một rủi ro tuyệt đối. http://is.gd/qPcb – sepehr
Có thể bạn nên sử dụng '$ _SERVER ['SCRIPT_NAME']' thay vì PHP_SELF. –
Khi nghi ngờ
var_dump($_SERVER);
+1 Lời khuyên tốt nhất! –
var_dump($_SERVER)
và xem những gì suites nhu cầu của bạn.
P.S. Việc sử dụng số $_SERVER["PHP_SELF"]
không được phép sử dụng có thể là security risk.
Nếu trình duyệt của bạn định dạng JSON
tài liệu độc đáo và không có đầu ra đã diễn ra, chèn sau đây sẽ dẫn đến một cái gì đó dễ đọc hơn so var_dump
:
header('Content-Type: application/json');die(json_encode($_SERVER));
phpinfo()
cũng sẽ cung cấp một danh sách tất cả $_SERVER
giá trị và do đó nhiều hơn nữa!
Ngoài ra, SCRIPT_URI không tồn tại, đúng cú pháp là REQUEST_URI:
echo $_SERVER["REQUEST_URI"];
Nó trả lại toàn bộ con đường mà không có máy chủ và tên miền.
'SCRIPT_URI' không nhất thiết là sai. Nó được ghi lại trong tài liệu Apache dưới dạng [biến môi trường được duy trì bởi mod_rewrite] (http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#EnvVar). Tuy nhiên, như OP đã tìm thấy, nó không phải lúc nào cũng được thiết lập (vì lý do gì). Nhưng ... khi nó được thiết lập, nó không giống như 'REQUEST_URI'. 'SCRIPT_URI' chứa URL _absolute, trong khi' REQUEST_URI' là URL gốc tương đối ("không có máy chủ và tên miền"). – MrWhite
Tôi đã sử dụng $ _SERVER [SCRIPT_URI] trên trang web của tôi http://www.a2zidx.com và một số thư mục con như http://howto.a2zidx.com
tôi đã không có vấn đề với điều này trong nhiều năm qua và ngày nay có một lỗi trên một số trang web ở đâu $ _SERVER [SCRIPT_URI] không được chỉ định. Sau khi liên hệ với isp của tôi, họ tuyên bố họ đã không thực hiện bất kỳ thay đổi nào nhưng $ _SERVER [SCRIPT_URI] không còn hoạt động nữa. getenv ('SCRIPT_URI') không thành công nhưng trả về một chuỗi rỗng. Tại sao điều này xảy ra đột ngột sau nhiều năm tôi không biết. Tôi đã kết thúc gọi một chức năng để đi qua các tùy chọn khác nhau để trích xuất tên tập tin đó là những gì tôi muốn. Hy vọng điều này bao gồm tất cả mọi thứ. Tôi gặp khó khăn kể cả chức năng kiểm tra nhưng "SCRIPT_NAME" "PHP_SELF" "SCRIPT_FILENAME "SCRIPT_URI"
Hy vọng giúp mình.
Nếu có ai biết tại sao SCRIPT_URI đột nhiên ngừng hoạt động, tôi rất muốn biết. Máy chủ hiện đang chạy Apache 2.4.
Các liên kết trông giống như spam, hãy xem xét thay thế chúng cho những cái chung chung như example.com – Norrius
- 1. Thay thế cho $ _SERVER ['HTTP_REFERER'] Biến PHP trong MSIE
- 2. javascript regexp thay thế không hoạt động, nhưng chuỗi thay thế hoạt động
- 3. Phương thức thay thế không hoạt động
- 4. Thay thế chuỗi C# không hoạt động
- 5. tại sao tiêu đề của tôi ("Vị trí: $ _SERVER ['HTTP_REFERER']"); PHP chức năng không hoạt động?
- 6. PHP: $ _SERVER biến: $ _SERVER [ 'HTTP_HOST'] vs $ _SERVER [ 'SERVER_NAME']
- 7. Hệ thống Tìm/Thay thế Độc đáo Không Hoạt động
- 8. JS thay thế không hoạt động trên chuỗi
- 9. PHP: $ _SERVER ['REDIRECT_URL'] và $ _SERVER ['REQUEST_URI']
- 10. $ _SERVER ['PHP_AUTH_USER'] trống rỗng
- 11. PHP $ _SERVER ['REMOTE_ADDR'] rỗng
- 12. Toán tử thay thế Perl hoạt động như thế nào?
- 13. PHP $ GLOBALS thiếu $ _SERVER
- 14. Cron Job $ _SERVER issue
- 15. tương đương với $ _SERVER ['DOCUMENT_ROOT'] sẽ hoạt động khi tập lệnh được cron gọi?
- 16. Sự khác nhau giữa: $ _SERVER [ 'SCRIPT_NAME'] và $ _SERVER [ 'PHP_SELF']
- 17. Có thể giả mạo $ _SERVER ['REMOTE_USER'] không?
- 18. Có thể đặt $ _SERVER ['HTTP_USER_AGENT'] không?
- 19. Có an toàn để tin tưởng $ _SERVER ['REMOTE_ADDR'] không?
- 20. $ _SESSION được tạo nhưng không có PHPSESSID trong $ _SERVER ['HTTP_COOKIE']
- 21. apache_request_headers() so với $ _SERVER
- 22. addToBackStack không hoạt động, đóng hoạt động thay vì popping back fragments
- 23. $ _SERVER ['REMOTE_ADDR'] không cung cấp địa chỉ IP phù hợp
- 24. thay đổi jquery không hoạt động trong trường hợp thay đổi giá trị động
- 25. 'Mã nóng thay thế' không hoạt động - Eclipse không thay đổi bất kỳ mã nào trên JBoss
- 26. preventDefault() không hoạt động
- 27. strstr không hoạt động
- 28. Hộp kiểm Html thay đổi không hoạt động
- 29. Datatables: Thay đổi chiều cao của bảng không hoạt động
- 30. showSoftInput không hoạt động sau khi thay đổi hướng
Bạn có thể đã nghĩ đến '$ _SERVER ['REQUEST_URI']' – Kzqai
@Kzqai 'SCRIPT_URI' được ghi lại trong tài liệu Apache dưới dạng [biến môi trường được duy trì bởi mod_rewrite] (http://httpd.apache.org/ docs/2.2/en/mod/mod_rewrite.html # EnvVar) - do đó từ đó _should_ có mặt trong 'super _loß' superglobal. Tuy nhiên, như OP đã tìm thấy, nó không phải lúc nào cũng được thiết lập (vì lý do gì). – MrWhite