Thứ Sáu, 21 tháng 11, 2014

PDO là gì? Hướng dẫn kết nối cơ sở dữ liệu bằng extension PDO .

PDO là gì?
I. Giới thiệu về PDO:
PDO là cụm từ viết tắt của PHP Data Objects, có nghĩa là Các đối tượng dữ liệu trong PHP (đại loại thế). Đây là một thành phần mở rộng của PHP nhằm cung cấp cho chúng ta một cách thức đơn giản đề truy cập vào các CSDL khác nhau trong PHP.
Nếu như các bạn đã từng lập trình trên .Net, các bạn sẽ thấy một cái gọi là ADO (bản cũ) và ADO.Net, còn nếu các bạn đã từng code bằng Delphi, nó cũng có một món đồ chơi tương tự gọi là BDO, còn trên Java là JDBC... Về cơ bản thì mấy cái này nó giông giống nhau, mà bản chất là cung cấp một mô hình trừu tượng để truy cập tới CSDL. (Có thể coi nó như là một lớp (layer) trong lập trình đa lớp).
Cơ chế làm việc của những cái này có thể được mô hình hoá như sau:
Ứng dụng <----> PDO <---> Trình điều khiển các CSDL <---> Các truy vấn tới CSDL và kết quả trả về từ CSDL <---> CSDL (Access, MySQL, SQL Server, Oracle....).
Chúng ta có thể hình dung rằng mỗi một Hệ quản trị CSDL có một cách quản lý dữ liệu khác nhau, chẳng ai giống ai. Vì vậy, để truy xuất vào một loại CSDL nào đó, chúng ta cần phải khai báo trình điều khiển CSDL tương ứng với loại CSDL đó. Sau khi đã khai báo trình điều khiển, chúng ta có thể kết nối tới CSDL đó, tiến hành các truy vấn (có thể dựa trên ngôn ngữ truy vấn SQL, qua các Stored Procedure... mà CSDL đó hỗ trợ), lấy kết quả về rồi dùng các lệnh khác của PHP xử lý kết quả và hiển thị cho NSD.
Giới thiệu PDO

II. Cài đặt PDO:

PDO chỉ xuất hiện trong PHP từ ver 5 chấm trở đi, vì vậy nếu như server của các bạn chỉ support dưới 5 chấm, hãy chịu khó update lên 5 chấm.
Sau khi cài đặt xong, chúng ta phải mở cái php.ini và enable thư viện này (nếu chưa có) cùng các trình điều khiển tới các CSDL liên quan.
VD dưới đây là dòng lệnh cấu hình trình điều khiển CSDL chạy trên Windows:
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll

III. Thiết lập kết nối tới CSDL:

Đầu tiên, chúng ta cần phải biết rằng PDO thuần tuý là một lớp (class) được dùng để thao tác với CSDL. Vì vậy, nó cũng có các phương thức và thuộc tính như bất kỳ một lớp nào được xây dựng trên PHP.
Sơ đồ PDO và các Hệ Quản Trị CSDL

PDO sử dụng một phương thức mặc định là __construct(). Phương thức này kiêm luôn nhiệm vụ tạo kết nối tới CSDL. Phương thức này có các tham số như sau:
PDO {
PDO __construct(string dsn,
string username,
string password,
array driver_options);
}
Trong đó:
- dsn (Data Source Name) là một chuỗi văn bản chứa các thông tin cần thiết để kết nối tới một CSDL xác định.
- username và password: chứa tên truy cập và mật khẩu của một tài khoản có quyền thao tác trên CSDL đó.
- driver_options là các tham số tuỳ chọn bổ sung nếu cần.
Cái DSN hơi khó nhớ một chút, và nó tuỳ thuộc vào loại CSDL. Nếu cần thiết thì các bạn chịu khó vào Google search. Ví dụ dưới đây là một chuỗi DSN kết nối tới CSDL MySQL:
'mysql:dbname=testdb;host=127.0.0.1';
Ví dụ:
<?php
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
?>
Đoạn mã trên tạo ra một biến $dbh (thể hiện của đối tượng PDO). Vì __construct là phương thức mặc định của PDO nên trong đoạn mã trên chúng ta không cần phải gọi tên phương thức này ra.
IV. Huỷ kết nối tới CSDL:
Để huỷ kết nối, đơn giản chúng ta chỉ việc gán instance của đối tượng đó với giá trị null.
VD:
<?php
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
$dbh=null
?>
Sơ đồ PDO và các Hệ Quản Trị CSDL

