<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.: Mr.cAm - Y: cuong_pho_nui :. &#187; php</title>
	<atom:link href="http://phamcuong.info/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://phamcuong.info</link>
	<description>Khám phá thế giới (^o^)</description>
	<lastBuildDate>Tue, 27 Jul 2010 03:02:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Công cụ, phần mềm lập trình PHP</title>
		<link>http://phamcuong.info/2010/04/06/cong-c%e1%bb%a5-ph%e1%ba%a7n-m%e1%bb%81m-l%e1%ba%adp-trinh-php/</link>
		<comments>http://phamcuong.info/2010/04/06/cong-c%e1%bb%a5-ph%e1%ba%a7n-m%e1%bb%81m-l%e1%ba%adp-trinh-php/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 00:42:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Phần mềm]]></category>
		<category><![CDATA[CS3]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP designer]]></category>
		<category><![CDATA[portable]]></category>
		<category><![CDATA[USB webserver]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=903</guid>
		<description><![CDATA[Có rất nhiều phần mềm để có thể lập trình PHP, nhưng để dễ dàng cho công việc tớ chọn: Dreamweaver (làm giao diện), Phpdesigner (viết code php), USBwebserver (làm localhost để test &#8211; có đầy đủ Apache, PHP, mySql, smtp &#8230;) Download: Dreamweaver CS3: http://www.mediafire.com/?yjnamwzdta2 - tớ không sử dụng portable CS4 vì nó [...]]]></description>
			<content:encoded><![CDATA[<p>Có rất nhiều phần mềm để có thể lập trình PHP, nhưng để dễ dàng cho công việc tớ chọn: Dreamweaver (làm giao diện), Phpdesigner (viết code php), USBwebserver (làm localhost để test &#8211; có đầy đủ Apache, PHP, mySql, smtp &#8230;)<span id="more-903"></span></p>
<p>Download:</p>
<p>Dreamweaver CS3: <code><code>http://www.mediafire.com/?yjnamwzdta2 - tớ không sử dụng portable CS4 vì nó có rất nhiều lỗi :-s</code></code></p>
<p>PHP designer 6.2.5.2: http://www.mpsoftware-phpdesigner.com/phpdesigner_setup.exe<br />
Serial:<br />
Username: nguyenac-http://mobis.com.vn<br />
Key: B1CE0E832BA3AD8AD8AD8AD8AD8478478478178178578D78288510A20440</p>
<p>USB webserver: http://www.mediafire.com/download.php?inrnqdhnljm</p>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2010/04/06/cong-c%e1%bb%a5-ph%e1%ba%a7n-m%e1%bb%81m-l%e1%ba%adp-trinh-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dùng tiếng việt unicode utf-8 trong php</title>
		<link>http://phamcuong.info/2010/04/06/dung-ti%e1%ba%bfng-vi%e1%bb%87t-unicode-utf-8-trong-php/</link>
		<comments>http://phamcuong.info/2010/04/06/dung-ti%e1%ba%bfng-vi%e1%bb%87t-unicode-utf-8-trong-php/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 00:20:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tiếng việt]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=900</guid>
		<description><![CDATA[Khi chuyển database MySQL từ phiên bản 3.x lên 4.1 trở đi bạn sẽ gặp vấn đề với mã font Unicode, để khắc phục tình trạng này bạn có thể làm theo hướng dẫn sau: 1. Import database vào MySQL 4.1 – 5.0.x: Khi import file database là dạng mã unicode (File sql của bạn [...]]]></description>
			<content:encoded><![CDATA[<p>Khi chuyển database MySQL từ phiên bản 3.x lên 4.1 trở đi bạn sẽ gặp  vấn  đề với mã font Unicode<span id="more-900"></span>, để khắc phục tình trạng này bạn có thể làm  theo hướng  dẫn sau:</p>
<p>1. Import database vào MySQL 4.1 – 5.0.x:<br />
Khi import file  database là dạng mã unicode (File sql của bạn phải chắc  chắn là định dạng  unicode utf8) vào MySQL 4.1 trở lên trước tiên bạn  vào phpMyAdmin tạo database  với Collation của Charset là định dạng utf8  chẳng hạn chọn utf8_general_ci sau  đó click Create như hình sau:<br />
<img src="http://tinypic.com/aotd9v.jpg" alt="Hình ảnh" /><br />
Sau khi tạo xong bạn click chọn SQL để  import database:<br />
<img src="http://tinypic.com/aoteuh.jpg" alt="Hình ảnh" /><br />
Tới đây bạn Browse file database của bạn chú ý muc Character set of the  file  phải để là utf8 click Go để kết thúc import.<br />
Bây giờ bạn có thể xem tiếng  việt thể hiện trong phpMyAdmin đúng theo  đinh dạng unicode utf8.<br />
<img src="http://tinypic.com/aotm6x.jpg" alt="Hình ảnh" /><br />
2. Hiển thị unicode utf8  trên web PHP:<br />
Tuy ở trên bạn đã import và hiển thị đúng với định dạng  unicode utf8  tuy nhiên khi bạn chay một số ứng dụng web PHP của bạn sẽ vẫn gặp  lỗi  hiển thị unicode như sau (font unicode bị hiển thị thành dấu ? và ô  vuông):<br />
<img src="http://tinypic.com/aotmj8.jpg" alt="Hình ảnh" /><br />
Để khắc phục  vấn đề này MySQL cung cấp cho bạn một câu truy vấn SET  NAMES ‘utf8′ , Trong php  sau câu truy vấn kết nối database bạn thực  hiện thêm một câu truy vấn như đoạn  code sau:<br />
Ví dụ:<br />
&lt;?<br />
$dbhost =”localhost”;<br />
$dbname  =”mediaonline “;<br />
$dbuser =”chilinhnet”;<br />
$dbpass =”chilinh”;<br />
$db  =mysql_connect(“$dbhost”,”$dbuser”,”$dbpass”) or die(“Die connect:   “.mysql_error());<br />
mysql_select_db(“$dbname”) or die(“Die select database:   “.mysql_error());<br />
mysql_query(“SET NAMES ‘utf8′”, $db);<br />
?&gt;<br />
Bây  giờ thì bạn hoàn toàn yên tâm với việc thể hiện tiếng việt Unicode  utf8 100%  trên website PHP:<br />
<img src="http://tinypic.com/aotmrk.jpg" alt="Hình ảnh" /><br />
Chú ý: Đối với một số hosting không cho phép bạn tạo Collation Charset  khi  tạo database mới từ phpMyAdmin (thường là các phiên bản phpMyAdmin  cũ) bạn cũng  có thể làm theo cách sau:</p>
<p>Bạn vẫn tạo database và import database bình  thường (Mặc định những  hosting đó sẽ cấu hình MySQL là Latin1), trong trường hợp  có những tùy  chọn Chatset bạn cũng phải chọn là Latin1. Lúc này trong phpMyAdmin  bạn  sẽ không thấy hiển thị tiếng việt Unicode utf8 bởi vì phpMyAdmin đã gắn  đoạn  code SET NAMES ‘utf8′, tuy nhiên khi browse web site php của bạn  sẽ hiển thị  đúng tất nhiên là bạn không được phép sử dụng đoạn code SET  NAMES ‘utf8′ trong  mã lên của bạn khi dùng cách import này.</p>
<div><script type="text/javascript">// <![CDATA[
google_ad_client = "pub-6107623425930461";
google_alternate_color = "FFFFFF";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="9500465767";
google_color_border = "";
google_color_link = "";
google_color_bg = "";
google_color_text = "";
google_color_url = "";
google_ui_features = "rc:10";
// ]]&gt;</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><script type="text/javascript">// <![CDATA[
google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);
// ]]&gt;</script><ins><ins></ins></ins></div>
<p style="text-align: right;"><strong><em>Author:<br />
Lê Chí Linh</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2010/04/06/dung-ti%e1%ba%bfng-vi%e1%bb%87t-unicode-utf-8-trong-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Upload File Lên Server</title>
		<link>http://phamcuong.info/2009/06/04/upload-file-len-server/</link>
		<comments>http://phamcuong.info/2009/06/04/upload-file-len-server/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 05:05:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=177</guid>
		<description><![CDATA[TẠO FORM ĐỂ UPLOAD FILE Form để upload file cần thoã mãn các điều kiện sau: * method là POST * enctype là multipart/form-data Mã HTML của form sẽ từa tựa như sau: &#60;form method=&#8221;POST&#8221; enctype=&#8221;multipart/form-data&#8221; action=&#8221;process_upload.php&#8221;&#62; &#60;input type=&#8221;hidden&#8221; name=&#8221;MAX_FILE_SIZE&#8221; value=&#8221;30000&#8243;&#62; &#60;input type=&#8221;file&#8221; name=&#8221;file_upload&#8221; size=&#8221;20&#8243;&#62; &#60;input type=&#8221;submit&#8221; value=&#8221;Upload&#8221;&#62; &#60;/form&#62; Đoạn code trên sẽ tạo 1 [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;"><strong>TẠO FORM ĐỂ UPLOAD FILE</strong></span></p>
<p><span id="more-177"></span></p>
<p>Form để upload file cần thoã mãn các điều kiện sau:</p>
<p>* method là POST<br />
* enctype là multipart/form-data</p>
<p>Mã HTML của form sẽ từa tựa như sau:</p>
<p>&lt;form method=&#8221;POST&#8221; enctype=&#8221;multipart/form-data&#8221; action=&#8221;process_upload.php&#8221;&gt;<br />
&lt;input type=&#8221;hidden&#8221; name=&#8221;MAX_FILE_SIZE&#8221; value=&#8221;30000&#8243;&gt;<br />
&lt;input type=&#8221;file&#8221; name=&#8221;file_upload&#8221; size=&#8221;20&#8243;&gt;<br />
&lt;input type=&#8221;submit&#8221; value=&#8221;Upload&#8221;&gt;<br />
&lt;/form&gt;</p>
<p>Đoạn code trên sẽ tạo 1 form với 1 nút Browse&#8230; để ban chọn file cần upload, và 1 nút Upload để bạn submit form. Form sẽ được submit tới file process_upload.php nằm cùng thư mục với file chứa form.</p>
<p>Một số browser support MAX_FILE_SIZE sẽ kiểm tra dung lượng file trước khi form được submit, tuy nhiên không phải browser nào cũng vậy. Cho nên bạn đừng nên tin tưởng tuyệt đối vào server! Ở ví dụ trên, nếu browser hỗ trợ, nhưng file có dung lượng lớn hơn 30000 byte sẽ được browser thông báo lỗi khi submit form.</p>
<p><strong>XỬ LÝ DỮ LIỆU ĐƯỢC SUBMIT LÊN SERVER</strong></p>
<p>Bây giờ ta hãy xem xét tới phần xử lý dữ liệu được submit lên server trong file process_upload.php. PHP lưu thông tin về file được upload lên server trong biến global $_FILES. Với form ở ví dụ trên, PHP sẽ truyền cho script process_upload.php các thông tin sau:</p>
<p>* $_FILES['file_upload']['name']: tên file gốc trên máy client. Tuỳ vào browser, tên file có thể được truyền lên server ở dạng C:folderfilename.ext hoặc chỉ là filename.ext. Chương trình phải tự kiểm tra và trích ra tên file nếu cần thiết.<br />
* $_FILES['file_upload']['type']: kiểu của file, được lưu ở dạng MINE (Ví dụ: image/gif, audio/wav).<br />
* $_FILES['file_upload']['size']: dung lượng của file tính theo byte.<br />
* $_FILES['file_upload']['tmp_name']: sau khi upload, server sẽ lưu file vào một file tạm trên server, biến này cho ta biết đường dẫn và tên của file tạm đó. Chương trình sẽ đọc file tạm này để lấy nội dung của file được upload.<br />
* $_FILES['file_upload']['error']: mã lỗi, chương trình nên kiểm tra biến này để bảo đảm rằng quá trình upload không xảy ra lỗi.<br />
o UPLOAD_ERR_OK ( = 0 ): không có lỗi, quá trình upload thành công.<br />
o UPLOAD_ERR_INI_SIZE ( = 1 ): dung lượng file upload vượt quá giới hạn được chỉ định trong file php.ini.<br />
o UPLOAD_ERR_FORM_SIZE ( = 2 ): dung lượng file upload vượt quá giới hạn được chỉnh định bởi MAX_FILE_SIZE.<br />
o UPLOAD_ERR_PARTIAL ( = 3 ): file chỉ được upload 1 phần (có thể là do lỗi đường truyền trong quá trình upload).<br />
o UPLOAD_ERR_NO_FILE ( = 4 ): không có file nào được upload (có thể là file ở client không tồn tại).</p>
<p>Khi đã có toàn bộ các thông tin cần thiết, xử lý file như thế nào là quyến định của bạn. Bạn có thể đọc nội dung của file và lưu vào database, hoặc di chuyển file và lưu vào thư mục upload của bạn. Sau đây là 1 ví dụ của file process_upload.php.</p>
<p>Đầu tiên, kiểm tra xem tác vụ có phải là upload hay không:</p>
<p>if ( $_SERVER["REQUEST_METHOD"] != &#8220;POST&#8221; ) {<br />
//thông báo lỗi không phải là method POST<br />
//và thoát<br />
exit(-1);<br />
} //end if</p>
<p>Tiếp theo kiểm tra xem quá trình upload có lỗi gì không:</p>
<p>if ( !isset($_FILES["file_upload"]["error"] ||<br />
$_FILES["file_upload"]["error"] != 0 ) {<br />
//thông báo lỗi dựa vào giá trị của $_FILES["file_upload"]["error"]<br />
//và thoát<br />
exit(-1);<br />
} //end if</p>
<p>//ta cũng có thể kiểm tra xem dung lượng file có vượt quá giới hạn<br />
//của chương trình hay không<br />
if ( $_FILES["file_upload"]["size"] &gt; $MAX_FILE_SIZE ) {<br />
//thông báo lỗi<br />
//và thoát<br />
exit(-1);<br />
}</p>
<p>Tách tên file từ client:</p>
<p>$temp = preg_split(&#8216;/[/\\]+/&#8217;, $_FILES["file_upload"]["name"]);<br />
$filename = $temp[count($temp)-1];</p>
<p>//ta cũng có thể kiểm tra phần mở rộng của file nếu cần thiết<br />
if ( !preg_match(&#8216;/.(gif|jpg)$/i&#8217;, $filename ) {<br />
//thông báo lỗi file upload không phải là dạng GIF hoặc JPG<br />
//và thoát<br />
exit(-1);<br />
} //end if</p>
<p>Và cuối cùng, lưu file được upload vào nơi cần thiết:</p>
<p>$upload_dir = &#8220;/home/nbthanh/public_html/uploads/&#8221;;<br />
$upload_file = $uploaddir . $filename;<br />
if ( move_uploaded_file($_FILES["file_upload"]["tmp_name"], $upload_file) ) {<br />
//file đã được upload và copy sang thư mục lưu trữ thành công<br />
} else {<br />
//có lỗi xảy ra<br />
} //end if</p>
<p><strong>CÁC HÀM PHP ĐƯỢC DÙNG TRONG VÍ DỤ</strong></p>
<p>* exit: dừng/thoát chương trình ngay lập tức.<br />
* isset: kiểm tra xem biến có tồn tại hay không. Trong ví dụ của bài viết, ta dùng hàm isset để kiểm tra xem biến $_FILES["file_upload"]["error"] có tồn tại hay không.<br />
* preg_split: tách một chuỗi thành từng phần nhỏ theo regular expression. Trong ví dụ của bài viết, ta dùng hàm này để tách tên file cùng đường dẫn ra thành từng phần nhỏ (phân cách nhau bằng ký tự  hoặc /, ta không biết chắc được client là Windows hay Linux nên ta tách theo trường hợp tổng quát). Sau khi tách, phần tử cuối cùng sẽ là tên file.<br />
Một cách khác để lấy tên file là dùng hàm basename. Tuy nhiên sử dụng hàm này sẽ có một số vấn đề nảy sinh, bạn tham khảo thêm ở đây: <a href="http://anonym.to/?http://www.php.net/manual/en/function.basename.php" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.php.net/manual/en/function.basename.php</span></a>.<br />
* count: đếm số lượng phần tử trong mảng. $a[count($a)-1] sẽ truy cập tới phần tử cuối cùng của mảng $a.<br />
* preg_match: sử dụng regular expression để tìm xem chuỗi con có xuất hiện trong chuỗi mẹ hay không. Trong ví dụ của bài viết, ta dùng hàm này để kiểm tra xem tên của của có được kết thúc bằng .gif hoặc .jpg hay không.<br />
* move_uploaded_file: di chuyển file được upload từ client đến 1 thư mục khác trên server.</p>
<p><strong>TÀI LIỆU THAM KHẢO</strong></p>
<p>* PHP Manual: <a href="http://anonym.to/?http://www.php.net/manual/en/index.php" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.php.net/manual/en/index.php</span></a><br />
o Regular Expression Functions (Perl-Compatible): <a href="http://anonym.to/?http://www.php.net/manual/en/ref.pcre.php" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.php.net/manual/en/ref.pcre.php</span></a><br />
o Handling file uploads: <a href="http://anonym.to/?http://www.php.net/manual/en/features.file-upload.php" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.php.net/manual/en/features.file-upload.php</span></a><br />
* Từ Google: từ khoá php tutorial upload file</p>
<p class="MsoNormal" style="text-align: right;">
<p><em><strong>Source from <a href="http://anonym.to/?http://www.diendantinhoc.net/tute/webdev/php/php_by_examples/basic/tute_upload_file.php" target="_blank"><span style="color: #000030; text-decoration: none;">DDTH</span></a></strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2009/06/04/upload-file-len-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thủ thuật php</title>
		<link>http://phamcuong.info/2009/06/04/th%e1%bb%a7-thu%e1%ba%adt-php/</link>
		<comments>http://phamcuong.info/2009/06/04/th%e1%bb%a7-thu%e1%ba%adt-php/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 05:03:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=174</guid>
		<description><![CDATA[Sử dụng PHP để chuyển đến 1 URL khác PHP Code: &#60;?php header(&#8220;Location: http://yoursite.com/&#8221;) ?&#62; Trong HTML bạn có thể sử dụng đoạn mã sau: Code: &#60;html&#62; &#60;head&#62; &#60;title&#62;Please wait&#8230;&#60;/title&#62; &#60;script language=&#8221;JavaScript&#8221;&#62; self.location.href=&#8217;http://yoursite.com/&#8217;; &#60;/script&#62; &#60;/head&#62; &#60;body&#62; &#60;/body&#62; &#60;/html&#62; Bạn sử dụng đoạn PHP sau trong đoạn mà bạn muốn hiển thị: PHP Code: &#60;? $browser [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;">Sử dụng PHP để chuyển đến 1 URL khác</span></p>
<p><span id="more-174"></span></p>
<p>PHP</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&lt;?php </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">header(&#8220;Location: http://yoursite.com/&#8221;) </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">?&gt;</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p>Trong HTML bạn có thể sử dụng đoạn mã sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&lt;html&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>&lt;head&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>&lt;title&gt;Please wait&#8230;&lt;/title&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>&lt;script language=&#8221;JavaScript&#8221;&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>self.location.href=&#8217;http://yoursite.com/&#8217;; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>&lt;/script&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>&lt;/head&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>&lt;body&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>&lt;/body&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>&lt;/html&gt;</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;">Bạn sử dụng đoạn PHP sau trong đoạn mà bạn muốn hiển thị:</span></p>
<p>PHP</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&lt;?<span> </span></span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$browser = &#8220;$HTTP_USER_AGENT&#8221;;<span> </span></span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">print(&#8220;Bạn đang sử dụng: $browser&#8221;) </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">?&gt; </span></p>
</blockquote>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
hoặc</span></p>
<p>PHP</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">print(&#8220;&lt;font color=&#8221;red&#8221;&gt; Bạn đang sử dụng: $browser &lt;font&gt;&#8221;)</span></p>
</blockquote>
<p class="MsoNormal">Còn cập nhật thêm</p>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2009/06/04/th%e1%bb%a7-thu%e1%ba%adt-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tương tác với server bằng form</title>
		<link>http://phamcuong.info/2009/06/04/t%c6%b0%c6%a1ng-tac-v%e1%bb%9bi-server-b%e1%ba%b1ng-form/</link>
		<comments>http://phamcuong.info/2009/06/04/t%c6%b0%c6%a1ng-tac-v%e1%bb%9bi-server-b%e1%ba%b1ng-form/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 05:02:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=171</guid>
		<description><![CDATA[Việc tương tác với server bằng form có lẽ là một trong những công việc mà các bạn rất hay gặp khi lập trình web. Hãy nghĩ đơn giản, dưới góc độ một user trong UDS, bạn đã phải tương tác với bao nhiêu là form: form register, form login, form post bài nhanh &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;">Việc tương tác với server bằng form có lẽ là một trong những công việc mà các bạn rất hay gặp khi lập trình web.<span id="more-171"></span> Hãy nghĩ đơn giản, dưới góc độ một user trong UDS, bạn đã phải tương tác với bao nhiêu là form: form register, form login, form post bài nhanh &#8211; post bài advance, form để report cho mod&#8230; Nhiều quá hóa&#8230; chóng mặt <!--[if gte vml 1]><v:shapetype  id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"  path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:13.5pt;  height:13.5pt'> <v:imagedata src="file:///C:UsersCAMAppDataLocalTempmsohtml11clip_image001.gif" mce_src="file:///C:UsersCAMAppDataLocalTempmsohtml11clip_image001.gif"   o:href="file:///D:BAIHOCphpupdatesoftsTương%20tác%20với%20server%20bằng%20form%20-%20Updatesofts%20Forums_files4.gif" /> <o:lock v:ext="edit" cropping="t" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span></p>
<p>Các form đó đều có điểm chung: Đều được viết bằng HTML. Hãy cùng nhắc lại đôi chút về cách tạo form với HTML:</p>
<p>Trước hết, bạn hãy dành 30 giây trong quỹ thời gian &#8220;ít ỏi&#8221; của mình để ngẫm lại: HTML có cấu trúc như thế nào?</p>
<p>Nói một cách ngắn gọn, một file HTML có cấu tạo như sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">HTML Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;html&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;head&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;title&gt;<em>&lt;!&#8211; Tiêu đề &#8211;&gt;</em>&lt;/title&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;/head&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;body&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;!&#8211; Nội dung &#8211;&gt;</span></em></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;/body&gt;</span></p>
<p>&lt;/html&gt;</p></blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Form trong HTML được đặt trong phần &lt;body&gt;&lt;/body&gt;. Ví dụ như sau:</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">HTML Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">&lt;form action=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: blue;">&#8220;process.php&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> method=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: blue;">&#8220;GET&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>Tên: </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">&lt;input type=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: blue;">&#8220;text&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> name=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: blue;">&#8220;name&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> /&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;br /&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>Tuổi: </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">&lt;input type=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: blue;">&#8220;text&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> name=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: blue;">&#8220;age&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> /&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: navy;">&lt;br /&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">&lt;input type=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: blue;">&#8220;submit&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> value=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: blue;">&#8220;Submit!&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> /&gt;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">&lt;/form&gt;</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p>Đoạn code HTML trên có tác dụng gì? Rất đơn giản, nó giúp tạo ra 1 form với 2 ô để nhập dữ liệu: Tên và tuổi. Kèm theo đó là 1 nút lệnh mang chữ Submit. Rất giản dị và ko có gì khó hiểu ở đây cả.</p>
<p>À, có 1 điều này cần giải thích: Ở dòng đầu tiên của đoạn code, thẻ form có 2 thuộc tính: action và method. Hai thuộc tính này có mục đích gì?</p>
<p>1. action=&#8221;process.php&#8221; nghĩa là sau khi bấm submit, dữ liệu sẽ được chuyển qua file process.php nằm cùng thư mục với file HTML này<br />
2. method=&#8221;GET&#8221; nghĩa là phương thức truyền dữ liệu sẽ là GET.</p>
<p>Vậy, bạn đã biết dữ liệu sẽ được chuyển qua file process.php, mà hiển nhiên file process.php này chưa tồn tại, nên một điều rất tự nhiên là ta sẽ tạo file process.php với nội dung sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">&lt;?php </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> $name </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">= </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$_GET</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">[</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">"name"</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">]; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$age </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">= </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$_GET</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">[</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">"age"</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">]; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> echo </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">&#8220;Tên bạn: $name&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> echo </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">&#8220;Tuổi của bạn: $age&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">?&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Hai dòng cuối của ví dụ trên có lẽ chẳng có j` để bàn. Chỉ đơn giản là echo 2 biến $name và $age ra màn hình. Vấn đề nằm trong 2 dòng đầu.</span></p>
<p>Ta lấy dòng thứ 1 để mổ xẻ: $name = $_GET["name"]; Ở đây ai cũng biết giá trị của $name được gán từ $_GET["name"]. Vậy là chỉ còn duy nhất 1 điều cần thắc mắc: $_GET là gì?</p>
<p>$_GET là mảng để chứa các giá trị được chuyển từ form sang. Ở đây $_GET gồm 2 phần tử: $_GET["name"] và $_GET["age"].</p>
<p>Mọi vấn đề đến đây được giải quyết.</p>
<p>Giờ ta thử xét form ở Ví dụ ban đầu. Bạn hãy làm một phép thay đổi nhỏ: Đổi method=&#8221;GET&#8221; bằng method=&#8221;POST&#8221;.</p>
<p>Khi đó hiển nhiên process.php sẽ ko hoạt động <!--[if gte vml 1]><v:shape id="_x0000_i1026"  type="#_x0000_t75" alt="" style='width:13.5pt;height:13.5pt'> <v:imagedata src="file:///C:UsersCAMAppDataLocalTempmsohtml11clip_image002.gif" mce_src="file:///C:UsersCAMAppDataLocalTempmsohtml11clip_image002.gif"   o:href="file:///D:BAIHOCphpupdatesoftsTương%20tác%20với%20server%20bằng%20form%20-%20Updatesofts%20Forums_files22.gif" /> <o:lock v:ext="edit" cropping="t" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]--></p>
<p>Nếu suy diễn một cách educated, bạn sẽ ngay lập tức sửa sai bằng cách thay đổi $_GET bằng $_POST. Kết quả? Đúng goài <!--[if gte vml 1]><v:shape id="_x0000_i1027"  type="#_x0000_t75" alt="" style='width:13.5pt;height:13.5pt'> <v:imagedata src="file:///C:UsersCAMAppDataLocalTempmsohtml11clip_image001.gif" mce_src="file:///C:UsersCAMAppDataLocalTempmsohtml11clip_image001.gif"   o:href="file:///D:BAIHOCphpupdatesoftsTương%20tác%20với%20server%20bằng%20form%20-%20Updatesofts%20Forums_files4.gif" /> <o:lock v:ext="edit" cropping="t" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]--></p>
<p>Đến đây ta có thể sung sướng rút ra kết luận: Để nhận biến từ form chuyển sang, có thể sử dụng mảng $_GET hoặc $_POST, tùy vào phương thức truyền dữ liệu của form.</p>
<p>Bài học kết thúc ở đây được rồi nhỉ? <!--[if gte vml 1]><v:shape id="_x0000_i1028"  type="#_x0000_t75" alt="" style='width:13.5pt;height:13.5pt'> <v:imagedata src="file:///C:UsersCAMAppDataLocalTempmsohtml11clip_image001.gif" mce_src="file:///C:UsersCAMAppDataLocalTempmsohtml11clip_image001.gif"   o:href="file:///D:BAIHOCphpupdatesoftsTương%20tác%20với%20server%20bằng%20form%20-%20Updatesofts%20Forums_files4.gif" /> <o:lock v:ext="edit" cropping="t" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]--></p>
<p>Chưa đâu bạn ạ. Còn một điều chưa nói đến: Sự khác nhau giữa $_GET và $_POST là j`? Hay đúng hơn, sự khác nhau giữ method GET và POST là gì?</p>
<p>Nói đến GET và POST, trước hết ta sẽ nói đến HTTP Request.</p>
<p>Một HTTP Request được gửi tới server có định dạng như sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&lt;request-line&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&lt;headers&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&lt;blank line&gt; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">[&lt;request-body&gt;] </span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Một HTTP Request được gửi tới trang web <a href="http://anonym.to/?http://www.abc.com" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.abc.com</span></a> từ trình duyệt Firefox sẽ tương tự như ví dụ sau:</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">GET / HTTP/1.1 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Host: www.abc.com</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>Gecko/20050225 Firefox/1.0.1 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Connection: Keep-Alive </span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Tương tự, một Request gửi đến trang <a href="http://anonym.to/?http://www.abc.com/def" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.abc.com/def</span></a> sẽ có dạng như sau:</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">GET /def/ HTTP/1.1 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Host: www.abc.com</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>Gecko/20050225 Firefox/1.0.1 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Connection: Keep-Alive </span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Như các bạn có thể thấy, 2 ví dụ trên đều dùng phương thức GET để request dữ liệu.</span></p>
<p>Giờ hãy tưởng tượng, sau khi điền vào form 1 giá trị name là admin, age là 20, bạn bấm nút submit để gửi dữ liệu đến file process.php.</p>
<p>Trên thanh address sẽ hiện ra url: process.php?name=admin&amp;age=20</p>
<p>Nếu xem xét một cách kỹ lưỡng HTTP Request, ta sẽ thấy nó như sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">GET /process.php?name=admin&amp;age=20 HTTP/1.1 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Host: www.abc.com</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>Gecko/20050225 Firefox/1.0.1 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Connection: Keep-Alive </span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Tóm lại, khi dùng phương thức GET, trình duyệt sẽ gửi Request tới server với các tham số đặt trong dòng đầu tiên (request-line).</span></p>
<p>Còn với phương thức POST thì sao? Thay nằm trong request-line, những tham số này được đặt trong phần request-body.</p>
<p>Ví dụ ta giữ nguyên form trên, chỉ thay method=&#8221;GET&#8221; bằng method=&#8221;POST&#8221; và bấm Submit. Khi đó đây sẽ là HTTP Request &#8220;behind the scene&#8221;:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">POST / HTTP/1.1 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Host: www.abc.com</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>Gecko/20050225 Firefox/1.0.1 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Content-Type: application/x-www-form-urlencoded </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Content-Length: 40 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Connection: Keep-Alive </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">name=admin&amp;age=20</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Có thể dễ dàng thấy rằng, ngoài việc thêm một số dòng vào phần header:</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Content-Type: application/x-www-form-urlencoded </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Content-Length: 40 </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Connection: Keep-Alive </span></p>
</blockquote>
<p><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
thì phương thức POST đã &#8220;cất&#8221; các tham số của mình trong phần request-body. Điều này hiển nhiên khác hẳn phương thức GET.<br />
<!--[if !supportLineBreakNewLine]--></span></p>
<p style="text-align: right;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><strong><em>Isheep</em></strong><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2009/06/04/t%c6%b0%c6%a1ng-tac-v%e1%bb%9bi-server-b%e1%ba%b1ng-form/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tìm kiếm và thay thế trong xâu với Regular Expression</title>
		<link>http://phamcuong.info/2009/06/04/tim-ki%e1%ba%bfm-va-thay-th%e1%ba%bf-trong-xau-v%e1%bb%9bi-regular-expression/</link>
		<comments>http://phamcuong.info/2009/06/04/tim-ki%e1%ba%bfm-va-thay-th%e1%ba%bf-trong-xau-v%e1%bb%9bi-regular-expression/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 05:00:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=168</guid>
		<description><![CDATA[Ở bài trước, chúng ta đã xem xét qua một số hàm thường gặp khi xử lý xâu trong PHP. Để tìm kiếm trong xâu, ta có thể dùng strpos() hoặc substr(), nhưng với những hàm này ta chỉ có thể tìm kiếm một cách hết sức hạn chế. Hãy thử tưởng tượng, nếu bạn [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;">Ở bài trước, chúng ta đã xem xét qua một số hàm thường gặp khi xử lý xâu trong PHP. Để tìm kiếm trong xâu, ta có thể dùng strpos() hoặc substr()<span id="more-168"></span>, nhưng với những hàm này ta chỉ có thể tìm kiếm một cách hết sức hạn chế. Hãy thử tưởng tượng, nếu bạn muốn kiểm tra xem 1 xâu có phải là một địa chỉ IP, hay một địa chỉ email đúng đắn hay ko, sẽ phải sử dụng rất nhiều câu lệnh if.</span></p>
<p>Trong những trường hợp như thế này, ta sẽ sử dụng Regular Expression. Regular Expression, viết tắt là RegEx, có rất nhiều định nghĩa. Đây là một trong số các định nghĩa đơn giản nhất:</p>
<p><em>Regular Expression là một cách thức thể hiện dữ liệu dưới dạng các ký tự đại diện. Nó được dùng trong các thuật toán tìm kiếm, thay thế xâu.</em></p>
<p>Đây là ví dụ về một RegEx dùng để kiểm tra xem một xâu có phải là địa chỉ IP đúng đắn hay ko:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Nhìn thì có vẻ rất phức tạp chứ thực ra RegEx trên rất đơn giản và dễ hiểu một khi bạn đã nắm được cách sử dụng.</span></p>
<p>Ta sẽ quay trở lại ví dụ trên sau khi đã học được một số điều cần thiết. Giờ hãy dành thời gian vào việc tìm hiểu cú pháp, cách viết 1 RegEx:</p>
<p><strong>1.RegEx CÓ phân biệt ký tự hoa &#8211; thường. (case sensitive)</strong></p>
<p>Ví dụ ta có một xâu như sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Hello, UDS</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Khi đó RegEx <strong>Hello</strong> sẽ phù hợp với phần đầu của xâu nói trên, còn <strong>hello</strong> thì ko.</span></p>
<p><strong>2. Mọi ký tự trong RegEx đều ứng với một ký tự trong xâu cần kiểm tra, kể cả ký tự trắng (dấu cách, dấu tab, dấu xuống dòng). </strong></p>
<p>Ví dụ với xâu:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Hello, UDS</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Thì <strong>Hello, UDS</strong> sẽ phù hợp còn <strong>Hello, UDS</strong> ko.</span></p>
<p><strong>3. Một số ký tự có ý nghĩa đặc biệt. Ký tự ^ chỉ sự bắt đầu một xâu, còn $ chỉ sự kết thúc.</strong></p>
<p>Ví dụ: Xâu</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">UDS is UDS</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>^UDS</strong> sẽ phù hợp với đoạn UDS đầu xâu, trong khi <strong>UDS$</strong> sẽ phù hợp với đoạn UDS cuối xâu.</span></p>
<p><strong>4. Cũng như trong PHP, ký tự  được sử dụng để escape một số ký tự đặc biệt. Ví dụ $, ^, -</strong></p>
<p>Xâu:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$abc$</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>$</strong> phù hợp với ký tự $ đầu xâu.</span></p>
<p><strong>5. Ký tự . phù hợp với mọi ký tự</strong></p>
<p>Ví dụ:</p>
<p>RegEx <strong>&#8230;</strong> phù hợp với 3 ký tự đầu trong xâu</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">UDS is a great community!!!</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Dĩ nhiên, để 1 ký tự trong RegEx phù hợp với dấu . (thật) thì cần phải escape dấu . ấy như thế này .</span></p>
<p>Ví dụ:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">O.K.</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>.</strong> sẽ phù hợp với dấu . thứ nhất sau ký tự O.</span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><strong><span style="font-size: 10pt; font-family: Verdana; color: black;">6. Một danh sách các ký tự có thể đặt trong dấu ngoặc vuông []. Khi đó bất cứ ký tự nào trong ngoặc vuông được tìm thấy, ký tự đó sẽ được coi là phù hợp. Trật tự các ký tự trong ngoặc là ko quan trọng.</span></strong></p>
<p>Ví dụ:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">How do you do?</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>[oyu]</strong> sẽ phù hợp với ký tự o trong từ How</span></p>
<p><strong>[dH].</strong> sẽ phù hợp với ký tự Ho trong từ How.</p>
<p><strong>7. Một dải (range) các ký tự có thể được thể hiện bằng cú pháp [ - ]. Có thể có nhiều dải trong một cặp ngoặc [].</strong></p>
<p>Ví dụ:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>[C-K]</strong> sẽ phù hợp với ký tự C.</span></p>
<p><strong>[a-d]</strong> sẽ phù hợp với ký tự a.</p>
<p><strong>[C-Ka-d2-6]</strong> sẽ phù hợp với ký tự C.</p>
<p><strong>8. Nếu một lớp các ký tự đặt trong dấu [] được mở đầu bằng ký tự ^, những ký tự đó sẽ được coi là ko phù hợp.</strong></p>
<p>Ví dụ:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>[^CDghi45]</strong> sẽ ko phù hợp với các ký tự C, D, g, h, i, 4, 5.</span></p>
<p><strong>9. Các xâu khác nhau có thể được đặt trong dấu () và phân cách bằng ký tự |.</strong></p>
<p>Ví dụ:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Monday Tuesday Friday</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>(on|ues|rida)</strong> sẽ phù hợp với đoạn on trong từ Monday, ues trong từ Tuesday,&#8230;</span></p>
<p><strong>10. Có thể chỉ ra số lần ký tự sẽ xuất hiện. Ký tự * phù hợp với &#8220;ko hoặc nhiều hơn thế&#8221;, + phù hợp với &#8220;một hoặc nhiều hơn thế&#8221;, ? phù hợp với &#8220;ko hoặc một&#8221;.</strong></p>
<p>Ví dụ:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">aabc abc bc</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>a*b</strong> hoặc <strong>a+b</strong> phù hợp với aab.</span></p>
<p><strong>a?b</strong> phù hợp với ab.</p>
<p class="MsoNormal">
<p class="MsoNormal" style="text-align: right;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><em><strong>copy from updatesoft</strong></em><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2009/06/04/tim-ki%e1%ba%bfm-va-thay-th%e1%ba%bf-trong-xau-v%e1%bb%9bi-regular-expression/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tận dụng mã nguồn có sẵn bằng cách include file</title>
		<link>http://phamcuong.info/2009/06/04/t%e1%ba%adn-d%e1%bb%a5ng-ma-ngu%e1%bb%93n-co-s%e1%ba%b5n-b%e1%ba%b1ng-cach-include-file/</link>
		<comments>http://phamcuong.info/2009/06/04/t%e1%ba%adn-d%e1%bb%a5ng-ma-ngu%e1%bb%93n-co-s%e1%ba%b5n-b%e1%ba%b1ng-cach-include-file/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 04:58:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=165</guid>
		<description><![CDATA[Sau khi đọc xong bài Sử dụng hàm trong PHP, bạn sẽ có trong tay rất nhiều hàm cần thiết khi code. Số lượng hàm này chắc chắn sẽ tăng dần theo thời gian. Ví dụ bạn đang viết rất nhiều hàm về tính toán với hình tròn: PHP Code: function tinh_dien_tich_hinh_tron($ban_kinh) { // code } function [...]]]></description>
			<content:encoded><![CDATA[<p><!--[endif]--></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;">Sau khi đọc xong bài Sử dụng hàm trong PHP, bạn sẽ có trong tay rất nhiều hàm cần thiết khi code. Số lượng hàm này chắc chắn sẽ tăng dần theo thời gian.<span id="more-165"></span></span></p>
<p>Ví dụ bạn đang viết rất nhiều hàm về tính toán với hình tròn:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">function </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">tinh_dien_tich_hinh_tron</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$ban_kinh</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">) { </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">// code </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">} </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">function </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">tinh_chu_vi_hinh_tron</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$ban_kinh</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">) { </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">// code </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">} </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">// rất nhiều hàm khác </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
<!--[if !supportLineBreakNewLine]--><br />
<!--[endif]--></span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Thay vì copy và paste các hàm trên vào tất cả các file dính dáng đến việc tính toán với hình tròn, bạn hãy cho những hàm đó vào 1 file riêng, đặt tên là hinh_tron.php chẳng hạn. Mỗi lần muốn sử dụng các hàm trong file hinh_tron.php đó, bạn chỉ việc include nó vào file hiện tại bằng một trong các cách sau:</span></p>
<p>1. Dùng include</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">include(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">tên_file</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">); </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
<!--[if !supportLineBreakNewLine]--><br />
<!--[endif]--></span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
2. Dùng require</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">require(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">tên_file</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">); </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
<!--[if !supportLineBreakNewLine]--><br />
<!--[endif]--></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
File được include có thể mang định dạng bất kỳ, php, inc, lib&#8230; tùy bạn chọn.</span></p>
<p>Câu hỏi 1: include với require làm gì?</p>
<p>Khi bạn include/require 1 file nào đó, ko cần biết file đó mang định dạng gì, PHP sẽ quét nội dung file đó và bắt đầu xử lý 2 trường hợp:<br />
- Với những đoạn nằm trong thẻ php, PHP sẽ thực thi như với file PHP thông thường<br />
- Với những đoạn nằm ngoài thẻ php, PHP sẽ output ra màn hình</p>
<p>Câu hỏi 2: include khác require ở chỗ nào?</p>
<p>Một file được include nếu (chẳng may) ko tồn tại sẽ khiến PHP báo lỗi, tuy nhiên phần còn lại của script vẫn sẽ được thực thi.<br />
Ngược lại, một file được require nếu (xui xẻo) ko tồn tại sẽ khiến PHP đứng luôn, ko chạy tiếp script. Nói cách khác, file được require là file tối quan trọng, ảnh hưởng tới việc thực thi 1 script.</p>
<p>Ngoài việc sử dụng include và require, bạn còn có thể dùng include_once và require_once. Về cơ bản, include và include_once giống nhau. require và require_once cũng thế.</p>
<p>Điểm khác biệt là khi sử dụng require_once hay include_once, file đó chỉ được include đúng 1 lần duy nhất.</p>
<p>Hãy xét 1 ví dụ: Bạn có 3 script A, B, C. Trong đó A include B, B include C và C include lại A.</p>
<p>Nếu bạn chỉ dùng include() trong cả 3 trường hợp, chắc chắn PHP sẽ báo lỗi. Để tránh trường hợp này, bạn chỉ việc sửa 3 cái include() thành include_once() =&gt; Vấn đề được giải quyết!</p>
<p class="MsoNormal">
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2009/06/04/t%e1%ba%adn-d%e1%bb%a5ng-ma-ngu%e1%bb%93n-co-s%e1%ba%b5n-b%e1%ba%b1ng-cach-include-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Làm việc với Cookie và Session</title>
		<link>http://phamcuong.info/2009/06/04/lam-vi%e1%bb%87c-v%e1%bb%9bi-cookie-va-session/</link>
		<comments>http://phamcuong.info/2009/06/04/lam-vi%e1%bb%87c-v%e1%bb%9bi-cookie-va-session/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 04:57:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=162</guid>
		<description><![CDATA[Trong quá trình phát triển web, một nhu cầu rất thường xuyên nảy ra là làm cách nào truyền dữ liệu từ trang web này sang trang web khác? Tất nhiên ta có thể dùng form để submit và truyền data từ một trang web sang trang web tiếp theo qua phương thức POST hoặc [...]]]></description>
			<content:encoded><![CDATA[<p>Trong quá trình phát triển web, một nhu cầu rất thường xuyên nảy ra là làm cách nào truyền dữ liệu từ trang web này sang trang web khác? <span id="more-162"></span>Tất nhiên ta có thể dùng form để submit và truyền data từ một trang web sang trang web tiếp theo qua phương thức POST hoặc truyền dữ liệu qua URL theo phương thức GET. Tuy nhiên, cách làm này không phải lúc nào cũng khả thi. Trong nhiều trường hợp, cách dùng form hoặc URL gây khá nhiều phiền phức hoặc hầu như không thể thực hiện được. Ví dụ: người dùng click lên 1 link trên trang web của bạn để đi sang 1 website khác, rồi click lên 1 link trên website kia để quay ngược về website của bạn.</p>
<p>Rất may mắn, vấn đề được giải quyết khá dễ dàng với sự trợ giúp của COOKIE và SESSION. Và còn hơn thế nữa, PHP cung cấp rất sẵn nhiều hàm và phương tiện để làm việc dễ dàng và hiệu quả với COOKIE và SESSION. Trong bài viết này chúng ta sẽ tìm hiểu về COOKIE, SESSION và cách sử dụng COOKIE, SESSION trong PHP.</p>
<p><strong>COOKIE VÀ SESSION LÀ GÌ?</strong></p>
<p>Cookie là 1 đoạn dữ liệu được truyền đến browser từ server, đoạn dữ liệu này sẽ được browser lưu trữ (trong memory hoặc trên đĩa) và sẽ gởi ngược lên lại server mỗi khi browser tải 1 trang web từ server [1].<br />
Những thông tin được lưu trữ trong cookie hoàn toàn phụ thuộc vào website trên server. Mỗi website có thể lưu trữ những thông tin khác nhau trong cookie, ví dụ thời điểm lần cuối bạn ghé thăm website, đánh dấu bạn đã login hay chưa, v.v&#8230;<br />
Cookie được tạo ra bởi website và gởi tới browser, do vậy 2 website khác nhau (cho dù cùng host trên 1 server) sẽ có 2 cookie khác nhau gởi tới browser. Ngoài ra, mỗi browser quản lý và lưu trữ cookie theo cách riêng của mình, cho nên 2 browser cùng truy cập vào 1 website sẽ nhận được 2 cookie khác nhau.</p>
<p>Session là khoảng thời gian người sử dụng giao tiếp với 1 ứng dụng. Session bắt đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người sử dụng thoát khỏi ứng dụng [2]. Mỗi session sẽ có một định danh (ID), 1 session khác nhau sẽ có 2 ID khác nhau. Trong ngữ cảnh ứng dụng web, website sẽ quyết định khi nào session bắt đầu và kết thúc.<br />
Trong 1 session, website có thể lưu trữ một số thông tin như đánh dấu bạn đã login hay chưa, những bài viết nào bạn đã đọc qua, v.v&#8230;</p>
<p><strong>Điểm giống và khác nhau giữa Cookie và Session</strong><br />
Cookie và Session đều có chung mục đích là lưu giữ data để truyền từ 1 trang web sang 1 trang web khác (trên cùng website). Nhưng phước thức lưu trữ và quản lý data của Cookie và Session có phần khác nhau.<br />
Cookie sẽ được lưu trữ tại browser, do browser quản lý và browser sẽ tự động truyền cookie ngược lên server mỗi khi truy cập vào 1 trang web trên server.<br />
Dữ liệu lưu trữ trong Session sẽ được ứng dụng quản lý, trong ngữ cảnh web, ứng dụng ở đây sẽ là website và webserver. Browser chỉ truyền ID của session lên server mỗi khi truy cập vào website trên server.</p>
<p>Tự liên hệ giữa Session và Cookie: Mỗi Session gắn với 1 định danh (ID). ID sẽ được tạo ra trên server khi session bắt đầu và được truyền cho browser. Sau đó browser sẽ truyền lại ID này lên server mỗi khi truy cập vào website. Như vậy ta có thể thấy rằng sẽ rất tiện nếu như Session ID được lưu trữ trong Cookie và được browser tự động truyền lên server mỗi khi truy cập vào website.</p>
<p><strong>Sử dụng Cookie hay Session?</strong><br />
Sử dụng Session hoặc Cookie là tuỳ vào lựa chọn của Lập trình viên, tuy nhiên Session thường được ưa chuộng hơn Cookie vì một số lý do sau:</p>
<p>* Trong một số trường hợp Cookie không sử dụng được. Có thể browser đã được thiết lập để không chấp nhận cookie, lúc đó session vẫn sử dụng được bằng cách truyền session ID giữa các trang web qua URL, ví dụ: script.php?session=abc123.<br />
* Lượng data truyền tải giữa browser và server: chỉ mỗi session ID được truyền giữa browser và server, data thực sự được website lưu trữ trên server.<br />
* Bảo mật: càng ít thông tin được truyền tải qua lại giữa browser và client càng tốt, và càng ít thông tin được lưu trữ tại client càng tốt.</p>
<p><strong>SỬ DỤNG COOKIE TRONG PHP</strong></p>
<p>Sử dụng Cookie trong PHP khá đơn giản. Để đặt (set) cookie, bạn chỉ cần sử dụng 1 lệnh gán đơn giản: $_COOKIE[tên_cookie] = giá_trị;. Và để đọc (get) lại giá trị của cookie, bạn chỉ cần đọc biến $_COOKIE[tên_cookie].</p>
<p>Ta hãy xem ví dụ sau:</p>
<p>//nội dung file a.php<br />
&lt;?php<br />
$t = time();<br />
setcookie(&#8220;abc&#8221;, time());<br />
?&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;&lt;title&gt;a.php&lt;/title&gt;&lt;/head&gt;<br />
&lt;body&gt;Giá trị của cookie đã được gán giá trị &lt;?php echo $t; ?&gt;. Click &lt;a href=&#8221;b.php&#8221;&gt;vào đây&lt;/a&gt; để kiểm tra.&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>//nội dung file b.php<br />
&lt;html&gt;<br />
&lt;head&gt;&lt;title&gt;b.php&lt;/title&gt;&lt;/head&gt;<br />
&lt;body&gt;Giá trị của Cookie được gán trong &lt;a href=&#8221;a.php&#8221;&gt;file a.php&lt;/a&gt;: &lt;?php echo $_COOKIE['abc']; ?&gt;.&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>Lưu 2 đoạn mã trên vào 2 file a.php và b.php. Đầu tiên, dùng browser truy cập vào file a.php bạn sẽ thấy 1 màn hình tương tự như sau:<br />
Giá trị của cookie đã được gán giá trị 1151911962. Click vào đây để kiểm tra.</p>
<p>Click vào link &#8220;vào đây&#8221; để truy cập qua file b.php bạn sẽ thấy 1 màn hình tương tự như sau:<br />
Giá trị của Cookie được gán trong file a.php: 1151911962.</p>
<p><strong>SỬ DỤNG SESSION TRONG PHP</strong></p>
<p>Sử dụng Session trong PHP cũng đơn giản không kém<br />
Đầu tiên, bạn cần khởi tạo Session bằng cách gọi hàm session_start(), sau đó việc đặt giá trị cho session sẽ đơn giản chỉ là lệnh gán $_SESSION[tên_session] = giá_trị;, và để đọc session, bạn chỉ cần đọc giá trị của biến $_SESSION[tên_session].</p>
<p>Ta hãy xem ví dụ sau:</p>
<p>//nội dung file a.php<br />
&lt;?php<br />
session_start();</p>
<p>$t = time();<br />
$_SESSION['username'] = &#8216;guest&#8217;;<br />
$_SESSION['time'] = $t;<br />
?&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;&lt;title&gt;a.php&lt;/title&gt;&lt;/head&gt;<br />
&lt;body&gt;<br />
Giá trị của Session đã được gán:&lt;br&gt;<br />
username = guest&lt;br&gt;<br />
time = &lt;?php echo $t; ?&gt;&lt;br&gt;<br />
Click &lt;a href=&#8221;b.php&#8221;&gt;vào đây&lt;/a&gt; để kiểm tra.<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>//nội dung file b.php<br />
&lt;?php<br />
session_start();<br />
?&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;&lt;title&gt;b.php&lt;/title&gt;&lt;/head&gt;<br />
&lt;body&gt;<br />
Giá trị của hiện tại của Session được gán trong &lt;a href=&#8221;a.php&#8221;&gt;file a.php&lt;/a&gt;:&lt;br&gt;<br />
username = &lt;?php echo $_SESSION['username']; ?&gt;&lt;br&gt;<br />
time = &lt;?php echo $_SESSION['time']; ?&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>Lưu 2 đoạn mã trên vào 2 file a.php và b.php. Đầu tiên, dùng browser truy cập vào file a.php bạn sẽ thấy 1 màn hình tương tự như sau:<br />
Giá trị của Session đã được gán:<br />
username = guest<br />
time = 1151911963<br />
Click vào đây để kiểm tra.</p>
<p>Click vào link &#8220;vào đây&#8221; để truy cập qua file b.php bạn sẽ thấy 1 màn hình tương tự như sau:<br />
Giá trị của hiện tại của Session được gán trong file a.php:<br />
username = guest<br />
time = 1151911963</p>
<p>Lấy session ID: trong nhiều trường hợp, bạn cần lấy giá trị của session ID (để đếm số lượng session đã được tạo chẳng hạn), PHP cung cấp cho ta hàm session_id() để lấy giá trị hiện tại của session ID.<br />
Lưu ý: hàm session_id() phải được gọi sau hàm session_start(). Ví dụ:</p>
<p>//khời tạo session<br />
session_start();</p>
<p>//lấy sesion ID<br />
$id = session_id();<br />
echo &#8220;Session ID = &#8220;.$id;</p>
<p><strong>MỘT SỐ LƯU Ý KHI SỬ DỤNG COOKIE VÀ SESSION</strong></p>
<p>* Các lệnh gán giá trị cho Cookie và Session phải nên được gọi trước khi bất cứ dữ liệu nào được xuất ra browser. Thậm chí 1 ký tự trắng ở đầu chương trình (có ký tự trắng trước &lt;?php) cũng không được! Nếu bạn sử dụng Unicode trong chương trình, bạn cần chú ý ký tự BOM ở đầu file nguồn PHP. Xem thêm mục &#8220;LƯU FILE VỚI TIẾNG VIỆT UNICODE&#8221; trong phần &#8220;Giới thiệu &#8211; Các bước chuẩn bị cần thiết&#8221;.<br />
* Lệnh session_start() phải được gọi ở đầu chương trình, trước tất cả các lệnh gán hoặc đọc session.</p>
<p>CÁC HÀM PHP ĐƯỢC DÙNG TRONG VÍ DỤ</p>
<p>* session_start: khởi tạo session.<br />
* session_id: lấy giá trị hiện tại của session ID.</p>
<p><strong>TÀI LIỆU THAM KHẢO</strong></p>
<p>* Từ Webopedia Computer Dictionary &#8211; Định nghĩa về Cookie: <a href="http://anonym.to/?http://www.webopedia.com/TERM/c/cookie.html" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.webopedia.com/TERM/c/cookie.html</span></a><br />
* Từ Webopedia Computer Dictionary &#8211; Định nghĩa về Session: <a href="http://anonym.to/?http://www.webopedia.com/TERM/s/session.html" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.webopedia.com/TERM/s/session.html</span></a><br />
* PHP Manual: <a href="http://anonym.to/?http://www.php.net/manual/en/index.php" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.php.net/manual/en/index.php</span></a><br />
o Cookie: <a href="http://anonym.to/?http://www.php.net/manual/en/features.cookies.php" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.php.net/manual/en/features.cookies.php</span></a><br />
o Session: <a href="http://anonym.to/?http://www.php.net/manual/en/ref.session.php" target="_blank"><span style="color: #000030; text-decoration: none;">http://anonym.to/?http://www.php.net/manual/en/ref.session.php</span></a></p>
<p class="MsoNormal" style="text-align: right;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><a href="http://anonym.to/?http://www.php.net/manual/en/ref.session.php" target="_blank"></a><br />
<em><strong>Source from <a href="http://anonym.to/?http://www.diendantinhoc.net/tute/webdev/php/php_by_examples/basic/tute_cookie_n_session.php" target="_blank"><span style="color: #000030; text-decoration: none;">DDTH</span></a></strong></em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2009/06/04/lam-vi%e1%bb%87c-v%e1%bb%9bi-cookie-va-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kiểu dữ liệu PHP</title>
		<link>http://phamcuong.info/2009/06/04/ki%e1%bb%83u-d%e1%bb%af-li%e1%bb%87u-php/</link>
		<comments>http://phamcuong.info/2009/06/04/ki%e1%bb%83u-d%e1%bb%af-li%e1%bb%87u-php/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 04:54:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=159</guid>
		<description><![CDATA[PHP hỗ trợ tám kiểu dữ liệu nguyên thuỷ. Bốn kiểu thông thường là: boolean, integer, floating-point number(float), string. Hai kiểu phức tạp là: mảng( array) và đối tượng ( object). Và cuối cùng là hai kiểu đặc biệt : resource và NULL. Loại dữ liệu của biến thông thường không được gán bởi người [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;">PHP hỗ trợ tám kiểu dữ liệu nguyên thuỷ.<span id="more-159"></span><br />
Bốn kiểu thông thường là: </span><strong><span style="font-size: 10pt; font-family: Verdana; color: red;">boolean, integer, floating-point number(float), string</span></strong><span style="font-size: 10pt; font-family: Verdana; color: black;">.<br />
Hai kiểu phức tạp là: </span><strong><span style="font-size: 10pt; font-family: Verdana; color: red;">mảng( array) và đối tượng ( object)</span></strong><span style="font-size: 10pt; font-family: Verdana; color: black;">. Và cuối cùng là hai kiểu đặc biệt : </span><strong><span style="font-size: 10pt; font-family: Verdana; color: red;">resource và NULL</span></strong><span style="font-size: 10pt; font-family: Verdana; color: black;">. Loại dữ liệu của biến thông thường không được gán bởi người lập trình mà được quyết định tại thời gian chạy của PHP, phụ thuộc vào ngữ cảnh mà biến được dùng.</span></p>
<p>1. Boolean: đây là kiểu đơn giản nhất. Một kiểu boolean biểu thị một giá trị thật. Nó có thể là TRUE hay FALSE.</p>
<p>Cú pháp: để chỉ định một giá trị boolean, có thể sử dụng từ khoá TRUE hay là FALSE. Cả hai đều không phân biệt chữ hoa hay chữ thường.</p>
<p>Ví dụ:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$foo=True; // gán giá trị TRUE cho biến $foo.</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Để có thể chuyển một giá trị sang kiểu </span><span style="font-size: 10pt; font-family: Verdana; color: red;">boolean</span><span style="font-size: 10pt; font-family: Verdana; color: black;">, chúng ta có thể dùng (bool) hay (boolean). Tuy nhiên trong hầu hết các trường hợp bạn không cần phải sử dụng việc ép kiểu này, bởi giá trị sẽ được tự động chuyển nếu nó là một toán tử, hàm hay là cấu trúc điều khiển đòi hỏi một tham số kiểu boolean.</span></p>
<p>Chú ý: -1 được xem là TRUE, giống như các giá trị khác 0 khác ( bất kể là số dương hay âm).</p>
<p>2.<strong><span style="font-size: 10pt; font-family: Verdana; color: seagreen;"> Integer: là một tập hợp bao gồm các số {&#8230;,-2,-1,0,1,2,&#8230;}.</span></strong></p>
<p>Cú pháp: Integer có thể được chỉ định trong cơ số 10, cơ số thập lục phân hay cơ số bát phân, tuỳ chọn đi trước bởi dấu &#8211; hay +. Nếu bạn sử dụng với cơ số bát phân, bạn phải theo thứ tự với 0 đứng trước, còn đối với số thập lục phân thì 0x.</p>
<p>Ví dụ như sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$a = 1234; # số thập phân</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$a = -123; # số âm</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$a = 0123; # số bát phân</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$a = 0x1A; # số thập lục phân</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p><span style="font-size: 10pt; font-family: Verdana; color: seagreen;">Kích thước của kiểu dữ liệu này là 32bit, và PHP không hỗ trợ kiểu unsigned integer. Nếu bạn chỉ định một số vượt qua biên của kiểu dữ liệu integer, nó sẽ được xem như kiểu float. Tương tự như vậy, khi bạn thực hiện một phép toán mà kết quả trả về là một số vượt qua biên của kiểu integer, thì kiểu float sẽ được trả về. Tuy nhiên, có một lỗi trong PHP mà không phải bao giờ điều này cũng đúng, nó liên quan đến các số âm. Chẳng hạn, khi bạn thực hiện -50000* $million, kết quả sẽ là 429496728. Tuy nhiên, khi cả hai toán tử đều là số dương thì không có vấn đề gì xảy ra.</span></p>
<p>Để chuyển một giá trị sang kiểu integer, ta có thể dùng toán tử ép kiểu (int) hay (integer). Tuy nhiên, trong hầu hết các trường hợp bạn không cần phải dùng toán tử ép kiểu đó, bởi giá trị sẽ được tự động chuyển sang nếu toán tử, hàm hay cấu trúc điều khiển đòi hỏi một đối số integer.</p>
<p><span style="font-size: 10pt; font-family: Verdana; color: seagreen;">3. Kiểu số thực (floats,doubles,hay real numbers) :</span><span style="font-size: 10pt; font-family: Verdana; color: black;"> có thể được chỉ định bằng cách sử dụng một trong các cú pháp sau:</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>$a = 1.234; $a = 1.2e3; $a = 7E-10;</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Kích cỡ của kiểu float tùy thuộc vào platform, giá trị lớn nhất là xấp xỉ 1.8e308</span></p>
<p><span style="font-size: 10pt; font-family: Verdana; color: seagreen;">4. String: là những chuỗi các kí tự.</span><span style="font-size: 10pt; font-family: Verdana; color: black;">Trong PHP,một kí tự cũng tương tự như một byte,do đó có chính xác 256 kí tự khác nhau.</span></p>
<p>Cú pháp: có thể khai báo bằng ba cách khác nhau như sau:</p>
<p>· Dấu nháy đơn: cách dễ dàng nhất để chỉ định một chuỗi đơn giản là đóng nó trong một dấu nháy đơn.Ví dụ:echo &#8216;le bao vy&#8217;;</p>
<p>· Dấu nháy kép: nếu chuỗi được đóng trong dấu nháy kép(&#8220;),PHP hiểu sẽ có thêm các chuỗi cho các kí tự đặc biệt &#8230;.. Ví dụ: n;t;\;$;…</p>
<p>· Heredoc: các khác để phân định chuỗi là sử dụng cú pháp (&#8220;&lt;&lt;&lt;&#8221;). Chỉ nên cung cấp một định danh sau &lt;&lt;&lt;, sau đó là chuỗi và tiếp là cùng tên định danh để đóng dấu nháy. Định danh dùng để đóng phải bắt đầu bằng cột đầu tiên của dòng. Định danh được dùng phải có tên giống như trong các quy luật đặt tên biến trong PHP.</p>
<p><span style="font-size: 10pt; font-family: Verdana; color: seagreen;"><br />
5. Mảng : là một danh sách các phần tử có cùng kiểu dữ liệu.Mảng có thể là mảng một chiều hay nhiều chiều.</span></p>
<p>· Mảng một chiều có chỉ mục: là mảng được quản lý bằng cách sử dụng chỉ số dưới kiểu integer để biểu thị vị trí của giá trị yêu cầu.Cú pháp: $name[index1];</p>
<p>Ví dụ: một mảng một chiều có thể được tạo ra như sau:<br />
<!--[if !supportLineBreakNewLine]--><br />
<!--[endif]--></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>$meat[0]=&#8221;chicken&#8221;;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>$meat[1]=&#8221;steak&#8221;;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>$meat[2]=&#8221;turkey&#8221;;</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p>Nếu bạn thực thi dòng lệnh sau: print $meat[1]; thì trên trình duyệt sẽ hiển thị dòng sau: steak.</p>
<p>Bạn cũng có thể sử dụng hàm <strong>array( )</strong> của PHP để tạo ra một mảng.Ví dụ:<br />
<!--[if !supportLineBreakNewLine]--><br />
<!--[endif]--></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$meat=array(&#8220;chicken&#8221;,&#8221;steak&#8221;,&#8221;turkey&#8221;);</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p>· Mảng một chiều kết hợp: rất thuận lợi khi dùng để ánh xạ một mảng sử dụng các từ hơn là sử dụng các integer, nó giúp ta giảm bớt thời gian và các mã yêu cầu để hiển thị một giá trị cụ thể. Ví dụ: bạn muốn ghi lại tất cả các thức ăn và các cặp rượu ngon.</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$pairings["zinfandel"] = &#8220;Broiled Veal Chops&#8221;;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$pairings["merlot"] = &#8220;Baked Ham&#8221;;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$pairings["sauvignon"] = &#8220;Prime Rib&#8221;;</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p>Một cách khác là bạn có thể sử dụng hàm <strong>array( )</strong> của PHP để tạo ra một mảng loại này, ví dụ như sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$pairings = array( zinfandel =&gt; &#8220;Broiled Veal Chops&#8221;, </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">merlot =&gt; &#8220;Baked Ham&#8221;,sauvignon =&gt; &#8220;Prime Rib&#8221;,</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">sauternes =&gt; &#8220;Roasted Salmon&#8221;;</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p>· Mảng nhiều chiều có chỉ mục: chức năng của nó cũng giống như mảng một chiều có chỉ mục, ngoại trừ việc nó có thêm một mảng chỉ mục được dùng để chỉ định một phần tử. Cú pháp: $name[index1] [index2]..[indexN];</p>
<p>Một mảng hai chiều có chỉ mục được tạo ra như sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>$position = $chess_board[5][4];</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p>· Mảng đa chiều kết hợp: khá hữu ích trong PHP. Giả sử bạn muốn ghi lại các cặp rượu-thức ăn, không chỉ loại rượu, mà cả nhà sản xuất. Bạn có thể thực hiện như sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$pairings["Martinelli"] ["zinfandel"] = &#8220;Broiled Veal Chops&#8221;;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$pairings["Beringer"] ["merlot"] = &#8220;Baked Ham&#8221;;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$pairings["Jarvis"] ["sauvignon"] = &#8220;Prime Rib&#8221;;</span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom: 12pt;">
<p><span style="font-size: 10pt; font-family: Verdana; color: seagreen;">6. Object: bạn có thể xem object như là một biến mà minh hoạ một kiểu mẫu template được gọi là class. Khái niệm của đối tượng và lớp được sử dụng nhiều trong ngôn ngữ lập trình hướng đối tượng OOP. Không giống như các kiểu dữ liệu khác trong PHP, object phải được khai báo.Điều quan trọng là phải nhận ra rằng object không hơn gì một minh hoạ của một lớp, và hoạt động như là một khuôn mẫu cho việc tạo các object có các đặc tính và chức năng cụ thể. Cho nên, lớp(class) phải được định nghĩa trước khi khai báo một object. Để khởi tạo một đối tượng, bạn sử dung câu lệnh new để minh hoạ đối tượng với một biến.</span><span style="font-size: 10pt; font-family: Verdana; color: black;">Ví dụ:<br />
</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&lt;?php</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">class foo{</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>function do_foo(){</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>echo &#8220;Doing foo.&#8221;; </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$bar = new foo;</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">$bar-&gt;do_foo();</span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">?&gt;</span></p>
</blockquote>
<p class="MsoNormal">
<p>7. Resource: là một biến đặc biệt, chứa một tham chiếu đến một resource bên ngoài. Các resource được tạo ra và sử dụng bởi các hàm đặc biệt.<br />
Giải phóng resources: bởi do tham chiếu đếm của hệ thống được giới thiệu trong PHP4 Zend-engine, nó sẽ tự động phát hiện khi một resource không cần thiết cho lâu dài. Khi ở trong trường hợp này, tất cả các resource mà đã được dùng cho resource này được giải phóng bởi &#8220;bộ phận thu nhặt rác&#8221;. Do đó, hiếm khi thật sự cần thiết để giải phóng bộ nhớ thông thường bằng cách sử dụng hàm <strong>free_result()</strong>.</p>
<p>8. NULL: giá trị NULL đặc biệt dùng để thể hiện một biến không có giá trị. Một biến được xem là NULL nếu:</p>
<p>o Nó được gán giá trị hằng số NULL.</p>
<p>o Nó chưa được khởi tạo giá trị nào.</p>
<p>o Nó là hàm <strong>unset( )</strong></p>
<p>Chú thích: unset () là một hàm dùng để hủy bỏ các biến chỉ định.</p>
<p>Cú pháp: chỉ có một loại giá trị của kiểu NULL. Bạn có thể khai báo như ví dụ sau:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">Code:</span></p>
<blockquote><p class="MsoNormal" style="border: medium none; padding: 0cm; background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>$var=NULL;</span></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2009/06/04/ki%e1%bb%83u-d%e1%bb%af-li%e1%bb%87u-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hàm (Functions) trong PHP</title>
		<link>http://phamcuong.info/2009/06/04/ham-functions-trong-php/</link>
		<comments>http://phamcuong.info/2009/06/04/ham-functions-trong-php/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 04:49:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phamcuong.info/?p=153</guid>
		<description><![CDATA[Không thể không nói đến hàm trong việc lập trình, nhờ có nó mà chương trình của chúng ta trở nên dễ dàng tổ chức hơn. Như các ngôn ngữ khác, PHP có khả năng cung cấp những hàm do người dùng tự định nghĩa. Đồng thời, PHP cũng có một số cải tiến để [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="text-align: center;" align="center"><em><span style="font-size: 10pt; font-family: Verdana; color: black;">Không thể không nói đến hàm trong việc lập trình, nhờ có nó mà chương trình của chúng ta trở nên dễ dàng tổ chức hơn.<span id="more-153"></span> Như các ngôn ngữ khác, PHP có khả năng cung cấp những hàm do người dùng tự định nghĩa. Đồng thời, PHP cũng có một số cải tiến để việc viết hàm được dễ chịu và mạnh mẽ hơn.<!--more--></span></em></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>Định nghĩa và gọi hàm</strong></span></p>
<p>Rất dễ để <strong>định nghĩa một hàm trong PHP</strong>:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">&lt;?php </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">function </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">tên_hàm</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">([</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">các tham s</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">&amp;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">#7889; truyền vào ...]) </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">{ </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> [</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">thân hàm </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">...] </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> } </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">?&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;">- Từ khoá <em>function</em> báo cho PHP biết rằng đây là một hàm. Tiếp theo đó là tên hàm. Tên hàm của PHP có thể là bất cứ ký tự Unicode gì (kể cả tiếng Việt, tiếng Trung…, <span style="text-decoration: underline;">nhưng không được phép bắt đầu bằng số</span>). Thật sự mạnh mẽ, nhưng bạn sẽ gặp vấn đề khi lưu file đó. Thôi thì cứ đặt tên không dấu là ổn nhất <!--[if gte vml 1]><v:shapetype id="_x0000_t75"  coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"  filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:13.5pt;  height:13.5pt'> <v:imagedata src="file:///C:UsersCAMAppDataLocalTempmsohtml1�1clip_image001.gif" mce_src="file:///C:UsersCAMAppDataLocalTempmsohtml1�1clip_image001.gif"   o:href="file:///D:BAIHOCphpupdatesoftsHàm%20(Functions)%20trong%20PHP%20-%20Updatesofts%20Forums_files1.gif" /> <o:lock v:ext="edit" cropping="t" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->. Ví dụ:</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">&lt;?php </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">function </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">this_is_m</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">&amp;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">#7897;t_hàm() </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">{ </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> echo </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">&#8220;Hoàn toàn hợp lệ !!!&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> } </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">?&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;">- Sau tên hàm là danh sách tham số truyền vào và phần thân hàm. Phần thân hàm phải bắt đầu và kết thúc bằng cặp dấu { }. Phần thân này được thực thi khi tên hàm đựơc gọi.</span></p>
<p>- <span style="text-decoration: underline;">Chú ý</span>: mỗi tên hàm chỉ được định nghĩa một lần. Với một số ngôn ngữ khác, hàm có thể được gọi đè khi danh sách tham số truyền vào là khác nhau (Java chẳng hạn), nhưng PHP thì không có việc đó.</p>
<p><strong>Gọi hàm</strong> cũng khá dễ. Bạn chỉ việc gọi tên hàm cùng danh sách tham số đi kèm. Hay hơn, việc gọi hàm <span style="text-decoration: underline;">KHÔNG PHÂN BIỆT CHỮ HOA-CHỮ THƯỜNG</span>. Tuy nhiên, khuyến cáo là nên gọi hàm theo đúng tên hàm đã đặt, như thế dễ quản lý hơn.</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">&lt;?php </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> generate_left_menu_bar</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(); </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">GeNeRaTe_LeFt_MEnu_BaR</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(); </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">// cũng được, nhưng không nên dùng !!! </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">process_user_information</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$current_user</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">&#8220;new user&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">65.0</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">); </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">generate_copyright_notices</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(); </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">generate_left_menu_bar</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">// Sai !! Vì không có dấu ()!! </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">?&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
Chú ý ví dụ trên, khi gọi tên hàm, luôn phải có cặp dấu ( ) nếu hàm không nhận tham số nào (còn nếu nhận tham số thì tất nhiên cặp dấu đó để chứa tham số rồi, phải không <!--[if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75"  alt="" style='width:13.5pt;height:13.5pt'> <v:imagedata src="file:///C:UsersCAMAppDataLocalTempmsohtml1�1clip_image002.gif" mce_src="file:///C:UsersCAMAppDataLocalTempmsohtml1�1clip_image002.gif"   o:href="file:///D:BAIHOCphpupdatesoftsHàm%20(Functions)%20trong%20PHP%20-%20Updatesofts%20Forums_files8.gif" /> <o:lock v:ext="edit" cropping="t" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->).</span></p>
<p><strong>Ngừng việc thực thi hàm</strong><br />
- Vào bất cứ thời điểm nào trong quá trình thực thi hàm, bạn cũng đều có thể dừng công việc của hàm bằng từ khoá return.</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">&lt;?php </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">function </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">work_work_work</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">() </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> { </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$dow </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">= </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">date</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">&#8216;l&#8217;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">); </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> if (</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$dow </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">== </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">&#8216;Saturday&#8217; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">or </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$dow </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">== </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #dd0000;">&#8216;Sunday&#8217;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">) </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> { </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">// nghỉ việc vào cuối tuần </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">return; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> } </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">// work hard </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">work_harder</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(); </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> } </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">?&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;">- Khi mà hàm work_work_work được gọi vào thứ 7 hoặc Chủ nhật, nó trả về &#8220;không gì cả&#8221;, còn nếu không, nó trả về giá trị &#8220;làm việc chăm chỉ hơn đi !!&#8221; (Ví dụ chỉ mang tính minh họa <!--[if gte vml 1]><v:shape  id="_x0000_i1028" type="#_x0000_t75" alt="" style='width:28.5pt;height:13.5pt'> <v:imagedata src="file:///C:UsersCAMAppDataLocalTempmsohtml1�1clip_image003.gif" mce_src="file:///C:UsersCAMAppDataLocalTempmsohtml1�1clip_image003.gif"   o:href="file:///D:BAIHOCphpupdatesoftsHàm%20(Functions)%20trong%20PHP%20-%20Updatesofts%20Forums_files36.gif" /> <o:lock v:ext="edit" cropping="t" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->).</span></p>
<p><strong>Đưa tham số vào hàm</strong></p>
<p>- Ví dụ cho một cấu trúc cơ bản:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">&lt;?php </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">function </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">my_new_function</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$param1</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$param2</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$param3</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$param4</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">) </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> { </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> echo &lt;&lt;&lt;DONE </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> You passed in: &lt;br/&gt; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">$</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">param1:  $param1 &lt;br/&gt; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">$</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">param2:  $param2 &lt;br/&gt; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">$</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">param3:  $param3 &lt;br/&gt; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">$</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">param4:  $param4 &lt;br/&gt; </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">DONE; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> } </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">?&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;">- Khi đưa một số tham số vào hàm, bạn phải phân cách chúng bằng dấu phẩy (,). Bạn có thể truyền bất kỳ tham số nào vào hàm, bất kể là biến, hằng số.. hoặc thậm chí là một hàm khác:</span></p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">&lt;?php </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;">// gọi hàm với nhiều loại tham số truyền vào </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #ff8000;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">my_new_function</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$userName</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">6.22e23</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">pi</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(), </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$a </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">or </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$b</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">); </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">?&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong>Giá trị trả về của hàm</strong></span></p>
<p>- Thông thường, người ta lập trình hàm chỉ để xử lý một công việc nhất định mang tính lặp lại, và giá trị trả về của hàm là không có (null). Nhưng không hẵng tất cả mọi trường hợp đều như vậy:</p>
<p class="MsoNormal"><span style="font-size: 8.5pt; font-family: Verdana; color: black;">PHP Code:</span></p>
<p class="MsoNormal" style="background: #f6f6f6 none repeat scroll 0% 0%;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">&lt;?php </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">function </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">is_even_number</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$number</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">) </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> { </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> if ((</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">$number </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">% </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">2</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">) == </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">0</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">) </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> return </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">TRUE</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> else </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> return </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">FALSE</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;">; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"><br />
</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #007700;"> } </span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000bb;">?&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; color: black;">-&gt; Hàm trên có giá trị trả về là một giá trị boolean True hoặc False.</span></p>
<p><strong>Lời kết:</strong><br />
Hàm là một công cụ rất mạnh trong PHP. Việc sử dụng hàm không chỉ để tối ưu các đoạn code, nó còn làm cho chương trình dễ đọc hơn và thích hợp để làm trong một nhóm với nhau.</p>
<p class="MsoNormal" style="text-align: right;"><span style="font-size: 10pt; font-family: Verdana; color: black;"><br />
<strong><em>Chúc bạn thành công,<br />
iSheep</em></strong><!--[if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75" alt=""  style='width:13.5pt;height:13.5pt'> <v:imagedata src="file:///C:UsersCAMAppDataLocalTempmsohtml1�1clip_image002.gif" mce_src="file:///C:UsersCAMAppDataLocalTempmsohtml1�1clip_image002.gif"   o:href="file:///D:BAIHOCphpupdatesoftsHàm%20(Functions)%20trong%20PHP%20-%20Updatesofts%20Forums_files8.gif" /> <o:lock v:ext="edit" cropping="t" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span></p>
]]></content:encoded>
			<wfw:commentRss>http://phamcuong.info/2009/06/04/ham-functions-trong-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
