Cài đặt PHP và giới thiệu kiến thức cơ bản PHP
- 01-07-2022
- Toanngo92
- 0 Comments
Mục lục
Cài đặt PHP
Yêu cầu hệ thống để chạy PHP
Người dùng phải cài đặt ba phần mềm sau trên máy cục bộ của họ để chạy các chương trình PHP:
- Máy chủ Web như Apache
- Trình thông dịch PHP
- Cơ sở dữ liệu như MySQL.
Trong 3 phần mềm này, Cơ sở dữ liệu là tùy chọn, tuy nhiên nó được khuyến nghị nếu một người đang tạo các ứng dụng thực tế và gần như PHP luôn đi kèm MySQL.
Người dùng có thể cài đặt riêng một máy chủ Web (Web Server), một Trình thông dịch PHP (PHP Interpreter) và cơ sở dữ liệu MySQL thông qua việc tải xuống từ các Trang web chính thức tương ứng. Tuy nhiên, các nhà phát triển mã nguồn mở đã tạo ra các gói thiết lập tất cả trong một như WAMP, LAMP, MAMP hoặc XAMPP để xử lý các cài đặt này một cách dễ dàng. Gói cụ thể để chọn tùy thuộc vào nền tảng mà người dùng cảm thấy thoải mái. Một gói như vậy sẽ thiết lập môi trường PHP trên máy tính Windows, Linux hoặc Mac của người dùng.
Cả ba (LAMP, WAMP và XAMPP) đều có các thành phần chung: Apache HTTP Server, MySQL và PHP.
Apache HTTP Server là phần quan trọng nhất của gói tương ứng. Nó chạy máy chủ Web mã nguồn mở trên Windows hoặc Linux. Khi máy chủ Web Apache đang chạy trên máy Windows / Linux cục bộ, nhà phát triển có thể kiểm tra các trang Web cục bộ trong trình duyệt. Điều này hiệu quả có nghĩa là nhà phát triển Web có thể không phải xuất bản và làm cho trang này hiển thị trực tuyến trên Internet chỉ để kiểm tra.
Thực ra ngoài Apache, chúng ta còn có thể sử dụng một vài http server khác như nginx, litespeed để chạy php. Tuy nhiên với góc độ học tập, tiếp cận Apache là đủ để bắt đầu học tập.
MySQL và PHP là hai thành phần khác của các gói tương ứng. Hai công nghệ này là công nghệ phổ biến nhất được sử dụng để tạo các Trang web động.
PHP là ngôn ngữ kịch bản có thể được sử dụng để truy cập dữ liệu từ cơ sở dữ liệu tốc độ cao MySQL. Mặc dù PHP, MySQL và Apache là các thành phần mã nguồn mở có thể được cài đặt riêng lẻ, nhưng chúng thường được cài đặt cùng nhau để có năng suất nhanh hơn.
LAMP
LAMP là viết tắt của Linux, Apache, MySQL và PHP. LAMP là ngăn xếp giải pháp được sử dụng phổ biến nhất cho các ứng dụng Web khác nhau dành cho Linux.
WAMP
WAMP là viết tắt của Windows, Apache, MySQL và PHP. WAMP tương đương là một biến thể LAMP dành cho hệ thống Windows và thường được cài đặt dưới dạng một gói phần mềm (Apache, MySQL và PHP). Mục đích chính của nó là tạo điều kiện thuận lợi cho việc phát triển Web và thử nghiệm nội bộ. Ngoài ra, nó cũng có thể phục vụ các Trang web trực tiếp bằng cách hoạt động như một máy chủ Web cục bộ.
WAMP có thể xử lý các trang web động, dễ sử dụng với PHP và có sẵn
trong cả hệ thống 32 bit và 64 bit.
XAMPP
XAMPP là gói giải pháp máy chủ Web đa nền tảng mã nguồn mở bao gồm Máy chủ Apache HTTP, cơ sở dữ liệu MariaDB và trình thông dịch PHP. Hơn nữa, nó là miễn phí. MariaDB là một RDMS do cộng đồng phát triển đã thay thế MySQL.
Dễ dàng chuyển từ máy chủ thử nghiệm cục bộ sang máy chủ trực tiếp vì hầu hết các triển khai Máy chủ Web đều sử dụng các thành phần tương tự như XAMPP. XAMPP giúp các nhà phát triển tạo và kiểm tra các chương trình của họ trên một máy chủ web cục bộ. Nó cho phép nhà phát triển triển khai LAMP hoặc WAMP dễ dàng và nhanh hơn trên hệ điều hành.
Bạn có thể xem bài viết hướng dẫn cài đặt xampp để cài đặt môi trường localhost và bắt đầu lập trình PHP. Nếu bạn muốn cài đặt PHP thủ công, xem hướng dẫn phía dưới.
Cài đặt PHP trên Windows 8.0 và các phiên bản cao hơn với Apache
Yêu cầu tối thiểu cho PHP tối thiểu là Windows 2008 / Vista, 32-bit hoặc 64-bit. Windows 2008 hoặc Vista không được hỗ trợ từ PHP 7.2.0 trở đi.
PHP yêu cầu Visual C Runtime (CRT). Vì nhiều ứng dụng yêu cầu nó nên rất có thể nó đã được cài đặt.
Hầu hết các phiên bản PHP gần đây hoạt động hoàn hảo với Microsoft Visual C ++ Redistributable cho Visual Studio 2019. Người dùng phải tải xuống x64 CRT cho PHP x64 Builds và x86 CRT cho PHP x86 Builds.
Nếu người dùng đang sử dụng Dịch vụ thông tin Internet (IIS) nhưng muốn thiết lập PHP, thì kỹ thuật đơn giản nhất là sử dụng Trình cài đặt nền tảng web (Web Platform Installer – WebPI) của Microsoft.
Xem thêm cách cài đặt PHP thủ công trên các môi trường khác nhau:
Kiến thức cơ bản về PHP
PHP được sử dụng phổ biến để xây dựng các trang Web động và tương tác cao nhằm mang lại trải nghiệm người dùng mạnh mẽ. Nó cũng giao tiếp với cơ sở dữ liệu và cung cấp tính linh hoạt và đơn giản hơn.
Đối với khuôn khổ này, giả định rằng XAMPP là được cài đặt với PHP 8 và MySQL trên hệ thống Windows và tất cả các mã sẽ được chạy trong môi trường này.
Cách hoạt động của PHP
Khi người dùng điều hướng đến trang .php từ trình duyệt Web của họ, trình duyệt sẽ gửi một yêu cầu HTTP đến máy chủ Web. Ví dụ: khi người dùng nhập URL của tệp là index.php trong trình duyệt và nhấn Enter, trình duyệt sẽ gửi yêu cầu đến máy chủ Web và máy chủ sẽ bắt đầu tìm kiếm tệp này trên hệ thống tệp của nó. Nếu máy chủ Web định vị tệp, nó sẽ gửi tệp này đến trình thông dịch PHP.
Nếu không, máy chủ Web sẽ tạo ra Lỗi 404 hoặc Không tìm thấy tệp.
Máy chủ Web chỉ gửi các tệp có phần mở rộng .php tới trình thông dịch. Các tệp khác có phần mở rộng như .html, .htm, v.v. sẽ không được gửi tới trình thông dịch PHP, ngay cả khi chúng chứa mã PHP bên trong.
Khi tệp được gửi đến trình thông dịch PHP, nó sẽ quét qua tất cả các thẻ PHP mở và đóng, sau đó, tiến hành xử lý mã PHP trong các thẻ này.
Trình thông dịch PHP kiểm tra bổ sung xem có kết nối cơ sở dữ liệu hay không, Nếu phát hiện ra kết nối cơ sở dữ liệu, nó sẽ gửi hoặc truy xuất dữ liệu từ cơ sở dữ liệu sau khi xác thực thích hợp.
Các tập lệnh PHP được thông dịch trên máy chủ Web và kết quả (HTML) được gửi trở lại máy khách.
Viết PHP Scripts
Người dùng có thể sử dụng một trình soạn thảo văn bản để viết mã PHP. Có rất nhiều trình chỉnh sửa tốt hiện nay cung cấp hỗ trợ ngôn ngữ mạnh mẽ và các tính năng như tự động hoàn thành, tô sáng cú pháp, nhắc code, v.v. Notepad ++, Sublime Text và Visual Studio Code, PHP Storm là một trong các lựa chọn phù hợp.
Cấu trúc cơ bản của một tập lệnh PHP chủ yếu bao gồm:
- Thẻ mở và thẻ đóng PHP
- Mã PHP kết hợp với HTML markup
- Comment bằng PHP (tùy chọn)
PHP Tags (thẻ PHP)
Một khối lệnh PHP bắt đầu bằng thẻ “<?php” và đóng bằng thẻ “?>”
Ví dụ:
<?php
echo "I'm Toanngo92";
// to do here
?>
PHP kết hợp cùng HTML
PHP được thiết kế để làm việc cùng HTML, vì vậy, người dùng có thể dễ dàng viết và nhúng PHP bên trong HTML và ngược lại.
Ví dụ:
<?php
// khai bao bien
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello</title>
</head>
<body>
<h1><?php echo 'Kết hợp php cùng thẻ h1'; ?></h1>
<?php echo '<h2>Kết hợp php cùng thẻ h1</h2>'; ?>
</body>
</html>
Trong ví dụ trên, lệnh echo của PHP được sử dụng, cho phép người dùng ghi dữ liệu đầu ra vào trình duyệt. Mỗi câu lệnh PHP kết thúc bằng dấu “;” (dấu chấm phẩy). Trong trường hợp bạn viết một câu lệnh khác mà không hoàn thành câu lệnh đầu tiên bằng dấu chấm phẩy, PHP sẽ báo lỗi cú pháp.
Thực thi PHP Script
Để chạy hoặc thực thi một chương trình PHP, người dùng phải lưu mã vào máy chủ Web trong thư mục www hoặc htdocs (tùy thuộc vào cách cài đặt được thực hiện) với phần mở rộng .php , Sau khi hoàn tất, máy chủ chắc chắn phải đã được khởi động để tiến hành thực thi.
Giả sử rằng XAMPP được cài đặt với PHP 8.0.13. XAMPP sẽ tạo một thư mục htdocs, trong đó có thể đặt các tập lệnh PHP.
Khi máy chủ khởi động và đang chạy, người dùng phải mở trình duyệt Web, điều hướng đến localhost và nhập đường dẫn của tệp, ví dụ: http: //localhost/test.php
Ví dụ, đầu ra của Đoạn mã phía trên. Tệp được lưu theo đường dẫn C:\ xampp\htdocs\test.php nhưng trong trình duyệt, tệp phải được khởi chạy dưới dạng http: //localhost/test.php
Người dùng cũng có thể chạy hoặc thực thi một tập lệnh PHP trên màn hình đen (terminal/command line) mà không có
Các thẻ HTML.
Các bước để chạy tập lệnh PHP trong command line:
Đảm bảo đường dẫn cài đặt PHP biến môi trường đã được đưa vào hệ thống và trỏ đến đúng thư mục thực thi của php (chẳng hạn như C: \php ), hoặc (C:\xampp\php) nếu bạn sử dụng xampp để có thể truy cập được từ command line.
Để thêm đường dẫn, hãy chuyển đến Control Panel. Sau đó, nhấp vào Advanced system setting và mở Environment Variables. Bấm vào System Variables và sau đó, chọn PATH và thêm đường dẫn vào như hình, sau đó bấm OK, restart lại máy để đảm bảo biến môi trường đã được load.
Để test biến môi trường đã thêm thành công chưa, có thể mở cửa sổ dòng lệnh và gõ lệnh dưới:
php -v
Khi Đường dẫn được đặt, lệnh php.exe có thể được thực thi tại command line từ bất kỳ thư mục nào, không nhất thiết phải là thư mục đã cài đặt PHP.
Ví dụ tạo file program1.php và lưu vào thư mục php_project trong ổ D và nội dung file
<?php
echo "Hello i'm Toanngo92"
?>
Chạy lệnh và kết quả trả ra:
Phục vụ (start server) với PHP
Nếu bạn không muốn cài đặt thêm các phần mềm môi trường để tiến hành phát triển localhost như xampp hoặc laragon, vertigo… Đây là giải pháp để khởi động server và phục vụ trong môi trường test bằng (lưu ý, cách này theo tài liệu chính hãng, chỉ nên sử dụng trong môi trường development, không phù hợp trong môi trường production) PHP
Đảm bảo biến môi trường PHP đã được cài đặt như phía trên. chạy lệnh dưới:
php -S localhost:8000
Môi trường sẽ phục vụ theo url là localhost hoặc 172.0.0.1 và cổng 8000:
Sau bước này, chúng ta có thể bắt đầu sử dụng trình duyệt và tiến hành tương tác với PHP với kiến trúc máy khách – máy chủ.
Comments trong PHP
Viết comments trong một chương trình là điều cần thiết trong thực tế, vì nó làm cho code dễ đọc cũng như dễ hiểu đối với các nhà phát triển. Hãy xem xét rằng một nhà phát triển Mark Xoăn làm việc cho một công ty đã viết mã đáng kể cho một số ứng dụng sản phẩm. Bây giờ, Mark Xoăn đã rời bỏ công việc của mình và code của anh ấy đã được giao cho một nhà phát triển khác là Toanngo92 để tiếp tục duy trì và phát triển thêm mã nguồn. Tuy nhiên, Peter cảm thấy khó hiểu và rườm rà khi hiểu Mark Xoăn đang làm gì trong đoạn mã vì không có tài liệu và không có bình luận. Nếu Mark Xoăn sử dụng các comment phù hợp trong mã của mình, thì Peter sẽ là một quá trình liền mạch để tiếp quản mã nguồn.
Vì vậy, các comments đóng một vai trò quan trọng trong việc lập tài liệu mã nguồn.
Trình thông dịch PHP bỏ qua việc thực thi các khối comments , do đó làm cho mã nguồn có thể đọc được mà không ảnh hưởng hiệu năng. Do đó, chú thích có thể được sử dụng ở bất kỳ đâu trong chương trình để thêm thông tin về các khối mã.
Trong PHP, // hoặc # có thể được sử dụng để tạo một comment một dòng và / * với * / để tạo một khối comment lớn với nhiều dòng.
Ví dụ:
<?php
// khai bao bien
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello</title>
</head>
<body>
<?php
// comment mot dong
/*
comment nhieu dong
comment nhieu dong
comment nhieu dong
*/
?>
</body>
</html>
Bài tập
Bài 1:
Làm tương tự bài trước, thêm sửa xóa tài khoản
Chuẩn hóa CSDL thêm, bổ sung thêm 2 bảng thủ công hoặc bằng code php:
- users: id (tự tăng), username,password,fullname, email, phone (fullname và phone cho phép null)
- students: id(tự tăng), name (varchar),birthday(date),gender(int),classid (int)
- Class: ID( tự tăng), name (tên lớp)
- Subjects: ID (tự tăng), name (tên môn)
- StudentSubject: ID(tự tăng), studentID (int), SubjectID(int)
Bảng students có khóa ngoại tham chiếu tới bảng Class thông qua classid
Bảng StudentSubject có khóa ngoại tham chiếu tới students thôg qua studentID
Bảng StudentSubject có khóa ngoại tham chiếu tới Subjects thôg qua SubjectID
Có nghĩa là students sẽ không trực tiếp lưu subjects mà sẽ thông qua bảng trung gian để lưu.
- Với tính năng thêm môn, chuyển sang trang mới cho phép thêm môn (có thể thêm tính năng sửa và xóa môn)
- Tương tự với lớp.
- Dữ liệu biểu diễn ra giao diện môn học và lớp cần được truy vấn từ bảng subjects và class CSDL xuống
Bài 2:
Một trang profile với tính năng cập nhật profile cho user trong csdl, cho phép cập nhật:
- Mật khẩu ( bao gồm nhập lại xác nhận mật khẩu)
- Phone
- Avatar (upload ảnh)
Yêu cầu: ảnh upload phải được kiểm tra đuôi (jpg,png,jpeg) , nếu không thì báo lỗi cho người dùng.
Bài 3:
Phần 1: Thực hiện kết nối cơ sở dữ liệu (4 điểm)
Viết một tệp PHP (ví dụ connect.php) có thể được thêm vào các tệp PHP khác bằng cách sử dụng hàm include hoặc require . Tệp này phải đáp ứng:
* Tạo kết nối với cơ sở dữ liệu MySQL và đăng nhập hợp lệ thông tin xác thực. Các tài nguyên kết nối nên được lưu trữ trong một biến với một Tên.
* Tạo cơ sở dữ liệu mydb nếu nó không tồn tại.
* Chọn cơ sở dữ liệu mydb.
* Tạo một bảng mydb_user nếu nó không tồn tại với các trường thông tin sau:
° USERNAME VARCHAR (100)
° PASSWORD_HASH CHAR (40)
° PHONE VARCHAR (10)
* Trường USERNAME phải được chỉ định là UNIQUE.
+ Nếu bất kỳ thao tác nào trong số này gây ra lỗi, hãy dừng thực hiện và in
thông báo lỗi
Phần 2: Viết form đăng ký (4 điểm)
Lưu ý rằng tất cả phần này nên được thực hiện trong cùng một tệp PHP. Kịch bản nên có thông bá tương ứng khác nhau tùy thuộc vào tình huống (Ví dụ người dùng đã tồn tại , trường usrname và password required)
- Viết một tệp PHP sẽ in ra một biểu mẫu có 3 trường: tên người dùng, mật khẩu và số điện thoại. Các trường này phải được gửi qua POST vào cùng một tệp.
- Tệp PHP truy vấn cơ sở dữ liệu trước khi thử chèn và nếu tên người dùng đã tồn tại, hiển thị thông báo lỗi và đăng ký trống hình thức lại.
- Tệp PHP đảm nhận việc chèn dữ liệu vào cơ sở dữ liệu có tên mydb và bảng có tên mydb_user (như được hiển thị ở trên), và sau đó xác nhận đăng ký bằng cách hiển thị tên người dùng và số điện thoại trở lại trình duyệt.
Lưu ý rằng trường MẬT KHẨU giả định rằng bạn đang lưu trữ biểu diễn chuỗi hex của hàm băm SHA-I của mật khẩu. Như đã giải thích trong các bài giảng, bạn không bao giờ nên lưu trữ mật khẩu ở dạng bản rõ. Có nhiều cách an toàn hơn để lưu trữ mật khẩu. Nếu bạn chọn sử dụng một phương pháp khác, trường PASSWORD_HASH của bảng có thể không còn là CHAR (40) và bạn nên thay đổi nó nếu thích hợp.
Hãy nhớ validate input của người dùng trước khi thực hiện truy vấn cơ sở dữ liệu.
Phần 3: Viết biểu mẫu đăng nhập (4 điểm)
Viết một tệp PHP sẽ in ra một biểu mẫu chứa 2 trường: tên người dùng và mật khẩu. Khi gửi biểu mẫu, mã phải kiểm tra với cơ sở dữ liệu để xem liệu tên người dùng - cặp mật khẩu đã chính xác. Nếu vậy, hãy hiển thị một thông báo chào mừng. Nếu không, hiển thị thông báo “Tên người dùng hoặc mật khẩu không hợp lệ” theo sau cùng một biểu mẫu đăng nhập.
Một lần nữa, chỉ nên có một tệp PHP và bạn nên chuyển hướng đến cùng một nơi sau khi gửi. Đầu ra phải là một trong ba tùy chọn:
1. Form đăng nhập:
2. Thông báo chào mừng, nếu đăng nhập thành công.
3. Thông báo không hợp lệ và biểu mẫu đăng nhập, nếu đăng nhập không thành công.
Phần 4: Viết biểu mẫu đặt lại mật khẩu (4 điểm)
Viết một biểu mẫu để cho phép người dùng đặt lại mật khẩu bằng tên người dùng và số điện thoại của họ.
Nếu tên người dùng và số điện thoại khớp với các mục nhập trong cơ sở dữ liệu, bạn nên tạo một chuỗi ngẫu nhiên làm mật khẩu (làm cho nó có độ dài hợp lý, gồm cả chữ và số), thông báo cho người dùng về chuỗi ngẫu nhiên được tạo và thực hiện các thay đổi thích hợp trong cơ sở dữ liệu. Hãy nhớ rằng cơ sở dữ liệu lưu trữ phiên bản băm của mật khẩu.
Nếu tổ hợp tên người dùng và số điện thoại không tồn tại, hãy thông báo cho người dùng về việc không đặt lại được mật khẩu và hiển thị biểu mẫu đặt lại bên dưới thông báo.
Phần 5: Viết form thay đổi mật khẩu (4 điểm)
Viết một biểu mẫu để cho phép người dùng thay đổi mật khẩu của họ. Nó phải có 3 trường: tên người dùng, mật khẩu hiện tại và mật khẩu mới.
Khi biểu mẫu được gửi, mã sẽ thực hiện các kiểm tra thích hợp đối với cơ sở dữ liệu và nếu tên người dùng và mật khẩu chính xác, hãy sửa đổi mục nhập để phản ánh sự thay đổi trong mật khẩu. Người dùng sẽ nhận được một thông báo cho biết họ đã thay đổi mật khẩu thành công. Hãy nhớ rằng cơ sở dữ liệu lưu trữ băm của mật khẩu.
Nếu kết hợp tên người dùng và mật khẩu hiện tại không chính xác,
mật khẩu không được thay đổi. Thông báo cho người dùng về việc không thay đổi được mật khẩu và hiển thị biểu mẫu thay đổi mật khẩu bên dưới thông báo.