Php sử dụng biến nào để xác thực người dùng?

Trong suốt chương này, chúng ta sẽ luôn tạo một ứng dụng mẫu trong đó một thư mục nhất định phải được bảo vệ bằng tên người dùng và mật khẩu. Có ba cách tiếp cận để hoàn thành nhiệm vụ này

  • Sử dụng xác thực HTTP với Apache

  • Sử dụng xác thực HTTP với PHP

  • Sử dụng phiên PHP

Các tệp cần thiết cho các phần được bảo mật này của trang web sẽ được đặt trong các thư mục được bảo vệ1, được bảo vệ2 và được bảo vệ3 tương ứng

Tại sao?

Tạo xác thực người dùng đơn giản khá dễ dàng, chỉ cần cho phép người dùng cung cấp cho bạn tên người dùng và mật khẩu. Nếu khớp với các giá trị chính xác, "thông tin bí mật" sẽ được tiết lộ, như trong Liệt kê 11. 1

Liệt kê 11. 1. Tập lệnh xác thực người dùng đơn giản

User Authentication



Welcome! Here is the truth about the JFK assassination ...

Please log in!

User name: 
Password:

Hầu hết các lược đồ xác thực khác hoạt động theo cách này. Nhưng tại sao đoạn mã trước không phù hợp với hầu hết các trang web? . Hầu hết các cơ chế bảo vệ khác hoạt động cho toàn bộ thư mục

Sử dụng xác thực HTTP với Apache

Máy chủ Web Apache cung cấp quyền kiểm soát truy cập vào trang web bằng tệp có tên. htaccess. Trong tệp này, bạn có thể cung cấp thông tin về những người có thể truy cập trang web [hoặc thư mục hiện tại và các thư mục con của nó, nếu bạn đặt tệp trong thư mục con của máy chủ Web], trong số những thứ khác

Tập tin. htaccess là một tệp văn bản nơi bạn có thể cung cấp một số tùy chọn cấu hình. Trước tiên, bạn phải cung cấp tên cho khu vực hạn chế

AuthName "PHP 5 Unleashed Protected Area"

Ngoài ra, loại xác thực phải được cung cấp;

AuthType Basic

Các loại xác thực khác có sẵn, đáng chú ý nhất là xác thực thông báo, tuy nhiên, không được hỗ trợ bởi các phiên bản Internet Explorer cũ cũng như các phiên bản gần đây của Netscape

Hơn nữa, bạn phải cho Apache biết vị trí của tệp có thông tin xác thực người dùng [tên, mật khẩu]

AuthUserFile /path/to/users

Chúng tôi sẽ bao gồm tệp người dùng này sau một phút

Ngoài ra, bạn cần cho Apache biết những người dùng nào được phép trên trang web của bạn. Một khởi đầu tốt là cho phép tất cả người dùng được xác định trong tệp người dùng

require valid-user

Điều này kết luận các tập tin. htaccess; . 2 là mã hoàn chỉnh

Liệt kê 11. 2. Một. tập tin htaccess
AuthName "PHP 5 Unleashed Protected Area"
AuthType Basic
require valid-user
AuthUserFile /path/to/users

Trên Windows, các tệp chỉ bao gồm phần mở rộng [chẳng hạn như. htaccess] không được phép, vì vậy bạn không thể sử dụng. tập tin htaccess ở đó. Tuy nhiên, nếu bạn muốn phát triển trên máy Windows nhưng máy chủ Web là máy Unix/Linux thì chỉ cần tạo một tệp ht. truy cập [hoặc bất kỳ tên nào khác], sao chép nó vào máy chủ Web của bạn và đổi tên nó thành. htaccess.

Tuy nhiên, nếu bạn muốn sử dụng phiên bản Windows của Apache, hãy tìm kiếm dòng sau trong httpd của Apache. tập tin conf

AccessFileName .htaccess

Thay đổi dòng này thành lệnh này

AccessFileName ht.access

Bây giờ, tất cả các tệp có tên ht. truy cập sẽ được coi là tệp kiểm soát truy cập. Lưu ý rằng bạn phải khởi động lại máy chủ Web trước khi những thay đổi này có hiệu lực

