PHP căn bản – Tân Hồng IT https://tanhongit.com Kiến thức tin học, máy tính, lập trình, thủ thuật tiện ích Fri, 06 Mar 2020 08:30:36 +0000 en-US hourly 1 https://wordpress.org/?v=5.3.2 https://tanhongit.com/wp-content/uploads/2020/02/favicon-tanhongit.png PHP căn bản – Tân Hồng IT https://tanhongit.com 32 32 Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/ https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/#respond Thu, 27 Feb 2020 22:59:57 +0000 https://tanhongit.com/?p=2452 Các bạn đang muốn học lập trình Website? các bạn chưa biết nên bắt đầu từ đâu và các bạn chưa biết mình nên theo lập trình web phía Back-end hay Full-Stack như thế nào? Bài viết này sẽ cho các bạn  biết về lộ trình học lập trình website từ cơ bản đến nâng […]

The post Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp appeared first on Tân Hồng IT.

]]>
Các bạn đang muốn học lập trình Website? các bạn chưa biết nên bắt đầu từ đâu và các bạn chưa biết mình nên theo lập trình web phía Back-end hay Full-Stack như thế nào? Bài viết này sẽ cho các bạn  biết về lộ trình học lập trình website từ cơ bản đến nâng cao với ngôn ngữ chủ đạo là PHP.

lo trinh hoc php
Lộ trình học PHP từ căn bản đến nâng cao

Tìm hiểu sơ qua về ngôn ngữ PHP

PHP là ngôn ngữ kịch bản phổ biến nhất trên website hiện nay. Nó được viết tắt của “Hypertext Preprocessor” là một ngôn ngữ lập trình mã nguồn mở được chạy ở phía server nhằm sinh ra mã html trên client rất phổ biến và được dùng trong phát triển ứng dụng Website.

Với đặt tính nhanh, linh hoạt, hữu dụng trong thực tế và được tối ưu hoá qua nhiều phiên bản, dễ học nên PHP trở thành một ngôn ngữ lập trình web rất phổ biến và được ưa chuộng để phát triển mọi ứng dụng web từ blog đến các website nối tiếng.

Ví dụ như các ông lớn Facebook, Yahoo, Google đều ứng dụng với ngôn ngữ này.

Vậy trước khi bắt tay vào học ngôn ngữ PHP, chúng ta có cần có trước những kiến thức cơ bản nào khác không. Đáp án đối với bản thân mình là nên có.

Mặc dù chúng ta có thể bắt tay vào học PHP ngay cũng được, nhưng bạn sẽ gặp rất nhiều trở ngại trong quá trình học. Cho nên dù không nhiều thì ít, các bạn vẫn nên chuẩn bị cho bản thân một số kiến thức dưới đây trước khi học PHP.

Kiến thức nên có trước khi bắt đầu học lập trình PHP

Học html cơ bản

HTML là ngôn ngữ đánh dấu siêu văn bản giúp cho bạn tạo khung xương của website

Bạn nên học qua về HTML, HTML5

Học CSS cơ bản

Bạn nên học CSS, CSS3, Bootstrap sẽ giúp bạn trang trí cho website thêm phần sinh động.

Học Javascript

Có Javascript sẽ giúp cho website trở nên tương tác hơn.

  • Javasript cơ bản
  • jQuery: Thư viện hiệu ứng của Javascript

Với bộ 3 HTML + CSS + Javascript này bạn đã trở thành một lập trình viên front-end có đủ kiến thức rồi. Học xong 3 phần trên, các bạn sẽ rất dễ nắm bắt những công nghệ mới khi tiếp xúc sau này.

Học MySQL

Database là một phần không thể thiếu của bất cứ ứng dụng nào. Nó là thứ để lưu trữ các dữ liệu của ứng dụng và người dùng. Trong PHP thì người ta thường ưa chuộng MySQL.

Vì thế bạn nên học MySQL để biết về cách tạo dựng và quản lý database như thế nào nhé!

Giờ hãy bắt đầu vào lộ trình học PHP căn bản đến nâng cao.

Lộ trình học PHP căn bản

Ta sẽ học về lý thuyết những kiến thức cơ bản nhất.

  1. Ngôn ngữ lập trình PHP là gì và hướng dẫn thiết lập môi trường để lập trình PHP
  2. Cú pháp trong PHP, Khai báo hằng và biến trong PHP
  3. Những kiểu dữ liệu trong PHP
  4. Toán tử và biểu thức trong PHP
  5. Biểu Thức Điều Kiện Trong PHP (Lệnh if, else, switch)
  6. Các loại Vòng lặp trong PHP (for, while, do while)
  7. Vòng lặp Foreach trong PHP (Các loại vòng lặp phần 2)
  8. lệnh Break, Continue và các hàm (function) exit, die thường dùng trong PHP
  9. Hàm (Function) Trong PHP
  10. Mảng (Array) Trong PHP
  11. Các hàm xử lý mảng (Array) trong PHP
  12. Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP

Học PHP nâng cao thêm một chút nữa

  1. Phương thức GET và POST trong PHP
  2. Cookie là gì? Cookie trong PHP
  3. Session trong PHP
  4. Các hàm xử lý và làm việc với file trong PHP
  5. Xử lý date time ngày tháng trong PHP
  6. Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…)
  7. Xử lý ngoại lệ trong PHP.
  8. Xử lý lỗi (Error) trong PHP
  9. Những lệnh require, require_once, include, include_once trong PHP

Tiếp sau đó bạn sẽ cần học về Form trong php, truyền dữ liệu trong php từ form và kiểm tra form nhập liệu.

Gửi Emaill trong PHP.

Học cách sử dụng XML, DOM, Parsers trong PHP.

Các hàm bảo mật trong PHP

Học PHP nâng cao – Lập trình PHP hướng đối tượng OOP

Trong Phần học PHP nâng cao, Nội dung quan trọng nhất là Lập trình hướng đối tương OOP, nên ta sẽ có từng bài học theo lộ trình sau:

  1. Lập trình hướng đối tượng là gì?
  2. Class, properties, method of Object
  3. Magic methords
  4. Trừu tượng hoá dữ liệu
  5. Hàm khởi tạo và huỷ trong PHP
  6. Biến có sẵn được định nghĩa trước trong PHP
  7. Tính kế thừa trong php
  8. Các mức truy cập visibility private protected và public trong kế thừa
  9. Kế thừa lồng nhau trong php
  10. Tính đóng gói và đa hình trong php
  11. Lớp trừu tượng abstract trong php hướng đối tượng
  12. Get set và magics methods __get __set
  13. Autoloading require, require_one
  14. Ghi chú với docblocks
  15. Interface là gì?
  16. Trait là gì?
  17. Self và this khác nhau như thế nào?
  18. Final class là gì?

Nâng cao thêm – Học PHP và MySQL

Để học tốt chương trình học PHP và MySQL, chúng ta phải nắm vững kiến thức về lập trình frontend, bao gồm HTML, CSS, và Javascript. Tư duy logic tốt, khả năng xử lý vấn đề thực tiễn, khả năng tìm hiểu tài liệu, và ngoại ngữ sẽ là một lợi thế.

  1. MySQL là gì?
  2. Mối liên hệ giữa MySQL và PHP
  3. Tạo CSDL
  4. Tạo Bảng (table)
  5. Kết nối và truy vấn CSDL MySQL
  6. Thiết lập quan hệ giữa các bảng trong CSDL (khóa chính, khóa ngoại, contrains…)
  7. Chọn (Select) dữ liệu MySQL
  8. Thêm (Insert) dữ liệu MYSQL
  9. Chỉnh sửa (Update) dữ liệu MYSQL
  10. Xoá (Delete) dữ liệu MySQL
  11. Cơ chế prepared câu SQL trong PHP
  12. Thao tác với CSDL trong PHP thông qua PDO

Lập trình phát triển ứng dụng PHP

  1. Hiển thị sản phẩm trên trang chủ và theo từng chuyên mục sản phẩm
  2. Tìm kiếm và phân trang trong PHP
  3. Đăng ký, đăng nhập, ghi nhớ đăng nhập, quên mật khẩu trong php
  4. Upload file trong PHP
  5. Đếm số người Online
  6. Hệ thống bình chọn bằng PHP và MySQL
  7. Tạo Giỏ hàng trong PHP
  8. Xây dựng chức năng checkout
  9. Tích hợp thanh toán trực tuyến vào giỏ hàng
  10. Tìm kiếm với PHP và Ajax
  11. Sử dụng Google reCAPTCHA với PHP
  12. Quản lý đơn hàng bằng php và mysql
  13. Tạo trang quản lý sản phẩm
    1. Quản lý menu
    2. Quản lý sản phẩm: thêm, xoá, sửa, update.
    3. Chức năng Quản lý User.
    4. Quản lý chuyên mục.

Tìm Hiểu Mô Hình MVC Với PHP

Học Framework của PHP

Học Laravel

Nguồn tài nguyên, tài liệu tốt nhất để học Lập trình PHP

Các bạn có thể tham khảo một số nguồn tài liệu chuyên về PHP bên dưới.

  1. Học tập từ tài liệu trên W3 Schools
  2. Đọc documents trên php.net

Ngoài ra các bạn cũng có thể đăng lý học những khoá học chất lượng từ Udemy.com, Tutorialspoint.com hoặc học qua video hướng dẫn trên Youtube.

Tất cả đều nhằm mục đích hỗ trợ cho việc học tập của các bạn, Việc còn lại phụ thuộc vào sự cần cù và đam mê của các bạn để trong quá trình học không bị chán nản mà bỏ giữa chừng nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!
CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

 

The post Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/feed/ 0
Bài 19: Xử lý ngoại lệ trong PHP – PHP Exceptions https://tanhongit.com/bai-19-xu-ly-ngoai-le-trong-php-php-exceptions/ https://tanhongit.com/bai-19-xu-ly-ngoai-le-trong-php-php-exceptions/#respond Wed, 26 Feb 2020 04:34:07 +0000 https://tanhongit.com/?p=2381 Ngoại lệ, error và xử lý ngoại lệ là những khái nhiệm rất quen thuộc đối với tất cả các lập trình viên. Bài viết này trình bày các vấn đề liên quan đến Exception trong PHP. PHP có cung cấp các cơ chế giúp bắt lỗi, giám sát các lỗi và xử lý các […]

The post Bài 19: Xử lý ngoại lệ trong PHP – PHP Exceptions appeared first on Tân Hồng IT.

]]>
Ngoại lệ, error và xử lý ngoại lệ là những khái nhiệm rất quen thuộc đối với tất cả các lập trình viên. Bài viết này trình bày các vấn đề liên quan đến Exception trong PHP. PHP có cung cấp các cơ chế giúp bắt lỗi, giám sát các lỗi và xử lý các lỗi có thể xảy ra khi lập trình.

Trong nhiều ứng dụng lớn, có thể mở rộng, trong các ứng dụng hướng đối tượng và các frameworks thì việc bắt được các Exception trong quá trình develop là điều cực kì tốt.

xu ly ngoai le php exception
Bài 19: Xử lý ngoại lệ trong PHP – PHP Exceptions

Ngoại lệ (Exception) trong PHP là gì?

Bạn có thể hiểu nôm na ngoại lệ như sau: Trong lập trình chúng ta sẽ tạo ra những đoạn code, hàm, mảng mới mong muốn nó thực hiện một hành động nào đó trong chương trình. Như vậy, tất cả các hành động có thể xảy ra mà khác với mong muốn đó thì nó chính là ngoại lệ (Exception).

Và chúng ta sẽ không bao giờ muốn cho chương trình của mình hoạt động sai mong muốn phải không nào. Vì thế mà ta cần xử lý ngoại lệ để tránh những ngoại lệ đó phá hỏng chương trình.

Trái ngược với hệ thống xử lý lỗi trong PHP, xử lý ngoại lệ là phương pháp hướng đối tượng để xử lý lỗi, cung cấp hình thức báo cáo lỗi linh hoạt và có kiểm soát hơn.

Các phương pháp xử lý ngoại lệ trong PHP

  • Sử dụng try, throw và catch.
  • Tạo lớp ngoại lệ tùy chỉnh.
  • Xử lý nhiều ngoại lệ.
  • Ném lại một ngoại lệ.
  • Thiết lập trình xử lý ngoại lệ cao cấp.

Xử lý ngoại lệ (Exception Handling) trong PHP

Sử dụng try, throw và catch

Ta sẽ có một số khái niệm cần lưu ý dưới đây:

Try − Một hàm sử dụng một exception nên nằm trong khối try. Nếu exception không xảy ra( không được kích hoạt), code sẽ tiếp tục như bình thường. Tuy nhiên, nếu exception xảy ra ( được kích hoạt) thì exception đó sẽ bị “thrown”.

Throw − Đây là cách bạn kích hoạt một exception. Mỗi “thrown” phải có ít nhất một “catch”.

Catch − Mỗi khối “catch” bắt một exception và tạo một đối tượng chứa thông tin của exception đó.

Cú pháp tổng quát của try catch

<?php
  try {
    //Thực hiện đoạn mã này có khả năng ném ra một ngoại lệ
  }
  catch (Exception $e) {
    //Xử lý ngoại lệ ở đây
  }
?>

Ví dụ:

<?php 
// PHP Program to illustrate normal 
// try catch block code 
function demo($var) { 
    echo "<br> Before try block"; 
    try { 
        echo "<br> Inside try block"; 
              
        // If var is zero then only if will be executed 
        if($var == 0) 
        { 
                  
            // If var is zero then only exception is thrown 
            throw new Exception('Number is zero.'); 
                  
            // This line will never be executed 
            echo "<br> After throw (It will never be executed)"; 
        } 
    } 
          
    // Catch block will be executed only  
    // When Exception has been thrown by try block 
    catch(Exception $e) { 
            echo "<br> Exception Caught: ", $e->getMessage(); 
        } 
          
        // This line will be executed whether 
        // Exception has been thrown or not  
        echo "<br> After catch (will be always executed)"; 
} 

