--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

Ngu ngơ học làm web (51) - Biến, hằng, kiểu dữ liệu, toán tử trong PHP

Tiếp theo của: Ngu ngơ học làm web (50) -  Tổng quan về PHP
------

Phần 51.       Biến, hằng, kiểu dữ liệu, toán tử trong PHP


Đây là clip số 2: biến, hằng và kiểu dữ liệu


Biến là một vùng nhớ được đặt tên, tồn tại trong thời gian Server phát sinh trang web, sau đó nó sẽ được xóa bỏ.

Tên biến bắt đầu bằng dấu $, ví dụ $firstName = ‘Teo’.

Dùng dấu chấm (.) để nối chuỗi, ví dụ: $fullName = $firstName . ‘ ’ . $lastName;

Đoạn mã ví dụ,

<?php
  $firstName = 'NguyenVan';
  $lastName = 'Teo';
  $fullName = $firstName . ' ' . $lastName;
  echo $fullName;
?>

Quy ước đặt tên biến:

- Tên biến phải bắt đầu bằng một chữ cái hoặc kí tự gạch dưới (_)

- Tên biến chỉ bao gồm các kí tự, kí số và kí tự gạch dưới

- Tên biến không chứa khoảng trắng

- Tên biến có phân biệt chữ hoa, chữ thường

Nên đặt tên biến theo kiểu camelCase. Ví dụ: $firstName = ‘Teo’;

Một số kiểu dữ liệu của PHP: số (number), chuỗi (string), mảng (array), đối tượng (object), null.

Để xem kiểu dữ liệu của biến, sử dụng hàm gettype($fullName) hoặc var_dump($fullName).

Để đổi kiểu dữ liệu của một biến: ép kiểu hoặc dùng hàm settype().

Ví dụ,

echo (int)12.34;

hoặc

$number = 12.34;
settype($number, 'integer');
echo $number;

Các hàm kiểm tra kiểu, ví dụ: is_numberic(), is_float(), is_string(), is_array(), is_object().

Định nghĩa hằng:

define(“PI”, 3.14);
echo PI;

Đây là clip số 3: toán tử trong PHP



Các toán tử cơ bản
+, -, *, /, % (chia lấy phần dư)
Các viết rút gọn của toán tử cơ bản
+=, -=, *=, /=,
ví dụ: $n = 2; $n += 5; //kết quả $n = 7
Tăng/giảm biến một đơn vị
++, --
Phân biệt $x++ và ++$x
Phân biệt $x++ (lấy giá trị của $x để thực hiện phép toán bên ngoài rồi mới tăng $x lên một đơn vị) và ++$x (tăng $x lên một đơn vị rồi mới lấy giá trị của $x để thực hiện các phép toán bên ngoài)
Ví dụ,
$x = 1;
  $ketQua1 = $x++ + 2;
  echo $ketQua1;
  $x = 1;
  $ketQua2 = ++$x + 2;
  echo ' ' . $ketQua2;
Toán tử so sánh
>, <. >=, <=, <> (khác), == (chỉ xét giá trị), === (xét cả giá trị và kiểu), !=, !==
Toán tử logic
And, or, xor, &&, ||, !
Toán tử điều kiện
(condition) ? value1 : value2;
Thực ra là if(condition == true) thực hiện value1, ngược lại thực hiện value2.
Ví dụ:
$x = 2;
  $y = 5;
  $ketQua = '';
  ($x > $y) ? $ketQua = '$x lớn hơn $y' : $ketQua = '$x không lớn hơn $y';
  echo $ketQua;
Viết kiểu khác:
$x = 2;
  $y = 5;
  $ketQua = ($x > $y) ? '$x lớn hơn $y' : '$x không lớn hơn $y';
  echo $ketQua;

-----------
Cập nhật [7/9/2020]
-----------

Ngu ngơ học làm web (50) - Tổng quan về PHP

Tiếp theo của: Ngu ngơ học làm web (49) -  Phân biệt client-side và server-side
------

Phần 50.       Tổng quan về PHP

Có rất nhiều ngôn ngữ lập trình phía Server, ví dụ C#, Java, Ruby, Python, PHP, JavaScript.

Phần này sẽ học để biết cách sử dụng ngôn ngữ lập trình PHP.