Trong bước tiếp theo, bạn phải tạo tệp người dùng. Cái này chứa các dòng trông như thế này

________số 8

Mỗi dòng chứa tên người dùng và mật khẩu được mã hóa, được liên kết, được phân tách bằng dấu hai chấm. Nhưng đừng lo lắng, bạn không phải tự mình thực hiện việc mã hóa này. Với Apache, có một công cụ hữu ích gọi là htpasswd để tạo tệp mật khẩu này [có sẵn ngay cả trong Windows, trong thư mục con bin, trong khi trên các hệ thống Linux, nó thường nằm trong /usr/local/apache/bin hoặc bất cứ nơi nào các tệp nhị phân Apache được lưu trữ]. Cú pháp cho htpasswd là thế này

htpasswd [options] password_file username [password]

Thông tin chi tiết hơn về chương trình này có sẵn khi bạn gọi htpasswd mà không cần tham số. Nhưng hiện tại, điều quan trọng cần biết là công tắc c tạo tệp người dùng mới. Nếu bạn bỏ qua tham số này, một người dùng mới sẽ được thêm vào tệp hiện có. Công tắc m sử dụng định dạng MD5 [nhân tiện, đây là tiêu chuẩn trên nền tảng Windows]. Đây là một giao thức để thêm ba người dùng vào một tệp người dùng mới

AuthName "PHP 5 Unleashed Protected Area"
0

Bây giờ hãy đặt tất cả các tệp trong thư mục protected1, tệp người dùng vào thư mục bạn đã cung cấp trong. tập tin htaccess. Cố gắng truy cập một tài liệu trong vòng protected1; . Nếu không, bạn phải yêu cầu Apache tìm kiếm và phân tích cú pháp. tập tin htaccess. Thay thế

AuthName "PHP 5 Unleashed Protected Area"
1

với

AuthName "PHP 5 Unleashed Protected Area"
2

trong httpd. conf và khởi động lại máy chủ Web của bạn. Hình 11. 1 hiển thị lời nhắc của trình duyệt về thông tin đăng nhập của người dùng

Hình 11. 1. Người dùng được nhắc nhập tên và mật khẩu

Các. cách htaccess hoạt động tốt, nhưng có hai lỗi lớn

  • Nó bị hạn chế đối với máy chủ Web Apache

  • Thêm người dùng nhanh chóng là một nhiệm vụ tẻ nhạt hoặc htpasswd phải được gọi bằng shell_exec[] hoặc system[] hoặc mật khẩu phải được mã hóa thủ công bằng hàm crypt[] của PHP để tự động hóa quy trình

Máy chủ Web IIS của Microsoft cũng hỗ trợ xác thực cơ bản; . Trong hầu hết các trường hợp, điều này là không phù hợp;


Sử dụng xác thực HTTP

Tiêu đề của phần này hơi gây hiểu nhầm, chúng tôi cũng đã sử dụng xác thực HTTP trong phần trước, mặc dù với một chút trợ giúp từ. tập tin htaccess. Trong phần này, chúng tôi sẽ sử dụng một cơ chế tương tự, nhưng chúng tôi sẽ không dựa vào các tệp người dùng vụng về và. cài đặt htaccess. Lần này, chúng tôi sẽ kiểm tra tên người dùng và mật khẩu trong mã PHP

Để làm như vậy, bạn phải gửi một số tiêu đề HTTP đặc biệt tới trình duyệt Web

AuthName "PHP 5 Unleashed Protected Area"
3

Mã trạng thái HTTP 401 là viết tắt của "Không được ủy quyền"; . Tùy thuộc vào loại trình duyệt, điều này có thể được thực hiện vô số lần [trình duyệt Netscape] hoặc ba lần cho đến khi một trang lỗi được hiển thị [Internet Explorer]

Để các ví dụ tiếp theo hoạt động, PHP phải được chạy dưới dạng mô-đun, không phải ở chế độ CGI. Chế độ CGI sẽ được đề cập sau trong phần này