V. Sử dụng PDO để truy vấn SQL:
Ở trên, các bạn đã biết cách kết nối và huỷ kết nối tới CSDL. Bây giờ chúng ta sẽ tiến hành thực hiện một truy vấn SQL thông qua PDO.
Để thực hiện một truy vấn SQL, chúng ta sử dụng một phương thức của PDO là exec().
PDO {
int exec(string statement);
}
Trong đó, statement là một câu lệnh SQL. Chú ý rằng câu lệnh SQL này phải chạy được trên CSDL mà ta đang sử dụng, (do mỗi một hệ quản trị CSDL lại có một vài câu lệnh SQL đặc chủng nên ta cần phải chú ý điều này). Phương thức trên trả về kết quả là số "râu" (row - record hay bản ghi) bị ảnh hưởng bởi câu lệnh SQL
Ví dụ dưới đây sử dụng để xoá một vài bản ghi nào đó:
<?php
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
$count = $dbh->exec("DELETE FROM users WHERE user_id<100"); // Xoá bỏ những "tên" có "số" nhỏ hơn 100.
print("Đã xoá bỏ $count người khỏi CSDL.\n");
?>
Nếu như các bạn làm theo những bước ở trên thì chưa đủ, ta phải tìm cách lấy dữ liệu trả về từ các query (VD như truy vấn Select chẳng hạn).
Để làm điều này, trước tiên chúng ta phải sử dụng một phương thức khác của PDO là PDO->query(). Phương thức này có nhiệm vụ thực thi một truy vấn SQL và trả về tập kết quả. Thường thì tập kết quả này sẽ được một lớp đối tượng khác là PDO Statement xử lý. Đây là tập các phương thức chuyên dụng để xử lý kết quả trả về, nó cũng gần giống như cái recordset vậy.
PDO {
PDOStatement query(string sql);
}
Các bạn cần chú ý phân biệt giữa hai phương thức exec() và query(). Exec() thực thi một truy vấn và trả về số các dòng bị ảnh hưởng bởi truy vấn, còn query() trả về một tập kết quả (thường là một recordset hoặc giá trị false). Người ta thường dùng exec() để truy vấn các câu lệnh như Insert, delete, update..., và dùng query() để truy vấn các câu lệnh Select.
Chúng ta có thể lấy kết quả ra theo hai cách: Lấy về từng dòng hay lấy về toàn bộ. Điểm đặc biệt là cũng như với các hàm xử lý MySQL, kết quả trả về thường được lưu trữ dưới dạng một mảng, rất thuận tiện và dễ dùng (hay nói ngắn gọn hơn là ... đại tiện ;D).
PDO và các Hệ quản trị Cơ Sở Dữ Liệu

VI. Lấy kết quả về theo từng dòng:
Để lấy kết quả theo từng dòng (tương tự như hàm mysql_fetch_array()), chúng ta có thể sử dụng phương thức PDOStatement->fetch().
PDOStatement {
mixed fetch(int fetch_style,
int cursor_orientation,
int cursor_offset);
}
Hàm này sử dụng 3 tham số tuỳ chọn:
- Fetch_style xác định cách thức lấy dữ liệu. Nó có thể nhận một trong các giá trị sau:
PDO::FETCH_ASSOC: Trả về một mảng được đánh chỉ số bởi tên cột (field) (Tương tự như MYSQL_ASSOC)
PDO::FETCH_BOTH (mặc định): trả về một mảng được đánh chỉ số bởi tên cột và chỉ số số nguyên bắt đầu từ 0. (tương tự như MYSQL_BOTH)
PDO::FETCH_NUM: trả về một mảng được đánh chỉ số bởi số thứ tự của cột (xuất hiện trên query SELECT), bắt đầu = 0 (Tương tự như MYSQL_NUM)
... và một vài giá trị khác, tham khảo thêm trong manual, nhưng vì chưa đến lúc sờ đến nên CMXQ không liệt kê ở đây.
Cũng tương tự như mysql_fetch_array, phương thức này lấy một dòng từ vị trí con trỏ hiện tại và đẩy con trỏ sang dòng kế tiếp.
Ví dụ:
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
$stmt = $dbh->query("SELECT * FROM user where user_id<10") or die();
echo "<table>";
while (($row = $stmt->fetch(PDO::FETCH_ASSOC))) {
echo "<tr><td>${row['user_name']}<td>${row['e-mail']}\n";
}
echo "</table>";
VII. Lấy toàn bộ dữ liệu và đưa vào mảng:
Để thực hiện điều này, chúng ta cần phải sử dụng một phương thức khác thay cho fetch, đó là fetchall(). Cách thức dùng cũng tương tư nặng thằng fetch, chỉ có điều nó đưa tất cả dữ liệu vào một mảng.
Ví dụ:
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
$stmt = $dbh->query("SELECT * FROM user where user_id<10") or die();
$result=$stmt->fetchAll();
print_r($result);
Sử dụng Prepared statements:
Prepared statement có thể coi là 1 mẫu query được dịch sẵn với các tham số có thể thay đổi được.
Quá trình xử lý (parse/prepare) 1 query của database bao gồm việc phân tích, dịch và tối ưu query trước khi thực hiện nó. Sử dụng prepared statements, query chỉ phải parse 1 lần, sau đó ta có thể dùng lại nó nhiều lần với các tham số khác nhau mà không phải parse lại với mỗi lần thực hiện truy vấn như cách thông thường, nhờ đó sẽ tiết kiệm được tài nguyên và tăng tốc độ ứng dụng. Ngoài ra, sử dụng prepared statements còn giúp tránh được SQL injection.
Để tạo prepared statements, ta sử dụng phương thức: PDO->prepare()
class PDO {
PDOStatement prepare ( string statement [, array driver_options] )
}
Trong đó tham số statement là 1 chuỗi query có sử dụng các placeholder làm tham số đầu vào. Phương thức này trả về 1 đối tượng PDOStatement.
Ví dụ:
<?php
//Tạo database object
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
//Tạo prepared statement
$stmt = $dbh->prepare("INSERT INTO users (name, isMale) VALUES (:name, :ismale)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':ismale', $ismale);
// Thêm record
$name = 'Ácman';
$ismale = 1;
$stmt->execute();
// Thêm record
$name = 'cmxq';
Giải thích:
- Ở VD trên ta sử dụng :name, :ismale làm các placeholder, nơi sẽ nhận các giá trị cụ thể khi thực hiện query. Ngoài cách trên, ta có thể dùng ? làm placeholder. VD:
<?php
$stmt = $dbh->prepare("INSERT INTO users (name, isMale) VALUES (?, ?)");
?>
- Phương thức PDOStatement->bindParam() gắn placeholder với 1 biến, giống như PDOStatement->bindValue(). 2 phương thức này hoàn toàn giống nhau ngoại trừ việc bindParam() gắn biến theo tham chiếu. Placeholder khi được sử dụng dưới dạng ? sẽ được phân biệt bởi thứ tự của chúng. VD:
<?php
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $ismale);
?>
- Phương thức PDOStatemen->execute() thực hiện câu lệnh prepared statement. Tham số truyền vào là 1 mảng. Nếu bỏ trống tham số, phương thức sẽ sử dụng giá trị của các biến mà ta đã gắn cho placeholder. VD:
<?php
$stmt->execute(array(':name'=>'Ácman', ':ismale'=>1));
$stmt->execute(array('cmxq', -1)); //Khi placeholder sử dụng ?
?>

