Để làm một web form PHP kết nối với MySQL bằng Notepad++ và triển khai lên hosting miễn phí Byet.host, bạn cần thực hiện các bước sau:
I. Chuẩn bị môi trường phát triển (trên máy tính của bạn)
-
Cài đặt XAMPP (hoặc WAMP/Laragon):
- XAMPP là một gói phần mềm bao gồm Apache (Web Server), MySQL (Database Server), PHP (ngôn ngữ lập trình) và phpMyAdmin (công cụ quản lý database).
- Tải XAMPP từ trang chủ Apache Friends:
https://www.apachefriends.org/index.html
- Cài đặt theo hướng dẫn. Sau khi cài đặt, khởi động Apache và MySQL từ XAMPP Control Panel.
-
Cài đặt Notepad++:
- Tải Notepad++ từ trang chủ:
https://notepad-plus-plus.org/downloads/
- Đây là trình soạn thảo mã nguồn nhẹ và mạnh mẽ, rất phù hợp cho việc viết code PHP.
- Tải Notepad++ từ trang chủ:
II. Tạo Database và Bảng trong phpMyAdmin
-
Truy cập phpMyAdmin:
- Sau khi khởi động XAMPP (Apache và MySQL), mở trình duyệt và truy cập
http://localhost/phpmyadmin
.
- Sau khi khởi động XAMPP (Apache và MySQL), mở trình duyệt và truy cập
-
Tạo Database mới:
- Trong phpMyAdmin, chọn tab Databases hoặc click vào mục New ở sidebar bên trái.
- Nhập tên cho database của bạn (ví dụ:
my_database
). - Chọn bộ mã ký tự (collation) là
utf8_general_ci
để hỗ trợ tiếng Việt. - Nhấn Create.
-
Tạo Bảng mới:
- Sau khi tạo database, click vào tên database vừa tạo ở sidebar bên trái.
- Trong tab Structure, bạn sẽ thấy phần Create new table.
- Nhập tên cho bảng của bạn (ví dụ:
users
). - Nhập số cột bạn muốn (ví dụ: 4 cột cho ID, Tên, Email, Mật khẩu).
- Nhấn Go.
- Tiếp theo, bạn sẽ định nghĩa các cột:
- id:
INT
,Length/Values: 11
,Index: PRIMARY
,A_I
(Auto Increment). - name:
VARCHAR
,Length/Values: 100
. - email:
VARCHAR
,Length/Values: 100
. - password:
VARCHAR
,Length/Values: 255
(để lưu mật khẩu đã hash).
- id:
- Sau khi định nghĩa xong, nhấn Save.
III. Viết mã PHP cho Web Form và Kết nối Database
Tạo các file PHP trong thư mục htdocs
của XAMPP (ví dụ: C:\xampp\htdocs\mywebform
).
-
File
config.php
(kết nối database): Tạo fileconfig.php
để lưu thông tin kết nối database.PHP<?php $servername = "localhost"; // Tên server, khi upload lên hosting sẽ thay đổi $username = "root"; // Tên người dùng MySQL, khi upload lên hosting sẽ thay đổi $password = ""; // Mật khẩu MySQL, khi upload lên hosting sẽ thay đổi $dbname = "my_database"; // Tên database bạn đã tạo // Tạo kết nối $conn = new mysqli($servername, $username, $password, $dbname); // Kiểm tra kết nối if ($conn->connect_error) { die("Kết nối thất bại: " . $conn->connect_error); } // echo "Kết nối thành công"; // Chỉ để kiểm tra, có thể xóa sau ?>
-
File
index.php
(form nhập liệu): Tạo fileindex.php
chứa form HTML để người dùng nhập liệu.PHP<!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Web Form PHP</title> <style> body { font-family: Arial, sans-serif; margin: 20px; } form { border: 1px solid #ccc; padding: 20px; border-radius: 5px; max-width: 400px; margin: auto; } input[type="text"], input[type="email"], input[type="password"] { width: calc(100% - 22px); padding: 10px; margin-bottom: 10px; border: 1px solid #ddd; border-radius: 4px; } input[type="submit"] { background-color: #4CAF50; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; float: right; } input[type="submit"]:hover { background-color: #45a049; } .message { margin-top: 15px; padding: 10px; border-radius: 4px;
}
.success { background-color: #d4edda; color: #155724; border-color: #c3e6cb; }
.error { background-color: #f8d7da; color: #721c24; border-color:
<label for="email">Email:</label><br>
<input type="email" id="email" name="email" required><br>
<label for="password">Mật khẩu:</label><br>
<input type="password" id="password" name="password" required><br><br>
<input type="submit" value="Đăng ký">
</form>
<?php
if (isset($_GET['status'])) {
if ($_GET['status'] == 'success') {
echo '<div class="message success">Đăng ký thành công!</div>';
} elseif ($_GET['status'] == 'error') {
echo '<div class="message error">Có lỗi xảy ra khi đăng ký. Vui lòng thử lại.</div>';
}
}
?>
</body>
</html>
```
-
File
process.php
(xử lý dữ liệu form): Tạo fileprocess.php
để nhận và lưu dữ liệu từ form vào database.PHP<?php include 'config.php'; // Kéo file kết nối database if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST['name']; $email = $_POST['email']; $password = password_hash($_POST['password'], PASSWORD_DEFAULT); // Mã hóa mật khẩu // Chuẩn bị câu lệnh SQL để tránh SQL Injection $stmt = $conn->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?)"); $stmt->bind_param("sss", $name, $email, $password); // "sss" nghĩa là 3 tham số đều là string if ($stmt->execute()) { header("Location: index.php?status=success"); // Chuyển hướng về trang chủ với thông báo thành công } else { header("Location: index.php?status=error"); // Chuyển hướng về trang chủ với thông báo lỗi } $stmt->close(); } $conn->close(); ?>
IV. Kiểm tra trên localhost
- Lưu tất cả các file (
config.php
,index.php
,process.php
) vào thư mụcmywebform
tronghtdocs
của XAMPP. - Mở trình duyệt và truy cập
http://localhost/mywebform/
. - Điền thông tin vào form và nhấn "Đăng ký".
- Kiểm tra trong phpMyAdmin (bảng
users
củamy_database
) xem dữ liệu đã được lưu chưa.
V. Triển khai lên Free Hosting Byet.host
-
Đăng ký tài khoản Byet.host:
- Truy cập
http://byethost.com/free-hosting/news
. - Điền đầy đủ thông tin và nhấn
Register
. - Kiểm tra email để kích hoạt tài khoản. Byet.host sẽ gửi email chứa thông tin đăng nhập cPanel (Control Panel) và FTP. Lưu lại các thông tin này (FTP hostname, username, password, MySQL hostname, username, password, database name).
- Truy cập
-
Tạo Database trên Byet.host:
- Đăng nhập vào cPanel của Byet.host (thông tin trong email kích hoạt).
- Tìm mục MySQL Databases hoặc phpMyAdmin.
- Tạo một database mới (nhập tên database và password nếu được yêu cầu). Ghi nhớ tên database, username và password này.
- Sau đó, truy cập phpMyAdmin của Byet.host (thường có liên kết trong cPanel) và tạo bảng
users
với cấu trúc tương tự như bạn đã làm trên localhost.
-
Chỉnh sửa file
config.php
:- Mở lại file
config.php
bằng Notepad++. - Thay đổi các thông tin kết nối database cho phù hợp với tài khoản Byet.host của bạn (tên server, username, password, tên database).
<!-- end list -->
PHP<?php $servername = "sqlxxx.byetcluster.com"; // Thay bằng MySQL Hostname của Byet.host $username = "byethost_xxxx_yourusername"; // Thay bằng MySQL Username của Byet.host $password = "your_mysql_password"; // Thay bằng MySQL Password của Byet.host $dbname = "byethost_xxxx_yourdatabase"; // Thay bằng tên Database của Byet.host // Tạo kết nối $conn = new mysqli($servername, $username, $password, $dbname); // Kiểm tra kết nối if ($conn->connect_error) { die("Kết nối thất bại: " . $conn->connect_error); } ?>
Lưu ý:
sqlxxx.byetcluster.com
sẽ là tên máy chủ MySQL cụ thể của bạn,byethost_xxxx_yourusername
vàbyethost_xxxx_yourdatabase
sẽ là tên người dùng và database của bạn do Byet.host cung cấp. - Mở lại file
-
Upload file lên Hosting (File Manager hoặc FTP):
-
Cách 1: Sử dụng File Manager (trực tiếp trên cPanel của Byet.host)
- Đăng nhập vào cPanel của Byet.host.
- Tìm mục File Manager.
- Tìm đến thư mục
htdocs
(đây là thư mục gốc của website của bạn). - Upload các file
index.php
,process.php
,config.php
vào thư mụchtdocs
. Bạn có thể nén chúng thành file.zip
rồi upload lên và giải nén trực tiếp trên File Manager để tiết kiệm thời gian. - (Nếu có file
index2.html
mặc định, bạn có thể xóa nó đi).
-
Cách 2: Sử dụng FTP Client (ví dụ FileZilla)
- Tải và cài đặt FileZilla nếu chưa có.
- Mở FileZilla, nhập thông tin FTP Hostname, Username, Password mà Byet.host cung cấp vào mục Quickconnect.
- Sau khi kết nối, bên phải (Local site) là thư mục máy tính của bạn, bên trái (Remote site) là thư mục trên host.
- Điều hướng đến thư mục
htdocs
trên host. - Kéo và thả các file
index.php
,process.php
,config.php
từ máy tính của bạn sang thư mụchtdocs
trên host.
-
-
Kiểm tra Website:
- Mở trình duyệt và truy cập vào tên miền miễn phí mà Byet.host đã cấp cho bạn (ví dụ:
yourdomain.byet.host
). - Thử điền thông tin vào form và kiểm tra xem dữ liệu có được lưu vào database trên Byet.host hay không.
- Mở trình duyệt và truy cập vào tên miền miễn phí mà Byet.host đã cấp cho bạn (ví dụ:
Lưu ý quan trọng:
- Bảo mật: Mật khẩu trong ví dụ trên được hash bằng
password_hash()
. Đây là cách tốt để lưu trữ mật khẩu. Bạn không bao giờ nên lưu mật khẩu dạng plaintext trong database. - Xử lý lỗi: Các đoạn mã trên chỉ là cơ bản. Trong thực tế, bạn cần thêm các bước kiểm tra và xử lý lỗi chi tiết hơn (ví dụ: kiểm tra trùng lặp email, validate dữ liệu đầu vào, hiển thị thông báo lỗi rõ ràng hơn cho người dùng).
- SQL Injection: Việc sử dụng Prepared Statements (
$stmt->prepare()
) là một cách tốt để ngăn chặn SQL Injection, một lỗ hổng bảo mật nghiêm trọng. - Hosting miễn phí: Byet.host là hosting miễn phí, có thể có một số giới hạn về dung lượng, băng thông, và tốc độ. Đối với các dự án lớn hoặc nghiêm túc, bạn nên xem xét các dịch vụ hosting trả phí.
- Xuất Database (Export/Import): Nếu bạn đã có dữ liệu trên localhost, bạn có thể export database thành file
.sql
từ phpMyAdmin trên localhost, sau đó import file.sql
đó vào database trên Byet.host.
Chúc bạn thành công!
0 Reviews