Menu

9/4/24

Cấu hình DNS server (bind9 on ubuntu)


– Domain Name System (DNS): phân giải tên miền thành địa chỉ IP và ngược lại – DNS sử dụng UDP/53 và TCP/53
+ UDP/53: port dùng để phục vụ các client để phân giải tên miền
+ TCP/53: port dùng để thực DNS zone transfer file giữa các DNS Server
– Các record cơ bản của DNS Server
+ Record A: phân giải tên miền sang IPv4
+ Record AAAA: phân giải tên miền sang IPv6
+ Record PTR: phân giải IP sang tên miền
+ Record NS: xác định DNS Server ở trong domain
+ Record MX: xác định Mail Server ở trong domain
+ Record CNAME: định nghĩa “bí danh” ứng với tên miền
+ Record SOA (Start of Authority): máy chủ có trách nhiệm với tên miền.

- cài đặt và kiểm tra bind9:

 apt update -y && apt upgrade -y

apt install bind9 bind9utils bind9-doc -y

systemctl status bind9

Trường hợp lỗi ko fix dc, cần cài lại:

- lệnh remove: apt-get remove --purge bind9

- cài lại:  sudo apt-get install --reinstall bind9

Kiểm tra các file cấu hình:

dns-server@dns-server-Virtual-Machine:~$ cd /etc/bind/
dns-server@dns-server-Virtual-Machine:/etc/bind$ ls

sudo vim /etc/bind/named.conf.options

1. chỉnh sửa file cấu hình: sudo vim /etc/bind/named.conf.options

// Define LAN network

acl LAN {192.168.1.0/24;};

options {

                // Default directory

                directory "/var/cache/bind";

                // Allow queries from localhost and LAN network

                allow-query {

                                localhost;

                                LAN;

                };

                // Use Google DNS as a forwarder

                forwarders{

                                8.8.8.8 ;

                                8.8.4.4 ;

                };

                // Allow recursive queries

                recursion yes;

};

Kiểm tra cú pháp, nếu ko báo lỗi thì OK:

 root@dns-server-Virtual-Machine:~# named-checkconf /etc/bind/named.conf.options

2. chỉnh sửa file cấu hình: root@dns-server-Virtual-Machine:~# vim  /etc/bind/named.conf.local

// Define the Forward zone

// My domain: homlab.local

// Forward file called forward.homelab.local

zone "homelab.local" IN { 

type master;

// Path of Forward file

file "/etc/bind/homelab/forward.homelab.local";

};

// Define the Reverse zone

// Reverse file called: reverse.homelab.local

zone "1.168.192.in-addr.arpa" IN {

        type master;

        file "/etc/bind/homelab/reverse.homelab.local";

};

3. tạo thư mục homelab:

root@dns-server-Virtual-Machine:~# mkdir /etc/bind/homelab

4. tạo file forward:  vim /etc/bind/homelab/forward.homelab.local