Mảng $_SERVER chứa các giá trị PHP_AUTH_USER và PHP_AUTH_PW, chứa tên người dùng và mật khẩu mà người dùng đã nhập trong cửa sổ trình duyệt phương thức. Đoạn mã sau kiểm tra xem $_SERVER["PHP_AUTH_USER"] đã được đặt chưa; . Nếu không, các mục tiêu đề được gửi để người dùng được nhắc cung cấp tên người dùng và mật khẩu, như trong Liệt kê 11. 3 [trang sau khi đăng nhập thành công được mô tả trong Hình 11. 2]

Liệt kê 11. 3. Tên người dùng và mật khẩu được in ra
AuthName "PHP 5 Unleashed Protected Area"
4
Hình 11. 2. Người dùng hiện đã đăng nhập.

Tuy nhiên, khi bạn cố gắng chạy tập lệnh này trong IIS, bạn sẽ rơi vào một vòng lặp vô tận, bạn luôn được nhắc nhập mật khẩu của mình; . Điều này bị bỏ qua bởi phần lớn các tài liệu về PHP

Liệt kê 11. 4 hiển thị một phiên bản khác của tập lệnh. Lần này, một biến máy chủ HTTP_AUTHORIZATION được kiểm tra và in, nếu có

Liệt kê 11. 4. Tập lệnh này được thiết kế riêng cho IIS của Microsoft
AuthName "PHP 5 Unleashed Protected Area"
4

Bạn lại được nhắc nhập tên người dùng và mật khẩu. Sau đó, nội dung của biến HTTP_AUTHORIZATION được hiển thị [xem Hình 11. 3]

Hình 11. 3. Giá trị của HTTP_AUTHORIZATION [trên IIS]


Để điều này hoạt động, PHP phải chạy dưới dạng mô-đun ISAPI trong IIS và bạn phải cài đặt php5isapi. dll dưới dạng bộ lọc ISAPI trong bảng điều khiển dành cho quản trị viên IIS [xem Hình 11. 4]. Ngoài ra, bạn phải tắt xác thực Windows trong bảng điều khiển quản lý IIS

Hình 11. 4. Cài đặt bộ lọc ISAPI PHP

Bạn thấy rằng giá trị của HTTP_AUTHORIZATION bắt đầu bằng Cơ bản, sau đó là một khoảng trống, sau đó là một số rác. Tuy nhiên, nếu để ý kỹ, bạn sẽ thấy các ký tự sau Basic có thể là văn bản được mã hóa Base64. Do đó, hãy thay đổi danh sách trước đó thành mã được hiển thị trong Liệt kê 11. 5 [kết quả có thể được nhìn thấy trong Hình 11. 5]

Liệt kê 11. 5. Sử dụng base64_decode[], Dữ liệu người dùng có thể đọc được
AuthName "PHP 5 Unleashed Protected Area"
4
Hình 11. 5. Bây giờ tên người dùng và mật khẩu có thể đọc được.

Như có thể thấy từ Hình 11. 5, nội dung của HTTP_AUTHORIZATION [sau Cơ bản] có cấu trúc như sau, nếu giải mã Base64

AuthName "PHP 5 Unleashed Protected Area"
7

Vì vậy, để truy xuất tên người dùng và mật khẩu cho cả Apache và IIS, đoạn mã sau [xem Liệt kê 11. 6] có ích

Liệt kê 11. 6. Tên người dùng và mật khẩu được truy xuất cho cả Apache và IIS
AuthName "PHP 5 Unleashed Protected Area"
4

Vì trình duyệt Web lưu trữ tên người dùng và mật khẩu miễn là trình duyệt chưa đóng hoàn toàn, hãy đảm bảo đóng trình duyệt sau mỗi ví dụ để bạn bắt đầu làm mới mà không cần bất kỳ người dùng nào . Nếu không, bạn có thể không nhìn thấy cửa sổ bật lên cho thông tin đăng nhập của người dùng vì chúng đã được gửi tự động.


Sử dụng tên người dùng và mật khẩu tĩnh

Sử dụng mã này làm cơ sở, xác thực HTTP có thể được triển khai khá dễ dàng. Trong Liệt kê 11. 7, khu vực bí mật được bảo vệ bằng một tổ hợp tên người dùng/mật khẩu. php5/iscool

