Thứ Sáu, 2 tháng 10, 2026

Don dẹp file rác trên máy tính

 Để dọn dẹp file rác trên máy tính (Windows) nhanh chóng và an toàn, bạn có thể thực hiện theo các bước sau:

1.Dọn dẹp bằng công tính có sẵn Disk Cleanup:Khoảng 2-3 phút.
  1. Nhấn tổ hợp phím Windows + S, gõ Disk Cleanup và mở ứng dụng.

  2. Chọn ổ đĩa muốn dọn dẹp (thường là C:) và nhấn OK.

  3. Tích chọn các mục muốn xóa như Temporary files, Recycle Bin, Thumbnails,...

  4. Nhấn Clean up system files để quét sâu hơn các file cập nhật cũ, sau đó nhấn OK -> Delete Files.

Cách kiểm tra: Kiểm tra dung lượng còn trống của ổ C: trong This PC tăng lên sau khi hoàn tất.

2.Xóa file tạm trong thư mục Temp và Prefetch:Thao tác nhanh.
  1. Nhấn Windows + R để mở hộp thoại Run.

  2. Gõ %temp% -> Nhấn Enter. Bôi đen toàn bộ (Ctrl + A) và nhấn Shift + Delete để xóa. (Nếu có thông báo file đang chạy, chọn Skip).

  3. Nhấn tiếp Windows + R, gõ prefetch -> Nhấn Enter. Tiếp tục chọn tất cả và xóa tương tự.

Cách kiểm tra: Thư mục Temp và Prefetch sẽ trống hoặc chỉ còn vài file hệ thống đang hoạt động.

3.Bật tính năng Storage Sense tự động dọn dẹp:Tự động hóa.
  1. Vào Settings (Windows + I) -> System -> Storage.

  2. Bật tính năng Storage Sense.

  3. Nhấp vào Storage Sense để tùy chỉnh lịch tự động xóa file rác và file trong thùng rác (Recycle Bin) theo ngày/tuần/tháng.

Cách kiểm tra: Công tắc Storage Sense chuyển sang trạng thái On.

4.Xóa bộ nhớ đệm trình duyệt web:Khuyên dùng định kỳ.
  1. Mở trình duyệt bạn hay dùng (Chrome, Edge,...).

  2. Nhấn tổ hợp phím Ctrl + Shift + Delete.

  3. Chọn khoảng thời gian (VD: All time), tích chọn Cached images and files và Cookies, sau đó nhấn Clear data.

Cách kiểm tra: Trình duyệt duyệt web mượt hơn và bộ nhớ đệm quay về 0 MB.

Thứ Hai, 14 tháng 9, 2026

Mãn dữ liệu function code

$is_allowed = in_array((int)$mbrow["user_level"], array(3, 4, 5, 6));

$disabled_class = !$is_allowed ? 'disabled' : '';

$menu_items = array(

    array(

        'op'     => 'user_verified',

        'title'  => 'Profile',

        'active' => 'active'

    ),

    array(

        'op'     => 'page_create',

        'title'  => 'Page tự tạo (Giới thiệu, Giải pháp)',

        'active' => 'active'

    ),

    array(

        'op'     => 'supplier_pagemenu',

        'title'  => 'Tạo menu',

        'active' => 'select'

    ),

    array(

        'op'     => 'supplier_pagehome',

        'title'  => 'Giao diện trang chủ NCC',

        'active' => 'select'

    )

);

// 3. Xuất HTML dùng echo chuỗi (tương thích tốt với các CMS cũ như NukeViet)

echo'<ul>';

foreach ($menu_items as $item) {

    $is_active_class = ($op == $item['op']) ? $item['active'] : '';

    $link = $is_allowed ? $site_live .'modules.php?name=Your_Account&op='.$item['op'] : 'javascript:void(0);';

    echo '<li class="'.$is_active_class.' user-super '.$disabled_class.'">

        <a href="'.$link.'">

            <i class="fa fa-long-arrow-right"></i> ' . $item['title'] . '

        </a>

    </li>';

}

?>

<style type="text/css">

    /* Styling cho menu bị khóa */

    li.disabled {

        /* Làm mờ 60% */

        opacity: 0.4; 

        /* Đổi con trỏ chuột thành biểu tượng cấm */

        cursor: not-allowed; 

    }

    li.disabled a {

        /* Chặn hoàn toàn sự kiện click */

        pointer-events: none;

        /* Ép màu chữ thành xám */

        color: #999 !important;

    }

