Những ebook PHP hay nhất

Chào các bạn,

Hôm nay mình sẽ giới thiệu tới các bạn những ebook PHP hay nhất mà mình đã học và tham khảo. Đây sẽ là nơi tổng hợp những ebook PHP hay nhất mà mình đã biết hoặc chuẩn bị biết.

Không chỉ có ebook PHP Tiếng Việt mà còn có rất nhiều ebook PHP Tiếng Anh sẽ được giới thiệu ở đây!

Trước tiên mình xin giới thiệu cuốn ebook PHP Tiếng Việt là Ngôn ngữ lập trình PHP

Tải về tại đây

Tiếp theo sẽ là các cuốn ebook PHP Tiếng Anh 

1) PHP MySQL And Javascript

2) Programming PHP

3) Beginning PHP 5.3

Nếu các bạn có cuốn sách nào hay thì vui lòng giới thiệu luôn tại topic này nhé!

Cám ơn các bạn! Chúc các bạn học tốt!

Advertisements

Tạo CAPTCHA với PHP

Tất cả các trang web cho phép đăng ký thành viên mới, đều cần tới 1 thứ gọi là CAPTCHA

Vậy CAPTCHA là gì? Và việc tạo CAPTCHA với PHP được tiến hành như thế nào?

CAPTCHA là chữ viết tắt của Completely Automated Public Turing test to tell Computers and Humans Apart, dịch nôm na là Phép thử Turing công cộng hoàn toàn tự động để phân biệt máy tính với người.

Mỗi 1 trang đăng ký sẽ tự động tạo ra 1 mã CAPTCHA. Người dùng nếu không phải là máy thì sẽ điền đúng mã CAPTCHA giống hệt với mã CAPTCHA đã được tạo ra.

Và bây giờ mình sẽ hướng dẫn các bạn tạo CAPTCHA với PHP

1) Các bạn hãy tạo 1 project với cấu trúc như hình vẽ bên dưới

pcaptcha

2) Có 3 file mà các bạn cần quan tâm.

Đó là index.php giúp tạo trang hiển thị

Đó là captcha.php giúp tạo ngẫu nhiên 1 mã CAPTCHA với 6 ký tự

Và cuối cùng là submit.php để kiểm tra xem mã CAPTCHA nhập vào có đúng với mã CAPTCHA đã được sinh ra hay không

3 file đó có code như sau:

index.php

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Tạo captcha với PHP</title>
</head>
<body>
<br />
<center>
<form action=”submit.php” method=”POST”>
<table>
<tr>
<td colspan=”2″><b>Bạn vui lòng nhập mã xác nhận vào ô trống bên dưới</b></td>
</tr>
<tr>
<td><input type=”text” name=”capcode” /></td>
</tr>
<tr>
<td width=”100px”><img src=”captcha.php” /></td>
<td align=”left”><input type=”submit” name=”submit” value=”Submit” /></td>
</tr>
</table>
</form>
</center>
</body>
</html>

captcha.php

<?php

/**
* Đây là nơi giúp tạo ra mã captcha
*
* @author Lưu Văn Phong <luuvanphong@outlook.com>
*/

session_start();
$captcha_arr = array(“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”,
“A”,”B”,”C”,”D”,”E”,”F”,”G”,”H”,”I”,”J”,”K”,”L”,”M”,”N”,”O”,”P”,”Q”,”R”,”S”,”T”,”U”,”V”,”W”,”X”,”Y”,”Z”,
“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”i”,”j”,”k”,”l”,”m”,”n”,”o”,”p”,”q”,”r”,”s”,”t”,”u”,”v”,”w”,”x”,”y”,”z”);
$captcha_index = array_rand($captcha_arr,6);
$captcha = $captcha_arr[$captcha_index[0]].$captcha_arr[$captcha_index[1]].$captcha_arr[$captcha_index[2]].
$captcha_arr[$captcha_index[3]].$captcha_arr[$captcha_index[4]].$captcha_arr[$captcha_index[5]];