Liệt kê 11. 7. Chỉ có một tên người dùng và mật khẩu hợp lệ
AuthName "PHP 5 Unleashed Protected Area"
4

Chỉ khi người dùng nhập đúng thông tin đăng nhập, tiêu đề HTTP trái phép 401 mới không được gửi tới máy khách. Để bảo vệ một trang web, chỉ cần đưa tệp trước đó vào tất cả các trang bạn muốn bảo mật

Ngoài ra, bạn có thể sử dụng cài đặt auto_prepend_file trong php. ban đầu

Tất nhiên, mã này có thể dễ dàng mở rộng. Chẳng hạn, bạn có thể có toàn bộ danh sách tên người dùng và mật khẩu hợp lệ. Hãy tưởng tượng một tệp chứa tên người dùng và mật khẩu [được mã hóa] ở định dạng này

AuthType Basic
0

Việc mã hóa được thực hiện bằng hàm crypt[] của PHP. Là tham số đầu tiên, mật khẩu được gửi;

Tập lệnh PHP sau [xem Liệt kê 11. 8 và Hình 11. 6] cho phép quản trị viên nhập tên người dùng và mật khẩu và ghi mục nhập được liên kết vào tệp mật khẩu, sử dụng crypt[]

Liệt kê 11. 8. Mật khẩu được mã hóa và lưu trong một tệp
AuthType Basic
1
Hình 11. 6. Người dùng có thể được thêm vào người dùng. tập tin txt.


Ví dụ này được giữ càng dễ càng tốt; . Trong một ứng dụng trong thế giới thực, bạn phải bảo mật tập lệnh này để chỉ bạn mới có quyền truy cập vào nó. Hơn nữa, không phải tất cả người dùng đều có thể đọc được tệp người dùng/mật khẩu;

Ngay sau khi một số người dùng được thêm vào, đã đến lúc tạo một tập lệnh kiểm tra xem tên người dùng và mật khẩu đã cho có tồn tại trong tệp đó hay không, nếu hệ thống biết người dùng đó

Để làm như vậy, tên người dùng và mật khẩu được cung cấp bằng xác thực HTTP được truy xuất như được hiển thị trước đó. Sau đó, tệp người dùng được phân tích cú pháp cho tổ hợp tên người dùng/mật khẩu này. Nếu thành công, người dùng được cấp quyền truy cập. Liệt kê 11. 9 hiển thị mã hoàn chỉnh, hoạt động trên cả Apache và IIS

Liệt kê 11. 9. Tên người dùng và mật khẩu được kiểm tra đối với dữ liệu trong tệp
AuthName "PHP 5 Unleashed Protected Area"
4

Một sai lầm dễ dàng. Hãy nhớ rằng fgets[] đọc dữ liệu cho đến cuối dòng, bao gồm cả "\n" ở cuối. Do đó, bạn phải xóa ký tự này bằng hàm rtrim[] của PHP.


Sử dụng tên và mật khẩu từ cơ sở dữ liệu

Bạn càng có nhiều người dùng, giải pháp dựa trên tệp này sẽ càng kém hiệu quả. Sau một thời gian, bạn sẽ muốn sử dụng cơ sở dữ liệu để lưu thông tin người dùng. Một lần nữa, hai tập lệnh được tạo. Đầu tiên, trang PHP trong Liệt kê 11. 10 cho phép bạn thêm người dùng vào cơ sở dữ liệu. Cơ sở dữ liệu được gọi là auth;

Liệt kê 11. 10. Mật khẩu được mã hóa và lưu trong cơ sở dữ liệu
AuthType Basic
1

Tập lệnh để kiểm tra các tổ hợp tên người dùng/mật khẩu đã gửi tương tự như ví dụ dựa trên tệp trước đó; . 11

Liệt kê 11. 11. Tên người dùng và mật khẩu được kiểm tra đối với dữ liệu trong cơ sở dữ liệu
AuthName "PHP 5 Unleashed Protected Area"
4

Ưu điểm chính của giải pháp này là giờ đây bạn không phải lo lắng về những thứ như khóa tệp và truy cập song song vào tệp người dùng. cơ sở dữ liệu txtthe tự động làm điều này cho bạn. Ngả lưng, thư giãn và để người dùng của bạn tự xác thực