// Exception will not be rised 
demo(2); 
echo '<br>';
echo '<br>';
// Exception will be rised here 
demo(0); 
?>

Kết quả:

Before try block
Inside try block
After catch (will be always executed)


Before try block
Inside try block
Exception Caught: Number is zero.
After catch (will be always executed)

Trong đó Hàm demo() kiểm tra nếu một số có bằng 0 hay không. Nếu điều kiện đúng ngoại lệ được ném ra. Khối “catch” lấy ra ngoại lệ và tạo ra một đối tượng ($e) chứa thông tin ngoại lệ. Thông báo lỗi từ ngoại lệ được lặp lại bằng cách gọi $e->getMessage() từ đối tượng ngoại lệ.

Trong ví dụ trên, hàm $e->getMessage() được sử dụng để lấy error message. Không chỉ có mỗi một hàm đó, dưới đây là một số hàm có thể được sử dụng từ lớp Exception trong PHP.

Một số hàm lấy error message

  • getMessage() − thông báo của exception
  • getCode() − code của exception
  • hàm getFile() − tên source file
  • getLine() − source line
  • getTrace() − n mảng của backtrace()
  • hàm getTraceAsString() − chuỗi được định dạng của trace
  • getClass() – class có exception

Từ ví dụ về try catch trên ta có thể thêm như sau:

<?php
// PHP Program to illustrate normal 
// try catch block code 
function demo($var)
{
    echo "<br> Before try block";
    try {
        echo "<br> Inside try block";

        // If var is zero then only if will be executed 
        if ($var == 0) {

            // If var is zero then only exception is thrown 
            throw new Exception('Number is zero.');

            // This line will never be executed 
            echo "<br> After throw (It will never be executed)";
        }
    }

    // Catch block will be executed only  
    // When Exception has been thrown by try block 
    catch (Exception $e) {
        echo "<br> Exception Caught: ", $e->getMessage();
        echo "<br> Exception Caught: ", $e->getFile();
        echo "<br> Exception Caught: ", $e->getCode();
        echo "<br> Exception Caught: ", $e->getLine();
        echo "<br> Exception Caught: ", $e->getTraceAsString();
    } 

    // This line will be executed whether 
    // Exception has been thrown or not  
    echo "<br> After catch (will be always executed)";
}

// Exception will not be rised 
demo(5);
echo '<br>';
echo '<br>';
// Exception will be rised here 
demo(0);
Before try block
Inside try block
After catch (will be always executed)


Before try block
Inside try block
Exception Caught: Number is zero.
Exception Caught: C:\wamp64\www\webdemo\index2.php
Exception Caught: 0
Exception Caught: 14
Exception Caught: #0 C:\wamp64\www\webdemo\index2.php(41): demo(0) #1 {main}
After catch (will be always executed)

Tạo lớp ngoại lệ tuỳ chỉnh

Để tạo một trình xử lý ngoại lệ tùy chỉnh, bạn phải tạo một lớp đặc biệt với các hàm có thể được gọi khi một ngoại lệ xảy ra trong PHP. Lớp này phải được kế thừa lớp Exception.

<?php 
class myException extends Exception { 
    function get_Message() { 
          
        // Error message 
        $errorMsg = 'Error on line '.$this->getLine(). 
                    ' in '.$this->getFile() 
        .$this->getMessage().' is number zero'; 
        return $errorMsg; 
    } 
} 
  
function demo($a) { 
    try { 
      
        // Check if 
        if($a == 0) { 
            throw new myException($a); 
        } 
    } 
      
    catch (myException $e) { 
      
        // Display custom message 
        echo $e->get_Message(); 
    } 
} 
  
// This will not generate any exception 
demo(5); 
  
// It will cause an exception 
demo(0); 
?>

Kết quả: Error on line 18 in C:\wamp64\www\webdemo\index2.php0 is number zero

Đầu tiên ta sẽ tạo một class có tên myException được kế thừa từ class Exception, như vậy, nó sẽ kế thừa tất cả các phương thức và thuộc tính từ lớp Exception.

Trong class trên sẽ tạo một hàm get_message để thông báo lỗi nếu một số truyền vào bằng 0.

Ra khỏi class, ta dựng một hàm demo() với nội dung bên trong thực hiện try catch để kiểm tra xem số truyền vào có bằng 0 không. Nếu số bằng 0, một ngoại lệ sẽ được ném và sau đó khối catch sẽ bắt được ngoại lệ về rồi hiển thị ra thông tin lỗi.

Xử lý nhiều ngoại lệ – Multiple Exceptions

Multiple Exceptions là cách sử dụng nhiều block try…catch để cố gắng bắt các ngoại lệ được ném ra.

Ở phương pháp này chúng ta có thể sử dụng các câu lệnh điều khiển như if…else, switch, hoặc các ngoại lệ lồng vào nhau.

Cú pháp tổng thể

try {
     // Some code...
} catch (ExceptionType1 | ExceptionType2 $e) {
     // Code to handle the exception
} catch (\Exception $e) {
     // ...
}

Ví dụ:

<?php

class A_Error extends Exception {}
class B_Error extends Exception {}
class C_Error extends Exception {}

try {
    throw new A_Error();
} 
catch (A_Error $e) { goto abc; }
catch (B_Error $e) { goto abc; }
catch (C_Error $e) {
abc:
    var_dump(get_class($e));
    echo "Error one";
}

Xử lý nhiều ngoại lệ sẽ có ích khi bạn muốn hiển thị thông điệp hoặc thực hiện một hành động nào đó tuỳ thuộc vào mỗi ngoại lệ được ném ra.

Thiết lập xử lý ngoại lệ cao cấp – Set Top Level Exception Handler

Hàm set_exception_handler() sẽ đặt tất cả hàm do người dùng đã xác định thành tất cả ngoại lệ chưa được lưu.

<?php
function myException($exception) {
  echo "<b>Exception:</b> " . $exception->getMessage();
}
 
set_exception_handler('myException');
 
throw new Exception('Uncaught Exception occurred');
?>

Trong đoạn mã trên không có khối “catch”. Thay vào đó, trình xử lý ngoại lệ cấp cao nhất được kích hoạt. Hàm này nên được sử dụng để bắt các ngoại lệ chưa được catch.

Kết quả:

Exception: Uncaught Exception occurred

Ví dụ khác:

<?php 
// PHP Program to illustrate normal 
// try catch block code 
// Function for Uncaught Exception 
function myException($exception) { 
      
    // Details of Uncaught Exception 
    echo "<br> Exception: " . $exception->getMessage(); 
} 
  
// Set Uncaught Exception handler 
set_exception_handler('myException');

function demo($var) { 
    echo "<br> Before try block"; 
    try { 
        echo "<br> Inside try block"; 
              
        // If var is zero then only if will be executed 
        if($var == 0) 
        { 
                  
            // If var is zero then only exception is thrown 
            throw new Exception('Number is zero.'); 
                  
            // This line will never be executed 
            echo "<br> After throw (It will never be executed)"; 
        } 
    } 
          
    // Catch block will be executed only  
    // When Exception has been thrown by try block 
    catch(Exception $e) { 
            echo "<br> Exception Caught: ", $e->getMessage(); 
        } 
          
        // This line will be executed whether 
        // Exception has been thrown or not  
        echo "<br> After catch (will be always executed)"; 
        if($var < 0) {  
          
            // Uncaught Exception 
            throw new Exception('Uncaught Exception occurred'); 
        } 
} 

// Exception will not be rised 
demo(2); 
echo '<br>';
// Exception will be rised here 
demo(0); 
// Uncaught Exception 
demo (-3); 
?>
Before try block
Inside try block
After catch (will be always executed)

Before try block
Inside try block
Exception Caught: Number is zero.
After catch (will be always executed)
Before try block
Inside try block
After catch (will be always executed)
Exception: Uncaught Exception occurred

Tham khảo:

Kết thúc

Bài viết trên mình đã liệt kê một vài cách để xử lý ngoại lệ trong lập trình PHP. Mỗi bài viết về kiến thức học PHP của mình đều có thể chưa hoàn toàn đầy đủ, cho nên mong các bạn hãy tra google khi tham khảo và mong bạn có thể gửi lại comment bổ sung bên dưới để mình có thể hoàn thiện lại bài viết hơn. Cảm ơn các bạn!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

Tổng hợp Internet

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 19: Xử lý ngoại lệ trong PHP – PHP Exceptions appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-19-xu-ly-ngoai-le-trong-php-php-exceptions/feed/ 0
Bài 18: Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…) https://tanhongit.com/bai-18-nhung-ham-kiem-tra-du-lieu-trong-php-isset-empty/ https://tanhongit.com/bai-18-nhung-ham-kiem-tra-du-lieu-trong-php-isset-empty/#respond Mon, 24 Feb 2020 09:52:16 +0000 https://tanhongit.com/?p=2382 Tiếp tục series học PHP căn bản, bài này chúng ta sẽ tìm hiểu về một số hàm dùng để kiểm tra dữ liệu hoặc biến về sự tồn tại của nó. Và những lợi ích của nó trong lập trình website PHP. Có rất nhiều hàm kiểm tra dữ liệu giá trị của một […]

The post Bài 18: Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…) appeared first on Tân Hồng IT.

]]>
Tiếp tục series học PHP căn bản, bài này chúng ta sẽ tìm hiểu về một số hàm dùng để kiểm tra dữ liệu hoặc biến về sự tồn tại của nó. Và những lợi ích của nó trong lập trình website PHP.

Có rất nhiều hàm kiểm tra dữ liệu giá trị của một biến trong PHP. Mỗi hàm sẽ có một chức năng phụ thuộc vào từng loại biến và cách sử dụng khác nhau, Nhưng mình chỉ giới thiệu các hàm thông dụng thường hay dùng đó là isset(), empty() và is_null(),….

Tất cả các hàm được liệt kê trên này đều trả về một giá trị boolean. Nó sẽ rất có ích cho các bạn trong việc làm web sử dụng ngôn ngữ php. Nhưng nếu các chức năng này không được sử dụng đúng cách, chúng có thể gây ra các kết quả không mong muốn.

kiem tra du lieu isset php
Kiểm tra dữ liệu trong PHP (isset, empty,…)

Hàm isset($value)

Về hàm này mình đã từng nói sơ qua và áp dụng ví dụ rất nhiều lầm ở các bài viết trước đây rồi. Tác dụng của nó dùng để kiểm tra biến $value có tồn tại hay không. Nó sẽ trả về true chỉ khi biến không phải là null.

Thông thường bạn hay dùng hàm này để kiểm tra một biến trước khi xử lý thao tác đến nó.

Cú pháp

isset($value1, $value2 ......)

Tham số

  • $value1: Là biến thứ nhất cần kiểm tra (bắt buộc phải có)
  • $value2 ,…$value_n các biến còn lại cần kiểm tra( có thể có hoặc không)
<?php
$data = 'phpcanban';
if (isset($data))
    echo 'Biến này tồn tại';
else
    echo 'Biến này không tồn tại';
?>

Hàm isset() được sử dụng trong trường hợp nào

Trong quá trình biên dịch nếu trong code có sử dụng một biến không tồn tại thì trình biên dịch sẽ ngưng xử lý và thông báo lỗi ngay, chính vì vậy thông thường những trường hợp mà ta không chắc chắn là biến đó luôn tồn tại thì trước khi sử dụng hãy kiểm tra nó bằng isset.

Ngoài ra nó còn có một số ứng dụng sau:

  • Thường được sử dụng trong From kiểm tra sự xác định của biến
  • Kiểm tra sự xác định của phần tử trong mảng phục vụ cho xử lý và xuất giá trị trong mảng

Ví dụ:

//kiểm tra giá trị phần tử trong mảng
<?php
$var = array(
    "php",
    'laptrinh',
    null,
    27,
    "php can ban",
    null
);
foreach ($var as $value) {
    if (isset($value)) {
        echo 'this var is set <br />';
    } else {
        echo 'this var is not set <br />';
    }
}
/*output:
this var is set
this var is set
this var is not set
this var is set
this var is set
this var is not set*/
?>

Nếu biến đã được khai báo, nhưng sau đó lại được loại bỏ bởi hàm unset() thì khi kiểm tra với hàm isset() sẽ trả về kết quả FALSE.

Khi sử dụng isset () trên các thuộc tính đối tượng không thể tiếp cận, phương thức nạp chồng __isset () sẽ được gọi, nếu được khai báo.

Các bạn có thể tham khảo thêm về hàm isset tại đây.

Hàm empty($var)

Kiểm tra biến $var có phải giá trị trống hay không. Tất cả các giá trị như: số 0, giá trị null, giá trị rỗng, giá trị false đều được quy về là empty.

Cú pháp

empty($var);

Tham số

Tham số của hàm empty($var) chỉ hỗ trợ khi chỉ có mỗi một biến $var.

Nếu biến $var không tồn tại thì hàm này vẫn không báo lỗi và sẽ trả kết quả về false.

Những giá trị sau đấy được xem là rỗng:

  • “” (Chuỗi)
  • 0 (0 là số nguyên)
  • 0.0 (0 là số thực)
  • “0” (0 là chuổi)
  • NULL
  • FALSE
  • array() (là mảng rỗng)
  • $var; (biến chưa khai báo, không có giá trị)
Hàm empty($var) sẽ tương đương !isset($var) hoặc $var == false.
Cũng có thể ở một số trường hợp isset($var) trả về TRUE nhưng empty($var) lại trả về FALSE. Vì thế trong quá trình thiết lập các biểu thức điều kiện cần xác định rõ để tạo biểu thức thích hợp
<?php
$data = [];
if (empty($data))
    echo 'Biến này rỗng';
else
    echo 'Biến này không rỗng';

Hàm empty() được sử dụng trong trường hợp nào

  • Sử dụng để kiểm tra giá trị biến xem có rỗng hay không
  • Phục vụ cho qua trình kiểm tra chuẩn hóa dữ liệu khi thao tác đến nhận giá trị từ Form