</style>

<?php

echo'</ul>';

Lỗi trang Mobi của website


Hack in COOKIE-c_ref_5027813 = https://www.google.com/

- kiểm tra lại file security (thay đổi code cũ bằng đoạn code này)

if($security_cookies==1) {    

    foreach ($_COOKIE as $var_name => $var_value) {

        // Bỏ qua kiểm tra đối với các cookie c_ref từ trình duyệt/máy tìm kiếm

        if (strpos($var_name, 'c_ref') === 0) {

            continue;

        }

        if (preg_match("/<.*?(script|object|iframe|applet|meta|style|form|img|onmouseover|body).*?>/", $var_value)) die ($htmlerr);

        if (preg_match("/^(http\:\/\/|ftp\:\/\/|\/\/|https:\/\/|php:\/\/|\/\/)/i", $var_value)) die ("Hack in COOKIE 1111 - ".$var_name." = ". $var_value);

        $security_string = "/UNION|OUTFILE|SELECT|ALTER|INSERT|DROP|FROM|WHERE|UPDATE|".$prefix."_authors|".$prefix."_users|UpdateAuthor|AddAuthor|mod_authors|modifyadmin|deladmin|deladmin2/i";

        $security_decode = base64_decode($var_value);

        if (preg_match($security_string, $security_decode)) die ("Hack base64 in COOKIE - ".$var_name." = ". $var_value."");

        if (preg_match($security_string, $var_value)) die ("Hack in COOKIE 2222 - ".$var_name." = ". $var_value."");

        $security_slash = preg_replace("/\/\*.*?\*\//", "", $var_value);

        if (preg_match($security_string, $security_slash)) die ("Hack in COOKIE 3333 - ".$var_name." = ". $var_value."");

    }

}

So Sánh Quy Tắc RewriteRule Htaccess


Hai dòng này khác nhau ở các Cờ điều hướng (Rewrite Flags) nằm trong dấu ngoặc vuông [...] ở cuối câu lệnh.

Ý nghĩa của các Cờ (Flags)

  • QSA (Query String Append): Cho phép giữ lại và nối tiếp các tham số trên URL (như ?tab=chat) vào URL đích sau khi rewrite.

  • L (Last): Dừng xử lý. Nếu quy tắc này khớp, Apache sẽ không chạy các quy tắc rewrite bên dưới nó nữa.

  • NC (No Case): Không phân biệt chữ hoa, chữ thường khi so khớp URL (ví dụ: tab-noidung, TAB-NOIDUNG, Tab-Noidung đều được chấp nhận).

Phân tích chi tiết từng dòng

Cấu trúcÝ nghĩa xử lý
Dòng 1: [QSA,L]

Nếu người dùng vào /tab-noidung/?tab=chat


→ Apache chuyển tới: modules.php?name=Your_Account&op=user_lienhe_chat&tab=chat


(Tham số ?tab=chat được giữ nguyên và truyền sang PHP)

Dòng 2: [L,NC]

Nếu người dùng vào /tab-noidung/?tab=chat


→ Apache chuyển tới: modules.php?name=Your_Account&op=user_lienhe_chat


(Tham số ?tab=chat bị xóa bỏ, PHP sẽ không nhận được $_GET['tab'])

Sự khác biệt chính & Kết luận

  1. Khả năng nhận tham số URL (?tab=chat):

    • Dòng 1 [QSA,L]: NÊN DÙNG. Giúp PHP lấy được giá trị $_GET['tab'] khi người dùng refresh hoặc truy cập trực tiếp bằng đường dẫn.

    • Dòng 2 [L,NC]: Làm mất tham số đằng sau dấu ?, khiến $_GET['tab'] trong PHP luôn bị rỗng/về mặc định.

  2. Xử lý chữ hoa / chữ thường:

    • Dòng 1: Chỉ nhận URL gõ chính xác chữ thường /tab-noidung/.

    • Dòng 2: Nhận cả /Tab-NoiDung/ nhờ cờ NC.

 

Thứ Sáu, 11 tháng 9, 2026

htmlspecialchars loại bỏ thẻ HTML

 echo htmlspecialchars($current_content, ENT_QUOTES, 'UTF-8');

**** HTML 