Xem Video Hướng Dẫn PDO:



PHP là gì? Tìm hiểu Ngôn ngữ lập trình PHP? Lịch sử phát triển của PHP?

PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. 
Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
Ngôn ngữ lập trình PHP

PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do Rasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch của ông trên mạng. Ông đã đặt tên cho bộ mã kịch bản này là 'Personal Home Page Tools'. Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra một bộ thực thi bằng C lớn hơn để có thể truy vấn tới các cơ sở dữ liệu và giúp cho người sử dụng phát triển các ứng dụng web đơn giản. Rasmus đã quyết định công bố mã nguồn của PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi có trong nó đồng thời cải tiến mã nguồn.
PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm một số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó có các biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp HTML nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều, đơn giản và có phần thiếu nhất quán.
Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu hút được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền đã được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên mạng Internet. Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh mã nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của một người.
PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một thời gian khá dài chỉ được công bố dưới dạng các bản beta. Nhưng không lâu sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.

PHP 3

PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với các phiên bản PHP mà chúng ta được biết ngày nay. Nó đã được Andi Gutmans và Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước đó. Lý do chính mà họ đã tạo ra phiên bản này là do họ nhận thấy PHP/FI 2.0 hết sức yếu kém trong việc phát triển các ứng dụng thương mại điện tử mà họ đang xúc tiến trong một dự án của trường đại học. Trong một nỗ lực hợp tác và bắt đầu xây dựng dựa trên cơ sở người dùng đã có của PHP/FI, Andi, Rasmus và Zeev đã quyết định hợp tác và công bố PHP 3.0 như là phiên bản thế hệ kế tiếp của PHP/FI 2.0, và chấm dứt phát triển PHP/FI 2.0.
Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở rộng mạnh mẽ của nó. Ngoài khả năng cung cấp cho người dùng cuối một cơ sở hạ tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giao thức và API khác nhau, các tính năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển tham gia và đề xuất các mô đun mở rộng mới. Hoàn toàn có thể kết luận được rằng đây chính là điểm mấu chốt dẫn đến thành công vang dội của PHP 3.0. Các tính năng khác được giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp hướng đối tượng và nhiều cú pháp ngôn ngữ nhất quán khác.
Ngôn ngữ hoàn toàn mới đã được công bố dưới một cái tên mới, xóa bỏ mối liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà cái tên PHP/FI 2.0 gợi nhắc. Nó đã được đặt tên ngắn gọn là 'PHP', một kiểu viết tắt hồi quy của "PHP: Hypertext Preprocessor".
Vào cuối năm 1998, PHP đã phát triển được con số cài đặt lên tới hàng chục ngàn người sử dụng và hàng chục ngàn Web site báo cáo là đã cài nó. Vào thời kì đỉnh cao, PHP 3.0 đã được cài đặt cho xấp xỉ 10% số máy chủ Web có trên mạng Internet.
PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời gian 9 tháng được cộng đồng kiểm nghiệm.
Nguồn gốc ra đời ngôn ngữ lập trình PHP