$_SESSION[“captcha”] = $captcha;
$image = imagecreatefromjpeg(“images/phpgo_captcha.jpg”);
$color = imagecolorallocate($image,0,100,0);
imagestring($image, 100, 46, 18, $captcha, $color);
header(“Content-type:image/jpeg”);
imagejpeg($image);
?>

submit.php

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Tạo captcha với PHP</title>
</head>
<body>
<?php

/**
* Đây là nơi kiểm tra xem mã nhập vào có giống với mã captcha mà chương trình đã tạo ra hay không
*
* @author Lưu Văn Phong <luuvanphong@outlook.com>
*/
session_start();
if ($_POST[‘capcode’] != $_SESSION[‘captcha’] or $_SESSION[‘captcha’] == ”)
{
echo “Mã nhập vào sai tè le rùi bạn! Vui lòng nhập lại”;
}
else {
echo “Đúng rùi! Bạn chắc chắn không phải là máy!”;
}
?>
</body>
</html>

Đó là tất cả những gì mà các bạn cần để tạo CAPTCHA với PHP

Các bạn có thể tải về toàn bộ source code tại đây!

Chúc các bạn thành công!

Phân trang trong PHP

Phân trang trong PHP hay còn gọi là PHP pagination, là 1 việc rất quan trọng đối với mọi trang web có trang danh sách (trang list).

Với 1 danh sách dài dằng dặc, ví dụ một danh sách liệt kê tất cả các nhân sự của 1 công ty lớn nào đó.

Giả sử công ty đó có 1000 nhân viên. Nếu liệt kê tất cả thông tin của các nhân viên trên cùng 1 trang web thì thật là kinh khủng. Chính vì lẽ đó, việc phân trang trong PHP (PHP pagination) đã ra đời.

Để minh họa cho bài viết hướng dẫn ngay sau đây, mình đã tạo ra 1 project mới tên là Pagination, mô tả lại cách thức phân trang như thế nào trong PHP.

Các bạn có thể tải về source code của project này tại đây!

Thư mục dự án Pagination có cấu trúc như hình dưới:

pagination

1) Trang index.php là trang hiển thị danh sách. (Ex: danh sách các thành viên)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Human Resource Management</title>
</head>
<body>
<br />
<center>
<table border=1>
<tr>
<th>MemberID</th>
<th>MemberName</th>
<th>Birthday</th>
<th>Place</th>
<th>Phone</th>
<th>Email</th>
</tr>
<?php
include_once ‘BizManager/ConnectionManager.php’;
include_once ‘BizManager/PagingManager.php’;

// Show Members List
$paging_instance = new PagingManager();
if (isset($_GET[‘p’]))
{
// Get start record
$start_row = ($_GET[‘p’] * PagingManager::$pagesize) – PagingManager::$pagesize;
}
else
{
$start_row = 0;
}
$result = $paging_instance->getData(“Select * from Members limit $start_row,” . PagingManager::$pagesize);
$select_count = $paging_instance->getData(“Select count(*) from Members”);
$page_count = $select_count/PagingManager::$pagesize;

// Display data in html view
while ($row = mysql_fetch_array($result))
{
echo “<tr>
<td>” . $row[‘MemberID’] . “</td>
<td>” . $row[‘MemberName’] . “</td>
<td>” . $row[‘Birthday’] . “</td>
<td>” . $row[‘Place’] . “</td>
<td>” . $row[‘Phone’] . “</td>
<td>” . $row[‘Email’] . “</td>
</tr>”;
}

echo “<tr>
<td colspan=6>”;
for($i = 1; $i <= ceil($page_count);$i++)
{
echo “<b><a href=” . “?p=$i” . ” style=\”text-decoration:none\”>$i </a></b>”;
}
echo “</td>
</tr>
</table></center>”;
?>
</table>
</center>
</body>
</html>

2) Trang ConnectionManager.php thiết lập thông tin kết nối với mySQL

