Ở bài viết trước chúng ta đã tiến hành Tạo cơ sở dữ liệu cho website , hôm nay mình sẽ tiếp tục chia sẽ đến các bạn tạo trang đăng ký thành viên và lưu dữ liệu trang đăng ký vào database website của chúng ta
Mục lục
TẠO TRANG ĐĂNG KÝ THÀNH VIÊN
1. Thiết kế giao diện trang đăng ký thành viên
Trong thư mục website mà chúng ta đã tạo ra ở Phần 1, các bạn tạo 1 file mới tên là dang-ky.php có nội dung như sau :
<?php include "includes/header.php" ?> <form action="dang-ky.php" method="post"> <table> <tr> <td colspan="2">Form dang ky</td> </tr> <tr> <td>Username :</td> <td><input type="text" id="username" name="username"></td> </tr> <tr> <td>Password :</td> <td><input type="password" id="pass" name="pass"></td> </tr> <tr> <td>Ho Ten :</td> <td><input type="text" id="name" name="name"></td> </tr> <tr> <td>Email :</td> <td><input type="text" id="email" name="email"></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="btn_submit" value="Dang ky"></td> </tr> </table> </form> <?php include "includes/footer.php" ?>
Ở trang đăng ký này chúng ta sẽ có :
- Username : dùng để nhập username
- Passsword : nhập mật khẩu
- Ho Ten : Nhập họ tên người dùng
- Email : địa chỉ thư điện tử email
- Dang ky : Ấn nút đăng ký thông tin
2. Tạo kết nối đến database website
Để tạo kết nối đến database website, chúng ta sẽ tạo 1 file đặt tên là connection.php trong thư mục includes
File này sẽ có nội dung như sau :
<?php $server_username = "root"; // thông tin đăng nhập host $server_password = ""; // mật khẩu, trong trường hợp này là trống $server_host = "localhost"; // host là localhost $database = 'website'; // database là website // Tạo kết nối đến database dùng mysqli_connect() $conn = mysqli_connect($server_host,$server_username,$server_password,$database) or die("không thể kết nối tới database"); // Thiết lập kết nối ủa chúng ta khi truy vấn là dạng UTF8 trong trường hợp dữ liệu là tiếng việt có dâu mysqli_query($conn,"SET NAMES 'UTF8'");
- $server_host :tên host chưa database, ở đây mình dùng là localhost vì chạy ở máy tính cục bộ, còn khi upload website lên các host khác thì chúng ta có thể thay đổi tham số này cho phù hợp.
- $server_username : tên đăng nhập vào database, mặc định ở local là root
- $server_password ; mật khẩu đăng nhập vào database, mặc định ở local là rỗng
3. Tiến hành làm chức năng đăng ký:
Mở file dang-ky.php chúng ta vửa tạo, bảng thêm đoạn code sau :
<?php require_once("lib/connection.php"); ?>
như vậy chúng ta sẽ có file dang-ky.php có nội dung như sau :
<?php include "includes/header.php" ?> <?php require_once("includes/connection.php"); ?> <form action="dang-ky.php" method="post"> <table> <tr> <td colspan="2">Form dang ky</td> </tr> <tr> <td>Username :</td> <td><input type="text" id="username" name="username"></td> </tr> <tr> <td>Password :</td> <td><input type="password" id="pass" name="pass"></td> </tr> <tr> <td>Ho Ten :</td> <td><input type="text" id="name" name="name"></td> </tr> <tr> <td>Email :</td> <td><input type="text" id="email" name="email"></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="btn_submit" value="Dang ky"></td> </tr> </table> </form> <?php include "includes/footer.php" ?>
Sau khi đã require_once tập tin connection.php vào, chúng ta đến giai đoạn kiểm tra thông tin đăng ký hợp lệ và lưu dữ liệu vào database, ở đây mình sẽ lấy các thông tin ở form đăng ký đã tạo ở trên bằng phương thức POST, các bạn lưu ý là :
- Trong thẻ <form> ở trên có phương thức method mình cố tình để sẵn là method=”POST” nên các bạn phải dùng từ khóa $_POST để có thể lấy được thông tin
- Trong PHP, từ khóa $_POST chỉ lấy được giá trị của thẻ input thông qua thuộc tính name, không phải thẻ id nhé các bạn
- Ngoài phương thức POST, chúng ta còn có thể sử dụng phương thức GET và sử dụng từ khóa $_GET để lấy dữ liệu
Trong trang đăng ký, chúng ta sẽ tiếp tục thêm vào đoạn code sau :
<?php if (isset($_POST["btn_submit"])) { //lấy thông tin từ các form bằng phương thức POST $username = $_POST["username"]; $password = $_POST["pass"]; $name = $_POST["name"]; $email = $_POST["email"]; //Kiểm tra điều kiện bắt buộc đối với các field không được bỏ trống if ($username == "" || $password == "" || $name == "" || $email == "") { echo "bạn vui lòng nhập đầy đủ thông tin"; }else{ //thực hiện việc lưu trữ dữ liệu vào db } } ?>
Ở đoạn code bên trên đây, mình dùng từ khóa isset để kiểm tra button có name là btn_submit đã được click hay chưa, nếu click rồi thì mới bắt đầu lấy thông tin và insert dữ liệu vào database, tranh trường hợp khi load trang, đoạn code thực thi sẽ tự động chạy. Như đã nói ở trên, mình dùng từ khóa $_POST để lấy các thông tin username, password, name, email và kiểm tra nếu 1 trong các field này rỗng thì sẽ xuất ra thông báo là “bạn vui lòng nhập đầy đủ thông tin”, ngược lại sẽ là thực thi việc lưu trữ dữ liệu như sau:
<?php if (isset($_POST["btn_submit"])) { //lấy thông tin từ các form bằng phương thức POST $username = $_POST["username"]; $password = $_POST["pass"]; $name = $_POST["name"]; $email = $_POST["email"]; //Kiểm tra điều kiện bắt buộc đối với các field không được bỏ trống if ($username == "" || $password == "" || $name == "" || $email == "") { echo "bạn vui lòng nhập đầy đủ thông tin"; }else{ $sql = "INSERT INTO users(username, password, fullname, email, createdate ) VALUES ( '$username', '$password', '$name', '$email', now())"; // thực thi câu $sql với biến conn lấy từ file connection.php mysqli_query($conn,$sql); echo "chúc mừng bạn đã đăng ký thành công"; } } ?>
Như vậy, toàn bộ đoạn code đầy đủ của trang dang-ky.php sẽ có nội dung như sau :
<?php include "includes/header.php" ?> <?php require_once("includes/connection.php"); ?> <?php if (isset($_POST["btn_submit"])) { //lấy thông tin từ các form bằng phương thức POST $username = $_POST["username"]; $password = $_POST["pass"]; $name = $_POST["name"]; $email = $_POST["email"]; //Kiểm tra điều kiện bắt buộc đối với các field không được bỏ trống if ($username == "" || $password == "" || $name == "" || $email == "") { echo "bạn vui lòng nhập đầy đủ thông tin"; }else{ $sql = "INSERT INTO users(username, password, fullname, email, createdate ) VALUES ( '$username', '$password', '$name', '$email', now())"; // thực thi câu $sql với biến conn lấy từ file connection.php mysqli_query($conn,$sql); echo "chúc mừng bạn đã đăng ký thành công"; } } ?> <form action="dang-ky.php" method="post"> <table> <tr> <td colspan="2">Form dang ky</td> </tr> <tr> <td>Username :</td> <td><input type="text" id="username" name="username"></td> </tr> <tr> <td>Password :</td> <td><input type="password" id="pass" name="pass"></td> </tr> <tr> <td>Ho Ten :</td> <td><input type="text" id="name" name="name"></td> </tr> <tr> <td>Email :</td> <td><input type="text" id="email" name="email"></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="btn_submit" value="Dang ky"></td> </tr> </table> </form> <?php include "includes/footer.php" ?>
Vậy là chúng ta đã thiết kế xong trang đăng ký cho phép người dùng nhập dữ liệu và lưu trữ vào database. Bài viết cũng khá dài nên mình tạm dừng ở đây, các bạn có thắc mắc gì thì hãy để lại comment bên dưới bài viết nhé. Trong bài tiếp theo mình sẽ nói về việc kiểm tra thông tin có trong database và tạo form đăng nhập.
Gợi ý : Bạn là người mới và muốn tìm hiểu về Bitcoin nhưng không biết bắt đầu từ đâu? Click xem ngay Hướng Dẫn Đầu Tư Bitcoin Cho Người Mới nhé!
P/S : Bài viết là công sức mình và thời gian mình bỏ ra chia sẽ đến các bạn, hy vọng các bạn học tốt hơn, nên bạn nào copy bài, vui lòng ghi rõ nguồn giúp mình nhé. Đây là nguyên tắc tôn trọng người viết bài,
Chúc các bạn học tốt !
Nguồn : tr
Mình là Hiếu.
Người sáng lập ra blog Kungfu PHP chia sẻ mọi thứ về tiền điện tử, mmo, lập trình,…
Một câu nói mà mình rất thích đó là “Cuộc đời chỉ có một, vì thế hãy làm những gì khiến bạn hạnh phúc và ở bên người khiến bạn luôn mỉm cười”.
Hy vọng nơi đây là góc cafe nhỏ để chúng ta có thể trao đổi, cùng nhau phát triển.
►Nếu bạn thấy bài viết bạn đang đọc hữu ích, hãy mời mình một ly cafe nhé : https://kungfuphp.com/donate
Undefined variable: data in C:\xampp\htdocs\website\sign_in.php on line 89
đây là lỗi j vậy anh?
nó báo ko tìm thấy biến ở dòng 89, e check lại ở dòng đó xem
Vậy thêm biến kiểu j anh (e mới học nên vẫn chưa hiểu lắm)
anh sửa lại đoạn này nhé
hình như viết nhằm. cám ơn bài viết anh rất hữu ích
Đoạn nào e nhỉ?
Sau khi đăng kí em vào phpmyadmin không thấy bất cứ dữ liệu gì được tạo trong bảng user ạ. Mong anh giải đáp 😞
Vậy là câu lệnh insert có vấn đề. E echo nó ra và check nhé
Anh xem câu lệch thêm nội dung đăng kí vào data có vấn đề ạ
bài này a viết đã lâu, có thể giờ nó có một chút thay đổi, cơ bản logic nó như vậy, e cứ làm theo rồi xử lý dần nhé
Bạn tìm dòng code như ở dưới rồi sửa lại nhé (file:dang-ky.php)
Ho ten :
Thành
Họ và tên :
Sau khi nhấn vào button đăng kí thì em bị lỗi như này ạ
LỖI 404
Localhost
Apache / 2.4,38 (Win64) OpenSSL / 1.1.1b PHP / 7.3.3
lúc đầu e chạy apache trong xampp không được vì bị trùng port em đã đổi thành 81 và chạy bình thường.
Nhưng lúc code trang connection.php thì $sever_host=”localhost” thì trang web chạy được nên e để vậy,còn sữa lại thành $sever_host=”localhost:81″ thì web load mãi không vào, không để :81 thì khi nhấn bị lỗi 404.
Mong thầy relply Cám ơn thầy ạ
server host luôn là localhost nhé, còn lỗi 404 tức là ko tìm thấy trang, e check lại xem code chuyển trang khi đăng ký có đúng đường dẫn chưa
Cho em hỏi sao khi chạy lại bị lỗi 404
404 là lỗi không tìm thấy file, e kiểm tra lại đường dẫn các file có đúng chưa nhé
Em có code trang thêm thành viên , code không sai gì cả lúc mới code xong thêm vào được .Mấy hôm sau em vào lại thì lại không thêm được , nó vẫn in ra thông báo đã thêm thành công nhưng trong database không có là sao ạ.
tôi cũng bị giống bạn, thêm trường level thì không thêm được nữa, mong admin giúp tụi em, em cảm ơn
e echo câu query ra, rồi chạy câu query đó xem thử báo lỗi gì nhé. Có thể tập bắt lỗi cho quen nhé
hàm now() làm gì thế ạ
e dùng lệnh “echo now()” xem kết quả là biết ngay nhé
Thư mục lib kia ở đâu ra, bài trước bạn đâu có tao thư mục lib
Chắc ad nhầm, thư mục chính xác là includes/connetion.php
Đoạn code hoàn thiện phía dưới có ghi là includes/connetion.php mà.
đây là seri bài viết, bạn coi lại các phần trước nhé 😀
đây là seri bài viết, bạn coi lại các phần trước nhé