Thứ Bảy, 3 tháng 5, 2025

10.Khái niệm Web tạo nội dung động trong PHP

Sau một hồi "cưỡi ngựa xem hoa", chúng ta tạm gọi là...chưa hiểu gì lắm! Vì sau khi "tiếp thu" những khái niệm "Toán tử", "Hàm số", "Vòng lặp"...bạn sẽ tự hỏi "Nhưng tóm lại làm sao để tạo ra những trang web? Không lẽ chỉ in mấy dòng chữ đơn giản như mấy cái ví dụ đó sao?"


Thật ra in ra mấy dòng chữ cũng đã là trang web thật 100% rồi!

"Ngày xửa ngày xưa", đôi khi "nhân loại" cũng chỉ cần thông tin vậy thôi. Nếu sang hơn thì có vài hình ảnh.


Tuy nhiên, nhu cầu ngày càng thay đổi, thực tế hiện nay, website không đơn thuần là nơi bạn chỉ đơn giản "muốn đọc cái gì đó", hay "xem một hình ảnh nào đó". Ví dụ đơn giản bạn xem tin tức, đọc báo online, mọi thông tin đều thay đổi theo thời gian. Bạn cần phải đăng nhập để vào Facebook, Instagram...Tức là bạn cần "điền thông tin" và "gửi đến một nơi nào đó" để họ xét duyệt. Khi bạn nhập số báo danh để Tra cứu điểm thi tốt nghiệp THPT, dữ liệu (điểm thi) từ một nơi nào đó sẽ xuất hiện trên màn hình máy tính của bạn. Tất cả những nội dung đó (tin tức, nhập thông tin đăng nhập, dữ liệu trả về) được gọi là Nội Dung Động.


  • Máy tính bạn đang coi DatVietLapTrinh.Com gọi là Client
  • Máy tính "ở một nơi nào đó" "đưa tin tức" cho bạn, "xét duyệt tư cách" đăng nhập của bạn, hay trả về điểm thi tốt nghiệp THPT gọi là Server.
  • Mọi thứ: tin tức, thông tin đăng nhập, bảng điểm...đều được lưu trên Server dưới dạng Database.


👉 Tóm lại: Web tạo nội dung động trong PHP là việc sử dụng ngôn ngữ lập trình phía máy chủ (server-side) để tạo ra các trang web có nội dung thay đổi linh hoạt theo thời gian, user input, hoặc dữ liệu từ cơ sở dữ liệu. PHP xử lý logic, tương tác với database, và tạo HTML ngay tại server trước khi gửi về trình duyệt (trên máy Client).



✅ Các đặc điểm chính của nội dung động PHP:


  • Xử lý Server-Side: Mã PHP được thực thi trên máy chủ (ví dụ: Apache, Nginx), giúp bảo mật và bảo trì dữ liệu.
  • Tương tác Cơ sở dữ liệu: PHP có thể kết nối với MySQL, PostgreSQL... để truy xuất, thêm, sửa, xóa nội dung trong thời gian thực.
  • Tùy biến cao: Nội dung thay đổi dựa trên các yếu tố như: thời gian thực, trình duyệt người dùng, input từ form.
  • Quản lý phiên (Session/Cookie): PHP cho phép tạo các tính năng như đăng nhập, giỏ hàng, ghi nhớ người dùng


Phần này minh họa cách PHP có thể cung cấp các nội dung động tùy theo kiểu trình duyệt, cách sinh số ngẫu nhiên hoặc user input. Nó cũng minh họa cách Client có thể được redirect.


✅ Nhận diện trình duyệt và nền tảng trong PHP

PHP tạo một số biến môi trường hữu ích, mà có thể được tìm thấy trong phpinfo.php, mà được sử dụng để thiết lập môi trường PHP.


Một trong những biến môi trường được thiết lập bởi PHP là HTTP_USER_AGENT mà nhận diện trình duyệt và hệ điều hành của người dùng.


PHP cung cấp hàm getenv() để truy cập giá trị của tất cả biến môi trường. Thông tin được chứa trong biến môi trường HTTP_USER_AGENT có thể được sử dụng để tạo nội dung động thích hợp với trình duyệt.