//kiểm tra dữ liệu từ form đăng nhập
if (empty($_POST['password'])){
    echo 'Bạn chưa nhập tên mật khẩu';
}

Các bạn có thể tham khảo thêm về hàm empty tại đây.

Hàm is_null($var)

Hàm sẽ kiểm tra biến $var có phải giá trị null không.

Nói cách khác, nó chỉ trả về true khi biến là null . is_null () trái ngược với isset (), ngoại trừ một điểm khác biệt là có thể áp dụng ngay bây giờ cho các biến không xác định

<?php
$demo= null;
if (is_null($demo))
    echo 'Biến này là null';
else
    echo 'Biến này không phải là null';

Các bạn có thể tham khảo thêm về hàm is_null tại đây.

Một số hàm kiểm tra dữ liệu cho biến khác

is_array($var)

Hàm is_array() kiểm tra xem một biến $var có phải là một mảng hay không.

Hàm này trả về true nếu biến là một mảng, nếu không, nó trả về false / nothing.

<?php
$yes = array('this', 'is', 'an array');

echo is_array($yes) ? 'Array' : 'not an Array';
echo "\n";

$no = 'this is a string';

echo is_array($no) ? 'Array' : 'not an Array';
?>

is_string($var)

Kiểm tra biến $var có phải kiểu chuỗi hay không.

<?php
$values = array(false, true, null, 'abc', '23', 23, '23.5', 23.5, '', ' ', '0', 0);
foreach ($values as $value) {
    echo "is_string(";
    var_export($value);
    echo ") = ";
    echo var_dump(is_string($value));
}
?>

is_int($var) hoặc is_integer($var)

Kiểm tra biến $var có phải kiểu INT hay không.

<?php
$values = array(23, "23", 23.5, "23.5", null, true, false);
foreach ($values as $value) {
    echo "is_int(";
    var_export($value);
    echo ") = ";
    var_dump(is_int($value));
}
?>

is_float($var)

Kiểm ta biến $var có phải kiểu float hay không

var_dump(is_float(27.25));
var_dump(is_float('abc'));
var_dump(is_float(23));
var_dump(is_float(23.5));
var_dump(is_float(1e7));  //Scientific Notation
var_dump(is_float(true));
?>

is_double($var)

Kiểm tra biến $var có phải kiểu double hay không.

<?php
$var_name=127.55;
if (is_double($var_name))
echo 'This is a double value.<br>';
else
echo 'This is not a double value.<br>';
echo '<br>';
var_dump(is_double(85));
echo '<br>';
var_dump(is_double(1e8));
echo '<br>';
var_dump(is_double(true));
echo '<br>';
var_dump(is_double(array(23.3, 56, 6)));
?>

in_array($needle, $haystackarray)

Kiểm tra giá trị $needle có trong mảng $haystackarray hay không

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

array_key_exists($key, $searcharray)

Kiểm tra key $key có trong mảng $searcharray hay không

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>

is_numeric($var)

Hàm có tác dụng kiểm tra xem một biến có phải là số hay không

<?php
$demo = 20;
if (is_numeric($demo))
    echo 'Biến này là số';
else
    echo 'Biến này không phải là số';
?>

Còn có vô số hàm khác mà mình không thể liệt kê hết được, các bạn có thể vào php.net để tìm tòi và lục lọi những hàm phù hợp với bài toán của các bạn nhé. Các bạn có thể thao khảo link về function tại đây.

Kết thúc

Bạn sẽ phải thường xuyên dùng đến các hàm trên trong quá trình học tập cũng như làm việc với lập trình PHP, qua bài viêt mong bạn đã hình dung được cách sử dụng của chúng và ứng dụng vào mỗi trường hợp của bài toán thật phù hợp.

Mỗi bài viết về kiến thức học PHP của mình đều có thể chưa hoàn toàn đầy đủ, cho nên mong các bạn hãy tra google khi tham khảo và mong bạn có thể gửi lại comment bổ sung bên dưới để mình có thể hoàn thiện lại bài viết hơn. Cảm ơn các bạn!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 18: Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…) appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-18-nhung-ham-kiem-tra-du-lieu-trong-php-isset-empty/feed/ 0
Bài 17: Xử lý date time ngày tháng trong PHP https://tanhongit.com/bai-17-xu-ly-date-time-ngay-thang-trong-php/ https://tanhongit.com/bai-17-xu-ly-date-time-ngay-thang-trong-php/#respond Sun, 23 Feb 2020 10:35:31 +0000 https://tanhongit.com/?p=2049 Ở bài viết trước đã học qua về cách xử lý đối với file trong PHP, tiếp tục series học PHP căn bản, bài này chúng ta sẽ tìm hiểu về phương pháp xử lý ngày tháng (date) trong PHP nhé! Vấn đề xử lý ngày tháng cực kì quan trọng khi bạn xử lý […]

The post Bài 17: Xử lý date time ngày tháng trong PHP appeared first on Tân Hồng IT.

]]>
Ở bài viết trước đã học qua về cách xử lý đối với file trong PHP, tiếp tục series học PHP căn bản, bài này chúng ta sẽ tìm hiểu về phương pháp xử lý ngày tháng (date) trong PHP nhé!

Vấn đề xử lý ngày tháng cực kì quan trọng khi bạn xử lý với các bài viết và đăng lên website. Ví dụ bạn cần in ra ngày tháng đăng bài viết hiển thị theo kiểu ngày / tháng / năm hoặc ngày – tháng -năm thì bắt buộc bạn phải biết cách sử dụng các hàm xử lý ngày tháng trong PHP thì mới làm được.

date time xu ly thoi gina ngay thang php
Bài 17: Xử lý date time ngày tháng trong PHP

Không những thế nó còn có liên quan đặc biệt đến cấu trúc cơ sở dữ liệu database nữa nên tầm quan trọng của việc xử lý thời gian này là không hề nhỏ.

Thiết lập múi thời gian (timezone) tại Việt Nam

Để cấu hình và làm việc với thời gian datetime đúng theo giờ Việt Nam thì bắt buộc ban phải thiết lập time zone( múi giờ) cho nó.

Cú pháp để thiết lập time zone là: date_default_timezone_set(‘timezone_identifier’);

Trong đó timezone_identifier là time zone mà bạn muốn thiết lập.

Mình đang ở Châu Á và ở Việt Nam – Hồ Chí Minh nên sẽ có timezone là Asia/Ho_Chi_Minh, mỗi khu vực sẽ chênh lệch nhau thời gian nên các bạn phải chú ý khi website có liên quan đến nước ngoài.

date_default_timezone_set('Asia/Ho_Chi_Minh');

Về múi giờ các bạn có thể tham khảo thêm tại: http://php.net/manual/en/timezones.php

Hoặc các bạn có thể sử dụng đoạn code dưới đây để xuất ra màn hình danh sách tất cả các timezone:

<?php
$timezone = DateTimeZone::listIdentifiers() ;
foreach ($timezone as $value){
    echo $value. '<br/>';
}
?>

Hoặc ta cũng có thể sử dụng hàm timezone_abbreviations_list để xuất ra timezone theo code bên dưới.

<?php
foreach (timezone_abbreviations_list() as $timezone) {
    foreach ($timezone as $value) {
        if (isset($value['timezone_id'])) {
            echo $value['timezone_id'] . '<br>';
        }
    }
}
?>
Lưu ý: Hàm thiết lập timezine này các bạn nên đặt ở đầu trang để cách đoạn code bên dưới hoạt động được hiệu quả và trính vị lỗi nhé!

Định dạng ngày tháng với hàm date()

Hàm date dùng để chuyển đổi thời gian theo format mà lập trình viên chỉ định mong muốn.

Cú pháp: date(format, timestamp);

Trong đó:

  • format: định  dạng ngày tháng năm, giờ phút giây.
  • timestamp(không bắt buộc) mặc định là hàm time() (chính là thời gian hiện tại).

Danh sách các format định dạng của date()

  1. h: Trả về giờ trong ngày kiểu 12h.
  2. H: Trả về giờ trong ngày kiểu 24h.
  3. i: Trả về phút trong giờ.
  4. s: Trả về số giây trong phút.
  5. S: Trả về hậu tố tiếng Anh cho ngày trong tháng, 2 ký tự. (st, nd, rd, th)
  6. d: trả về ngày trong tháng(bằng số từ 1- đến31).
  7. t: Số ngày trong 1 tháng (28 -> 31)
  8. j: Trả về ngày trong tháng, nhưng nếu ngày<10 sẽ không hiển thị số 0.
  9. D: Trả về định dạng thứ trong tuần bằng tiếng anh viết tắt. (có 3 chữ cái)
  10. l: Trả về đầy đủ thứ trong tuần (tiếng anh).
  11. m: Trả về tháng trong năm (bằng số từ 1 đến 12).
  12. M: Trả về tháng trong năm nhưng bằng tiếng anh viết tắt.
  13. y: Trả về 2 số cuối cùng của năm.
  14. Y: trả về đầy đủ 4 số của năm.
  15. c: trả về thời gian kiểu ISO 8601, thường dùng tạo cho thẻ meta publish time trong SEO
  16. z: trả về số ngày trong năm (Ngày trong năm bắt đầu từ 0 -> 365)

Ngoài ra các bạn có thể xem chi tiết đầy đủ về các format khác tại đây

echo date("Y-m-d"),'<br>'; //kết quả trả ra có dạng như 2020-02-23
 
echo date("d-m-Y"),'<br>'; //kết quả trả ra có dạng như 23-02-2020
 
echo date("d-m-Y H:i:s"),'<br>'; //kết quả trả ra có dạng như 22-02-2020 12:25:31

Ngoài ra chúng ta có thể phân cách ngày tháng năm bằng các dấu chéo / hoặc dấu gạch nối - hoặc dấu hai chấm :

Truyền thêm chuỗi trong hàm date()

Để cho nội dung chuỗi mà các bạn muốn hiển thị được như ý muốn thì các bạn thêm dấu chéo ngược \ vào trước mỗi ký tự của chuỗi.

<?php
echo date('\B\â\y \g\i\ờ \l\à d-m-Y H:i:s');
?>

Phương pháp xử lý ngày tháng nâng cao trong PHP

Kiểu định dạng ngày tháng chuẩn trong MySQL

Để lưu đúng định dạng ngày tháng trong MySQL thì bạn sử dụng format bên dưới.

date('Y-m-d H:i:s');

Đây là định dạng chuẩn để bạn có thể sử dụng để đăng bài cũng như upload hay comment một content nào đó mà có lưu lên database.

Chuyển đồi kiểu định dạng ngày tháng

Ngoài cách đổi kiểu định dạng trực tiếp trong hàm date() thì ta có có một cách thay đổi kiểu định dạng xuất ra ngày tháng khác đó là hàm date_format()

<?php
$date = date_create("2020-02-23"); //tạo ngày có thể dùng hàm date_create
echo date_format($date,"d/Y/m");  //đổi định dạng
//output: 23/2020/02
?>

Cộng trừ ngày tháng với mktime()

Hàm mktime() sẽ tính toán đưa ra ngày chính xác bởi các tham số truyền vào.

mktime($hour, $minute, $second, $month, $day , $year);
Lưu ý: Hàm này sẽ trả về thời gian kiểu INT nên bạn phải sử dụng hàm date() để chuyển đổi ra định dạng mong muốn.
Ví dụ: ta sẽ cộng thêm 5 ngày và 6 giờ đối với ngày 23/02/2020
<?php
$date = mktime((0 + 6), 0, 0, 02, (23 + 5), 2020);
echo date('d/m/Y', $date); //output: 28/02/2020
?>

Ví dụ 2: ta sẽ cộng thêm 26 giờ đối với ngày 23/02/2020

<?php
$date = mktime((0 + 26), 0, 0, 02, 23, 2020);
echo date('d/m/Y', $date); //output: 24/02/2020 - ngày đã tự động tăng thêm 1 ngày
?>

Ví dụ 3: ta sẽ cộng thêm 15 ngày đối với ngày 23/02/2020

<?php
$date = mktime(0, 0, 0, 02, (23 + 15), 2020);
echo date('d/m/Y', $date); //output: 09/03/2020 - ngày và tháng đã tự động tăng phù hợp
?>

Các bạn để ý từ 2 ví dụ trên, nếu bạn công số giờ có kết quả quá 24, hoặc cộng số ngày có kết quả vượt qua số ngày trong tháng đó thì giờ hoặc ngày hoặc tháng sẽ tự động tăng thêm 1. Tương tự đối với năm cũng vậy. Chính vì thế khi thực hiện công trừ đối với thời gian bạn hãy kiểm tra cẩn thận để không bị sai lệch nhé!

<?php
//xuất ra ngày kế tiếp(ngày mai)
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
echo date('d/m/Y', $tomorrow) . '<br>';

//Xuất ra ngày này tháng sau
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
echo date('d/m/Y', $lastmonth) . '<br>';

//xuất ra ngày này năm sau
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
echo date('d/m/Y', $nextyear) . '<br>';
?>

Thay đổi ngày tháng date_modify()

Hàm date_modify() giúp ta thay đổi ngày tháng hiện hành. Đây cũng là một phương pháp dùng để tính toán công trừ cho ngày tháng các bạn nhé!

<?php
$date=date_create("2020-02-23");
date_modify($date, "+11 days"); // thay đổi ngày bằng phép cộng
echo date_format($date,"d/Y/m");  //đổi định dạng
?>
Như vậy ta có thể sử dụng hàm date_modify() và hàm mktime() để tính ngày tháng đều được cả. Nhưng đối với mình lại thường hay dùng hàm mktime để tính hơn.

Lấy thông tin ngày giờ theo dạng mảng với getdate()

Hàm getdate() sẽ giúp ta chuyển đổi dữ liệu ngày tháng về dạng mảng trong PHP và ta có thể xuất ra màn hình theo phương pháp sau

