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();

}