Nếu sử dụng mô-đun Apache mod_auth_mysql, toàn bộ việc quản lý và kiểm tra tên người dùng thậm chí còn dễ dàng hơn. Mô-đun được viết bởi một trong những nhà phát triển chính của PHP, Zeev Suraski ["Ze" trong Zend]. Tính đến thời điểm viết bài, nó có sẵn tại http. //www. mysql. com/cổng thông tin/phần mềm/mục-241. html, nhưng nó chỉ hoạt động trên Unix/Linux. Tệp SỬ DỤNG chứa thông tin về cài đặt, chuẩn bị cơ sở dữ liệu MySQL và kết hợp mô-đun vào máy chủ Web Apache của bạn


Sử dụng phiên PHP

Tất cả các phương pháp được trình bày trước đây đều có hai sai sót lớn

  • Họ yêu cầu bạn có một số quyền nhất định trên máy chủ Web của mình, điều này không đúng với nhiều gói dịch vụ lưu trữ
  • Chúng không hoạt động ở chế độ CGI;

Một điều luôn hoạt động là sử dụng các phiên PHP. Thông tin về việc người dùng có được xác thực hay không được lưu trong biến phiên. Nhờ quản lý phiên của PHP, thông tin này sau đó có sẵn trên tất cả các trang của ứng dụng Web

Các chức năng xử lý phiên của PHP được đề cập rất chi tiết trong Chương 6, "Dữ liệu liên tục sử dụng phiên và cookie. "

Trước khi bạn bắt đầu, hãy kiểm tra xem tất cả thông tin liên quan đến phiên trong php. ini được thiết lập

  • Đường dẫn nơi dữ liệu phiên được ghi phải tồn tại và có thể ghi được cho PHP [session_save_path]

  • Đặt phiên. user_cookies thành 1 để PHP luôn cố gắng đặt cookie với ID phiên. Điều này làm cho ứng dụng an toàn hơn. Đừng lo lắng nếu khách hàng không chấp nhận cookie;

  • Nếu bạn cần xác thực dựa trên phiên trên tất cả các trang trên trang web của mình, hãy đặt phiên. auto_start thành 1. Nếu bạn chỉ cần xác thực này trên một số trang của mình, bạn chỉ nên bắt đầu phiên trên các trang thực sự dựa vào nó, sử dụng session_start[]

Một lần nữa, chúng tôi bắt đầu sử dụng một ví dụ đơn giản trong đó chỉ có một kết hợp tên người dùng/mật khẩu hợp lệ. Tên người dùng biến phiên sẽ chứa tên người dùng của người dùng hiện đang đăng nhập. Nếu biến này không tồn tại, người dùng chưa đăng nhập. Ngược lại, nếu biến tồn tại thì người dùng đã đăng nhập thành công

Nếu biến phiên không tồn tại, một biểu mẫu sẽ được hiển thị nơi người dùng có thể nhập tên và mật khẩu được liên kết

AuthType Basic
5

Sau khi người dùng gửi biểu mẫu HTML, tên và mật khẩu sẽ được kiểm tra. Nếu thông tin đăng nhập ổn, người dùng đã đăng nhập. Bạn không được quên rằng bạn phải đặt biến phiên để lưu trạng thái "đã đăng nhập" này. Liệt kê 11. 12 chứa mã hoàn chỉnh cho trang đăng nhập

Liệt kê 11. 12. Một trang đăng nhập đơn giản
AuthType Basic
6

Điều này hoạt động tốt;

Đây là nơi một thủ thuật tiện lợi khác xuất hiện. Khi liên kết với biểu mẫu đăng nhập, chúng tôi gửi phần sau như một phần của URL nơi người dùng đến. http. //tên máy chủ/đăng nhập. php?url=/path/to/origin. php. Tuy nhiên, nếu giá trị này không được đặt, người dùng sẽ được chuyển hướng đến chỉ mục tệp. php