<?php
var_dump(getdate());
/*kêt quả:
array (size=11)
  'seconds' => int 16
  'minutes' => int 3
  'hours' => int 4
  'mday' => int 23
  'wday' => int 0
  'mon' => int 2
  'year' => int 2020
  'yday' => int 53
  'weekday' => string 'Sunday' (length=6)
  'month' => string 'February' (length=8)
  0 => int 1582430596*/
?>
Khóa Giá trị ví dụ
“seconds” số giây 0 đến 59
“minutes” số phút 0 đến 59
“hours” số giờ 0 đến 23
“mday” Ngày trong tháng 1 đến 31
“wday” Ngày trong tuần 0 (Sunday) đến 6 (Saturday)
“mon” Tháng 1 đến 12
“year” Năm 1999
“yday” Ngày của năm 0 đến 365
“weekday” Ngày trong tuần(dạng chữ) Sunday đến Saturday
“month” Tháng(dạng chữ) January đến December
0 time() timestamp,-2147483648 đến 2147483647.

Một số hàm lấy thông tin date/time khác

Lấy ngày cuối cùng của tháng

//last day of month
function lastday($month = '', $year = '') {
   if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   $result = strtotime('-1 second', strtotime('+1 month', $result));
   return date('Y-m-d', $result);
}
echo lastday('6','2020');

Ở hàm trên bạn sẽ thấy trong code có tạo 2 biến $year$month. Đầu tiên sẽ kiểm tra nếu ko có 2 thông số truyền vào phù hợp thì hàm sẽ tự đông lấy năm và tháng thông qua thời gian của hiện tại. Sau đó ta sẽ gán biến $result bằng ngày đầu tiên của tháng trong năm hiện tại. Tiếp tục ta gán đè biến $result thêm 1 lần nữa như sau:

ở lệnh strtotime(‘-1 second’, strtotime(‘+1 month’, $result)); ta thấy hàm strtotime được lồng bên trong sẽ tính bằng cách lấy năm hiện tại, còn tháng hiện tại thì cộng thêm 1 với thời gian là 0h0m0s. Khi đó ta có thời gian là năm hiện tại, tháng tiếp theo của tháng hiện tại và ngày đầu tiên của tháng đó.

Tiếp theo đi ra lệnh strtotime bên ngoài thời gian sẽ bị trừ đi 1s, tức là khi này từ 0h của ngày đầu tiên của tháng tiếp theo đó sẽ bị trừ còn 23h59m59s của ngày trước đó. Tự khắc thời gian sẽ bị lùi về 1 ngày cũng như lùi về 1 tháng. Như vậy kết quả xuất ra màn hình sẽ là ngày cuối cùng của tháng hiện tại.

Lấy ngày đầu tiên của tháng chỉ định.

//first day of month
function firstDay($month = '', $year = '')
{
    if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   return date('Y-m-d', $result);
}
echo lastday('6','2020');

Ở hàm trên bạn sẽ thấy trong code có tạo 2 biến $year$month. Đầu tiên sẽ kiểm tra nếu ko có 2 thông số truyền vào phù hợp thì hàm sẽ tự đông lấy năm và tháng thông qua thời gian của hiện tại. Sau đó ta sẽ gán biến $result bằng ngày đầu tiên của tháng trong năm hiện tại. Rồi ta xuất ra trong định dạng của hàm date()

Các bạn hãy tham khảo về hàm strtotime() ở mục bên dưới để hiểu hơn nhé.

Hàm strtotime() xử lý ngày tháng trong PHP

Hàm này giúp tạo ra một kiểu định dạng thời gian theo kiểu INT từ một chuỗi.

Trường hợp này được sử dụng nhiều khi lấy dữ liệu từ MySQL với định dạng là datetime.

cú pháp: strtotime($time)

echo date('d/m/Y',strtotime('23-02-2020'));

Công dụng của hàm này chưa phải chỉ mỗi như vậy. Nó còn dùng để thực hiện một số hàm nâng cao khác, ví dụ như hàm lấy ngày cuối , ngày đầu trong tháng đã được giới thiệu ở phần trên.

Phép toán với hàm strtotime

Bắt đầu từ thời điểm nào đó trong quá khứ hoặc tương lai.
<?php
$date = strtotime('+1 day',strtotime('2020-02-23'));    //+ tính từ ngày nào đó.
echo date("d/m/Y", $date);
//output: 24/02/2020

$date2 = strtotime('-2 day',strtotime('2020-02-23'));    //- tính từ ngày nào đó.
echo date("d/m/Y", $date2);
//output: 21/02/2020
?>
Cộng 1 tháng tính từ thời điểm hiện tại.
<?php
echo date( "Y-m-d", strtotime( "2020-02-23 +1 month" ) );   
//output: 2020-03-23
?>
Cộng gộp 2 thời gian khác nhau

Áp dụng từ việc công trừ ngày hoặc tháng từ 2 ví dụ trên, ta có thể sử dụng phương pháp đó để cộng dồn 2 thời gian khác nhau lại với nhau theo hàm bên dưới.

<?php 
date_default_timezone_set('Asia/Ho_Chi_Minh');
function add2times($hour_one,$hour_two){
    
    $h =  strtotime($hour_one);
    $h2 = strtotime($hour_two);
 
    $minute = date("i", $h2); //gán phút của giờ thứ 2
    $second = date("s", $h2);//gán giây của giờ thứ 2
    $hour = date("H", $h2);//gán giờ của giờ thứ 2
 
    //lấy giấy, phút, giờ của giờ thứ 1 cộng cho giờ thứ 2 bằng phép cộng dồn với hàm strtotime()
    $convert = strtotime("+$minute minutes", $h); //biến $minute là phút của giờ thứ 2
    $convert = strtotime("+$second seconds", $convert); //biến $second là giây của giờ thứ 2
    $convert = strtotime("+$hour hours", $convert);//biến $hour là giờ của giờ thứ 2
    echo date('H:i:s', $convert);
}
add2times(date('H:m:s'),"8:10:56");
?>

Hàm strtotime này có thể sau này mình sẽ viết một bài riêng để nói chuyên về nó sau vì hàm này được dùng để tính toán và ứng dụng rất nhiều.

So sánh sự chệnh lệch giữa 2 ngày

trong trường hợp so sánh độ chênh lệch của 2 ngày ta dùng hàm diff().

$date1->diff($date2);

<?php
$t1=new DateTime('2020-02-23 17:0:0');
$t2=new DateTime('2020-02-24 18:1:50');
$ss=$t1->diff($t2);
var_dump($ss);    
/*object(DateInterval)[3]
  public 'y' => int 0
  public 'm' => int 0
  public 'd' => int 1
  public 'h' => int 1
  public 'i' => int 1
  public 's' => int 50
  public 'f' => float 0
  public 'weekday' => int 0
  public 'weekday_behavior' => int 0
  public 'first_last_day_of' => int 0
  public 'invert' => int 0
  public 'days' => int 1
  public 'special_type' => int 0
  public 'special_amount' => int 0
  public 'have_weekday_relative' => int 0
  public 'have_special_relative' => int 0*/
//từ kết quả var_dump trên ta thấy độ chênh lệch là 1 ngày 1h 1 phút và 50 giây
?>

Kiểm tra tính hợp lệ của ngày tháng.

Để kiểm tra tính hợp lệ về định dạng cho ngày tháng ta dùng hàm checkdate. Kết quả đúng sẽ trả về true, sai sẽ trả về false

Cú pháp: checkdate($mouth, $day, $year);

<?php
var_dump(checkdate(02, 30, 2020)); //output: false
var_dump(checkdate(2, 23, 2020)); //output: true
?>

Kết thúc

Qua bài viết trên mình đã liệu kê một số phương pháp, một số hàm cần thiết để xử lý thời gian date/time trong PHP.

Tuỳ vào mỗi trường hợp và tính đơn giản của bài toán mà ta sẽ phải áp dụng các hàm tính toán ngày thang dạng nâng cao nói trên theo cách phù hợp nhất. Vấn đề này các bạn cần làm nhiều bài tập thì sẽ tự  lựa chọn phù hợp được.

Mỗi bài viết về kiến thức học PHP của mình đều có thể chưa hoàn toàn đầy đủ, cho nên mong các bạn hãy tra google khi tham khảo và mong bạn có thể gửi lại comment bổ sung bên dưới để mình có thể hoàn thiện lại bài viết hơn. Cảm ơn các bạn!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 17: Xử lý date time ngày tháng trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-17-xu-ly-date-time-ngay-thang-trong-php/feed/ 0
Bài 16: Các hàm xử lý và làm việc với file trong PHP https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/ https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/#respond Sat, 22 Feb 2020 09:39:45 +0000 https://tanhongit.com/?p=2040 Bài viết này sẽ xoay quanh về nội dung của các hàm xử lý và làm việc với file trong PHP.  Đối với một ngôn ngữ lập trình, làm việc với file và thư mục là điều bắt buộc mà không thể tránh khỏi. Vấn đề xử lý file trong PHP rất quan trọng khi […]

The post Bài 16: Các hàm xử lý và làm việc với file trong PHP appeared first on Tân Hồng IT.

]]>
Bài viết này sẽ xoay quanh về nội dung của các hàm xử lý và làm việc với file trong PHP.  Đối với một ngôn ngữ lập trình, làm việc với file và thư mục là điều bắt buộc mà không thể tránh khỏi. Vấn đề xử lý file trong PHP rất quan trọng khi các bạn muốn làm một số chức năng như cache hay log file nhằm giúp ứng dụng web chạy nhanh hơn,…

ham xu ly file trong php
Các hàm xử lý và làm việc với file trong PHP

Việc nắm vững kiến thức về xử lý file và quyền hạn của file, thư mục khi học PHP không những giúp bạn dễ dàng lưu trữ thông tin cho website mà còn giúp bạn tăng tính bảo mật cho các file và thư mục quan trọng.

Quá trình làm việc với một file trong PHP diễn ra như sau: Mở file –> Thao tác (Đọc, Ghi ) –> Đóng file. 

Các loại File được hỗ trợ trong PHP

  • File quản lý hệ thống
  • File logs
  • Loại file.txt
  • File.log
  • File.csv
  • Dạng file hình ảnh file.gif, file.jpg …
  • File cài đặt chương trình (program.ini)

Mở file với fopen

Để mở file trong PHP chúng ta dùng hàm fopen với cú pháp:

fopen($path, $mode);

Trong đó:

  • $path là đường dẫn đến file các bạn muốn mở.
  • $mode là thuộc tính bao gồm các quyền hạn truy cập vào file.

Danh sách ký hiệu thuộc tính $mode gồm quyền hạn truy cập vào file.

Mode Chú thích
r Chỉ được đọc (Read only)
r+ Được quyền đọc và ghi (Read + write)
w Chỉ được viết (write only)
x Tạo file mới chỉ để ghi.
w+ Được quyền đọc và viết (write + read). Nếu file này tồn tại thì nội dung cũ sẽ bị xóa đi và ghi lại nội dung mới, còn nếu file chưa tồn tại thì nó tạo file mới.
a Được quyền chỉ để viết và nếu file đã tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới.
a+ Được quyền cả viết lẫn đọc. Nếu file tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới
x+ Quyền tạo file mới để đọc và ghi.
b Mở dưới dạng chế độ binary

Hàm fopen() sẽ mở một file dựa vào đường dẫn truyền vào. Nếu truyền vào một URL, hàm sẽ sẽ tìm kiếm một trình xử lý giao thức(wrapper) cho URL đó, nếu không có trính xử lý nào đươc cung cấp, nó sẽ cảnh báo cho người dùng và sau đó tiếp tục như đối với các file bình thường.

Ví dụ:

<?php
$open = @fopen('data.txt', 'r'); // dùng @ đặt trước hàm fopen để ngăn chặn thông báo lỗi khi truyền sai đường dẫn file
if (!$open)
    echo "Mở file không thành công";
else
    echo "Mở file thành công";
?>

Đọc File trong PHP

Có 3 cách đọc file thông thường trong PHP đó là đọc từng dòng, đọc từng ký tự và đọc hết file. Chúng ta sẽ đi vào từng cách đọc trên nhé!

Sử dụng hàm feof trong đọc file

Trước khi tìm hiểu các cách đọc file trong PHP mình xin giới thiệu các bạn hàm feof().

Hàm này có tác dụng đặt trong vòng lặp để sau khi đọc xong nó sẽ chuyển sang dòng mới hoặc ký tự mới đối với từng trường hợp đọc file.

Hàm feof() hữu ích khi lặp lại những dữ liệu không xác định được độ dài.

Đọc file từng dòng

Để đọc file từng dòng ta dùng hàm fgets($fp).

Ở cách này trước tiên chúng ta sẽ dùng feof để sau khi đọc xong nó sẽ chuyển sang dòng mới, và dùng hàm fgets để in ra từng dùng của file.

<?php
$fp = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    // Lặp qua từng dòng để đọc
    while(!feof($fp))
    {
        echo fgets($fp);
    }
}
?>

Ở phương pháp đọc file theo từng dòng này, ngoài cách duyệt từng dòng bằng việc dùng hàm feof trong vòng lặp while như trên thì ta còn có một cách khác đó là chuyển file sang dạng mảng với mỗi phần tử trong mảng là 1 dòng của file, sau đó chỉ cần duyệt mảng và xuất ra màn hình.

$array = @file('demo.txt'); // chuyển đổi file sang mảng
foreach ($array as $value) {
    echo $value;
}

Trong đó: Hàm file() đọc nội dung của file và đưa vào một mảng. Mỗi phần tử của mảng tương ứng với một dòng của file.

Đọc file từng ký tự

Để đọc file từng dòng ta dùng hàm fgetc($fp).

Ở cách này trước tiên chúng ta sẽ dùng feof để sau khi đọc xong nó sẽ chuyển sang dòng mới, và dùng hàm fgetc để in ra từng dùng của file.