PHP 4

Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công bố, Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần lõi của PHP. Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng phức tạp, và cải tiến tính mô đun của cơ sở mã PHP. Những ứng dụng như vậy đã chạy được trên PHP 3.0 dựa trên các tính năng mới và sự hỗ trợ khá nhiều các cơ sở dữ liệu và API của bên thứ ba, nhưng PHP 3.0 đã không được thiết kế để xử lý các ứng dụng phức tạp như thế này một cách có hiệu quả.
Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên của Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành công, và lần đầu tiên được giới thiệu vào giữa năm 1999. PHP 4.0, dựa trên động cơ này, và đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức được công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời. Ngoài tốc độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ mới.
Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên mạng Internet.
Nhóm phát triển PHP cũng đã lên tới con số hàng nghìn người và nhiều nghìn người khác tham gia vào các dự án có liên quan đến PHP như PEAR, PECL và tài liệu kĩ thuật cho PHP.

PHP 5

Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát triển PHP tự mãn. Cộng đồng PHP đã nhanh chóng giúp họ nhận ra những yếu kém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP), xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ trợ dịch vụ web yếu. Những điểm này chính là mục đích để Zeev và Andi viết Zend Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot đã cho thấy việc phát triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12 năm 2002nhưng những bài phỏng vấn Zeev liên quan đến phiên bản này thì đã có mặt trên mạng Internet vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã chính thức được công bố để cộng đồng kiểm nghiệm. Đó cũng là phiên bản đầu tiên của Zend Engine 2.0. Phiên bản Beta 2 sau đó đã ra mắt vào tháng 10 năm 2003 với sự xuất hiện của hai tính năng rất được chờ đợi: Iterators, Reflection nhưng namespaces một tính năng gây tranh cãi khác đã bị loại khỏi mã nguồn. Ngày 21 tháng 12 năm 2003: PHP 5 Beta 3 đã được công bố để kiểm tra với việc phân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các hàm PHP bên trong XSLT, sửa chữa nhiều lỗi và thêm khá nhiều hàm mới. PHP 5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP.
Ngày 14 tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu sự chín muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong việc tạo ra một hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực hiện các câu truy vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục có những cải tiến trong nhân Zend Engine 2, nâng cấp mô đun PCRE lên bản PCRE 5.0 cùng những tính năng và cải tiến mới trong SOAP, streams và SPL.
Sơ đồ kết nối PHP và MySQL

PHP 6

Hiện nay phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản sử dụng thử đã có thể được download tại địa chỉ http://snaps.php.net. Phiên bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên bản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn chưa công bố rõ ràng về vấn đề này); hỗ trợ Unicode; sử dụngPDO làm API chuẩn cho việc truy cập cơ sở dữ liệu, các API cũ sẽ bị đưa ra thành thư viện PECL...

CÚ PHÁP


PHP chỉ phân tích các đoạn mã nằm trong những dấu giới hạn của nó. Bất cứ mã nào nằm ngoài những dấu giới hạn đều được xuất ra trực tiếp không thông qua xử lý bởi PHP. Các dấu giới hạn thường dùng nhất là <?php và ?>, tương ứng với dấu giới hạn mở và đóng. Các dấu giới hạn<script language="php"> và </script> cũng đôi khi được sử dụng. Cách viết dấu giới hạn dạng thẻ ngắn cũng có thể được dùng để thông báo bắt đầu đoạn mã PHP, là <? hay <?= (dấu này được sử dụng để in ra (echo) các xâu ký tự hay biến) với thẻ thông báo kết thúc đoạn mã PHP là ?>. Những thẻ này thường xuyên được sử dụng, tuy nhiên giống với những thẻ kiểu ASP (<% hay<%= và %>), chúng không có tính di động cao bởi có thể bị vô hiệu khi cấu hình PHP. Bởi vậy, việc dùng các thẻ dạng ngăn hay các thẻ kiểu ASP không được khuyến khích. Mục đích của những dấu giới hạn này là ngăn cách mã PHP với những đoạn mã thuộc ngôn ngữ khác, gồm cả HTML. Mọi đoạn mã bên ngoài các dấu này đều bị hệ thống phân tích bỏ qua và được xuất ra một cách trựC quan.

Các biến được xác định bằng cách thêm vào trước một dấu đô la ($) và không cần xác định trước kiểu dữ liệu. Không giống với tên hàm và lớp, tên biến là trường hợp nhạy cảm. Cả dấu ngoặc kép ("") và ký hiệu đánh dấu văn bản (<<<EOF EOF;) đều có thể dùng để truyền xâu và giá trị biến. PHP coi xuống dòng như một khoảng trắng theo kiểu như một ngôn ngữ dạng tự do (free-form language) (trừ khi nó nằm trong trích dẫn xâu), và các phát biểu được kết thúc bởi một dấu chấm phẩy. PHP có ba kiểu cú pháp chú thích:/* */ cho phép một đoạn chú thích tùy ý, trong khi đó // và # cho phép chú thích trong phạm vi một dòng. Phát biểu echo là một trong những lệnh của PHP cho phép xuất văn bản (vd. ra một trình duyệt web).
Về cú pháp các từ khóa và ngôn ngữ, PHP tương tự hầu hết các ngôn ngữ lập trình bậc cao có cú pháp kiểu C. Các phát biểu điều kiện If (Nếu), vòng lặp for và while, các hàm trả về đều tương tự cú pháp của các ngôn ngữ như C, C++, Java và Perl.