Xem và làm theo loạt bài hướng dẫn do tác giả Lưu Trường Hải Lân chia sẻ.

Đây là clip số 1: tổng quan về PHP


Theo đó PHP là viết tắt của Hypertext Preprocessor, là ngôn ngữ lập trình mã nguồn mở, được thực thi trên máy chủ web.

Phần mở rộng của tập tin mã nguồn là .php.

Trong tập tin .php có thể chứa văn bản, mã HTML, CSS, JavaScript, jQuery…v.v, và mã PHP.

Khi Client yêu cầu một trang web, Web Server sẽ thực hiện việc chuyển từ trang web có mã nguồn là PHP sang mã nguồn là HTML và gửi về cho Client (vì trình duyệt không hiểu và không thông dịch được mã PHP).

Có thể sử dụng rất nhiều chương trình để viết mã PHP, ví dụ: VS code, Sublime text.

Để thực hành theo các clip, vào thư mục C:\xampp\htdocs, tạo một thư mục tên là hocphp, trong đó sẽ chứa các tập tin mã nguồn PHP (ví dụ: testphp.php).

Thẻ để bọc mã PHP là <?php ?>.

Lệnh echo để xuất chuỗi, ví dụ: <?php echo ‘hello’; ?>

Chạy XAMPP, chạy Apache, vào trình duyệt gõ đường dẫn của trang web để xem kết quả, ví dụ: http://localhost/hocphp/testphp.php

Vào Developer tools của trình duyệt, xem mã HTML của trang web đang hiển thị để tìm hiểu thêm về việc chuyển từ trang PHP sang trang HTML.

PHP xem dấu nháy đơn ‘’ và dấu nháy kép “” là “gần” tương đương, ở đây dùng nháy đơn, vì gõ phím nhanh hơn. Đọc thêm về nháy đơn và nháy kép ở đây: http://phanstasmal.github.io/layout/2015/02/06/Nhay-don-vs-nhap-kep-trong-php/