<?php
$fp = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    // Lặp qua từng ký tự để đọc
    while(!feof($fp))
    {
        echo fgetc($fp);
    }
}
?>

Đọc hết file với fread

Thông số trong hàm fread() chứa tên của file dùng để đọc dữ liệu và thông số thứ hai là một số lượng bytes nhất định để đọc dữ liệu.

Cú pháp: fread($file,$filesize)

<?php
$fp = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    echo fread($file, filesize('demo.txt'));
} ?>

Ghi, Chèn dữ liệu vào file trong PHP

Để ghi nội dung vào file ta dùng hàm fwrite($fp, $content) trong đó $fp là đối tượng trả về lúc mở file, còn $content

Để ghi file thì bắt buộc file của bạn phải được mở ở chế độ mode có cho phép ghi file và tiếp đó dùng hàm fwrite để ghi dữ liệu.

Vì vậy mà việc ghi file sẽ phụ thuộc vào lúc bạn mở file như thế nào. Ví dụ lúc bạn mở file ghi đè thì lúc ghi file nó sẽ ghi đè, lúc bạn mở file ghi kiểu append thì lúc ghi file nó sẽ thêm xuống cuối file, nếu bạn mở file chỉ cho đọc thì bạn không thể ghi file được.

<?php
$fp = @fopen('demo.txt', "w");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    fwrite($fp,'Đã mở file thành công, hãy tiếp tục thao tác mới');
}
?>

Đóng File

Quá trình làm việc với một file trong PHP diễn ra như sau: Mở file –> Thao tác (Đọc, Ghi ) –> Đóng file. Quy trình này là mặc định đối với nhiều ngôn ngữ lập trình khác nhau, chúng ta luôn phải tuân thủ theo quy trình đã mở thì phải đóng.

Việc mở file để sử dụng mà không đóng file rất nguy hiểm, vì thế sau khi sử dụng xong bạn nên đóng file để an toàn hơn và thu hồi tài nguyên hệ thống.

Để đóng file ta dùng hàm fclose($fp). Trong đó $fp là đối tượng trả về lúc bạn mở file.

<?php
$fp = @fopen('demo.txt', "w");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    fwrite($fp,'Đã mở file thành công, hãy tiếp tục thao tác mới');
    fclose($fs); //đóng file
}
?>

Vì thế những ví dụ ở phần đọc file bạn đều phải bổ sung thêm hàm đóng file vào thì code mới đúng và hoàn chỉnh các bạn nhé!

Các hàm xử lí file khác

Kiểm tra file có tồn tại không?

Trong PHP có cung xấp cho chúng ta hàm file_exists($path) để kiểm tra sự tồn tại của file, hàm sẽ trả về true nếu file tồn tại và ngược lại false nếu không. Trong đó $path là đường dẫn đến file cần test.

Bạn cũng có thể sử dụng hàm này khi bạn tạo ra một tập tin mới và bạn muốn đảm bảo rằng các tập tin chưa từng tồn tại trên server.

<?php
if (file_exists('STDIO.txt'))
{
    echo 'File exists';
}
?>

Kiểm tra cấp quyền với file

Để kiểm tra file có được cấp quyền gì không thì chúng ta dùng hàm is_writable() . Hàm này sẽ trả về true nếu được quyền ghi và ngược lại false nếu không được quyền ghi.

<?php
$fp = @fopen('demo.txt', "w");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    if(is_writable('demo.txt')){       
        fwrite($fp, 'Được phép ghi');}
    else{
        echo 'Không Được phép ghi';}
    fclose($fp);
}

Lấy nội dung của file hàm file_get_contents

Cú pháp: file_get_contents($path)

Trong đó $path là đường dẫn đến file, hoặc 1 đường link URL dẫn tới trang web chứa file.

echo file_get_contents('demo.txt');

Đổi tên file

Để đổi tên file ta dùng hàm rename($oldname, $newname), trong đó $oldname là đường dẫn đến file cần đổi tên, $newname là đường dẫn mới có kèm tên file cần đổi . Nếu bạn chỉ muốn đổi tên thôi thì đường dẫn của cả 2 biến giống nhau, chỉ khác nhau ở cái tên file.

Nếu tên file mới bị trùng thì file đó sẽ bị ghi đè.

rename('demo.txt', 'newdemo.txt');

Copy file

Cú pháp: copy($source, $newpath)

Trong đó $source là path file cần copy và $newpathlà path file cần di chuyển tới.

copy('demo.txt', 'newdemo.txt');

Xóa file

Ta dùng hàm unlink($path) để xóa file. Trong đó $path là đường dẫn đến file cần xóa.

<?php
if (file_exists('demo.txt'))
{
    if(unlink('demo.txt'))
        echo 'Xoá thành công';
    else
        echo 'Không thành công';
}
?>

Ghi toàn bộ nội dung chuỗi ra file

Đây là cách ghi toàn bộ một chuỗi ra file ngắn gọn (thay cho việc phải sử dụng fopen, fread, fclose).

Cú pháp: file_put_contents($path, $contents)

file_put_contents('demo.txt', 'đây là nội dung sẽ được ghi ra file');

Tạo một thư mục ( folder) mới

Cú pháp: mkdir($path)

Trong đó $path là đường dẫn đến folder cần tạo.

Ví dụ:

mkdir('webdevelopment/php/phpcanban');
Lưu ý: tên folder cuối cùng lằn trong link chính là tên folder bạn cần tạo và tất cả các folder trước nó bạn chắc chắn là phải có, nếu không sẽ bị lỗi.
Từ ví dụ trên ta sẽ nhận ra rằng ta đã phải có folder webdevelopment và trong nó là folder con có tên là php thì mới tạo thêm được.

Kiểm tra sự tồn tại đường dẫn thư mục

Cú pháp kiểm tra sự tồn tại của thư mục trong php là is_dir(path)

if(is_dir('phpcanban')){
    echo 'Folder này hiện đang tồn Tại';
}

Kết thúc

Qua bài viết trên mình đã nói qua về những hàm cần thiết về xử lý file cần biết trong PHP, Các bạn hãy thao khảo tìm mốt số bài tập thực hành để nâng cao hiểu biết của bản thân hơn nhé!

Ngoài ra còn rất nhiều hàm xử lý về file khác mà mình chưa nói tới, các bạn có thể tham khảo tại đây.

Bài viết tiếp theo mình sẽ sơ lược qua về vấn đề xử lý thời gian, ngày tháng trong PHP các bạn hãy đón đọc nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 16: Các hàm xử lý và làm việc với file trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/feed/ 0
Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/ https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/#respond Wed, 19 Feb 2020 12:35:47 +0000 https://tanhongit.com/?p=2009 Hầu hết chúng ta đều biết Apache là một phần mềm web server trong khi đó PHP là một ngôn ngữ kịch bản scripting language được sử dụng phổ biến trên server cùng với Apache. Tuy nhiên chính xác thì vai trò cũng như chức năng của Apache và PHP cụ thể như thế nào và chuyện gì xảy […]

The post Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào appeared first on Tân Hồng IT.

]]>
Hầu hết chúng ta đều biết Apache là một phần mềm web server trong khi đó PHP là một ngôn ngữ kịch bản scripting language được sử dụng phổ biến trên server cùng với Apache. Tuy nhiên chính xác thì vai trò cũng như chức năng của Apache và PHP cụ thể như thế nào và chuyện gì xảy ra nếu chỉ server chỉ được cài đặt Apache hoặc PHP?

apache and php
Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào

Trước tiên bạn cần nắm rõ được một request khi gửi tới server sẽ được xử lý như thế nào.

Vai Trò Của Apache

Khi một HTTP request được gửi tới server máy chủ thì nó sẽ được xử lý trước tiên bởi một phần mềm được gọi là HTTP web server (hay thường gọi vắn tắt là phần mềm web server hoặc web server) được cài đặt trên server. Hiện nay Apache là một trong những phần mềm web server được sử dụng phổ biến trên thế giới tuy nhiên không phải là phần mềm web server duy nhất, ngoài Apache chúng ta còn có thể sử dụng phần mềm web server khác cũng khá phổ biến có tên là NGINX (đọc là en-zin-iks).

Ví dụ sử dụng client (chẳng hạn như trình duyệt web) chúng ta thực hiện gửi một request tới server với địa chỉ http://localhost/index.html, máy chủ khi nhận được request sẽ chuyển request này cho phần mềm web server để xử lý (trường hợp của chúng ta là Apache). Apache sẽ tìm kiếm tập tin index.html trong thư mục gốc và trả về cho client. Trường hợp không tìm thấy tập tin index.html Apache sẽ trả về lỗi 404 not found.

vai trò của apache

Tuy nhiên như bạn biết HTML là ngôn ngữ đánh dấu (markup language) và nó không thể thực hiện được các công việc như truy cập tới cơ sở dữ liệu, lưu trữ session, xử lý dữ liệu form… Để làm các công việc này chúng ta cần tới ngôn ngữ scripting như PHP (hoặc Ruby, Java…).

Vai Trò Của PHP

PHP là ngôn ngữ lập trình kịch bản giúp thực hiện các tác vụ mạnh mẽ như đã đề cập ở trên. Tuy nhiên PHP lại không phải là một phần mềm web server, nói cách khác việc xử lý HTTP request gửi tới server cần được xử lý bởi web server (Apache) như chúng ta đã tìm hiểu ở trên.

Để PHP có thể tham gia vào quá trình xử lý request của web server (Apache) thì chúng ta sẽ cần tích hợp một thư viện có tên là mô-đun PHP mod_php vào trong Apache web server.

Sau khi Apahce được tích hợp và kích hoạt mod_php thì lúc này khi server nhận được một request gửi tới từ phía client với địa chỉ URL là http://localhost/index.php nó vẫn sẽ chuyển request này cho Apache để xử lý như thường lệ. Tuy nhiên lúc này Apache nhận thấy tập tin index.php là một tập tin PHP và do đó nó sẽ thông qua mod_php để nhờ PHP xử lý tập tin index.php này và trả về kết quả. Sau khi nhận được kết quả xử lý từ PHP, Apache lúc này mới chuyển trả kết quả về cho client.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/feed/ 0
Bài 15: Session trong PHP https://tanhongit.com/bai-15-session-trong-php/ https://tanhongit.com/bai-15-session-trong-php/#respond Tue, 18 Feb 2020 17:21:21 +0000 https://tanhongit.com/?p=1985 Ở bài 14 mình đã cho các bạn biết về khái niệm và cách thiết lập cookie trong PHP, tiếp tục series học PHP căn bản, sang bài này mình sẽ giới thiệu Session trong PHP là gì, hiểu nó và cách sử dụng nó như thế nào! Session là một biến được sử dụng […]

The post Bài 15: Session trong PHP appeared first on Tân Hồng IT.

]]>
bài 14 mình đã cho các bạn biết về khái niệm và cách thiết lập cookie trong PHP, tiếp tục series học PHP căn bản, sang bài này mình sẽ giới thiệu Session trong PHP là gì, hiểu nó và cách sử dụng nó như thế nào!

Session là một biến được sử dụng để lưu lại dữ liệu của người sử dụng website hoặc là lưu trữ tùy chọn cấu hình hệ thống cho người dùng. Không giống với cookie, biến session được lưu trên một tập tin trên máy chủ.

session trong php
Bài 15: Session trong PHP

Các ứng dụng thường dùng đối với Session

  • Session dùng theo dõi và kết nối giữa các phiên làm việc của người dùng
  • Session dùng để tạo các ứng dụng giỏ hàng, đăng nhập,…
  • Đếm sngười dùng đang online,…
  • Bạn muốn truyền giá trị từ trang này sang trang khác.
  • Thay thế cho cookie nếu trình duyệt đó không hỗ trợ cookies.

Quy cách mà Session hoạt động

Khi một session bắt đầu, những điều sau sẽ xảy ra:

  • Đầu tiên, PHP tạo một định danh duy nhất cho session cụ thể đó, định danh này là chuỗi kí tự ngẫu nhiên của 32 số hexa, như 3c7foj34c3jj973hjkop2fc937e3443.
  • Một cookie được gọi là PHPSESSID sẽ được gửi tự động đến máy tính người dùng để lưu trữ chuỗi định danh session duy nhất ở trên.
  • Một file được tạo tự động trên Server trong thư mục tạm thời đã được chỉ định và nó mang tên của định danh duy nhất và được bắt đầu bằng sess_. Ví dụ như: sess_3c7foj34c3jj973hjkop2fc937e3443.

Khi PHP script muốn lấy giá trị từ một biến session, PHP tự động lấy chuỗi định danh session duy nhất này từ PHPSESSID cookie, sau đó tìm file mang tên đó trong thư mục tạm thời của nó, một xác thực có thể được hoàn thành bằng việc so sánh các giá trị đó.

Một session kết thúc khi người dùng tắt trình duyệt hoặc sau khi rời khỏi site này, Server sẽ chấm dứt session sau một thời gian đã định trước, thường là 30 phút.

Đăng ký bắt đầu tạo một session

Trước khi bạn sử dụng session bạn phải khai báo cho PHP biết bằng cách đặt dòng lệnh session_start() phía trên đầu mỗi file. Nếu bạn dùng nhiều file include lẫn nhau thì đặt nó ở file chính.

Đầu tiên hàm này kiểm tra một session đã được bắt đầu hay chưa, nếu chưa thì nó sẽ bắt đầu một session. Luôn nhớ rằng lời gọi hàm session_start() này được đề nghị đặt ở đầu của mỗi file (trước các thẻ html).

Các biến session được lưu trữ trong mảng liên hợp là $_SESSION[”]. Các biến này có thể được truy cập trong suốt vòng đời của một phiên session.

<?php
// bắt đầu session (luôn đặt ở đầu file)
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Tạo biến session
$_SESSION["user_id"] = "123456";
$_SESSION["username"] = "tanhongit";
echo "Các biến session đã được tạo.";
?>
</body>
</html>
<?php	//Start the session	
session_start();	
?>	
<!DOCTYPE html>	
<html>	
<body>	
<?php	
//Set session variables	
$_SESSION["favcolor"] = "green";	
?>