<?php
/**
* This class contains functions of implementing pagination
*
* @author Luu Van Phong <luuvanphong@outlook.com>
*/
class ConnectionManager {
public static $db_hostname = “localhost”;
public static $db_database = “hrm”; // Human Resource Management
public static $db_username = “root”;
public static $db_password = “”;
}

?>

3) Trang PagingManager.php kết nối và xử lý dữ liệu truyền về từ mySQL

<?php
/**
* This class contains functions of implementing pagination
*
* @author Luu Van Phong <luuvanphong@outlook.com>
*/
class PagingManager {
// PageSize default value
public static $pagesize = 3;

// Connect to mySQL
public function openConnection($hostname, $database, $username, $password)
{
// Connect to the server
$server_connect = mysql_connect($hostname, $username, $password);
if (!$server_connect) die(“Can not connect to the server.<br/>”);

// Connect to get data from database
$db_connect = mysql_select_db($database);
if (!$db_connect) die(“Can not connect to the database.<br/>”);
}

// Close database connection
public function closeConnection()
{
mysql_close();
}

// Select data from the database
public function getData($query)
{
$this->openConnection(ConnectionManager::$db_hostname, ConnectionManager::$db_database,
ConnectionManager::$db_username, ConnectionManager::$db_password);
$result = mysql_query($query);
$this->closeConnection();
return $result;
}
}

?>

À còn file .sql nữa nhỉ?!

Database phục vụ cho project Pagination là hrm

Các bạn tải về tại đây nhé!

Debug với xdebug

Debug trong PHP là một điều vô cùng đơn giản và dễ dàng khi PHP cung cấp cho chúng ta một công cụ debug là xdebug.

xdebug đã được tích hợp sẵn trong PHP rồi. Việc của chúng ta đơn giản là dùng nó thôi.

Để kích hoạt công cụ debug này, chúng ta làm như sau:

Các bạn vào theo đường dẫn: C:\xampp\php\php.ini 

Các bạn kéo xuống dòng gần cuối cùng, các bạn sẽ thấy khu vực bắt đầu bằng [XDebug]

Các bạn hãy bỏ hết comment trong khu vực đó đi. Đơn giản bằng cách bỏ các dấu ; ở trước xdebug.

[XDebug]
zend_extension = “C:\xampp\php\ext\php_xdebug.dll”
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = “C:\xampp\tmp”
xdebug.profiler_output_name = “cachegrind.out.%t-%s”
xdebug.remote_enable = 1
xdebug.remote_handler = “dbgp”
xdebug.remote_host = “127.0.0.1”
xdebug.trace_output_dir = “C:\xampp\tmp”

Các bạn nhớ thiết lập giá trị xdebug.remote_enable = 1 để enable xdebug lên nhé!

Chúc các bạn thành công!

PHP và AngularJS

Nhắc đến AngularJS chắc hẳn nhiều lập trình viên Việt Nam sẽ thấy lạ lẫm. Phần vì AngularJS không nổi tiếng như jQuery nên không thu hút được nhiều sự chú ý, phần vì AngularJS không được ứng dụng nhiều trong các dự án do các lập trình viên Việt Nam làm nên những cái hay cái dở của nó chưa được liệt kê và áp dụng.

Giống như jQuery, AngularJS là một Javascript framework. Nó hoàn toàn miễn phí và do Google nắm bản quyền và hỗ trợ. Cho nên chúng ta hoàn toàn yên tâm về tương lai tươi sáng của nó.

Định nghĩa về AngularJS theo như Wikipedia

AngularJS is an open-source JavaScript framework, maintained by Google, that assists with running what are known as single-page applications. Its goal is to augment browser-based applications with model–view–controller (MVC) capability, in an effort to make both development and testing easier.

The library reads in HTML that contains additional custom tag attributes; it then obeys the directives in those custom attributes, and binds input or output parts of the page to a model represented by standard JavaScript variables. The values of those JavaScript variables can be manually set, or retrieved from static or dynamic JSON resources.