Sự hưởng ứng PHP ở Việt Nam

Mặc dù đây PHP 5 được coi là đã sẵn sàng cho doanh nghiệp nhưng sự chấp nhận PHP vẫn tiến triển khá chậm chạp đặc biệt là ở Việt Nam. Nhưng những nỗ lực đầu tiên để phổ biến PHP trong đó có dự án xây dựng Quy tắc viết mã PHP tiếng Việt đã được xúc tiến. Ngày 24 tháng 10 năm 2004, nhóm PHPVietnam đã đề xuất xây dựng PHPVietnam Mailing List đầu tiên trên Google Groups tại địa chỉ: http://groups-beta.google.com/group/phpvietnam. Tại đây cũng đã diễn ra những thảo luận để xây dựng diễn đàn cho cộng đồng PHP Việt Nam.

Cộng đồng PHP Việt Nam

Đóng góp của người Việt cho cộng đồng PHP thế giới

Người Việt chưa đóng góp được gì nhiều. Chủ yếu sự tham gia của người Việt là thông qua việc dịch các tập tin ngôn ngữ và dựa trên những ứng dụng PHP sẵn có với các sửa đổi để tạo nên các hệ thống thông tin thuần Việt như NukeViet của nhóm NukeViet (sau đó nhóm này đã tiếp tục phát triển trở thành phần mềm nguồn mở gốc Việt 100% và ngày càng phát triển mạnh trong thời gian gần đây, đây là một trong số ít các trường hợp đặc biệt về các sản phẩm dựa trên nền PHP).
Hình ảnh PHP NukeViet

Đóng góp lớn nhất ghi nhận đến hiện nay là sự xuất hiện của PHP Designer 2006 do Michael Pham (quốc tịch Việt Nam và Đan Mạch) xây dựng. Địa chỉ:http://www.mpsoftware.dk/ hoặc http://www.mpsoftware.eu/
Ngoài ra có nhiều mã nguồn mở viết bằng PHP được người Việt Nam sử dụng nhiều, chẳng hạn như mã nguồn Xtremedia là một hệ thống web giải trí được gọi tắt là "web nhạc", do tác giả Lê Thanh Minh Quân (biệt danh trên mạng là redphoenix89) viết và phát triển. Nó được ưa chuộng vì mã nguồn đơn giản, giao diện bắt mắt, tốc độ nhanh, dung lượng nhẹ (file nén của toàn source chỉ có 112kb - bản 1.1) và đặc biệt là hoàn toàn miễn phí. Nhưng kèm theo đó là rất nhiều lỗi chưa được sửa.
Một số mã nguồn khác là SosoVN của tác giả Nguyễn Tôn Viễn, hay RCMS của Nguyễn Thanh Giang An đều là dạng CMS, tuy nhiên các CMS này chỉ phát hành bản thương mại và do đó ít được phát triển & sử dụng.
Cộng đồng người Việt hiện nay cũng cho ra đời khá nhiều script miễn phí PHP để giúp phát triển PHP ở Việt Nam.
Xem Video Hướng Dẫn Học Lập Trình PHP

Nguồn : Wikipedia

Thứ Ba, 18 tháng 11, 2014

Localhost là gì? Và cách cài đặt ?

Localhost thực chất chính là một webserver gồm Apache, MySQL, PHP và PhpMyadmin (AMPP) được cài đặt chính trên máy tính của bạn, sử dụng ổ cứng máy tính của bạn làm không gian lưu trữ và cài đặt website mà không cần phải mua host.

Localhost là từ ghép của hai chữ “local” và “host”. Local dịch theo nghĩa IT là máy tính của bạn, Host theo nghĩa IT là máy chủ. Vậy localhost nghĩa là một máy chủ được vận hành trên máy tính của bạn.
Localhost bao gồm nhiều ứng dụng đi kèm với nhau và tất cả các ứng dụng đó sẽ kết hợp với nhau để tạo ra một môi trường có thể chạy mã nguồn WordPress trên máy tính của chính bạn bao gồm:
  • Phần mềm Webserver tên Apache, đây là webserver thông dụng nhất.
  • Phần mềm PHP để xử lý mã PHP vì WordPress viết bằng ngôn ngữ PHP.
  • Phần mềm MySQL Server để lưu trữ và xử lý cơ sở dữ liệu, do WordPress sử dụng MySQL làm nền tảng cơ sở dữ liệu. Cơ sở dữ liệu thường được mình viết theo chữ tiếng Anh là database.
  • Phần mềm PHPMyAdmin để xem và quản lý cơ sở dữ liệu MySQL.