Lấy và đọc giá trị của Session trong PHP

Bạn hãy tạo 2 file có nội dung code bên dưới. Bạn hãy chạy làn lượt từng file trên trình duyệt và xem kết quả nhé!

Lưu ý rằng các biến session không được chuyển riêng lẻ đến từng trang mới, thay vào đó chúng được truy cập từ session mà chúng ta khai báo ở đầu mỗi trang (session_start()) và các giá trị biến session được lưu trữ trong biến toàn cầu $_SESSION:

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
 
<?php
// Tạo biến session
$_SESSION["user_id"] = "123456";
$_SESSION["username"] = "tanhongit";
echo "Các biến session đã được tạo.";
?>
</body>
</html>
<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
    <?php
    // hiển thị các biến session được tạo ở file session_demo1.php
    echo "user_id là: " . $_SESSION["user_id"] . "<br>";
    echo "username là: " . $_SESSION["username"];
    ?>
</body>
</html>

kết quả bạn sẽ thấy sau khi chạy lần lượt 2 file là thông tin của session được lưu lại:

user_id là: 123456
username là: tanhongit

Ngoài ra để tránh gặp lỗi, các bạn hãy nhớ luôn sử dụng hàm isset() để kiểm tra xem nó có tồn tại hay không rồi hẵn láy nhé! Ví dụ về hàm isset() mình đã có làm nhiều trong các bài viết trước rồi, và mình cũng sẽ có viết riêng 1 bài nói về hàm isset() cho các bạn tham khảo nhé!

Để in tất cả các biến session, sử dụng hàm print_r():

print_r($_SESSION);

Chỉnh sửa, thay đổi giá trị của biến Session trong PHP

Để thay đổi giá trị của một session, ta chỉ cần thiết lập giá trị mới đè lên giá trị cũ của session đó.

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
    <?php    
    $_SESSION["username"] = "tanhongitcom";
    print_r($_SESSION);
    ?>
</body>
</html>

Kết quả: Array ( [user_id] => 123456 [username] => tanhongitcom )

Qua ví dụ dưới đây sẽ cho các bạn thấy rõ hơn về sự thay đổi giá trị của Session.

Ví dụ: Xuất ra số lần truy cập vào trang web thông qua session

<?php
session_start();

if (isset($_SESSION['count'])) {
    $_SESSION['count'] += 1;
} else {
    $_SESSION['count'] = 1;
}
$mess = "Bạn đã truy cập trang này " .  $_SESSION['count'] . " lần trong session này.";
?>
<html>
<body>
    <?php echo ($mess); ?>
</body>
</html>

Sau khi bắt đầu 1 session, ta tạo 1 biến session có tên là count, tiếp tục với biểu thức điều kiện if sẽ kiểm tra số lần load vào trang này và xuất ra tổng số lần. Bạn thử load lại nhiều lần sẽ thấy giá trị của nó thay đổi lần lượt tăng thêm 1.

Các xoá, huỷ một session trong PHP

  • Xóa tất cả biến session đã tạo ta sử dựng hàm session_unset()
  • Xóa luôn toàn bộ session, ta sử dụng hàm session_destroy()
  • Hoặc sử dụng hàm unset() để xóa một biến.

Trong đó hàm unset() dùng để giải phóng một biến ra khỏi bộ nhớ.

// Xóa session username
unset($_SESSION['username']);
  
// Xóa hết session
session_destroy();

BÀI TẬP

  1. Xây dựng ứng dụng lưu phiên đăng nhập người dùng
  2. Xây dựng ứng dụng lưu thông tin giỏ hàng

Kết thúc

Vậy là qua bài viết trên mình đã giới thiệu cho các bạn về session, qua 2 bài vừa rồi nói về cookie, session là 2 khái niệm bạn sẽ phải đụng chạm rất nhiều vào các ứng dụng, các dự án sau này. Các bạn hãy áp dụng thật nhiều để nắm rõ cách sử dụng và hoạt động của nó nhé! Qua bài viết tiếp theo chúng ta sẽ qua một khái niệm mới về file và các hàm xử lý file trong PHP.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 15: Session trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-15-session-trong-php/feed/ 0
Bài 13: Phương thức GET và POST trong PHP https://tanhongit.com/bai-13-phuong-thuc-get-va-post-trong-php/ https://tanhongit.com/bai-13-phuong-thuc-get-va-post-trong-php/#respond Tue, 18 Feb 2020 11:45:18 +0000 https://tanhongit.com/?p=1978 Tiếp tục series học PHP căn bản, ở bài 13 này chúng ta sẽ học về 2 phương thức truyền tải dữ liệu thông dụng trong mô hình Client-Server đó là Get và Post. Các bạn có thể xem lại khái niệm của Client-Server.  Phương thức GET trong PHP Khi người dùng phía client sử […]

The post Bài 13: Phương thức GET và POST trong PHP appeared first on Tân Hồng IT.

]]>
Tiếp tục series học PHP căn bản, ở bài 13 này chúng ta sẽ học về 2 phương thức truyền tải dữ liệu thông dụng trong mô hình Client-Server đó là GetPost. Các bạn có thể xem lại khái niệm của Client-Server. 

get va post trong php
Phương thức GET và POST trong PHP

Phương thức GET trong PHP

Khi người dùng phía client sử dụng phương thức GET gửi dữ liệu lên server thông qua các tham số (parameter) trên thanh địa chỉ URL của Browser. Các tham số trên URL bắt đầu bằng dấu chấm hỏi ( ? ) và được ngăn cách với nhau bởi dấu và ( & ). Server sẽ phân tích tất cả những thông tin đằng sau dấu hỏi (?) chính là phần dữ liệu mà Client gửi lên.

Ví dụ: ta có URL https://tanhongit.net/?p=7740&preview=true

Khi truy cập, từ Server sẽ hiểu giá trị p = 7740 và giá trị preview = true.

Lưu ý 1: khi muốn truyền nhiều cặp giá trị lên Server chúng ta sẽ sử dụng dấu và ( & ), và vị trí các cặp giá trị không quan trọng. Nghĩa là từ ví dụ trên, giá trị preview nằm trước giá trị p cũng được.

Đó là ví dụ về phần Client truy cập từ thanh địa chỉ URL. Chúng ta bây giờ sẽ chuyên sang các vấn đề trong code PHP.

Trong code khi các dữ liệu mà Client gửi lên bằng phương thức GET đều được lưu trong một biến toàn cục mà PHP tự tạo ra đó là biến $_GET. ( $_GET là một biến toàn cục lưu trữ dưới dạng mảng bất tuần tự.)

<?php
$_GET = [
    'name' => 'TanHongIT',
    'website' => 'tanhongit.net'
];
?>  //biến $_GET là một mảng chứa nhiều phần tử

Lưu ý về phương thức GET trong PHP

  • Phương thức GET được giới hạn gửi tối đa chỉ 1024 ký tự.
  • Không bao giờ sử dụng phương thức GET nếu gửi password hoặc thông tin nhay cảm lên Server.
  • GET không thể gửi dữ liệu nhị phân, ví dụ như hình ảnh hoặc các loại tài liệu lên Server.
  • Dữ liệu gửi bởi phương thức GET có thể được truy cập bằng cách sử dụng biến môi trường QUERY_STRING.
  • PHP cung cấp mảng liên hợp $_GET để truy cập tất cả các thông tin đã được gửi bởi phương thức GET.

Ví dụ thực hành

Ví dụ 1: Bạn khởi tạo 1 file demo.php nằm trong thư mục WWW của WampServer hoặc tạo trong thư mục htdocs nếu bạn dùng Xampp, sau đó bạn dán đoạn code bên dưới vào.

<?php
$_GET = [
    'title' => 'TanHongIT',
    'website' => 'tanhongit.net'
];
?> 
<!DOCTYPE html>
<html lang="en">
<body>
    <form action="<?php $_PHP_SELF ?>" method="GET">
        <?php foreach ($_GET as $key => $value){  
            echo $key . ' - ' . $value . '<br>';
        } ?>
        <input type="submit">
    </form>
</body>
</html>

khi truy cập vào http://localhost/demo.php?title=tanhongit&website=tanhongit.net hoặc http://localhost//demo.php thì kết quả đều ra như sau:

title - TanHongIT
website - tanhongit.net

Ở ví dụ trên mình sử dụng phương thức GET ngay trong 1 file duy nhất, mình đã sử dụng vòng lặp Foreach để lấy toàn bộ key và value có trong biến $_GET là một mảng có nhiều phần tử.

GET còn có thể sử dụng để truyền dữ liệu từ file này sang file khác. hãy làm tiếp ví dụ 2.

Ví dụ 2: Tạo 2 file, 1 file có tên get_demo.php và một file demo.html

Đầu tiên, ở trong file demo.html ta sẽ tạo 1 form để lấy dữ liệu nhập vào từ bàn phím và gửi lên server.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <form action="get_demo.php" method="GET"> <!--thêm thuộc tính action chuyển hướng đến file get_demo.php -->
            <div class="form-group">
                <label for="">Title</label>
                <input type="text" class="form-control" id="" placeholder="Nhập vào title..." name="title"> <!--tạo một trường có tên là title để truyền dữ liệu lên file get_demo.php-->
            </div>

            <div class="form-group">
                <label for="">Website</label>
                <input type="text" class="form-control" id="" placeholder="Nhập vào url website..." name="web"> <!--tạo một trường có tên là web để truyền dữ liệu lên file get_demo.php-->
            </div>

            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    </div>
</body>
</html>

Ở file demo.html mình có tạo 2 trường nhập liệu trong form có tên là title web để truyền dữ liệu nhập từ bàn phím vào file get_demo.php

Tiếp theo ta viết code để phía Server xuất ra màn hình sau khi nó đã nhận dữ liệu được nhập vào từ file demo.html thông qua file get_demo.php

<?php
echo 'Kết quả nhập liệu của bạn là: <br>';
echo 'Title: ' . $_GET['title'] . '<br>';
echo 'Website: ' . $_GET['web'];

Hãy test thử bằng cách chạy file demo.html lên theo đường link http://localhost/demo.html sau đó nhập vào các trường dữ liệu và nhấn vào button Submit. Lập tức Server sẽ tự động chuyển link sang file get_demo.php và xuất ra thông tin bạn đã nhập liệu.

demo get php url method get php

Lưu ý 2: Vì đây là phương thức GET nên khi truyền dữ liệu bạn sẽ có 2 cách truyền, 1 là truyền dữ liệu từ form sau đó gửi lên Server, 2 là ta có thể truyền tham số trực tiếp thông qua paramter trên địa chỉ URL

Ví dụ: http://localhost/get_demo.php?title=hello&web=chaomoinguoi.com

Kết quả nhận được sau khi Enter sẽ như hình dưới:

Lưu ý 3: Dùng phương thức GET thì dữ liệu luôn được gửi một cách tường minh, chúng ta có thể thấy mọi thông tin trên URL và có thể chỉnh sửa trực tiếp cho nên nó không bảo mật tốt.
Vì thế khi muốn tạo dữ liệu nào đó ta không nên sử dụng phương thức GET mà phải dùng POST vì GET luôn để lộ thông tin trên địa chỉ URL nên rất dễ bị hack đánh cắp dữ liệu.

Phương thức POST trong PHP

Phương thức POST sẽ trái ngược với phương thức GET về tính bảo mật cũng như tốc độ.

Về phương thức GET, chúng ta có thể xem thông tin trên thanh địa chỉ URL, dữ liệu được gửi đi bằng GET sẽ thông qua các paramter trên URL. POST thì ngược lại, nó không gửi dữ liệu đi bằng paramter trên URL mà thông qua HTTP header, vì vậy việc bảo mật phụ thuộc vào giao thức HTTP mà website đó đang sử dụng.

Parameters được truyền trong request body nên có thể truyền dữ liệu lớn, hạn chế tùy thuộc vào cấu hình của Server. Không cache và bookmark được cũng như không được lưu lại trong browser history. POST không có bất kì hạn chế nào về kích thước dữ liệu sẽ gửi, có thể gửi dữ liệu nhị phân, hình ảnh.

Nội dung dữ liệu được gửi đi bằng phương thức POST sẽ luôn bị ẩn đi và chúng ta không thể thấy được.

Phương thức Post trong mô hình Client-Server

Các bạn hãy tìm hiểu và làm ví dụ bên dưới để hiểu cách phương thức POST truyền dữ liệu lên Server như thế nào nhé!

Phía Client gửi lên

Với phương thức GET, dữ liệu sẽ được thấy trên URL, nhưng phương thức POST thì hoàn toàn ngược lại, POST sẽ phải gửi dữ liệu qua form HTML và các giá trị sẽ được định nghĩa trong các thẻ input gồm các kiểu (textbox, radio, checkbox, password, textarea, hidden) và được nhận dang thông qua tên (name) của các thẻ input đó.

Bạn hãy tạo file demo.html trong thư mục WWW của WampServer hoặc tạo trong thư mục htdocs nếu bạn dùng Xampp và chèn đoạn code bên dưới vào.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <form action="post_demo.php" method="POST"> <!--thêm thuộc tính action chuyển hướng đến file post_demo.php và sử dụng phương thức method = post-->
            <div class="form-group">
                <label for="">Title</label>
                <input type="text" class="form-control" id="" placeholder="Nhập vào title..." name="title"> <!--tạo một trường có tên (name) là title để truyền dữ liệu lên file post_demo.php-->
            </div>
            <div class="form-group">
                <label for="">Website</label>
                <input type="text" class="form-control" id="" placeholder="Nhập vào url website..." name="web"> <!--tạo một trường có tên (name) là web để truyền dữ liệu lên file post_demo.php-->
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    </div>
</body>
</html>

