Mục lục

Các trường thuộc tính của ngôn ngữ SQL và cấu trúc PHP cơ bản

Xếp hạng bài viết này

Học làm web bằng php là một trong những hướng đi tích cực trong lập trình web vì đa số website hiện nay đề dựa trên ngôn ngữ php. Nhưng không phải ai cũng chọn được cho mình những phương pháp đúng trong cách học làm web bằng php. Trong bài viết này, lamweb.vn sẽ viết bài viết Hướng dẫn học làm web bằng php mới nhất 2020.

Học Làm Web Bằng Php

Hướng dẫn học làm web bằng php mới nhất 2020

Mặc dù các CMS mã gốc xây dựng giống như WordPress, Joomla,… vừa mới trở nên phát triển và giúp việc xây dựng website trở nên chuyên nghiệp hơn. Tuy nhiên vai trò của việc lập trình thuần luôn luôn rất quan trọng. Khi mã nguồn có nhiều người dùng thì cấu trúc của nó cũng đủ sức nhiều người biết đến khiến tính bảo mật web trở nên kém hơn. Đó là lý do tại sao mà rất ít các trang báo lớn hay các trang thương mại điện tử uy tín họ không sử dụng CMS. Trong post này mình sẽ chia sẻ với bạn phương pháp viết một website bằng ngôn ngữ PHP. Không những thế trước khi độc giả bài này mình khuyên bạn nên đọc 2 phần về lập trình PHP cơ bản trên website mình để hiểu về PHP trước đã nhé.

Tạo database và cấu trúc folder

Trong chỉ dẫn này mình chỉ tut xây dựng một website đơn giản. Vì thế nên CSDL mình sẽ xây dựng 3 bảng không khó khăn như sau:

Bảng người dùng: Lưu trữ thông tin đăng nhập của user

IFrame

lap trinh php can ban 1 Lamweb.vn

  • Với bảng trên mình sẽ xây dựng 4 trường lần lượt là:
    • id_user: có kiểu int, tính chất tự tăng AUTO_INC...và nó là trường khóa chính.
    • username: sẽ lưu tài khoản tải nhập của user. Mình để đại kiểu text, bạn đủ nội lực để kiểu varchar vì nó thường k chứa dấu và ký tự hạn chế.
    • pass: thì sử dụng để lưu mật khẩu và mình cũng để tương tự trường username.
    • name: trường để lưu tên của user.

Bảng category: Lưu trữ các danh mục của post

lap trinh php can ban 2 Lamweb.vn

  • Mình sẽ tạo 4 trường cho bảng này giống như sau:
    • id_cat: có kiểu int, tính chất tự tăng trưởng AUTO_INC...và nó là trường khóa chính.
    • name_cat: lưu tên của danh mục, có kiểu text.
    • slug_cat: lưu lại tên k dấu, không khoảng mẹo của mục lục để làm đường dẫn thân thiện sau này.
    • status: đánh dấu tình trạng của mục lụcdùng kiểu tinyint.

Bảng bài viết: Lưu các thông tin về một bài đăng.

lap trinh php can ban 3 Lamweb.vn

  • Các trường của bảng này giống như sau:
    • id_post: có kiểu int, thuộc tính tự tăng trưởng AUTO_INC...và nó là trường kiềm hãm chính.
    • id_cat: id của mục lục. Thật ra design như thế này chưa hoàn toàn đúng, vì một bài tải đủ nội lực ở trong nhiều mục lục, nên gắn kết của nó là N-N không những thế ở đây mình chỉ thiết kết cơ bản kiểu 1 bài tải chỉ có 1 mục lục thôi.
    • id_user: id của user tạo bài post.
    • títtiêu đề của bài bài viết
    • descriptionmô tả của bài bài viết
    • nội dungcontent của bài bài viết
    • slug_post: tương tự slug_cat.
    • statustình trạng của bài post
    • date: ngày đăng bài bài viết.
    • Mình bổ sung thêm một trường là thubnail nhé, để lưu đường kéo hình ảnh đại diện. Mình quên mất.

giống như vậy mình đang có Database rồi. Các bảng này mình thiết kế đơn giảnk theo chuẩn và mình cũng k phân tích kỹ. Nếu các bạn làm một dự án nghiêm túc mình khuyên các bạn nên bỏ thời gian để nghiên cứu kỹ về CSDL vì nó ảnh hưởng rất nhiều sau này. Và bây giờ chúng ta sẽ tiến hành thiết lập cấu trúc folder cho web.