$TTL    604800
; SOA record with MNAME and RNAME updated
@       IN      SOA     homelab.local. root.homelab.local. (
                              3         ; Serial Note: increment after each change
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; Name server record 
@       IN      NS      dns-server.homelab.local.
; A record for name server
dns-server IN      A       192.168.1.249
glpi IN A 192.168.1.251
client IN  A      192.168.1.100

5. tạo file reverse: vim /etc/bind/homelab/reverse.homelab.local

$TTL    604800
; SOA record with MNAME and RNAME updated
@       IN      SOA     homelab.local. root.homelab.local. (
                              2         ; Serial Note: increment after each change
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; Name server record 
@       IN      NS      dns-server.homelab.local.
; A record for name server
dns-server IN      A       192.168.1.249
glpi IN A 192.168.1.251

; PTR record for name server
249 IN      PTR     dns-server.homelab.local
251 IN PTR glpi.homelab.local
100  IN    PTR client.homelab.local
6. sau đó restart lại bind9:
root@dns-server-Virtual-Machine:/etc/bind/homelab# systemctl restart bind9




 

9/2/24

Quản lí VM trên Hyper V (Powershell)

 -List các VMs đang chạy trên Hyper V: get-vm

-Remove 1 VMs trong HyperV: Remove-VM -Name "VM" -Force

-Tắt VM: Stop-VM -name "VM" -force


Tạo virtual host cho GLPI

 How to create a VirtualHost dedicated to GLPI?

  • Create a file on /etc/apache2/sites-available/glpi.conf
root@local# vi /etc/apache2/sites-available/glpi.conf
  • In this file, you will add the following content:
    # Start of the VirtualHost configuration for port 80
    
    <VirtualHost *:80>
        ServerName yourglpi.yourdomain.com
        # Specify the server's hostname
        DocumentRoot /var/www/html/glpi/public
        # The directory where the website's files are located
        # Start of a Directory directive for the website's directory
        <Directory /var/www/html/glpi/public>
            Require all granted
            # Allow all access to this directory
            RewriteEngine On
            # Enable the Apache rewrite engine
            # Ensure authorization headers are passed to PHP.
            # Some Apache configurations may filter them and break usage of API, CalDAV, ...
            RewriteCond %{HTTP:Authorization} ^(.+)$
            RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
            # Redirect all requests to GLPI router, unless the file exists.
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ index.php [QSA,L]
        </Directory>
        # End of the Directory directive for /var/www/glpi/public
    </VirtualHost>
    
    # End of the VirtualHost configuration for port 80
  • ServerName if you have a public URL, you can type it here
  • DocumentRoot if you will store GLPI in a different page, change it too.

After the Virtual Host file is created you should disable the default apache site configuration, enable the rewrite module and reload the new vhost file.

a2dissite 000-default.conf # Disable default apache site
a2enmod rewrite # enable the rewrite module
a2ensite glpi.conf # enable the new apache virtual host settings for your glpi instance
systemctl restart apache2

công cụ chỉnh sửa tex Vim căn bản

cài đặt vim: 

sudo apt update

sudo apt-get install vim

-trờ về đầu văn bản: 0 

- Chế độ insert : i

- thoát chế độ insert: ESC

- xóa toàn bộ text: :%d

- thoát file & ko lưu: q!

- save và thoát: :wq hoặc :x!

-search trong vim: /parten sau khi đã tìm được nhấn Enter để vào Insert (I), sau đó ESC để thoát chế độ chỉnh sửa/ tìm kiếm, rồi lưu lại :wq

9/1/24

Cài đặt LAMP stack trên Ubuntu

LAMP STACK bao gồm các thành phần:

+Linux: server

+Apache: máy chủ web

+Mariadb/Mysql : CSDL web

+PHP: ngôn ngữ xử lí web động

kích hoạt tài khoản root: 

sudo passwd root, sau đó điền pass: toor (nhập 2 lần)

-chuyển qua tài khoản root: sudo - root hoặc (sudo -i)

0. cài dịch vụ SSH vào ubuntu

sudo apt install openssh-server

sudo systemctl status ssh

cho phép dịch vụ ssh chạy qua fw: sudo ufw allow ssh

1. cài IP máy chủ ubuntu:

-tạo 1 file cấu hình IP tĩnh: sudo vim /etc/netplan/01-netcfg.yaml, sau đó nhấn ESC, rồi :wq! (:x!) để save

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0: #Edit this line according to your network interface name you just saw.
      dhcp4: no
      addresses:
        - 192.168.1.251/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
-apply : sudo netplan apply
- kiểm tra lại bằng lệnh: ip add show
2.cập nhật hệ thống: sudo apt update -y && apt upgrade -y
3. cài đặt apache webserversudo apt install -y apache2

systemctl start apache2      (Khởi động dịch vụ Apache)
systemctl stop apache2       (Dừng dịch vụ Apache)
systemctl reload apache2     (Tải lại dịch vụ Apache)
systemctl restart apache2   (Khởi động lại  dịch vụ Apache:)
systemctl enable apache2     (Thiết lập Apache khởi động cùng hệ thống)
systemctl disable apache2    (Vô hiệu hoá Apache khởi động cùng hệ thống )
systemctl status apache2     (Xem trạng thái dịch vụ Apache)

Kiểm tra apache2 version: apache2 -v

gõ ip để kiểm tra dịch vụ webserver: http://192.168.1.251

Nếu chưa dc thì allow tường lữa: sudo ufw allow 'Apache'

Dùng lệnh ls -l để xem phân quyền thư mực html, ta thấy đang quyền sở hữu là root, cần phân lại cho tài khoản/group  www-data:www-data

root@glpi-Virtual-Machine:~# cd /var/www/
root@glpi-Virtual-Machine:/var/www# ls -l
drwxr-xr-x 2 root root 4096 Sep  1 17:59 html

sudo chown www-data:www-data /var/www/html/ -R

systemctl reload apache2

4. cài mariadb database server


systemctl start mariadb      (Khởi động dịch vụ mariadb)
systemctl stop mariadb       (Dừng dịch vụ mariadb)
systemctl restart mariadb   (Khởi động lại  dịch vụ mariadb)
systemctl enable mariadb     (Thiết lập mariadb khởi động cùng hệ thống)
systemctl disable mariadb    (Vô hiệu hoá mariadb khởi động cùng hệ thống )
systemctl status mariadb     (Xem trạng thái dịch vụ mariadb)


- thiết lập cho mariadb: sudo mysql_secure_installation

kiểm tra mariadb version: mariadb --version

5. cài đặt PHP

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt install -y php8.1 libapache2-mod-php8.1
sudo apt install php-net-ldap2 php-net-ldap3 php-imagick php8.1-common php8.1-gd php8.1-imap php8.1-mysql php8.1-curl php8.1-zip php8.1-xml php8.1-mbstring php8.1-bz2 php8.1-intl php8.1-gmp php8.1-redis

kiểm tra phiên bản php: php -v

-tạo 1 file php để kiểm tra trên trình duyệt: vim /var/www/html/info.php, sau đó thêm nội dung vào save lại: <?php phpinfo(); ?>

6. cài đặt phpmyadmin để quản trị CSDL (mariadb/mysql)

sudo apt install -y phpmyadmin

sudo mysql -u root
show grants for phpmyadmin@localhost;
exit;

bật cấu hình phpmyadmin trong apache (cho phép truy cập qua web)

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo systemctl reload apache2

test lại kết quả: http://192.168.1.251/phpmyadmin




4/10/24

Lab VLAN,SOPHOS ra internet (Mode Trunk)

1.  Kết nối mô hình lab sau với cloud 1 tương tứng pnet1 (Cloud)


2. Các port tương tứng:

Port A: LAN, Port B: WAN. port C: port kết nối PC config:

3. Đặt IP cho các PC (VLAN 20, 30)


VPCS> ip 20.20.20.20/24 20.20.20.254
Checking for duplicate address...
VPCS : 20.20.20.20 255.255.255.0 gateway 20.20.20.254


VPCS>
VPCS> save
Saving startup configuration to startup.vpc
.  done

--------------------------------------------------

VPCS> ip 30.30.30.30/24 30.30.30.254
Checking for duplicate address...
VPCS : 30.30.30.30 255.255.255.0 gateway 30.30.30.254

VPCS> save
Saving startup configuration to startup.vpc
.  done

4. Tạo vlan 20,30 trên sw layer 2, chuyển các port vào vlan tương ứng

Switch(config)#no ip domain-lookup
Switch(config)#vlan 20,30

Switch(config)#int e0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
Switch(config-if)#no shut


Switch(config)#int e0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 30
Switch(config-if)#no shut





Kết nối internet cho các VM trong Lab eve




1. SSH vào eve, gõ lệnh  sau để đặt ip tĩnh card pnet1: 10.10.10.1/24. 

=> Nhấn ctrl +o để save lại, sau đó nhấn Enter, để thoát lệnh: ctrl +exit

     nano /etc/network/interfaces

2. chạy tiếp lệnh sau để khởi động lại service network

systemctl restart networking

3. mở chế độ forward: 

 nano /etc/sysctl.conf 

-> bỏ dấu # trước lệnh sau đó nhấn ctrl+o để save, enter. và thoát ctrl +exit



4. gõ lệnh sau để nat subnet 10.10.10.0/24 ra pnet0 của EVE:

 iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o pnet0 -j MASQUERADE




5. Tiến hành đặt IP cho VPC




6. Ping kiểm tra Google DNS: 8.8.8.8





4/9/24

Add sophos Fw to EVE

 Cấu hình fw sophos ver 19.5



1. upload fw lên EVE


2. Chạy lệnh fix permission trong EVE

/opt/unetlab/wrappers/unl_wrapper -a fixpermissions


3. Chỉnh RAM sophos FW lên 4GB (tối thiểu để chạy tốt)


4. Mở trình duyệt web truy cập: https://172.16.16.16:4444 (đặt user/pass: admin/Abc@123456#)






12/11/21

Sử dụng biến toàn cục (Global) kết hợp với bolean xuất message thông báo thông tin đăng nhập sai

 <?php

class AdminController
{
	

	function __construct()
	{
		$GLOBALS['login'] = 0;
		$action = getIndex('action', 'index');

		if (method_exists($this, $action))
			$reflection = new ReflectionMethod($this, $action);
		    if (!$reflection->isPublic()) {
		     echo "Phuong thuc ko phai public!";exit;
		    }
			$this->$action();
		}
		else 
		{
			echo "Chua xay dung...";
			exit;
		}
	}

	function index()
	{

			include 'View/AdminIndex.php';
	}

	function adminlogin()

	{
		
		$u= postIndex('u');
		$p= md5(postIndex('p')) ;
		$m = new UserModel();
		$data = $m->getAdmin($u, $p);
		
		if ($data==false)
		 {	

			if($GLOBALS['login']==0&&$u!=""){
				$message = "sai pass hoac chua dk tai khoan";
				echo "<script type='text/javascript'>alert('$message');</script>";

			}
			
			include 'View/adminlogin.php';
		}
		else
		{
			
			$_SESSION['admin']= $data;
			header('location:index.php?controller=AdminController');
		}
	}

	function adminlogout()
	{
		$GLOBALS['login']=1;
		unset($_SESSION['admin']);
		$this->adminlogin();	
		
	}

	

11/28/21

Quan li loai (crud_database)

 


Cấu trúc thư mục:

Css\style.css

action_add.php

action_delete.php

action_update.php

index.php

add.php

delete.php

update.php

pdo.php

File loai.sql

-- phpMyAdmin SQL Dump
-- version 4.8.3
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Nov 28, 2021 at 04:41 AM
-- Server version: 5.7.23
-- PHP Version: 7.2.10

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `bookstorevn`
--

-- --------------------------------------------------------

--
-- Table structure for table `loai`
--

DROP TABLE IF EXISTS `loai`;
CREATE TABLE IF NOT EXISTS `loai` (
  `maloai` varchar(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `tenloai` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`maloai`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `loai`
--

INSERT INTO `loai` (`maloai`, `tenloai`) VALUES
('gk', 'GK'),
('kt', 'Kinh Tế'),
('nn', 'Ngoại Ngữ'),
('pl', 'Pháp Luật'),
('SK', 'SUC KHOE'),
('td', 'Từ Điển'),
('test', 'Loai Moi'),
('th', 'tin hocc'),
('to', 'toan hocs'),
('tt', 'The Thao Du Lich'),
('vh', 'Văn Học'),
('vhxh', 'Van Hoa xa Hoi');
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

File style.css
		body {
			font:30px arial;
			margin: 30px;
			padding: 10px;
			background: #959393;
		}
		#wrapper{ 
			border: 3px solid black;
			background-color:#9e9e9e;
			height: 500px;
		
		}
		#header{
			background-color:#66917a;
			text-align:center;
			padding: 8px;
			font-size:30px;
		}
		#header h1{
			text-transform: uppercase;
			font-size:30px;
			font-style:italic;
		}
		#menu{
			background-color: blue;
		}
		#menu ul{
			padding: 20px;
			margin: 0px;
			font-weight: bold;
			text-transform: uppercase;

		}
		#menu ul li{
		display: inline-block;
		
		}
		#menu ul li a{
			color: white;
			font-size: 20px;
			padding:8px 10px;
			list-style:none;
			text-decoration: none;
			display: block; 
			transition: all 2s ease;
		}
		#menu ul li a:hover{
			background-color: #4c625678;
		}
		#main-content{

			border: 1px solid yellow;
			min-height: 100px;
			padding: 30px;
			background-color: #efefef;
		}
		#main-content h2{
			text-transform: capitalize;
			padding: 10px;
			font-size: 100px;
		}
		#main-content table{
	
			width: 80%;
    		border: 1px solid black;
    		height: auto;
			
		}
		#main-content th{
			border: 1px solid black;
			background-color: #788f8f;
			text-transform: uppercase;
		}
		#main-content td{
			border: 1px solid black;    
			text-align: center;
			background-color: #e7e7e2;
		}

		#main-content td a{
			font-size: 20px;
			color: white;
			padding: 5px;  
			text-align: center;
			background-color: #e17e21;
			text-transform: uppercase;
			margin: 5px;

		}
		#main-content td a:nth-child(2){
			background-color: red;
		}
		#main-content td a:nth-child(3){
			background-color: #607d8b;
		}

		#main-content .post-form {
			width: 40%;	   
			margin: 0 auto; 
			padding: 30px;
			background-color: #abafafd4;
			border-radius: 10px;
		}
		#main-content .post-form .form-group{
			margin:  0 0 15px;
		}
		#main-content .post-form .form-group label{
				font-size: 30px;
			    display:block;
    			margin: 0 0 12px;
		}
		#main-content .post-form .form-group input{
			font-size:  30px;
		}
		#main-content .post-form .form-group .select{
			font-size: 30px;
		}
		#main-content .post-form .submit{

				    background-color: black;
				    color: white;
				    font-size: 25px;
				    margin-left: 30%;
				    border-radius: 9px;
				    padding: 10px;
		}