Phần code trên mục đích dùng để nhập liệu từ phía Client để gửi lên Server. Giờ chúng ta sang phần Server.

Phía Server nhận dữ liệu và trả về

Tất cả các dữ liệu gửi bằng phương thức POST đều được lưu trong một biến toàn cục $_POST do PHP tự tạo ra, vì thế từ bây giờ bạn chỉ cần thao tác lấy hoặc gửi dữ liệu thông qua biến $_POST này là được.

Ở file demo.html mình có tạo 2 trường nhập liệu trong form có tên là title web để truyền dữ liệu nhập từ bàn phím vào file post_demo.php. Tiếp theo ta sẽ code trên file post_demo.php để lấy dữ liệu và xuất ra màn hình.

<?php
echo 'Kết quả nhập liệu của bạn là: <br>';
echo 'Title: ' . $_POST['title'] . '<br>';
echo 'Website: ' . $_POST['web'];

Hãy test thử bằng cách chạy file demo.html lên theo đường link http://localhost/demo.html sau đó nhập vào các trường dữ liệu và nhấn vào button Submit. Lập tức Server sẽ tự động chuyển link sang file post_demo.php và xuất ra thông tin bạn đã nhập liệu.

demo post php

Nhưng có một điều khác biệt ở đây bạn cần quan tâm đó là khi sử dụng GET, đường dẫn URL sẽ tiết lộ bất kỳ thông tin mà bạn đã nhập liệu, còn khi đã dùng POST thì bị ẩn.

Điều này chứng minh POST sẽ có tính bảo mật hơn GETPOST sẽ phù hợp với các chức năng về tạo dữ liệu, đăng ký, đăng nhập,…

Những lưu ý cần biết trong phương thức POST trong PHP

  • Phương thức POST không có bất kì hạn chế nào về kích thước dữ liệu sẽ gửi.
  • Phương thức POST có thể sử dụng để gửi ASCII cũng như dữ liệu nhị phân.
  • Dữ liệu gửi bởi phương thức POST thông qua HTTP header, vì vậy việc bảo mật phụ thuộc vào giao thức HTTP. Bằng việc sử dụng Secure HTTP, bạn có thể chắc chắn rằng thông tin của mình là an toàn.
  • PHP cung cấp mảng liên hợp $_POST để truy cập tất cả các thông tin được gửi bằng phương thức POST.

Kiểm tra isset với GET và POST trong PHP

Trước khi lấy một dữ liệu nào đó từ client bạn phải kiểm tra nó đã tồn tại không rồi mới lấy.Vì nếu không kiểm tra trước khi lấy, phía client chưa cung cấp đầy đủ dữ liệu mà server lại nhận thì sẽ có lỗi ngay. Vì thế ở những trường hợp mà ta không chắc chắn một biến luôn tồn tại hoặc một trường dữ liệu được nhập đầy đủ thì hãy kiểm tra nó trước khi gửi request.

Để kiểm tra ta sẽ dùng hàm isset(). Hàm isset() trong PHP có chức năng kiểm tra xem biến có tồn tại hay không. Nó sẽ trả về TRUE nếu biến đó có tồn tại và ngược lại FALSE nếu biến đó không tồn tại. Hàm isset() sẽ dùng cho cả 2 phương thức GET và POST.

Cú pháp: isset($bien);

Trong đó: $bien là biến mà bạn muốn kiểm tra sự tồn tại.

Từ ví dụ về phần POST trong PHP ở trên, nếu bạn trực tiếp truy cập vào http://localhost/post_demo.php mà chưa nhập đầy đủ thông tin ở http://localhost/demo.html thì sẽ xuất hiện lỗi ngay.

Vậy từ ví dụ trên ta chỉ cần thêm vào file file post_demo.php như sau:

<?php
echo 'Kết quả nhập liệu của bạn là: <br>';
if (isset($_POST['title']) && isset($_POST['web'])) {
    echo 'Title: ' . $_POST['title'] . '<br>';
    echo 'Website: ' . $_POST['web'];
}

Bây giờ bạn hãy thử truy cập lại http://localhost/post_demo.php , nếu chưa đươc nhập đủ dữ liệu ở http://localhost/demo.html thì nó sẽ không hiện gì cả, còn nhập đầy đủ các trường dữ liệu thì nó mới hiện lên cho ta xem.

Kết luận: Hàm isset() thật sự rất hữu ích đối với chúng ta trong việc ràng buộc dữ liệu nên các bạn hãy thường xuyên sử dụng để hiểu rõ và áp dụng dễ dàng hơn sau này nhé!

So sánh giống và khác nhau giữa GET và POST

GET và POST hầu như chẳng có gì giống nhau ngoài tác dụng là truyền tải dữ liệu lên Server.

Cho nên mình sẽ nói về những đặc điểm khác nhau của 2 phương thức này nhé!

  1. Giới hạn dữ liệu: GET giới hạn gửi tối đa chỉ 1024 ký tự. Còn POST không có bất kì hạn chế nào về kích thước dữ liệu sẽ gửi.
  2. Khả năng: Phương thức POST có thể sử dụng để gửi ASCII cũng như dữ liệu nhị phân, các loại tệp, hình ảnh còn GET thì không.
  3. Tốc độ: GET nhanh hơn rất nhiều so với POST về quá trình thực thi – vì dữ liệu gửi đi luôn được web browser lưu cached lại. Khi dùng phương thức POST thì server luôn thực thi và trả kết quả cho client, còn dùng GET thì web browser cached sẽ kiểm tra có kết quả tương ứng đó trong bộ nhớ cached chưa, nếu có thì trả về ngay mà không cần đưa tới server.
  4. Bảo mật: Phương thức POST bảo mật hơn GET vì dữ liệu được gửi ngầm, không xuất hiện trên URL, mắt thường không nhìn thấy được và dữ liệu cũng không được lưu lại. Trong khi đó với GET thì dữ liệu gửi đi được tường minh bạn có thể hiển thị lại được các dữ liệu này trên URL.

Link tham khảo: https://www.diffen.com/difference/GET-vs-POST-HTTP-Requests

Khi nào nên dùng GET và POST trong PHP

Cả 2 phương thức đều có những ưu và nhược điểm khác nhau, vậy khi nào chúng ta nên dùng GET và khi nào nên dùng POST.

Phương thức GET có tốc độ thực thi nhanh như độ bảo mật lại rất kém nên GET chỉ nên dùng cho các công việc lấy dữ liệu từ server về client, như vậy quá trình truy xuất sẽ nhanh hơn.

Đối với POST sẽ có độ bảo mật cao nên phù hợp với các công việc tạo dữ liệu, upload, truyền tải thông tin lên server, những công việc mang tính bảo mật cao.

Ví dụ:

  • Khi upload hình ảnh lên web thì ta sẽ dùng POST, còn khi muốn tải ảnh từ Web server về ta sẽ dùng GET.
  • Khi đăng ký, đăng nhập hoặc comment vào một website ta sẽ dùng POST, còn khi lấy tin bài viết từ web ra thì ta dùng GET.
  • Khi request sử dụng câu lệnh select thì dùng GET, khi request có sử dụng lệnh insert update, delete thì nên dùng POST.
  • Ngoài ra khi cần xử lý các thông tin nhạy cảm ví dụ như email, password thì bạn phải sử dụng POST.

Kết thúc

Qua bài viết trên mình đã nếu ra những nội dung liên quan đến 2 phương thức method truyền tải dữ liệu thông dụng trong PHP là GET và POST. Các bạn cần phải hiểu rõ những tính chất của mỗi phương thức này và khi nào nên dùng nó tùy vào từng trường hợp cụ thể.

Nhưng có một điều lưu ý rằng những nội dung, dữ liệu quan trọng hoặc cần truyền tải một loại thông tin gì đó lên server thì ta phải dùng POST để tăng tính bảo mật cho Website nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

via tanhongit.net

CHÚC CÁC BẠN THÀNH CÔNG

The post Bài 13: Phương thức GET và POST trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-13-phuong-thuc-get-va-post-trong-php/feed/ 0
Bài 12: Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP https://tanhongit.com/bai-12-chuoi-string-va-cac-ham-xu-ly-chuoi-trong-php/ https://tanhongit.com/bai-12-chuoi-string-va-cac-ham-xu-ly-chuoi-trong-php/#respond Tue, 18 Feb 2020 10:11:55 +0000 https://tanhongit.com/?p=1967 Tiếp tục series học PHP căn bản, bài này mình sẽ giới thiệu về chuỗi (String) trong PHP và tổng hợp một số hàm xử lý chuỗi nhé! Về chuỗi mình trước đây đã từng có nói sơ qua ở bài 3. các kiểu dữ liệu trong PHP rồi, nhưng ở bài này mình sẽ […]

The post Bài 12: Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP appeared first on Tân Hồng IT.

]]>
Tiếp tục series học PHP căn bản, bài này mình sẽ giới thiệu về chuỗi (String) trong PHP và tổng hợp một số hàm xử lý chuỗi nhé! Về chuỗi mình trước đây đã từng có nói sơ qua ở bài 3. các kiểu dữ liệu trong PHP rồi, nhưng ở bài này mình sẽ giới thiệu lại luôn nhé!

string ham xu ly chuoi trong php
Chuỗi (String) và các hàm xử lý chuỗi trong PHP

Chuỗi trong PHP là gì?

Kiểu chuỗi trong PHP nói đơn giản nó là 1 dãy các ký tự, nó bao gồm string(chuỗi) và kiểu char(ký tự). Để khai báo chuỗi cho 1 biến, các bạn chỉ cần gán 1 chuỗi vào biến đó.

Chuỗi phải được bao quanh bằng dấu nháy đơn  hoặc dấu nháy kép . Chuỗi sử dụng nháy đơn là một chuỗi tĩnh, còn chuỗi sử dụng nháy kép là một chuỗi động, thay đổi tùy theo giá trị của biến.

Không có giới hạn về độ dài của chuỗi, có thể dài tùy ý nếu bộ nhớ cho phép.

Ví dụ:

$string_1 = "Chào mừng đến với tanhongit.net";
$string_2 = "abc 123 hello";

Các chuỗi được giới hạn bởi các dấu nháy kép được PHP xử lý bằng 2 cách sau đây:

  • 1. Các chuỗi kí tự bắt đầu với (\) được thay thế với một kí tự đặc biệt
  • 2. Các biến (bắt đầu với $) được thay thế bằng biểu diễn chuỗi của giá trị của nó.

Các quy tắc thay thế:

  • \n được thay thế bằng ký tự newline (dòng mới)
  • \r được thay thế bởi ký tự carriage-return, được hiểu là đưa con trỏ về đầu dòng nhưng không xuống dòng.
  • \t được thay thế bởi ký tự tab
  • $ được thay thế bằng một dấu $
  • \” được thay thế bằng một dấu nháy kép “
  • \\ được thay thế bằng một dấu nháy đơn \

Các hàm xử lý chuỗi trong PHP

strlen($string)

Hàm này có tác dụng đếm xem chuỗi $string có bao nhiêu ký tự và xuất ra màn hình độ dài của chuỗi.

<?php
      $string = 'tanhongit.net';
      echo strlen($string);
      //kết quả : 13
?>

strpos($string, $keyword)

Hàm này có tác dụng kiểm tra xem đoạn ký tự $keyword có tồn tại trong chuỗi $string hay không và xuất ra màn hình vị trí bắt đầu tồn tại của $keyword đó trong chuỗi.

<?php
      $string = 'tanhongit.net';
      echo strpos($string,'it');
      //kết quả trả về vị trí bắt đầu của chuỗi cần tìm: 7
?>

explode($separator, $string, $limit)

Hàm này sẽ chuyển một chuỗi $string thành một mảng gồm các phần tử là các ký tự trong mảng. Điều kiện tách mảng sẽ là chuỗi ký tự $separator, và giới hạn phần tử sẽ là $limit.

<?php
      $string = 'tanhongit.net welcome';
      var_dump(explode('t',$string)); //nếu không thêm vào giới hạn tách phần tử $limit thì chuỗi sẽ được tách tối đa phần tử
      /*array (size=4)
      0 => string '' (length=0)
      1 => string 'anhongi' (length=7)
      2 => string '.ne' (length=3)
      3 => string ' welcome' (length=8) */

      var_dump(explode('t',$string,2)); //có thêm giới hạn tách chuỗi chỉ gồm 2 phần tử
      /*array (size=2)
      0 => string '' (length=0)
      1 => string 'anhongit.net welcome' (length=20) */
?>

implode($separator, $array)

Hàm này có tác dụng nối tất cả các phần tử của mảng $array thành chuỗi với mỗi phần tử cách nhau bằng chuỗi $separator.

<?php
      $array = array('tanhongit.net','welcome','123456');
      var_dump(implode('-', $array)); 
      //kết quả: 'tanhongit.net-welcome-123456'

      var_dump(implode(' ', $array)); 
      //kết quả : 'tanhongit.net welcome 123456'
?>

str_word_count($string)

Hàm này sẽ đếm tổng số lượng trả về số từ trong chuỗi $string.

<?php
      $string = 'tanhongit.net welcome';
      var_dump(str_word_count($string));
      /*Kết quả: 3 */
?>

substr($string,$start,$length)

Hàm này có tác dụng cắt ra một chuỗi con nằm trong chuỗi $string bắt đầu từ ký tự có vị trí thứ $start và chiều dài chuỗi con là $length

<?php
      $string = 'tanhongit.net welcome';
      echo substr($string,0,9) . '<br>'; // output: tanhongit
      echo substr($string,-4) . '<br>'; // output: come
      echo substr($string,-4,3) . '<br>'; // output: com
      echo substr($string,5) . '<br>'; // output: ngit.net welcome
?>

Nếu $startsố dương thì vị trí bắt đầu sẽ tính từ trái sang phải trong chuỗi. Ngược lại, nếu $startsố âm thì vị trí bắt đầu sẽ được tính từ phải sang trái của chuỗi.