Localhost vận hành như thế nào

Khi cài đặt Localhost vào máy tính rồi, thì máy tính của bạn đã có một phần mềm Webserver để chạy ứng dụng website với địa chỉ là http://127.0.0.1. Đây là địa chỉ IP dạng localhost, ngoài ra bạn cũng có thể chạy localhost với đường dẫn là http://localhost.
Thông thường khi cài Localhost, mỗi khi cần sử dụng bạn sẽ cần mở bảng điều khiển của localhost lên và kích hoạt cho nó khởi động các ứng dụng đi kèm.

Lưu ý trước khi cài đặt

Lưu ý nếu bạn dùng Skype

Nếu máy bạn đang cài đặt phần mềm Skype thì localhost sẽ không hoạt động được do Skype đã chiếm quyền sử dụng cổng mạng 80, đây là cổng mặc định của webserver. Do đó, bạn hãy mở Skype -> Tools -> Connection Options -> và bỏ chọn phần “Use port 80 and 443…..” rồi nhập một cổng bất kỳ để Skype sử dụng.
cai-dat-xampp-skype
Hình 1: Tìm hiểu và cài đặt Localhost
Sửa xong, hãy khởi động lại máy để hoàn tất.

Tắt tường lửa

Nếu máy bạn có cài đặt tường lửa từ Windows hay từ một phần mềm Antivirus nào khác thì hãy tắt nó đi vì có thể nó sẽ chặn cổng 80 hoặc các ứng dụng webserver.

Hướng dẫn cài đặt Localhost

Để cài Localhost chúng ta có rất nhiều cách và phần mềm, tuy nhiên nếu bạn là người mới thì mình khuyến khích các bạn dùng phần mềm XAMPP để cài localhost vì:
  • XAMPP hoàn toàn miễn phí.
  • Dễ sử dụng.
  • Hỗ trợ các hệ điều hành thông dụng như Windows, Mac, Linux.
Tuy nhiên trong bài này mình chỉ hướng dẫn cho hệ điều hành Windows.
Để tải XAMPP, đầu tiên bạn truy cập vào địa chỉ https://www.apachefriends.org/download.html và chọn phiên bản XAMPP phù hợp với hệ điều hành của máy tính bạn đang sử dụng, và bạn nên chọn phiên bản PHP 5.4.31. Lưu ý là XAMPP chỉ có phiên bản cho hệ điều hành 32bit nhưng 64bit vẫn hoạt động bình thường.
download-xampp
Hình 2: Tìm hiểu và cài đặt Localhost
Sau khi tải file cài đặt về xong, hãy chạy nó, sau đó chọn Next.
cai-dat-xampp-01
Hình 3: Tìm hiểu và cài đặt Localhost với Xamp
Ở phần chọn Components, bạn chọn danh sách các ứng dụng cần cài như hình dưới vì không phải cái nào trong gói XAMPP ta cũng cần. Sau đó ấn Next tiếp.
cai-dat-xampp-02
Hình 4: Tìm hiểu và cài đặt Localhost - cài đặt
Ở phần chọn đường dẫn, bạn hãy chọn đường dẫn cần lưu cài đặt của XAMPP. Lưu ý rằng đường dẫn này bạn phải nhớ vì khi cài đặt web lên localhost, bạn phải truy cập vào thư mục này. Bạn nên để mặc định là c:\xampp. Tiếp tục ấn Next.
cai-dat-xampp-03
Hình 5: Tìm hiểu và cài đặt Localhost - cài đặt
Ở trang kế tiếp, bạn bỏ chọn phần “Learn more about Bitnami for XAMPP“. Và ấn Next 2 lần nữa để bắt đầu quá trình cài đặt XAMPP.
cai-dat-xampp-04
Hình 6: Tìm hiểu và cài đặt Localhost - cài đặt
Sau khi cài xong, ấn nút Finish để kết thúc cài đặt và mở bảng điều khiển của XAMPP. Tuy nhiên, hãy khởi động lại máy sau khi cài đặt xong để tránh tình trạng không khởi động được localhost.

Khởi động Localhost

Bây giờ bạn hãy vào thư mục c:\xampp và mở file xampp-panel.exe lên để bật bảng điều khiển của XAMPP.

xampp-panel
Hình 7: Tìm hiểu và cài đặt Localhost - cài đặt










Bảng điều khiển của XAMPP

Bạn để ý sẽ thấy hai ứng dụng Apache và MySQL có nút Start, đó là dấu hiệu bảo 2 ứng dụng này chưa được khởi động, hãy ấn vào nút Start của từng ứng dụng để khởi động Webserver Apache và MySQL Server lên thì mới chạy được localhost.
Nếu cả hai ứng dụng chuyển sang màu xanh như hình dưới là đã khởi động thành công.
xampp-panel-start
Hình 8: Tìm hiểu và cài đặt Localhost - cài đặt xamp
Sau khi khởi động xong, bạn hãy truy cập vào website với địa chỉ là http://localhost sẽ thấy nó hiển thị ra trang giới thiệu XAMPP như hình dưới.
xampp-homepage
Hình 9: Giao diện xamp ở localhost
Bạn có thể ấn vào nút English phía bên dưới để truy cập vào trang quản lý localhost.
xampp-manager-page
Hình 10: Giao diện xamp  - localhost
Tạm thời là thế, cách chi tiết cài đặt WordPress vào localhost XAMPP mình sẽ hướng dẫn ở phần sau.