File action_add.php

<?php
 
    $o = new PDO('mysql:host=localhost;dbname=bookstorevn','root','');
    $o->query('set names utf8');
    $sql='insert into loai(maloai, tenloai) value(?,?)';
    $stm=$o->prepare($sql);
    $arr=[$_POST['maloai'], $_POST['tenloai']];
    $stm->execute($arr);
    header('location:index.php');
?>

File action_delete.php

<?php
    $o = new PDO('mysql:host=localhost;dbname=bookstorevn','root','');
    $o->query('set names utf8');
    $sql='delete from loai where maloai=?';
    $stm=$o->prepare($sql);
    $arr=[$_POST['maloai']];
    $stm->execute($arr);
    header('location:index.php');
?>

File action_update.php

<?php
    $o = new PDO('mysql:host=localhost;dbname=bookstorevn','root','');
    $o->query('set names utf8');
    $sql='update loai set tenloai=? where maloai=?';
    $stm=$o->prepare($sql);
    $arr=[$_POST['tenloai'], $_POST['maloai']];
    $stm->execute($arr);
    header('location:index.php');
?>

File add.php

<!DOCTYPE html>
<html>
<head>
<title>Add</title>
	<link rel="stylesheet" type="text/css" href="css/style.css">
	<?php include "pdo.php" ; ?>