Điều mà mình thấy hấp dẫn nhất ở AngularJS chính là việc nó được thiết kế để hoạt động theo mô hình MVC (Model-View-Controller). Nếu bạn nào đang lập trình PHP thì không thể không biết đến mô hình này. Việc tách bạch giữa các phần trong mô hình MVC khiến cho chúng ta dễ quản lý, code thông thoáng, rõ ràng và dễ dàng trong việc chia sẻ cũng như bảo trì sau này.

Code của AngularJS rất ngắn gọn. Nó ngắn gọn hơn cả code của jQuery.

AngularJS mang trong mình tốc độ xử lý, hiệu năng cao và thật sự mềm dẻo!

 

Hãy cùng học AngularJS và chia sẻ tất cả thông tin về nó nhé!

 

Cài đặt và config CodeIgniter framework với NetBeans

Chào các bạn!

Sau khi đã ngâm cứu cách cài đặt CodeIgniter framework với NetBeans thành công! Hôm nay mình sẽ hướng dẫn các bạn cách cài đặt và config với PHP framework này! Các bước cụ thể như  sau:

1) Các bạn vào trang web sau để tải về CodeIgniter framework mới nhất nhé

http://www.codeigniter.com

2) Các bạn mở NetBeans IDE ra

3) Từ menu, các bạn vào theo đường dẫn sau Tools –> Plugins –> tab Setting –> Click Add và điền vào link download plugin như hình bên dưới.

codeigniter_plugin

4) Sau đó các bạn chuyển qua tab Available Plugins và search với từ khóa là codeigniter –> các bạn Install cả 2 plugins là PHP CI Framework và PHP CI Framework Repository nhé!

codeigniter_install

5) Cuối cùng là đến giai đoạn config đường dẫn đến file CodeIgniter.zip mà các bạn đã download về ở bước 1. Các bạn vào theo đường dẫn Tools –> Options –> PHP tab –> CodeIgniter tab –> Base Files –> Add Zip… –> Browse tới file CodeIgniter

codeigniter_config

Vậy là hoàn thành rùi đó!

Các bạn hãy tạo 1 project mới và sử dụng framework CodeIgniter này nhé!

Chúc các bạn thành công!

Website đa ngôn ngữ trong PHP

Website đa ngôn ngữ trong PHP vẫn luôn là vấn đề muôn thuở của các lập trình viên.

Có 2 cách để hiển thị giao diện đa ngôn ngữ:

Cách 1: Tạo ra các file ngôn ngữ tương ứng. Ví dụ: vi.lng.php và en.lng.php

Cách 2: Sử dụng Google Translate. Tuy nhiên cách này sẽ gặp phải vấn đề là nhỡ đâu Google dịch sai ý nghĩa của câu từ thì sao, hoặc dịch từ tiếng nước ngoài sang tiếng Việt mà chúng ta cảm thấy không ưng ý hay hài lòng.

Trong bài viết hướng dẫn ngay sau đây, mình sẽ hướng dẫn các bạn một cách thật cụ tỉ nhất có thể. Các bạn chỉ cần đọc một lần là sẽ làm được ngay! 

Mình sẽ hướng dẫn các bạn làm theo cách đầu tiên (cách 1).

Đầu tiên các bạn tạo 1 project mới, có cấu trúc thư mục giống như hình bên dưới.

planguage

Đầu tiên các bạn tạo 1 folder và đặt tên nó là languages

Trong folder này, các bạn tạo ra 2 file ngôn ngữ, 1 cho tiếng Việt và 1 cho tiếng Anh. Đó là vi.lng.phpen.lng.php

2 file này có dữ liệu như sau

vi.lng.php

<?php
$main[‘language’] = “Ngôn ngữ”;
$main[‘welcome’] = “Chào mừng đến với blog PHPGO”;
$main[‘author’] = “Đây là blog của tác giả Lưu Văn Phong”;
$main[‘en-en’] = “Tiếng Anh”;
$main[‘en-vi’] = “Tiếng Việt”;
?>

en.lng.php