Thêm domain ảo vào Localhost trong XAMPP

Mặc định localhost sẽ chạy với tên miền là http://localhost, http://localhost/website1, http://localhost/website2,…Như thế có vẻ hơi bất tiện và không chuyên nghiệp lắm.
Bạn có thể thay domain đó thành một domain ảo khác như thuatngu.blogspot.com chẳng hạn.

Bước 1. Thiết lập tên miền ảo trỏ về IP 127.0.0.1

Mặc định bạn có thể chạy được tên miền http://localhost là do Windows nó đã trỏ sẵn cái tên này về IP 127.0.0.1, do đó nếu bạn muốn dùng một tên miền khác như thachpham.local thì cũng phải trỏ nó về IP này.
Bạn vào thư mục C:\Windows\System32\drivers\etc và ấn chuột phải vô file hosts rồi chọn Properties.
them-domain-localhost-05
Hình 11: Giao diện xamp  - localhost
Sau đó chuyển qua tab Security và ấn Edit như ảnh dưới.
them-domain-localhost-06
Hình 12: Cấu hình  localhost
Sau đó chọn Users và ấn chọn Full Control như ảnh dưới.
them-domain-localhost-07
Hình 13: Cấu hình localhost
Sau đó lưu lại, và mở file hosts ra rồi chèn đoạn này vào cuối file rồi lưu lại.
127.0.0.1     thachpham.local
Bạn có thể sửa lại tên miền mà bạn cần chèn vào localhost.

Bước 2. Thêm tên miền vào Localhost (VirtualHost)

Để thêm tên miền ảo, đầu tiên là bạn vào thư mục c:\xampp\htdocs và tạo một thư mục dành riêng cho domain ảo đó, ví dụ như thuatngu.blogspot.com.
Sau đó mở bảng điều khiển của XAMPP lên, click vào nút Config của Apache và chọn <Browse> [Apache].
them-domain-localhost-02
hình 13: khởi động localhost
Sau đó vào thư mục conf/extra và mở file httpd-vhost.conf bằng Notepad++.
them-domain-localhost-03

hình 14 : mở file httpd-vhost.conf

Tìm:
##NameVirtualHost *:80
Xóa 2 dấu ## cho thành
NameVirtualHost *:80
Và thêm đoạn này vào cuối file:
01
02
03
04
05
06
07
<VirtualHost *:80>
    ServerAdmin contact@thachpham.com
    DocumentRoot "C:/xampp/htdocs/thachpham.local"
    ServerName thachpham.local
    ErrorLog "logs/thachpham.local-error.log"
    ##CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>
them-domain-localhost-04
hình 15: Vitual Host
Trong đó, bạn cần sửa lại các thông tin sau:
  • ServerAdmin: Email của bạn.
  • DocumentRoot: Đường dẫn tới thư mục mà bạn vừa tạo trong htdocs.
  • ServerName: Tên miền ảo cần sử dụng.
  • ErrorLog: Đường dẫn lưu file thống kê lỗi trong website.
Và thêm đoạn này vào nữa vì nếu không thêm thì khi bạn gõ http://localhost nó sẽ không ra trang quản trị Localhost như lúc đầu:
01
02
03
04
05
06
07
<VirtualHost *:80>
ServerAdmin contact@thachpham.com
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
ErrorLog "logs/local-error.log"
##CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>
Sau đó lưu lại, vào bảng điều khiển XAMPP ấn Stop hết rồi ấn Start lại.
Bây giờ hãy thử truy cập vào tên miền vừa thêm, nếu nó hiển thị ra trang như ở dưới thì thành công.
them-domain-localhost-08
hình 16 : Giao diện  localhost

Cách đổi cổng mạng cho Localhost

Mặc định Localhost sẽ sử dụng cổng 80, bởi vì khi bạn gõ tên miền như http://localhost thì tức là nó đã sử dụng cổng 80 để đọc các dữ liệu web trong localhost. Tuy nhiên nếu như bạn đã dùng cổng 80 cho một ứng dụng khác, hoặc đơn giản là không khởi động Apache được thì bạn nên thiết lập cho Apache trong Localhost sử dụng một cổng khác, như 8080 chẳng hạn.
Để đổi cổng, bạn mở bảng điều khiển XAMPP lên và chọn nút Config của Apache, sau đó chọn Apache (httpd.conf).
doi-port-localhost-01
hình 17 : localhost
Sau đó bạn tìm dòng này:
Listen 80
Đổi thành
Listen 8080
Sau đó bạn Stop cái Apache và Start lại rồi thử truy cập vào localhost theo đường dẫn http://localhost:8080, nếu truy cập được thì bạn đã làm thành công. Và cũng nên lưu ý rằng, sau khi đổi cổng thì mỗi khi truy cập bạn phải sử dụng đường dẫn có kèm theo số cổng bạn vừa đổi sang vì mặc định nếu không điền thì nó sẽ sử dụng cổng 80.
Nếu bạn có sử dụng tên miền ảo như mình hướng dẫn ở trên thì bạn cũng nên sửa lại file C:\xampp\apache\conf\extra\httpd-vhost.conf cho nó sử dụng port 80 thay vì 8080. Tóm lại là trong file này chỗ nào có số 80 bạn đổi thành 8080 hết.

 Thao tác trên localhost

