Tôi cần trợ giúp về cách tạo hệ thống hồ sơ người dùng. Tôi muốn nó giống như Facebook hoặc Myspace nơi nó chỉ có tên người dùng sau địa chỉ, không có dấu hỏi hoặc bất cứ điều gì, ví dụ: www.mysite.com/username
. Tôi có tất cả các đăng ký, kịch bản đăng nhập, v.v. tất cả được thực hiện, nhưng làm cách nào để chuyển đến các cấu hình bằng cách sử dụng ví dụ URL ở trên, "/ username"?Cách tạo hồ sơ người dùng bằng PHP và MySQL
Trả lời
Bạn sẽ cần phải tạo ghi đè mod lấy thư mục đầu tiên và chuyển nó làm thông số $ _GET.
Hãy thử điều này:
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)/$ index.php?user=$1
Điều đó sẽ viết lại bất cứ điều gì sau khi '/' như index.php user = thư mục
Hãy nhìn vào các rewrite engine. Một số khung công tác cũng có các lớp để thực hiện công việc này như Zend Framework có Zend_Router mà bạn có thể sử dụng. Bạn có thể tự mình sử dụng cái này, các khung công tác khác cũng có chúng, kiểm tra các tài liệu cho hương vị ưa thích của bạn.
Đây là phiên bản rút gọn của câu trả lời của tôi, trong trường hợp bất cứ ai một khoảnh khắc TLDR:
- Tạo một thư mục gọi là "người sử dụng".
Bên trong thư mục đó, tạo một file .htaccess với mod_rewrite sau:
REQUEST_URIRewriteEngine on
RewriteRule !\.(gif|jpg|png|css)$ /your_web_root/users/index.php'REQUEST_URI
Bây giờ tất cả các yêu cầu trang cho bất kỳ phần mở rộng không nằm trong ngoặc làm cho người sử dụng thư mục sẽ chuyển đến index.php
index.php lấy URL mà người dùng đưa vào và lấy bit tại kết thúc. Có rất nhiều cách để làm điều này, đây là một đơn giản trên nếu bạn biết phần cuối cùng sẽ luôn là một tên người dùng và không, có thể, tên người dùng/bức /:
$url_request = $_SERVER['REQUEST_URI']; //Returns path requested, like "https://stackoverflow.com/users/foo/"
$user_request = str_replace("https://stackoverflow.com/users/", "", $url_request); //this leaves only 'foo/'
$user_name = str_replace("/", "", $user_request); //this leaves 'foo'
Bây giờ, chỉ cần làm một truy vấn đến DB cho tên người dùng đó. Nếu nó tồn tại, index.php xuất ra hồ sơ, nếu nó không có chuyển hướng tập lệnh đến: /users/404.php
Nhưng nếu người dùng tồn tại, tất cả khách truy cập của bạn sẽ thấy là họ đặt trong
www.example.org/users/foo/
và họ truy cập trang người dùng của foo.
Không nhận các biến số để hacker khai thác và dễ dàng đặt trên blog hoặc URL của thẻ kinh doanh khác.
Thực ra, có thể loại bỏ dấu "?" và có một www.example.org/users/someusername đơn giản.
Tôi đã tìm hiểu về điều này là trên bài viết của Till Quack "How to Succeed with URLs" trên A List Apart.
Vì vậy, bạn sẽ cần phải hiểu Apache, .htaccess và mod_rewrite và phương pháp này yêu cầu bạn hiểu các rủi ro bảo mật và tài khoản cho chúng.Đây là ý tưởng cơ bản:
Bạn tạo thư mục có tên "người dùng" (bạn không cần phải làm điều này), và trong thư mục đó, bạn đặt tệp .htaccess chứa mod_rewite có hiệu quả nói "tất cả các yêu cầu tệp hoặc thư mục không thuộc loại nào đó (hình ảnh, pdf) phải được gửi tới tập lệnh này, sẽ xử lý vị trí gửi người dùng." Các mod_rewrite từ các bài báo như sau:
RewriteEngine on
RewriteRule !\.(gif|jpg|png|css)$ /your_web_root/index.php
Trong ví dụ của tôi nó sẽ là "/your_web_root/users/index.php", lý do tại sao nó đơn giản hơn là bởi vì thay vì xử lý tất cả các yêu cầu về kịch bản này của bạn trang, nó chỉ xử lý những cái trong thư mục người dùng.
Sau đó, bạn có một tập lệnh php có nội dung "okay, URL được cung cấp là gì?" và về cơ bản lấy phần sau dấu gạch chéo cuối cùng (hoặc hai, nếu có một số khác ở cuối), và SANITIZES những gì nó tìm thấy (điều đó thực sự quan trọng) và nói "tên người dùng này tồn tại trong DB của tôi?" Nếu có, nó sẽ gửi người yêu cầu đến hồ sơ của người dùng, nhưng với một URL đẹp (chúng tôi sẽ đến đó trong một giây), nếu không, nó sẽ gửi chúng đến một trang "Không tìm thấy người dùng" hoặc bất cứ điều gì bạn muốn.
Vì vậy, nếu nó tìm thấy người dùng của bạn, tập lệnh PHP sẽ xuất ra hồ sơ người dùng (Một lần nữa, hãy đảm bảo vệ sinh nó. Bất kỳ người dùng nào bạn có thể có - nếu bạn cho họ cơ hội - nhúng mã độc vào hồ sơ của riêng họ, biết các trình duyệt xem hồ sơ sẽ thực thi mã đó). Kể từ khi trang được yêu cầu là:
www.example.org/users/example_user
và kể từ khi bạn đang sử dụng mod_rewrite thay vì chuyển hướng, URL vẫn như cũ và kịch bản mà các tập tin .htaccess kéo lên chỉ bãi hồ sơ người dùng. Đối với khách truy cập, họ chỉ thấy rằng họ đặt vào url ở trên và hồ sơ người dùng xuất hiện.
Bạn cũng muốn tập lệnh PHP kiểm tra để người dùng thực hiện chuyển hướng đến trang "không tìm thấy người dùng", thay vì chỉ đơn giản xuất trang đó thành trang "user_not_found". Đây là để bất cứ ai đặt tại:
www.example.org/users/blabhaboehbohe
sẽ thấy sự thay đổi URL để
www.example.org/users/notfound/
thay vì nhìn thấy URL giữ nguyên. Nếu một hacker thấy rằng URL không thay đổi, bây giờ họ biết rằng bạn đang sử dụng một mod_rewrite và do đó phải có một kịch bản xử lý đầu ra thực tế. Nếu họ biết điều đó, họ có thể bắt đầu phát điên tìm kiếm mọi lỗ hổng bảo mật mà bạn có thể đã mở.
cổ vũ.
- 1. Django - Tạo hồ sơ người dùng khi tạo người dùng
- 2. Cách tạo hồ sơ người dùng trong Sitecore Programmeally
- 3. Lấy dữ liệu hồ sơ người dùng Facebook bằng Javascript
- 4. Mở rộng hồ sơ người dùng ở Django. Quản trị viên tạo người dùng
- 5. Proxy ứng dụng hồ sơ người dùng không thể truy xuất phân vùng từ Ứng dụng hồ sơ người dùng
- 6. Hệ thống hồ sơ người dùng trang web pandora
- 7. Chỉnh sửa Hồ sơ Người dùng w/Xác thực Mẫu
- 8. Nhận ảnh hồ sơ người dùng theo Id
- 9. MYSQL: Thiết lập bảng chi tiết người dùng - hồ sơ - thực hành tốt nhất
- 10. Django, cập nhật hồ sơ người dùng với ModelForm
- 11. Chọn phương pháp lưu trữ hồ sơ người dùng?
- 12. Tải hình ảnh hồ sơ người dùng LinkedIn
- 13. Django - Hồ sơ người dùng thuộc các loại khác nhau
- 14. Có thể truy xuất hồ sơ người dùng bằng id người dùng thành viên của họ không?
- 15. node.js-MySQL COUNT số lượng hồ sơ
- 16. Cập nhật các trường hồ sơ người dùng tùy chỉnh bằng SimpleMembershipProvider?
- 17. Nhận hồ sơ ICC hình ảnh bằng PHP hoặc Imagick
- 18. Đăng ký Django và nhiều hồ sơ
- 19. Tại sao việc tách dữ liệu người dùng và hồ sơ được coi là tốt?
- 20. MySQL: Nhận hồ sơ gần đây nhất
- 21. Nhận Hồ sơ Ứng dụng Hồ sơ theo chương trình
- 22. Đếm hồ sơ MySQL với một LIMIT
- 23. Hoạt động gần đây của người dùng - PHP MySql
- 24. Kịch bản tạo người dùng Mysql
- 25. MySQL: cách nhận hồ sơ có số> 1?
- 26. Làm thế nào để tôi có được đường dẫn hồ sơ của người dùng trong Drupal?
- 27. CHỌN rồi ngay lập tức XÓA hồ sơ mysql
- 28. MySQL TẠO NGƯỜI DÙNG với biến?
- 29. Nhận tên người dùng Windows của người dùng hiện tại bằng cách sử dụng php?
- 30. Django làm thế nào để xóa hồ sơ của người dùng và bài viết và tất cả các assocation sau khi người dùng xóa?
Điều này nghe có vẻ phức tạp? – Spyderfusion02
Thực ra .. khá đơn giản. Chỉ cần đặt nó vào một .htaccess trong thư mục gốc. –
Tôi đang cố gắng để có được quy tắc chính xác. Hãy cho tôi một giây. –