[Việc xác định khác biệt giữa dấu nháy đơn (') và dấu nháy kép (") trong PHP nó như thế nào?

- Dấu nháy đơn ('): Chuỗi trong dấu nháy đơn không được phân tích cú pháp, có nghĩa là những gì được viết trong dấu nháy đơn sẽ được xuất hiện. Các ký ký hiệu \n (xuống dòng), \t (tab) sẽ không được xác định.

- Dấu nháy kép ("): Chuỗi trong dấu nháy kép được phân tích cú pháp và bất kỳ biến trong PHP sẽ được xác định. Các ký ký hiệu \n (xuống dòng), \t (tab) được xác định.

Vì chuỗi trong dấu nháy kép được phân tích trong quá trình thực thi, theo lý thuyết thì sử dụng dấu nháy đơn sẽ cải thiện hiệu suất vì trong PHP không phải đánh giá chuỗi đơn. Điều này đúng với một mô hình nhất định, với ứng dụng trong thực tế nếu ở mức độ trung bình thì sự khác biệt là quá nhỏ nên điều này không thực sự quan trọng. Vì vậy đối với ứng dụng trung bình nó không có vấn đề gì để bạn phải lựa chọn. Nếu với ứng dụng tải rất cao thì bạn nên xem xét lựa chọn.]


Để ghi chú, sử dụng kí hiệu: // hoặc /* */. Trong Sublime text bấm phím tắt Ctrl + / để ghi chú.
-----------
Cập nhật: [7/9/2020]
-----------

Ngu ngơ học làm web (49) - Phân biệt Client-side và Server-side

Tiếp theo của: Ngu ngơ học làm web (48) -  Phân biệt URI, URL và URN
------

Phần 49.       Phân biệt Client-side và Server-side


Tới thời điểm này, không chỉ làm việc trên máy cục bộ, và với trình duyệt nữa, mà phải làm việc với Server, phần mềm Web Server.

Khi người dùng chạy một ứng dụng web (ví dụ openemr), là họ đang sử dụng một ứng dụng theo kiểu Client-Server. Nghĩa là ứng dụng đó sẽ gồm các xử lý ở hai nơi: tại máy của họ (máy Client) và tại máy Server.

Trước khi chuyển qua học ngôn ngữ lập trình PHP, là một ngôn ngữ xử lý tại Server, phần này sẽ tìm hiểu Client-side là gì và Server-side là gì?

Theo wiki, “client-side refers to operations that are performed by the client in a client–server relationship in a computer network. Typically, a client is a computer application, such as a web browser, that runs on a user's local computer or workstation and connects to a server as necessary”.
Tạm hiểu: trong một ứng dụng mạng kiểu Client-Server, Client-side là các hoạt động xảy ra tại trình duyệt của máy Client (máy tính của người dùng).

Cũng theo wiki, “server-side refers to operations that are performed by the server in a client–server relationship in a computer network. Typically, a server is a computer program, such as a web server, that runs on a remote server, reachable from a user's local computer or workstation”.

Tạm hiểu: trong một ứng dụng mạng kiểu Client-Server, Server-side là các hoạt động xảy ra tại Server. Thông thường, Server có thể là một chương trình máy tính, ví dụ phần mềm Web Server chạy trên một máy tính ở xa.


Xem hình minh họa về Client-side và Server-side,



Giải thích hình trên:

- (1) Tại máy tính người dùng, họ nhập địa chỉ của một trang web (hello.php), trình duyệt gửi một request (GET) tới Server, nói “ông Server ơi, cho tôi nội dung của trang hello.php)

- (2) Server nhận được request từ Client, liền thông dịch và thực thi đoạn mã hello.php, kết quả là có một trang HTML (trong này có thể có thêm CSS, JavaScript)

- (3) Server gửi trang HTML kết quả về cho trình duyệt trên máy Client

- (4) Trình duyệt tại máy Client sẽ phân tích mã HTML, mã CSS, thực thi mã JavaScript và kết xuất ra trang web cho người dùng

Như vậy, từ khái niệm Client-side và Server-side, sẽ có một số khái niệm kéo theo,

Ví dụ, lập trình phía Client (Client-side programming) và lập trình phía Server (Server-side programming). Như bài viết này nói rất rõ về nó: http://daonhanit.blogspot.com/2013/07/su-khac-nhau-giua-client-side.html

Vì bài viết có nhiều ý hay, nên chép nguyên về đây để tham khảo:

[Có một điểm chung là dù cho lập trình ở phía Client hay phía Server thì các lập trình viên sẽ sử dụng các ngôn ngữ kịch bản (scripting language) để tạo ra những xử lý. Các ngôn ngữ kịch bản cho phép máy tính tạo ra các phản hồi phức hợp để gửi đi trên mạng.

Client Side Programming:

- Những kịch bản xử lý được viết ở đây sẽ chạy một cách cục bộ trên trình duyệt và hệ điều hành trên máy tính của bạn. Ngôn ngữ kịch bản thông dụng để lập trình ở phía Client là JavaScript và máy tính của bạn cần phải có trình thông dịch của JavaScript  để có thể làm việc với những kịch bản này.

- Khi trình duyệt tải trang web xuống thì những kịch bản này cũng có thể đi theo như là một phần của trang web, nó giúp cho việc lướt web của bạn được cải thiện hơn. Ví dụ: trong quá trình xử lý tác vụ của bạn, trang web cần thực hiện một phép tính, thì kịch bản xử lý này sẽ thực hiện phép tính đó ngay trên máy tính của bạn thay vì phải gửi dữ liệu lên Server và ngồi chờ kết quả được trả về.

- Vấn đề của các kịch bản này đó là nó giới hạn trong việc xử lý (có nghĩa là chỉ có thể dùng cho một vài xử lý nhất định mà thôi) và phụ thuộc rất nhiều vào hệ điều hành và trình duyệt của máy người dùng. Bởi vì phát triển một Website liên quan tới người dùng với vô số tùy chọn về phần mềm  là rất khó khăn cho các lập trình viên có thể kiểm soát được những lỗi có thể phát sinh và  vấn đề tương thích với trình duyệt.

Server Side Programming:

- Những kịch bản xử lý ở phía này sẽ được thực thi trên máy Server và sẽ gửi trả kết quả về cho Client qua mạng. Các ngôn ngữ kịch bản thông dụng dùng để lập trình bên phía Server là: PHP, C#, VB.NET. Những kịch bản xử lý này giảm thiểu số lượng các lỗi cũng như vấn đề tương thích bởi vì những dòng mã trong kịch bản sẽ chạy trên một Server sử dụng một ngôn ngữ nhất định và một phần mềm hosting (lưu trữ Website) nhất định, do đó khi chọn Server để hosting website của bạn điều quan trọng là xem xét Server đó có được cài đặt sẵn và hỗ trợ ngôn ngữ mà bạn dùng hay không.

- Những kịch bản phía Server được dùng để truy cập những xử lý hoặc tài nguyên có trên Server, ví dụ như là cơ sở dữ liệu. Khi bạn muốn lấy truy cập dữ liệu của Server thì những yêu cầu của bạn sẽ được chuyển tới cho những kịch bản xử lý này để chúng thực hiện các truy vấn cơ sở dữ liệu và sẽ trả về cho trình duyệt của bạn kết quả của truy vấn đó.

- Ưu điểm lớn nhất của các kịch bản xử lý phía Server là sự bảo mật hơn hẳn các kịch bản ở Client. Ví dụ: khi bạn truy cập vào tài khoản ngân hàng trực tuyến, các kịch bản xử lý phía Server sẽ giao tiếp với Client bằng những thông điệp được mã hóa. Trong khi kịch bản phía Client chỉ là những văn bản đơn giản, chạy trên máy cục bộ. Bất cứ một "kẻ xấu" nào cũng có thể xem mã, nghe trộm và ăn cắp thông tin cá nhân từ máy tính của bạn.

- Một ưu điểm khác đáng chú ý về kịch bản xử lý phía Server đó là tính tương thích với các trình duyệt của người dùng. Đa số trình duyệt hiện nay cho phép người dùng "tắt" thực thi các kịch bản xử lý phía Client (ví dụ JavaScript) để ngăn chặn hacker tấn công, tuy nhiên chính điều này gây nên vấn đề cho các lập trình viên, những người muốn JavaScript chạy trên máy tính người dùng để ứng dụng Web của họ có thể được tải xuống hoàn toàn. Còn đối với kịch bản phía Server thì không hề có bất cứ sự giới hạn nào.

- Nhược điểm chủ yếu của kịch bản xử lý phía Server là tốn thời gian cũng như chi phí để nhận truy vấn từ người dùng. Thêm vào đó là các lỗi trong kịch bản có thể làm treo toàn bộ hế thống Server.

Tóm lại, với những ưu điểm và nhược điểm của hai loại kịch bản này mà hiện nay giải pháp được nhiều lập trình viên sử dụng đó là kết hợp cả hai cái, tận dụng những ưu điểm của từng loại và giảm thiểu tối đa những khuyết điểm của chúng.]

Xem clip nói về mô hình Client-Server: https://www.youtube.com/watch?v=L5BlpPU_muY

Ghi lại một số ý từ clip,

- Mô hình Client-Server là mô hình xử lý tập trung, các máy tính được chia thành hai nhóm: nhóm tạo yêu cầu (requester) và nhóm đáp ứng (response provider).

- Nhóm tạo yêu cầu là các Client, nhóm đáp ứng là các Server.

- Client có thể là một máy tính, hoặc một chương trình, được sử dụng để tạo ra các yêu cầu.


- Server là một chương trình, luôn lắng nghe và đáp ứng lại các yêu cầu.
-----------
Cập nhật [20/10/2017][2/11/2016]
-----------

Ngu ngơ học làm web (48) - Phân biệt URI, URL và URN

Tiếp theo của: Ngu ngơ học làm web (47) -  Giao thức file
------

Phần 48.       Phân biệt URI, URL và URN


Phần này sẽ phân biệt ba khái niệm là URI, URL và URN.

Sau khi đọc xong bốn tài liệu này:





Tạm hiểu về URI, URL và URN như sau,

URI (Uniform Resource Identifier) – tạm dịch là "định dạng tài nguyên thống nhất" hay "nhận dạng tài nguyên thống nhất": là một chuỗi ký tự, được sử dụng để xác định, nhận dạng một tên hoặc một tài nguyên. Gọi nôm na là chuỗi nhận dạng tài nguyên thống nhất, gọi tắt là chuỗi nhận dạng.

Dùng từ “chuỗi nhận dạng tài nguyên thống nhất” cho khái niệm URI có vẻ dễ hiểu hơn.

Như vậy, để nhận dạng một tài nguyên (URI) sẽ có ba cách: một là dùng tên của tài nguyên, hai là dùng địa chỉ của tài nguyên, ba là kết hợp cả tên và địa chỉ.

Nếu dùng tên để nhận dạng một tài nguyên thì người ta có khái niệm là URN (Uniform Resource Name – tạm dịch là nhận dạng tài nguyên bằng tên), vì tên thì rất dễ bị trùng nên phải thêm các thông tin đi kèm, ví dụ phải được đặt tên theo một hệ thống thống nhất. ISBN là một hệ thống như vậy, ví dụ: urn:isbn:0451450523. Hoặc hệ thống tên của ietf sẽ là urn:ietf:rfc:2648.

Nếu dùng địa chỉ để nhận dạng một tài nguyên thì người ta có khái niệm là URL (Uniform Resource Locator – tạm dịch là nhận dạng tài nguyên bằng địa chỉ), nghĩa là chỉ ra tài nguyên đó nằm ở đâu, hay tới đâu để lấy được tài nguyên đó. Ví dụ, để lấy được tập tin VecScreen.html thì hãy theo địa chỉ (URL) ở hình sau:



Nói nôm na, ví dụ, khi muốn đề cập tới một người nào đó, sẽ có ba cách: một là dùng tên anh ấy, hai là dùng địa chỉ của anh ấy đang ở, ba là dùng cả tên và địa chỉ.

Người ta hay dùng hình sau để nói về mối quan hệ giữa URI, URL và URN,



URL là một loại URI, URN cũng là một loại URI, kết hợp của URL và URN cũng là một loại URI.


Hình dưới đây là một URI gồm cả URL và URN,



-----------
Cập nhật [1/11/2016]
-----------

Ngu ngơ học làm web (47) - Giao thức File

Tiếp theo của: Ngu ngơ học làm web (46) -  Cài đặt và sử dụng XAMPP
------

Phần 47.       Giao thức File

Khi chưa cài đặt Web Server, để xem kết quả trang web (trang HTML) bằng trình duyệt, sẽ bấm chuột phải vào tập tin HTML, sau đó chọn “Open with” bằng một trình duyệt, khi đó, đường dẫn của trang web luôn có dạng là file://, ví dụ:


Như vậy, trình duyệt đã sử dụng giao thức File để truy cập và lấy về nội dung trang web.

Đọc thêm về giao thức File tại các trang web sau đây:



Theo đó,

Giao thức File có tên đầy đủ là giao thức File URI, được đặc tả trong RFC 1630 và RFC 1738, sử dụng để truy cập và lấy về nội dung của thư mục hoặc tập tin bất kì.

URI (Uniform Resource Identifier) – tạm dịch là “định dạng tài nguyên thống nhất” hay “nhận dạng tài nguyên thống nhất”: là một chuỗi ký tự, được sử dụng để xác định, nhận dạng một tên hoặc một tài nguyên.

Ví dụ, trên máy tính đang chạy Windows, gõ dòng lệnh file:///C:/ vào cửa sổ Run và trình duyệt để xem kết quả.

Ví dụ khác, giả sử đã tạo thư mục test và tập tin index.html trong thư mục C:\xampp\htdocs, gõ lệnh file:///C:/xampp/htdocs/test/index.html vào cửa sổ Run và trình duyệt để xem kết quả.

Cú pháp của giao thức File có dạng:

file://host/path

Trong đó,

- host là tên của máy tính dạng FQDN (tên miền dạng đầy đủ)

- path là đường dẫn thư mục.

Nếu tham số host không được cung cấp, giao thức file sẽ ngầm hiểu là truy cập tại máy tính cục bộ (“localhost”), khi đó cú pháp file://host/path sẽ bị lược bớt đi chữ host trở thành  file:///path


Như vậy, khi mở một trang web bằng cách nhập vào đường dẫn kiểu như thế này: file:///C:/xampp/htdocs/test/index.html, nghĩa là trình duyệt đã dùng giao thức File để truy cập và lấy về tập tin mã nguồn (ví dụ: index.html), sau đó sẽ phân tích mã nguồn (parse), kết xuất (render) và hiển thị nội dung của trang web.
-----------
Cập nhật [20/10/2017][1/11/2016]
-----------