<div class="corp-profile-scrollbox">               
        <p>Chúng tôi là đơn vị đi đầu trong lĩnh vực cung cấp các giải pháp công nghiệp và máy móc hiện đại.<br>

Với kinh nghiệm nhiều năm trên thị trường, công ty cam kết mang đến những sản phẩm chất lượng cao và dịch vụ uy tín nhất cho khách hàng.</p>       
</div>

**** htmlspecialchars

<div class="corp-profile-scrollbox">               
      
 <p>Chúng tôi là đơn vị đi đầu trong lĩnh vực cung cấp các giải pháp công nghiệp và máy móc hiện đại.Với kinh nghiệm nhiều năm trên thị trường, công ty cam kết mang đến những sản phẩm chất lượng cao và dịch vụ uy tín nhất cho khách hàng.</p> 
</div>

Thứ Tư, 9 tháng 9, 2026

Datetime - hiện thời gian



date_default_timezone_set('Asia/Ho_Chi_Minh');

$time = date('g:i A');

$day  = date('l');

$date = date('j');

$month = date('n');

$days = array(

  'Monday'    => 'Thứ Hai',

  'Tuesday'   => 'Thứ Ba',

  'Wednesday' => 'Thứ Tư',

  'Thursday'  => 'Thứ Năm',

  'Friday'    => 'Thứ Sáu',

  'Saturday'  => 'Thứ Bảy',

  'Sunday'    => 'Chủ Nhật'

);

$ampm = date('A') == 'AM' ? 'sáng' : 'chiều';

$result = date('g:i') . ' ' . $ampm . ' , '

. $days[$day]

. ' ngày ' . $date

. ' tháng ' . $month

. ' năm ' . date('Y');

<div class="times-show">'.$result.'</div>

Thứ Ba, 8 tháng 9, 2026

JS Thời Gian Đếm Ngược


 ĐẾM NGƯỢC ( 10S )

if (empty($client) || !isset($_SESSION["client"])) {

    include("header.php");

    ?>

    <style type="text/css">

        .cart-empty-box {

            max-width: 550px;

            margin: 60px auto;

            padding: 40px 30px;

            background: #ffffff;

            border-radius: 16px;

            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);

            text-align: center;

            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;

        }

        .cart-empty-box h2 {

            color: #2c3e50;

            font-size: 22px;

            margin-bottom: 12px;

            font-weight: 700;

        }

        .cart-empty-box p {

            color: #666;

            font-size: 15px;

            margin-bottom: 24px;

        }

        .timer-wrapper {

            display: inline-block;

            background: #f0fdf4;

            border: 1px solid #bbf7d0;

            border-radius: 50px;

            padding: 8px 20px;

            margin-bottom: 25px;

        }

        .timer-count {

            color: #16a34a;

            font-weight: 800;

            font-size: 20px;

        }

        .btn-redirect {

            display: inline-block;

            padding: 12px 28px;

            background-color: #16a34a;

            color: #ffffff !important;

            border-radius: 30px;

            text-decoration: none;

            font-weight: 600;

            font-size: 14px;

            box-shadow: 0 4px 12px rgba(22, 163, 74, 0.25);

            transition: all 0.3s ease;

        }

        .btn-redirect:hover {

            background-color: #15803d;

            box-shadow: 0 6px 16px rgba(22, 163, 74, 0.35);

        }

    </style>

    <div class="cart-empty-box">

        <h2>Đơn hàng đã được xử lý hoặc giỏ hàng rỗng!</h2>

        <p>Bạn đã hoàn tất đặt hàng hoặc chưa chọn sản phẩm mới.</p>

        <div class="timer-wrapper">

            Đang quay về trang chủ sau <span id="countdown" class="timer-count">10</span> giây

        </div>

        <div>

            <a href="<?php echo $site_live; ?>" class="btn-redirect">Quay về trang chủ ngay</a>

        </div>

    </div>

    <script type="text/javascript">

        (function() {

            var timeLeft = 10;

            var timerElement = document.getElementById('countdown');

            var countdownTimer = setInterval(function() {

                timeLeft--;

                if (timerElement) {

                    timerElement.textContent = timeLeft;

                }

                if (timeLeft <= 0) {

                    clearInterval(countdownTimer);

                    window.location.href = "<?php echo $site_live; ?>";

                }

            }, 1000);

        })();

    </script>

    <?php

    include("footer.php");

    exit();

}