</head>
<body>
		<div id="header">
			<h1>CRUD</h1>

		</div>
        <div id="menu">
            <ul>
                <li>
                    <a href="index.php">Home</a>
                </li>
                <li>
                    <a href="add.php">Add</a>
                </li>
                <li>
                    <a href="update.php">Update</a>
                </li>
                <li>
                    <a href="delete.php">Delete</a>
                </li>
            </ul>
        </div>
		<div id="main-content">
				<h2>add new record</h2>
		<form class="post-form" method="post" action="action_add.php">
				<div class="form-group">
					<label>Ma Loai</label>
					<input type="text" name="maloai">
				</div>
				<div class="form-group">
					<label>Ten Loai </label>
					<input type="text" name="tenloai" >
				</div>
				
				<div class="form-group">
					<label>Ten Loai Trong DB</label>
					<select class="select">
						<option selected disabled>xem loai</option>
						<option value="1">A</option>
						            <?php 

			            foreach ($data as $key=>$value){
			                 ?>                 
			                                
			                 <option value=""> <?php echo $value["tenloai"]; ?></option>
			                       
			                    
			                 <?php

			            }
			            ?>
					</select>
				</div>
				<input class="submit" type="submit" value="Them" />

		</form>

	</div>

</body>
</html>

File delete.php