Dưới đây là ví dụ minh họa cách bạn có thể nhận diện một Client và hệ điều hành.


Ghi chú − Hàm preg_match() được thảo luận sau.


<html>

   <body>

   

      <?php

         function getBrowser()

         { 

            $u_agent = $_SERVER['HTTP_USER_AGENT']; 

            $bname = 'Unknown';

            $platform = 'Unknown';

            $version= "";

            

            //Trước hết, chúng ta kiểm tra nền tảng platform

            if (preg_match('/linux/i', $u_agent)) {

               $platform = 'linux';

            }

            

            elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {

               $platform = 'mac';

            }

            

            elseif (preg_match('/windows|win32/i', $u_agent)) {

               $platform = 'windows';

            }

            

            // Tiếp đó, lấy tên của User Agent

            if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))

            {

               $bname = 'Internet Explorer';

               $ub = "MSIE";

            }

            

            elseif(preg_match('/Firefox/i',$u_agent))

            {

               $bname = 'Mozilla Firefox';

               $ub = "Firefox";

            }

            

            elseif(preg_match('/Chrome/i',$u_agent))

            {

               $bname = 'Google Chrome';

               $ub = "Chrome";

            }

            

            elseif(preg_match('/Safari/i',$u_agent))

            {

               $bname = 'Apple Safari';

               $ub = "Safari";

            }

            

            elseif(preg_match('/Opera/i',$u_agent))

            {

               $bname = 'Opera';

               $ub = "Opera";

            }

            

            elseif(preg_match('/Netscape/i',$u_agent))

            {

               $bname = 'Netscape';

               $ub = "Netscape";

            }

            

            // Cuối cùng, lấy tên của version

            $known = array('Version', $ub, 'other');

            $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';

            

            if (!preg_match_all($pattern, $u_agent, $matches)) {

               // nếu không có so khớp nào, tiếp tục ...

            }

            

            

            $i = count($matches['browser']);

            

            if ($i != 1) {

               

               

               //kiểm tra xem version là trước hay sau

               if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){

                  $version= $matches['version'][0];

               }

               else {

                  $version= $matches['version'][1];

               }

            }

            else {

               $version= $matches['version'][0];

            }

            

            

            if ($version==null || $version=="") {$version="?";}

            return array(

               'userAgent' => $u_agent,

               'name'      => $bname,

               'version'   => $version,

               'platform'  => $platform,

               'pattern'   => $pattern

            );

         }

         

         //hiển thị kết quả

         $ua=getBrowser();

         $yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];

         

         print_r($yourbrowser);

      ?>

   

   </body>

</html>



Bạn chỉ cần xóa nội dung trong file test.php và copy-paste nội dung trên vào và lưu lại. Upload lên website của bạn và xem kết quả. Mỗi máy tính, mỗi trình duyệt sẽ cho các kết quả khác nhau.



✅ Hiển thị hình ảnh ngẫu nhiên trong PHP

Hàm rand() được sử dụng để tạo một số ngẫu nhiên. Hàm này có thể tạo các số bên trong một dãy đã cho. Bộ tạo số ngẫu nhiên nên được chọn lọc để ngăn chặn một mẫu chính quy của số sẽ được sinh ra. Điều này đạt được bằng cách sử dụng hàm srand(), nó xác định số chọn lọc như tham số của nó.


Ví dụ dưới đây minh họa cách bạn có thể hiển thị các ảnh khác nhau sau mỗi lần timeout trong 4 ảnh đã đưa ra. Lưu ý bạn cần thay đường dẫn, ví dụ ../php/images/logo.png theo đường dẫn trên Server của bạn.


<html>

   <body>

   

      <?php

         srand( microtime() * 1000000 );

         $num = rand( 1, 4 );

         

         switch( $num )

         {

            case 1: $hinh_anh = "../php/images/logo.png";

               break;

            

            case 2: $hinh_anh = "../php/images/php.jpg";

               break;

            

            case 3: $hinh_anh = "../php/images/logo.png";

               break;

            

            case 4: $hinh_anh = "../php/images/php.jpg";

               break;

         }

         echo "Hình ảnh ngẫu nhiên: <img src=$hinh_anh />";

      ?>

      

   </body>