1. Làm việc với thư mục và tập tin

Một điều khá cơ bản nhưng rất quan trọng khi bạn làm việc với website mà bất kể là localhost hay hosting đó là hiểu cơ chế phân thư mục của WordPress.
Như ở trên, mình đã hướng dẫn bạn tạo một thư mục tên là thachpham.local để thêm tên miền ảo http://thuatngu.blogspot.com/ chạy. Vậy bây giờ mình có thể nói, thư mục C:\xampp\htdocs\thuatngu chính là thư mục gốc của tên miền http://thuatngu.blogspot.com/
Bây giờ bạn thử copy một file hình ảnh nào đó vào trong thư mục C:\xampp\htdocs\thuatngu rồi chạy tên miền http://thuatngu.blogspot.com/, bạn sẽ thấy nó liệt kê file mà bạn vừa copy vào.
Nếu bạn click vào file ảnh đó thì trình duyệt sẽ hiển thị ảnh với đường dẫn là http://thachpham.local/Chrysanthemum.jpg. Đây được xem là một link ảnh trong website của bạn.
Tương tự, hãy thử tạo một thư mục bất kỳ rồi copy một file ảnh nào đó vào, thì bây giờ bạn có thể truy cập xem ảnh với đường dẫn là http://thuatngu.blogspot.com/tên-folder/file.jpg.
Như vậy bạn có thể hiểu, cái đường dẫn trên website nó sẽ phân thứ cấp tùy theo cấu trúc thư mục và file trong đó.

2. Tạo cơ sở dữ liệu MySQL (Database)

Thao tác này bạn sẽ phải làm trong bước cài đặt WordPress trên localhost nhưng ở đây mình sẽ hướng dẫn trước để bạn có thể làm thử luôn.
Khi nhắc đến database, bạn phải nhớ là nó bao gồm 3 thành phần chính là:
  • Tên user của database.
  • Mật khẩu của user database.
  • Tên database.
  • Database Host (thường thì điền là localhost, bất kể là bạn dùng ở localhost hay host bình thường).
Bạn hãy tưởng tượng rằng, user của database sẽ có nhiệm vụ đọc và ghi dữ liệu vào database nên khi sử dụng các mã nguồn PHP, bạn phải khai báo cùng lúc cả user của database và tên database.
Đối với localhost, bạn không cần tạo user cho database mà sẽ sử dụng thông tin user như sau:
  • Tên user: root
  • Mật khẩu: bỏ trống
Do vậy, chúng ta chỉ cần tạo database là đủ.
Để tạo database, bạn hãy truy cập vào localhost với đường dẫn http://localhost/phpmyadmin. Sau đó bạn nhấp vào menu Databases.
localhost-tao-database-01
Sau đó ở phần Create databsae, bạn nhập tên database cần tạo vào ô Database name, phần Collation bạn hãy chọn là utf8_unicode_ci như hình dưới rồi ấn nút Create kế bên.
localhost-tao-database-02
Tạo xong hãy nhìn bên menu tay trái, nếu nó xuất hiện tên database vừa tạo là thành công. Vậy bây giờ, chúng ta tạm có một databse với các thông tin như:
  • Database Host: localhost
  • Database user: root
  • Database password: trống
  • Database name: thachphamblog
Còn cách sử dụng với nó như thế nào thì mình sẽ nói ở bước cài WordPress cho thực tế.

Một số câu hỏi liên quan đến localhost

Tôi có thể gửi cho bạn bè tôi xem website ở localhost không?
Không, thân ái.
Sau này tôi có thể chuyển dữ liệu từ localhost lên host trên Internet không?
Hoàn toàn được.
Localhost có bị chậm không?
Hầu như không, trừ khi máy bạn quá yếu.
Localhost có bị hack website không?
Hầu như không nếu máy tính của bạn không bị truy cập bởi một người nào khác.
Xem video hướng dẫn :

Lời kết

Ở trên là toàn bộ những gì bạn cần biết về localhost và nó sẽ đi theo bạn trong suốt quá trình làm việc với website vì host chỉ nên sử dụng để chạy website chính trên internet, còn localhost bạn nên dùng để thử nghiệm hoặc cần chỉnh sửa cái gì đó trong website mà không muốn nó ảnh hưởng trực tiếp đến website chính.
Nguồn : ThachPham