2011-06-25 53 views
5

giả sử rằng php đang chạy trong chế độ web qua cgi/mod_php/etc ...

có thể giả định rằng $ _SERVER ['REMOTE_ADDR'] sẽ tồn tại và hơn thế nữa, nó sẽ được cách điệu chính xác (xin lỗi, thuật ngữ có thể tắt ở đây ...) ip (1.1.1.1 -> 255.255.255.255?)?

đây không phải là câu hỏi liên quan đến thời tiết ip chứa bên trong $ _SERVER ['REMOTE_ADDR'] sẽ là ip thực sự của ứng dụng khách yêu cầu gói ...

chỉ đơn giản là:

a) sẽ $ _SERVER [ 'REMOTE_ADDR'] luôn luôn tồn tại nếu php đang chạy trong chế độ web. b) nếu $ _SERVER ['REMOTE_ADDR'] luôn tồn tại, nó sẽ luôn chứa ip đúng cú pháp?

cảm ơn.

+0

Câu hỏi hay - Tôi nghĩ câu trả lời là "có" trên cả hai tính, nhưng tôi không hoàn toàn chắc chắn về [IPV6] (http://en.wikipedia.org/wiki/IPV6). Vì tò mò, tại sao bạn cần biết? Tại thời điểm đó bạn sẽ gặp rắc rối nếu nó không * một IP được định dạng đúng? –

+0

chỉ cần đi qua mã đã chạy (chạy, tốt) trong nhiều năm, nhưng đã được xác nhận thông tin này qua: isset ($ _ SERVER ....) +^([1-9] | [1-9] [0-9] | 1 [0-9] [0-9] | 2 [0-4] [0-9] | 25 [0-5]) (\. ([0-9] | [1- 9] [0-9] | 1 [0-9] [0-9] | 2 [0-4] [0-9] | 25 [0-5])) {3}^ dường như là hoàn toàn không cần thiết –

+0

theo như ipv6 tuân thủ ... ipv6 bị vô hiệu hóa trên hộp chạy mã này, do đó, được ok (trong thời gian này) trên mặt trận đó ... cảm ơn một lần nữa! –

Trả lời

6

Có, nó luôn xuất hiện ở chế độ web và vì địa chỉ IP được chuyển đổi từ biểu diễn nhị phân sang định dạng văn bản bạn thấy, nó luôn hợp lệ – không có cách nào để chỉ định IP không hợp lệ trong Tiêu đề IP.

Một điều nữa: Đừng giả định bất kỳ định dạng đặc biệt nào trừ khi bạn hoàn toàn phải đối phó với địa chỉ IP. Ví dụ: địa chỉ IPv6 dài hơn và chứa các ký tự khác nhau. Về cơ bản, xử lý địa chỉ IP dưới dạng chuỗi mờ.

+0

cảm ơn bạn! –

+0

Tôi biết rằng điều này đã hơn một tuổi. Tuy nhiên, tôi chạy một máy chủ sử dụng ip2long để lưu trữ thông tin về mỗi lần truy cập trong cơ sở dữ liệu. Mã của tôi là '$ ip = ip2long ($ _ SERVER ['REMOTE_ADDR'])', và tôi đã tìm thấy $ ip bằng 0. Tại sao điều đó lại xảy ra? – Kayla

+0

Không bao giờ nhận xét cuối cùng của tôi. Cơ sở dữ liệu của tôi không chấp nhận số âm. ** Lưu ý, ip2long có thể trả về giá trị âm. ** – Kayla

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