2009-12-24 34 views
5

ai đó ở đây trong SO nói với tôi rằng hàm băm (#) trong url có thể được truy xuất bởi hàm parse_url php? điều này có đúng không?truy xuất hàm băm trong url bằng php?

trang web của tôi có nhiều hiệu ứng ajax và tôi muốn có thể chuyển url bằng băm đến index.php để nó có thể hiển thị thông tin dựa trên giá trị băm.

ví dụ: nếu người dùng nhấp vào và điều hướng trong trang web của tôi và anh ấy tìm thấy thứ mà anh ấy muốn chia sẻ, thì anh ấy có thể sao chép địa chỉ và gửi cho bạn bè của anh ấy và khi người này vào anh ấy thấy điều tương tự.

tôi đã thử sử dụng javascript để lưu giá trị băm trong cookie nhưng điều đó không hoạt động với firefox và quá chậm trong safari (html sẽ hiển thị trước tiên, vì vậy bạn phải làm mới trang lần thứ hai để có nội dung chính xác được hiển thị).

giải pháp nào khác được hoan nghênh

EDIT: im rất confused..if tôi sử dụng các parse_url tôi phải gõ url bản thân mình trong php để có được băm? những gì là điểm sau đó ... câu hỏi của tôi nếu liệu pal của tôi có thể nhập url với # giá trị và php có thể xử lý nó? nó có vẻ như không, tôi có đúng không?

+1

Một số mã ví dụ về những gì ý bạn là hữu ích. – Myles

+0

PHP có thể xử lý nó nếu bạn gửi chuỗi đến máy chủ. Bạn có thể làm điều này thông qua ajax, một hình thức đăng bài, vv – Sampson

+0

nhưng không thorugh webbrowser khi người dùng nhập nó phải không? – ajsie

Trả lời

5

parse_url() có thể lấy hàm băm từ chuỗi url. Lưu ý chữ ký:

mixed parse_url (string $url [, int $component = -1 ]) 

Bạn phải đã biết chuỗi. Ví dụ, từ các tài liệu:

<?php 

    $url = 'http://username:[email protected]/path?arg=value#anchor'; 
    print_r(parse_url($url)); 
    echo parse_url($url, PHP_URL_PATH); 

?> 

Đầu ra

Array 
(
    [scheme] => http 
    [host] => hostname 
    [user] => username 
    [pass] => password 
    [path] => /path 
    [query] => arg=value 
    [fragment] => anchor 
) 
/path 

Note mục dưới phím "mảnh".

+0

vì vậy nó có nghĩa là không? – ajsie

+0

Không nhất thiết. Bạn có thể truyền chuỗi đó đến máy chủ, và sau đó sử dụng parse_url. – Sampson

+1

Bạn có thể truy cập giá trị băm đó trong javascript bằng 'window.location.hash' – Sampson

11

Hàm băm trong URL thậm chí không nhận được vào máy chủ. Không có cách nào bạn có thể truy cập nó từ bất kỳ ngôn ngữ lập trình nào ở phía máy chủ.

0

người nào đó ở đây đã nói với tôi rằng mã băm (#) trong url có thể được truy xuất bởi hàm php parse_url? đây có phải là đúng không?

Có:

parse_url('http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php/1957040#1957040', PHP_URL_FRAGMENT); // 1957040 

Nhưng bạn không thể xác định băm ở phía máy chủ mà không biết địa chỉ URL đầy đủ à priori, không chắc chắn nếu HTTP_REFERER giữ băm này (nghĩ là không).

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