</html>

Kết quả là:



✅ Sử dụng HTML Form trong PHP

Điều quan trọng nhất cần chú ý khi làm việc với HTML Form và PHP là bất kỳ phần tử form nào trong một trang HTML sẽ là tự động có sẵn cho PHP script của bạn.


Bạn thử ví dụ sau bằng việc đặt source code trong test.php.


<?php

   if( $_POST["name"] || $_POST["age"] )

   {

      if (preg_match("/[^A-Za-z'-]/",$_POST['name'] ))

      {

         die ("Biến name không hợp lệ - nên là các chữ cái");

      }

      

      echo "Chào mừng ". $_POST['name']. "<br />";

      echo "Bạn ". $_POST['age']. " tuổi.";

      

      exit();

   }

?>

<html>

   <body>

   

      <form action="<?php $_PHP_SELF ?>" method="POST">

         Họ Tên: <input type="text" name="name" />

         Tuổi: <input type="text" name="age" />

         <input type="submit" />

      </form>

      

   </body>

</html>

PHP code trên sẽ cho kết quả:



Biến mặc định trong PHP là $_PHP_SELF được sử dụng cho tên PHP script và khi bạn nhấn vào nút Submit, thì PHP script giống như vậy sẽ được gọi và trả về kết quả:


Phương thức POST được sử dụng để gửi dữ liệu người dùng tới Server script. Có hai phương thức để gửi dữ liệu tới Server script, và sẽ được thảo luận trong chương Phương thức GET & POST trong PHP.


✅ Chuyển hướng trình duyệt trong PHP

Hàm header() của PHP cung cấp các HTTP header thô cho trình duyệt và có thể được sử dụng để chuyển hướng nó qua một địa chỉ khác. Script chuyển hướng nên được đặt ở đỉnh của trang để ngăn chặn việc tải bất kì phần khác nào của trang.


Mục tiêu được xác định bởi Location: header như một tham số cho hàm header(). Sau khi gọi hàm này, hàm exit() có thể được sử dụng để ngăn chặn việc parse phần còn lại của code.


Ví dụ sau minh họa cách chuyển hướng một yêu cầu trình duyệt qua một trang web khác. Thử ví dụ bằng việc đặt source code vào test.php script.


<?php

   if( $_POST["location"] )

   {

      $location = $_POST["location"];

      header( "Location:$location" );

      

      exit();

   }

?>

<html>

   <body>

   

      <p>Chọn một trang để truy cập:</p>

      

      <form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">

         <select name="location">.

         

            <option value="https://datvietlaptrinh.com">

               datvietlaptrinh.com

            </option>

         

            <option value="http://www.google.com">

               Google Search Page

            </option>

         

         </select>

         <input type="submit" />

      </form>

      

   </body>

</html>

PHP code trên sẽ cho kết quả:




✅ Hiển thị hộp thoại "File Download" trong PHP

Đôi khi bạn muốn cung cấp một tùy chọn ở đó khi người dùng click vào một link, nó sẽ bật ra hộp thoại "File Download" tới người dùng thay vì hiển thị nội dung trực tiếp. Điều này rất đơn giản và bạn sẽ thực hiện được thông qua HTTP header.


HTTP header sẽ khác với header thực sự, ở đó chúng ta gửi Content-Type dạng như text/html\n\n. Trong trường hợp này, kiểu nội dung sẽ là application/octet-stream và tên file thực sự sẽ được nối kết cùng với nó.


Ví dụ, nếu bạn muốn tạo một Filename có thể tải về từ link đã cho, thì cú pháp sẽ như sau.


#!/usr/bin/perl


# phần HTTP Header

print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";

print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";


# Nội dung thực sự của file

open( FILE, "<FileName" );


while(read(FILE, $buffer, 100) )

{

   print("$buffer");

}







Không có nhận xét nào:

Đăng nhận xét