Thật không may, cách tiếp cận đơn giản này tạo ra một số khó khăn, tùy thuộc vào cấu hình PHP của bạn. Nếu bạn đặt PHP không sử dụng cookie và/hoặc nếu người dùng không chấp nhận cookie cho các phiên, bạn phải thêm thông tin phiên vào URL theo cách thủ công. Bạn cần hai hàm PHP cho điều đó

  • session_name[] trả về tên của phiên PHP [ví dụ: "PHPSESSID"]

  • session_id[] trả về ID phiên [ví dụ: "18143b51ee37ac73cea81cd19ba20f2c"]

Điều này dẫn đến ba trường hợp

  • Nếu cookie phiên tồn tại, nghĩa là nếu $_COOKIE[session_name[]] được đặt, thì người dùng chỉ được chuyển hướng

  • Nếu không tồn tại cookie phiên, thông tin phiên phải được thêm vào URL. Đầu tiên, nó được kiểm tra để xác định xem URL đã chứa dấu hỏi chưa. Nếu vậy, "&". tên_phiên[]. "=". session_id[] được thêm vào [ví dụ: "&PHPSESSID=18143b51ee37ac73cea81cd19ba20f2c"]

  • Nếu không có cookie phiên nào tồn tại và URL chuyển hướng cũng không chứa dấu chấm hỏi, thì "?". tên_phiên[]. "=". session_id[] được thêm vào [ví dụ: "?PHPSESSID=18143b51ee37ac73cea81cd19ba20f2c"]

Điều này dẫn đến đoạn mã sau

AuthType Basic
7

Phần còn lại của mã là thủ tục tiêu chuẩn. Một biểu mẫu HTML chấp nhận tên người dùng và mật khẩu. Khi gửi biểu mẫu này, thông tin này sẽ được kiểm tra đối với "php5"/"iscool". Khi thành công, URL chuyển hướng được xác định. $_GET["src"] được đặt hoặc giá trị tiêu chuẩn, "chỉ mục. php", được sử dụng

Liệt kê 11. 13 là mã hoàn chỉnh cho trang đăng nhập

Liệt kê 11. 13. Một trang đăng nhập phức tạp hơn
AuthType Basic
8

Cuối cùng, bạn cần mã kiểm tra thông tin phiên. Nếu $_SESSION["username"] được đặt thì không cần thực hiện hành động nào. Tuy nhiên, nếu người dùng chưa đăng nhập, người dùng phải được chuyển hướng đến trang đăng nhập. Tên của tập lệnh hiện tại [$_SERVER["SCRIPT_NAME"]] được gửi tới tập lệnh này dưới dạng biến URL GET. Liệt kê 11. 14 là mã. Hình 11. 7 hiển thị kết quả trong trình duyệt Web

Liệt kê 11. 14. Nếu người dùng chưa đăng nhập, biểu mẫu đăng nhập sẽ được tải
AuthName "PHP 5 Unleashed Protected Area"
4
Hình 11. 7. Trang đăng nhậptrang giới thiệu được coi là một phần của URL.

Trong phần này, chúng tôi sẽ tạo một số trang đăng nhập. Nếu bạn muốn sử dụng cái này hay cái khác, bạn phải đổi tên tệp bạn muốn đăng nhập. php để nó được gọi tự động bởi đoạn mã trước

Để sử dụng nó, bạn có hai khả năng

  • Bao gồm mã trước ở đầu mỗi trang PHP mà bạn muốn bảo vệ, trước khi bất kỳ đầu ra HTTP nào được gửi [cần thiết để xử lý phiên]. Bạn có thể sử dụng bao gồm [], yêu cầu [] hoặc request_once []

  • Bao gồm mã này cho tất cả các tệp, sử dụng auto_prepend_file trong php. ban đầu. Tuy nhiên, trước khi bạn làm điều đó, hãy mở rộng mã để nó kiểm tra xem nó có được gọi trên trang có tên là đăng nhập không. phptrang đăng nhập phải được truy cập mà không cần cung cấp mật khẩu

Sử dụng tên người dùng và mật khẩu tĩnh