<!DOCTYPE html>
<html>
<head>
<title>delete</title>
	<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
		<div id="header">
			<h1>CRUD</h1>

		</div>
        <div id="menu">
            <ul>
                <li>
                    <a href="index.php">Home</a>
                </li>
                <li>
                    <a href="add.php">Add</a>
                </li>
                <li>
                    <a href="update.php">Update</a>
                </li>
                <li>
                    <a href="delete.php">Delete</a>
                </li>
            </ul>
        </div>
		<div id="main-content">
				<h2>delete record</h2>
		<form class="post-form" method="post" action="action_delete.php">
				<div class="form-group">
					<label>Id</label>
					<input type="text" name="maloai">
				</div>
				<input class="submit" type="submit" value="delete">
		</form>

	</div>

</body>
</html>

File index.php

<!DOCTYPE html>
<html>
<head>
	<title>Page Title</title>
	<link rel="stylesheet"  href="css/style.css">
    <?php include "pdo.php"; ?>
</head>
<body>
		<div id="header">
			<h1>CRUD</h1>

		</div>
        <div id="menu">
            <ul>
                <li>
                    <a href="index.php">Home</a>
                </li>
                <li>
                    <a href="add.php">Add</a>
                </li>
                <li>
                    <a href="update.php">Update</a>
                </li>
                <li>
                    <a href="delete.php">Delete</a>
                </li>
            </ul>
        </div>
		<div id="main-content">
				<h2>all record</h2>
				 <table cellpadding="7px">
        <thead>
        <th>stt</th>
        <th>ma loai</th>
        <th>ten loai</th>
        <th>Action</th>
        </thead>
        <tbody>
     
            <?php 

            foreach ($data as $key=>$value){
                 ?>                 
                    <tr>
                        <td><?php echo $key+1 ?></td>
                        <td><?php echo $value["maloai"]; ?></td>
                        <td><?php echo $value["tenloai"]; ?></td>
                        <td> 
                            <a href="add.php?maloai=<?php echo $value['maloai']; ?>">
                            Add
                            </a>
                            <a href="delete.php?maloai=<?php echo $value['maloai']; ?>">
                            Delete
                            </a>
                             <a href="update.php?maloai=<?php echo $value['maloai']; ?>">
                            Edit
                            </a>
                        </td>
                    </tr>
                 <?php

            }
            ?>
            
        </tbody>
    </table>
		</div>



</body>
</html>

File pdo.php

    <?php
    $o = new PDO('mysql:host=localhost;dbname=bookstorevn','root','');
    $o->query('set names utf8');
    $sql='select * from loai';
    $stm=$o->query($sql);
    $data=$stm->fetchAll(PDO::FETCH_ASSOC);
    ?>
File update
<!DOCTYPE html>
<html>
<head>
<title>update</title>
	<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
		<div id="header">
			<h1>CRUD</h1>

		</div>
        <div id="menu">
            <ul>
                <li>
                    <a href="index.php">Home</a>
                </li>
                <li>
                    <a href="add.php">Add</a>
                </li>
                <li>
                    <a href="update.php">Update</a>
                </li>
                <li>
                    <a href="delete.php">Delete</a>
                </li>
            </ul>
        </div>
		<div id="main-content">
				<h2>edit record</h2>
		<form class="post-form" method="post" action="action_update.php">
				<div class="form-group">
					<label>Ma Loai</label>
					<input type="text" name="maloai">
				</div>
				
				<div class="form-group">
					<label>Ten Loai </label>
					<input type="text" name="tenloai" >
				</div>
				
				<input class="submit" type="submit" value="Save" />

		</form>

	</div>

</body>
</html>