<?php
$main[‘language’] = “Language”;
$main[‘welcome’] = “Welcome to PHPGO blog”;
$main[‘author’] = “This is the blog of Luu Van Phong”;
$main[‘en-en’] = “English”;
$main[‘en-vi’] = “Vietnamese”;
?>

Các bạn chú ý nhé! Ngôn ngữ cho màn hình nào thì hãy đặt tên sao cho giống với màn hình đó. Ví dụ: mình đang xây dựng đa ngôn ngữ cho màn hình main.php, cho nên như các bạn có thể thấy mình bắt đầu bằng $main[‘language’] = “Language”;

Mình tạo ra một class tên là LanguageHelper để giúp xử lý việc trả về ngôn ngữ mà user đã lựa chọn từ dropdownlist.

<?php
/**
* Hiển thị giao diện đa ngôn ngữ của website
* @author Lưu Văn Phong <luuvanphong@outlook.com>
* @link https://phpgo.wordpress.com Tất cả các vấn đề liên quan đến PHP
*/

class LanguageHelper {
/**
* Kiểm tra xem user chọn hiển thị ngôn ngữ gì từ Dropdownlist
* Nếu chọn Tiếng Việt thì hiển thị Tiếng Việt, ngược lại thì hiển thị Tiếng Anh
* Mặc định ban đầu là Tiếng Việt
*/
function checkLang()
{
if (isset($_GET[‘lang’]))
{
$lang = $_GET[‘lang’];
return “languages/$lang.lng.php”;
}
else return “languages/vi.lng.php”;
}
}
?>

Và cuối cùng là việc hiển thị giao diện đa ngôn ngữ ở trang main.php

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Website đa ngôn ngữ trong PHP</title>
<!– Xử lý việc thay đổi ngôn ngữ khi user lựa chọn trong Dropdownlist –>
<script language=”javascript”>
function changeValue(val)
{
if (val===”vi”) {
window.location.href = “?lang=vi”; }
else {
window.location.href = “?lang=en”; }
}
</script>
</head>
<body>
<?php
/**
* Hiển thị giao diện đa ngôn ngữ của website
* @author Lưu Văn Phong <luuvanphong@outlook.com>
* @link https://phpgo.wordpress.com Tất cả các vấn đề liên quan đến PHP
*/

// Include LanguageHelper class
include_once ‘LanguageHelper.php’;

// Gọi hàm checkLang để xem user chọn ngôn ngữ nào
$object = new LanguageHelper();
$lang = $object->checkLang();

// User chọn ngôn ngữ nào thì mình sẽ include file ngôn ngữ đó vào page
include_once($lang);

// Hiển thị giao diện ngôn ngữ dựa vào option được chọn
$vi = $main[‘en-vi’];
$en = $main[‘en-en’];
$language = $main[‘language’];
$welcome = $main[‘welcome’];
$author = $main[‘author’];

echo <<<_LANGUAGE_
<form>
<b>$language:</b>
<select name=”lang” id=”lang” onchange=”changeValue(this.value)”>

_LANGUAGE_;
if (isset($_GET[‘lang’]))
{
if ($_GET[‘lang’] == “vi”)
{
echo <<<_LANGUAGE_
<option value=”vi” selected=”selected”>$vi</option>
<option value=”en”>$en</option>
_LANGUAGE_;
}
else
{
echo <<<_LANGUAGE_
<option value=”vi”>$vi</option>
<option value=”en” selected=”selected”>$en</option>
_LANGUAGE_;
}
echo <<<_LANGUAGE_
</select>
<p>$welcome</p>
<p>$author</p>
</form>
_LANGUAGE_;
}
else
{
echo <<<_LANGUAGE_
<option value=”vi” selected=”selected”>$vi</option>
<option value=”en”>$en</option>
</select>
<p>$welcome</p>
<p>$author</p>
</form>
_LANGUAGE_;
}
?>
</body>
</html>

Các bạn có thể tải về toàn bộ source code tại đây! Chúc các bạn thành công!  🙂