Sơ đồ này hiện có thể được áp dụng cho hai phương pháp quản lý mật khẩu khác. Đầu tiên, chúng tôi sử dụng tệp văn bản nơi lưu trữ tất cả tên người dùng và mật khẩu [crypt[]-được mã hóa] được liên kết. Mã nguồn để thêm người dùng vào tệp này không thay đổi so với mã từ phần trước, vì định dạng tệp không thay đổi. Tuy nhiên, điều thay đổi là mã kiểm tra thông tin này. Logic mã này sẽ được đưa vào thông tin đăng nhập. tập tin php. Nếu một mục liên quan được tìm thấy trong tệp người dùng/mật khẩu, biến phiên được đặt tương ứng. Liệt kê 11. 15 là mã hoàn chỉnh cho trang này

Liệt kê 11. 15. Thông tin đăng nhập được đọc từ một tệp
AuthType Basic
8
Sử dụng tên người dùng và mật khẩu từ cơ sở dữ liệu

Nếu bạn có sẵn MySQL, bạn có thể và bạn nên lưu trữ người dùng của mình trong cơ sở dữ liệu. Điều này làm cho việc xử lý người dùng [bao gồm thêm, sửa đổi và thậm chí xóa] dễ dàng hơn nhiều

Không chắc chắn MySQL là gì hoặc làm thế nào để sử dụng nó?

Cấu trúc cơ sở dữ liệu đã được giải thích trước đó về cơ bản, các cột user và pass chứa tên người dùng và mật khẩu liên quan, mật khẩu sau được mã hóa bằng hàm crypt[] của PHP. Đoạn mã này đọc thông tin này và so sánh nó với tên người dùng và mật khẩu được cung cấp

AuthUserFile /path/to/users
1

Phần còn lại của mã giống như trước đây. Biến phiên được đặt; . Nếu cần, tên và ID của phiên PHP hiện tại sẽ được thêm thủ công vào URL

Liệt kê 11. 16 là mã hoàn chỉnh cho trang đăng nhập do MySQL điều khiển

Liệt kê 11. 16. Thông tin đăng nhập được tải từ cơ sở dữ liệu
AuthType Basic
8

Phương pháp này hoàn toàn không bị hạn chế đối với cơ sở dữ liệu MySQL. Với rất ít thay đổi đối với mã, mã này có thể được điều chỉnh phù hợp với PostgreSQL, MSSQL hoặc bất kỳ nguồn dữ liệu nào khác. Nếu bạn đang sử dụng PEAR. lớp DB, tác vụ này sẽ bị giới hạn trong việc thay đổi một dòng trong mã nơi bạn cung cấp thông tin về dữ liệu kết nối cho cơ sở dữ liệu.

Làm cách nào để xác thực người dùng bằng PHP?

Khi người dùng đã điền tên người dùng và mật khẩu, URL chứa tập lệnh PHP sẽ được gọi lại với các biến được xác định trước PHP_AUTH_USER, PHP_AUTH_PW và AUTH_TYPE được đặt tương ứng thành tên người dùng, mật khẩu và loại xác thực. Các biến được xác định trước này được tìm thấy trong mảng $_SERVER

Có bao nhiêu biến được xác định trước mà PHP sử dụng để xác thực người dùng?

PHP sử dụng hai biến được xác định trước để xác thực người dùng. $_SERVER['PHP_AUTH_USER'] và $_SERVER['PHP_AUTH_PW']. Các biến này lần lượt lưu trữ các giá trị tên người dùng và mật khẩu.

Xác thực và ủy quyền trong PHP là gì?

Vậy, sự khác biệt giữa xác thực và ủy quyền là gì? . authentication is the process of verifying who someone is, whereas authorization is the process of verifying what specific applications, files, and data a user has access to.

Làm cách nào để kiểm tra xác thực cơ bản trong PHP?

Hàm php xác thực [] { Tiêu đề ["WWW-xác thực. lĩnh vực cơ bản = 'Kiểm tra hệ thống xác thực'"]; Tiêu đề ["HTTP/1. 0 401 Trái phép"]; echo "Bạn phải nhập ID và mật khẩu đăng nhập hợp lệ để truy cập tài nguyên này\n"; thoát; } if[. ngay lập tức[$PHP_AUTH_USER]. [$Seen Before == 1 &&

Chủ Đề