strstr($string, $start_string)

Tác dụng của hàm này sẽ tách một chuỗi con từ chuỗi $string được tính bắt đầu từ $start_string cho đến hết chuỗi cha.

<?php
      $string = 'tanhongit.net welcome';
      echo strstr($string,'net') . '<br>'; // output: net welcome
      echo strstr($string,'n') . '<br>'; // output: nhongit.net welcome
      echo strstr($string,'.') . '<br>'; // output: .net welcome
?>

strtolower($string)

Hàm có tác dụng chuyển chuỗi $string sang dạng chữ thường.

<?php
      $string = 'TANHONGIT.NET';
      echo strtolower($string); //output: tanhongit.net
?>

strtoupper($string)

Hàm có tác dụng chuyển đổi chuỗi $string sang dạng in hoa.

<?php
      $string = 'tanhongit.net';
      echo strtoupper($string); //output: TANHONGIT.NET
?>

strip_tags($string, $allow)

Hàm này sẽ loại bỏ toàn bộ các thẻ html có trong chuỗi $string, trừ các thẻ được cho phép $allow.

<?php
      $string = '<p><b><i>tanhongit.net</i></b></p>';
      echo strip_tags($string); //output: tanhongit.net
      echo strip_tags($string, '<b>'); //output : <b>tanhongit.net</b>
      echo strip_tags($string, '<i>'); //output : <i>tanhongit.net</i>
?>

 

Sẽ còn cập nhật…

Kết thúc

Bài viết này mình đã liệt kê một số hàm thường được sử dụng để xử lý chuỗi trong PHP, Nếu các bạn muốn xem thêm hãy truy cập link này để tham khảo nhé!

Vậy là trong lộ trình học php căn bản thì tới đây mình đã liệt kê hết các kiến thức về chuỗi giúp các bạn học tập. Cho nên sang bài tiếp theo chúng ta sẽ qua một số phương thức bắt buộc phải biết trong PHP nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

via tanhongit.net

CHÚC CÁC BẠN THÀNH CÔNG

The post Bài 12: Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-12-chuoi-string-va-cac-ham-xu-ly-chuoi-trong-php/feed/ 0
Bài 11: Các hàm xử lý mảng (Array) trong PHP https://tanhongit.com/bai-11-cac-ham-xu-ly-mang-array-trong-php/ https://tanhongit.com/bai-11-cac-ham-xu-ly-mang-array-trong-php/#respond Tue, 18 Feb 2020 09:54:49 +0000 https://tanhongit.com/?p=1962 Khái niệm và những vấn đề liền quan về các loại mảng có trong PHP mình đã giới thiệu ở bài 10 : Mảng trong PHP. Tiếp tục series học PHP căn bản, bài này mình sẽ liệt kê các hàm dùng để xử lý mảng hay dùng trong PHP để các bạn tiện tra […]

The post Bài 11: Các hàm xử lý mảng (Array) trong PHP appeared first on Tân Hồng IT.

]]>
Khái niệm và những vấn đề liền quan về các loại mảng có trong PHP mình đã giới thiệu ở bài 10 : Mảng trong PHP. Tiếp tục series học PHP căn bản, bài này mình sẽ liệt kê các hàm dùng để xử lý mảng hay dùng trong PHP để các bạn tiện tra cứu cũng như học tập nhé!

cac ham xu ly mang php
Bài 11: Các hàm xử lý mảng PHP

is_array($array)

Hàm có tác dụng kiểm tra xem một biến có phải mảng hay không. Trả về true nếu là mảng và ngược lại sẽ trả về false.

<?php
   $bien1 = array("tanhongit.net", "php căn bản");
   $bien2 = '';
   var_dump(is_array($bien1)); // Kết quả trả về true 
   var_dump(is_array($bien2)); // Kết quả trả về false
?>

in_array($value,$array)

Hàm có tác dụng kiểm tra xem mảng $array có tồn tại giá trị $value hay không. Nếu có sẽ trả về true và ngược lại trả về false.

<?php
   $bien1 = array("tanhongit.net", "php căn bản");
   var_dump(in_array("tanhongit.net",$bien1)); // Kết quả trả về true 
   var_dump(in_array("hello",$bien1)); // Kết quả trả về false
?>

array_values($array)

Chuyển mảng $array sang dạng mảng chỉ mục.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_values($array));

    /* Kêt quả của mảng là array (size=2)
        0 => string 'tanhongit.net' (length=13)
        1 => string '123456' (length=6)
    ) */
?>

array_count_values($array)

Đếm số lần xuất hiện của các phần tử giống nhau trong mảng $array và trả về một mảng kết quả với các value là các giá trị đếm đó.

<?php
    $array = array('tanhongit.net', 'hello', '123456', 'hello');
    var_dump(array_count_values($array));
    /*array (size=3)
    'tanhongit.net' => int 1
    'hello' => int 2  //'hello xuất hiện 2 lần'
    123456 => int 1 */
?>

array_keys($array)

Hàm này có tác dụng trả về một dạng mảng chỉ mục mà trong mảng đó sẽ có phần tử là key của mảng ban đầu.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_keys($array));

    /* kết quả : array (size=2)
  0 => string 'username' (length=8)
  1 => string 'password' (length=8)
     */
?>

array_change_key_case($array, $case)

Tác dụng của hàm này là chuyển tất cả các chỉ mục key trong mảng $array sang chữ hoa nếu $case = 1 và sang chữ thường nếu $case = 0.

Ta có thể dùng hằng số CASE_UPPER thay cho số 1 và CASE_LOWER thay cho số 0.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    $array = array_change_key_case($array,1);
    var_dump($array);

    /* kết quả : array (size=2)
  'USERNAME' => string 'tanhongit.net' (length=13)
  'PASSWORD' => string '123456' (length=6)
     */
?>

array_key_exists($key,$array)

Kiểm tra xem khoá $keytồn tại trong mảng $array hay không. Nếu có sẽ trả về true và trả về false nếu không có.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_key_exists("username",$array)); //kết quả var_ dump sẽ trả về true
    var_dump(array_key_exists("hello",$array)); //kết quả var_ dump sẽ trả về false
?>

array_pop($array)

Tác dụng của hàm này sẽ cắt phần tử cuối cùng ra khỏi mảng.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_pop($array)); //phần tử cuối cùng sẽ bị cắt mất khỏi mảng
    //kết quả output: '123456' 

    var_dump($array);
    //kết quả màn hình:  array (size=1)
    //'username' => string 'tanhongit.net' (length=13)
?>

Ta có thể xuất ra phần tử đã bị cắt từ hàm array_pop($array) bằng cách gán giá trị của nó vào một biến và xuất biến đó ra. Nhuw sau:

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    $pop = array_pop($array); //gán giá trị đã bị cắt cuối mảng vào 1 biến
    var_dump($array); // xuất mảng
    echo $pop; // xuất giá trị đã bị cắt khỏi mảng bởi hàm array_pop
?>

array_push($array,$value1,$value2…)

Hàm này có tác dụng thêm một hoặc nhiều phần tử vào cuối mảng với các các giá trị $value1, $value2 được truyền vào.

Nếu ta var_dump hàm array_push này thì kết quả màn hình sẽ trả về tổng cộng số lượng phần tử có trong mảng sau khi thêm.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_push($array,"hello")); 
    //kết quả output: 3
    var_dump($array);
    /*kết quả: array (size=3)
    'username' => string 'tanhongit.net' (length=13)
    'password' => string '123456' (length=6)
    0 => string 'hello' (length=5) */
?>

array_shift($array)

Trái ngược với hàm array_pop, hàm array_shift sẽ cắt phần tử đầu tiên trong mảng $array ra khỏi mảng. Ta có thể xuất giá trị đã bị cắt khỏi mảng đó bằng cách gán giá trị của array_shift($array) vào 1 biến và xuất nó ra.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    $shift = array_shift($array); //gán giá trị của phần tử đầu tiên trong mảng đã bị cắt vào 1 biến
    var_dump($array);
    /*kết quả màn hình:  array (size=1)
    'password' => string '123456' (length=6)*/
    echo $shift; //giá trị của phần tử đầu tiên trong mảng đã bị cắt đi

array_unshift($array,$value1,$value2…)

Trái ngược với array_push, hàm array_unshift sẽ thêm một hoặc nhiều phần tử vào đầu mảng với các các giá trị $value1, $value2 được truyền vào.

Nếu ta var_dump hàm array_push này thì kết quả màn hình sẽ trả về tổng cộng số lượng phần tử có trong mảng sau khi thêm.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_unshift($array,"hello")); 
    //kết quả output: 3
    var_dump($array);
    /*kết quả: array (size=3)
  0 => string 'hello' (length=5)
  'username' => string 'tanhongit.net' (length=13)
  'password' => string '123456' (length=6) */
?>

array_combine($array_keys, $array_values)

Tác dụng của hàm là trộn 2 mảng $array_keys$array_values thành một mảng kết hợp. Trong đó, $array_keys là danh sách keys, $array_value là danh sách value tương ứng với key. Với điều kiện là 2 mảng này phải bằng nhau.

<?php
    $array_keys = array('username','password');
    $array_values = array('tanhongit.net','123456');
    
    var_dump(array_combine($array_keys,$array_values)); 
    /*output: array (size=2)
    'username' => string 'tanhongit.net' (length=13)
    'password' => string '123456' (length=6) */
?>

array_merge($array,$array…)

Cao cấp hơn hàm array_combine (chỉ có tác dụng gộp 2 mảng thành 1), hàm array_merge này có tác dụng gộp 2 hoặc nhiều mảng hơn nữa thành 1 mảng duy nhất

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456',
    );
    $array1 = array(1, 2, 3);
    $array2 = array(
      1 => 'hello',
      'name' => 'Hồng'
    );
    var_dump(array_merge($array,$array1,$array2)); 
    /*kết quả: array (size=7)
    'username' => string 'tanhongit.net' (length=13)
    'password' => string '123456' (length=6)
    0 => int 1
    1 => int 2
    2 => int 3
    3 => string 'hello' (length=5)
    'name' => string 'Hồng' (length=4) */
?>

array_rand($array, $number)

Hàm có tác dụng lấy ra key ngẫu nhiên trong mảng với $number là số lượng muốn lấy. Mình sẽ lấy ví dụ tiếp tục từ phần array_merge trên:

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456',
    );
    $array1 = array(1, 2, 3);
    $array2 = array(
      1 => 'hello',
      'name' => 'Hồng'
    );
    echo array_rand(array_merge($array,$array1,$array2));  //lấy 1 phần tử ngẫu nhiên trong mảng kết hợp
    //kêt quả lệnh echo: password

    var_dump(array_rand(array_merge($array,$array1,$array2), 3)); //lấy 3 phần tử ngẫu nhiên trong mảng kết hợp
    /*kết quả: array (size=3)
    0 => string 'password' (length=8)
    1 => int 2
    2 => int 3 */
?>

array_unique($array)

Hàm giúp loại bỏ giá trị trùng nếu có trong mảng $array.

<?php
    $array = array('tanhongit.net', 'hello', '123456', 'hello');
    var_dump(array_unique($array));
    /*array (size=3)
    0 => string 'tanhongit.net' (length=13)
    1 => string 'hello' (length=5)
    2 => string '123456' (length=6) */
?>

array_flip($array)

Hàm này có tác dụng chuyển đổi key của mảng thành value và ngược lại.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_flip($array)); 
    /*kết quả: array (size=2)
  'tanhongit.net' => string 'username' (length=8)
  123456 => string 'password' (length=8) */
?>

array_reverse($array)

Hàm có tác dụng đảo ngược lại vị trí sắp xếp của tất cả phần tử có trong mảng.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456',
    );
    var_dump(array_reverse($array)); 
    /*kết quả: array (size=2)
  'password' => string '123456' (length=6)
  'username' => string 'tanhongit.net' (length=13) */
?>

array_search($keyword, $array)

Hàm có tác dụng tìm kiếm giá trị của mảng và trả về key của phần tử đó nếu có. Trong đó $keyword là giá trị truyền vào, $array là mảng cần tìm.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456',
    );
    var_dump(array_search('tanhongit.net',$array)); 
    /*kết quả: string 'username' (length=8) */
?>

array_slice($array,$begin,$number)

Hàm có tác dụng lấy ra số lượng các phần tử được truyền vào thông qua $number và bắt đầu lấy ra từ $begin trong mảng.

<?php
      $array = array(
      'username' => 'tanhongit.net',
      'password' => '123456',
      );
      var_dump(array_slice($array, 0)); //lấy ra các phần tử bắt đầu từ chỉ mục $key = 0
      /*kết quả: array (size=2)
      'username' => string 'tanhongit.net' (length=13)
      'password' => string '123456' (length=6) */
      var_dump(array_slice($array, 0 , 1)); //lấy ra 1 phần tử bắt đầu từ chỉ mục $key = 0
      /*Kết quả: array (size=1)
      'username' => string 'tanhongit.net' (length=13) */
      var_dump(array_slice($array, 1 , 1)); //lấy ra 1 phần tử bắt đầu từ chỉ mục $key = 1
      /*Kết quả: array (size=1)
      'password' => string '123456' (length=6) */ 
?>

Sẽ còn cập nhật…

Kết thúc

Bài viết này mình đã liệt kê một số hàm thường được sử dụng để xử lý mảng trong PHP, Nếu các bạn muốn xem thêm hãy truy cập link này để tham khảo nhé!

Vậy là trong lộ trình học php căn bản thì tới đây mình đã liệt kê hết các kiến thức về mảng giúp các bạn học tập. Cho nên sang bài tiếp theo chúng ta sẽ qua chuỗi trong PHP và các vấn đề xoay quanh chuỗi nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

via tanhongit.net

CHÚC CÁC BẠN THÀNH CÔNG

The post Bài 11: Các hàm xử lý mảng (Array) trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-11-cac-ham-xu-ly-mang-array-trong-php/feed/ 0