2009-03-25 33 views
5

Nếu tôi nhập sau vào trình duyệt:php nhận được các biến như là chìa khóa không có giá trị giao

http://domain.com/script.php?1234 

Và script.php đã kịch bản sau đây:

$key=array_keys($_GET); 
    echo $key[0]; 

Kết quả sẽ là:

1234 

(Tôi đang cố gắng loại bỏ xấu xí? R = 1234 và nếu điều này hoạt động, nó sẽ hoàn hảo.)

Câu hỏi của tôi là, điều này có chính xác hoặc lập trình kém không?

Trả lời

4

Bạn cũng có thể làm

echo $_SERVER['QUERY_STRING'] 

Như để tạo URL thân thiện, có những cách tốt hơn để làm đi.

Xem ví dụ .: $_GET and URL Rewriting for PHP

1

Không có gì có thể chính xác, nếu nó hoạt động cho bạn thì tất cả có nghĩa là sử dụng nó. Btw vấn đề với đó là phù hợp với những gì giá trị là gì.

Khi bạn có example.com?1234&4567 Sau đó, bạn sẽ có hai giá trị không có tên khóa để cho bạn biết nội dung là gì.

Nhưng nếu bạn muốn để làm đi với xấu xí url, bạn nên xem xét mod_rewrite

Beginners guide

Another beginners guide

1

Bạn không nên sử dụng phương pháp này. Nếu bạn không muốn các biến của mình được hiển thị, bạn có thể sử dụng URL rewrite để làm cho URL trông đẹp. Ngoài ra, đừng quên khử trùng $ _GET của bạn :)

Thực ra, trong ví dụ của bạn, 1234 là biến bạn gửi qua GET, không có giá trị, nếu bạn muốn xem theo cách này.

1

Điều này là chính xác. Biến được gọi là 1234 và nó không có giá trị. Điều đó có nghĩa

GET['1234'] == ''; 

Bạn cũng có thể viết http://example.com?1234=10 Sau đó, kết quả sẽ là

GET['1234'] == '10'; 
+0

sử dụng tốt hơn http://example.com chính thức thời gian tới, xem http://tools.ietf.org/html/rfc2606#section-3. –

+0

Cảm ơn, không biết có RFC cho điều đó – soulmerge

0

Câu hỏi của tôi là, đây là chính thức đúng hay đó là lập trình nghèo?

Truy vấn tham số-không-giá trị không được làm tài liệu để hoạt động, mặc dù nó có thể sẽ tiếp tục trong thực tế.

Nếu bạn chỉ muốn lấy các chuỗi truy vấn toàn bộ mà không cần phân tích nó như là thông số, điều tốt nhất để làm là nên nói như vậy trực tiếp:

echo $_SERVER['QUERY_STRING'] 

(Dù bạn làm gì, đừng echo nó trực tiếp Mặc dù làm vệ sinh giá trị bằng ví dụ.chuyển đổi nó thành một số nguyên, hoặc, nếu bạn muốn cho phép một chuỗi tùy ý, đầu ra nó đã thoát một cách thích hợp cho JavaScript, bằng dấu ngoặc kép và dấu gạch chéo ngược.)

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