lap trinh php can ban 41 Lamweb.vn

  • Cấu trúc này thường khác với những gì bạn đang học ở trường vì ở đây mình mong muốn mọi Request của user chỉ thông qua một file duy nhất là index.php. Điều này cũng đa dạng với hầu hết các CMS cho đến nay.
  • Mục admin tạm thời chưa chú ý, bạn cứ nhìn thấy nó giống như một web khác đi. Mục public là mục mình sẽ chứa toàn bộ các file giống như css, js, img,… nói chung là những file mà người dùng đủ nội lực truy cập trực tiếp. Mục site sẽ chứa những file giải quyết giống như các action, database, widget,…..
  • Các mũi tên màu đỏ chỉ các yêu cầu của user. Khi họ đưa ra một yêu cầu đến 1 action nào đó nó sẽ gọi đến các widget để hoàn thiện giao diện và trả lại cho file index hiển thị (đường màu xanh).

Tạo các action trong PHP

trước tiên mình cần get biến action trong file index. Bạn xây dựng file index và code giống như sau:

IFrame

biến này được get ở đâu?, chính là trên URL của browser. Bạn thử gõ vào đường dẫn: http://localhost/hocphp/?action=post. Sau đó thêm đoạn echo trong file index.php như sau:

echo $action;

kết quả bạn nhận được sẽ là một từ postcho đến nay chúng ta vừa mới biết được chúng ta cần xử lý một action post. Code đoạn sau vào file index.php.

     require($path);
  
  elseif($action == false)
     require('site/action/home.php');
 
 else
    require('site/action/404.php');
 
 ?>
IFrame

trước nhất mình sẽ tạo ra một biến $path để lưu đường dẫn đến cái file action cần giải quyết. Sau đó thì mình sẽ tra cứu nhìn thấy file đó có tồn tại hay k. Và mình sẽ sử dụng hàm require để require file đó vào. Cũng với đường dẫn http://localhost/hocphp/?action=post bạn mở file post.php trong thư mục action và phù hợp loại bất kỳ, F5 lại bạn sẽ thấy hiệu quả.

Tương tự như vậy, nếu gọi ?action=cat thì nó sẽ gọi vào file cat.php. Và nếu không có biến action thì mặc định nó sẽ require action home. Bạn đủ sức thêm một file 404.php trong action để thay thế cho cái echo nếu action tìm là k thấy.

Thông thường thì hàm isset($_GET['action']) ? $_GET['action'] : false; sẽ được sử dụng rất nhiều nên mình sẽ xây dựng một hàm và chỉ truyền key vào thôi. hiện tại bạn xây dựng file site.php trong thư mục sys ra và code đoạn sau vào, Mình tạo luôn cả việc quét biến post nhé.

      return isset($_GET[$key]) ? $_GET[$key] : false;
   
   function post_input($key)
      return isset($_POST[$key]) ? $_POST[$key] : false;
   
?>
IFrame

Cuối cùng bạn chỉnh sửa lại file index như thế này:

dẫn đến mục sys.
   require (SYSPATH.'site.php'); // require vào site.php trong thư mục sys.
 
   $action = get_input('action'); // get biến action dùng hàm get_input trong site.php
 
   $path = 'site/action/'.$action.'.php';
   if(file_exists($path))
   
      require($path);
   
   elseif($action == false)
      require('site/action/home.php');
   
   else
      require('site/action/404.php');
   
?>

Các mục ở trên mình đang chú like lại rồi đấy. kế tiếp mình sẽ mang các Widget vào các action. Công việc này cũng dễ dàng giống như việc viết theme cho WordPress vậy. ngày nay bạn liên tục xây dựng file site.php và viết các hàm giống như sau:

 function head()
 
   require('site/widget/header.php');
 

 function footer()
 
   require('site/widget/footer.php');
 

 function content($name)
 
   require('site/widget/'.$name.'-content.php');
 
IFrame

Các hàm này dễ dàng chỉ là require vào các widget tương ứng, trong hàm nội dung mình cần truyền tên content để định hình là nội dung nào. bây giờ bạn đủ nội lực mở file home.php ở file action và gõ đoạn sau vào.

Vậy là xong trang chủ. Bạn muốn design cho nó thì xây dựng từng widget lên để chỉnh sửa nhé, Nó tương tự như cắt html cho theme WordPress vậy.

Bổ sung: ngoài ra hiện giờ nếu bạn truy cập thẳng vào các file giống như thế này “http://localhost/hocphp/site/action/cat.php” sẽ sinh ra lỗi ngay. tại sao là hằng SYSPATH mình khai báo ở file index.php, nhưng khi truy cập thẳng thì nó k thông qua file này và hằng SYSPATH k được khởi tạo. Để khắc phục điều này trong file action và widget mình sẽ thêm đoạn này vào đầu.

if (!defined ('SYSPATH')) header("Location:../../index.php");

Nó sẽ đưa về trang index nếu hằng syspath chưa tồn tại. Thật ra bạn không cần phù hợp các file widget đâu. giống như vậy chúng ta có được một cấu trúc folder rồi. ngày nay mình sẽ khiến việc với CSDL để quét dữ liệu lên các action và widget.

nguồn: tuandc.com

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Please select listing to show.