<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>THIET KE WEBSITE GIA RE &#187; Học PHP</title>
	<atom:link href="http://thietkewebsitegiare.wordpress.com/category/h%e1%bb%8dc-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://thietkewebsitegiare.wordpress.com</link>
	<description>THIET KE WEBSITE GIA RE</description>
	<lastBuildDate>Sat, 18 Jul 2009 01:51:38 +0000</lastBuildDate>
	<language>vi</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='thietkewebsitegiare.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>THIET KE WEBSITE GIA RE &#187; Học PHP</title>
		<link>http://thietkewebsitegiare.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://thietkewebsitegiare.wordpress.com/osd.xml" title="THIET KE WEBSITE GIA RE" />
	<atom:link rel='hub' href='http://thietkewebsitegiare.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Sử dụng Session trong PHP</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/07/18/s%e1%bb%ad-d%e1%bb%a5ng-session-trong-php/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/07/18/s%e1%bb%ad-d%e1%bb%a5ng-session-trong-php/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 01:50:34 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sử dụng]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[thiet ke website]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=666</guid>
		<description><![CDATA[Trang web HTML thông thường sẽ ko thể truyền dữ liệu từ trang này sang trang khác. Nói 1 cách khác là tất cả thông tin trở thành quên lãng khi một trang web mới được tải. Điều này gây khó khăn cho một số công việc như là mua hàng ( shopping carts) &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=666&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Trang web HTML thông thường sẽ ko thể truyền dữ liệu từ trang này sang trang khác. Nói 1 cách khác là tất cả thông tin trở thành quên lãng khi một trang web mới được tải. Điều này gây khó khăn cho một số công việc như là mua hàng ( shopping carts) &#8211; những thứ cần thiết dữ liệu ( sản phẩm người dùng đã chọn) ghi nhớ từ trang này sang trang khác</p>
<p><strong>Khái niệm về Sessions trong PHP</strong></p>
<p>PHP session giải quyết vấn đề này bằng cách cho phép lưu trữ dữ liệu của người dùng trên server để sử dụng về sau ( như username, món hàng &#8230;)Tuy nhiên những thông tin session này chỉ là tạm thời và thường bị xoá đi ngay khi người dùng rời khỏi trang web đã dùng session.<br />
Chính vì tính tạm thời này mà nếu bứng dụng của bạn cần thiết lưu trữ dữ liệu 1 cách lâu dài , bạn hãy dùng các cách lưu trữ khác như là csdl Mysql</p>
<p>Session hoạt động bằng cách tạo 1 chuỗi unique (UID) cho từng vistore và chứa thông tin dựa trên ID đó. việc này sẽ giúp tránh tình trạng dữ liệu bị xung đột giữa các user<br />
Lưu ý: Nếu bạn vẫn còn ít kinh nghiệm về việc dùng session trong ứng dụng thì ko nên dùng nó trên các website đòi hỏi bảo mật cao vì rất dễ gây ra các lỗ hổng bảo mật nguy hiểm<br />
Bắt đầu với PHP Session<br />
Việc đầu tiên trước khi bạn làm bất cứ việc gì với session là bạn phải chạy nó trước, và nó dc đặt ngay trên đầu trong code của bạn, trước khi HTML dc xuất ra</p>
<p><em>Dưới đây là 1 ví dụ đơn giản về việc tạo session trong PHP</em></p>
<p>PHP Code:<br />
Code:<br />
&lt;?php<br />
session_start(); // start up your PHP session!<br />
?&gt;</p>
<p>đoạn mã ngắn trên sẽ đăng kí cho ng dùng 1 session ở trên Server, cho phép bạn lưu thông thông tin của ng dùng và đưa nó vào UID cho session của user đó</p>
<p><strong>Lưu giá trị của session</strong></p>
<p>Khi bạn muốn lưu trữ 1 thông tin nào đó ở session, dc dùng như 1 mảng kết hợp. đó là nơi bạn lưu và lấy dữ liệu ra. sau đây là 1 ví dụ đơn giản cho việc đơn giản này ^^</p>
<p>PHP Code:<br />
Code:<br />
&lt;?php<br />
session_start();<br />
$_SESSION['views'] = 1; // lưu views<br />
echo &#8220;Pageviews = &#8220;. $_SESSION['views']; //lấy views và hiện thị<br />
?&gt;</p>
<p>out</p>
<p>output:<br />
Pageviews = 1</p>
<p>trong ví dụ này, chúng ta đã học dc cách lưu trữ của biến session thông qua mảng kết hợp $_SESSION và cũng như cách lấy nó ra</p>
<p><strong>Sử dụng SESSION</strong></p>
<p>Bây giờ chúng ta đã biết cách lưu và lấy dử liệu từ biến $_SESSION, mọi chuyện thật dễ dàng phải ko, và tiếp theo ta sẽ tìm hiểu 1 vài hàm liên qua đến session.<br />
Khi bạn tạo 1 biến và lưu nó vào 1 session, bạn có lẽ muốn dùng nó sau này, tuy nhiên, trước khi bạn dùng biến session đó, bạn nên kiểm tra nó đã dc khởi tạo hay chưa.</p>
<p>Thao tác này được thực hiện thông qua hàm isset, isset là 1 hàm kiểm tra bất kì biến nào và nó đã dc khởi tạo và gán giá trị hay chưa.</p>
<p>Qua nhưng ví dụ trên, chúng ta có thể tạo 1 bộ đếm đơn giản cho 1 trang bằng cách sử dùng isset để kiểm tra nó đa dc tạo hay chưa và gán giá trị cho nó. Đây là 1 ví dụ:</p>
<p>PHP Code:<br />
Code:<br />
&lt;?php<br />
session_start();<br />
if(isset($_SESSION['views']))<br />
$_SESSION['views'] = $_SESSION['views']+ 1;<br />
else<br />
$_SESSION['views'] = 1;</p>
<p>echo &#8220;views = &#8220;. $_SESSION['views'];<br />
?&gt;</p>
<p>Trong lần chạy đầu tiền của trang m câu lệnh If sẽ trả về false vì chưa có biến session [views] nào được tạo cả. tuy nhiên, khi bạn refresh lại trang đó, thì câu lệnh if sẽ trả về giá trị true và biến đếm counter sẽ tăng lên 1 đơn vị. và sẽ tăng cho mỗi lần chạy của trang đó lên 1.</p>
<p><strong>Xóa và Hủy Session</strong></p>
<p>Mặt dù dữ liệu trong session chỉ mang tính chất tạm thời và nó ko yêu cầu phải xóa sau khi sử dụng, nhưng có thể trong trường hợp nào đó bạn phải xóa dữ liệu của nó cho mục đích của bạn.<br />
Hãy tưởng tượng bạn đang điều hành 1 doanh nghiệp online, và 1 thanh viên đang dùng website của bạn mua 1 món hàng. Thành viên đó đã hoàn tất việc mua hàng (phiên giao dịch) trên website, do đó , bạn phải xóa mọi thứ trong session sau khi việc này hoàn tất.</p>
<p>PHP Code:<br />
Code:<br />
&lt;?php<br />
session_start();<br />
if(isset($_SESSION['cart']))<br />
unset($_SESSION['cart']);<br />
?&gt;</p>
<p>Bạn cũng có thể hủy hoàn toàn các session bằng cách gọi hàng session_destroy</p>
<p>PHP Code:<br />
Code:<br />
&lt;?php<br />
session_start();<br />
session_destroy();<br />
?&gt;</p>
<p>Destroy sẽ reset session của bạn, do đó không nên gọi hàm này trước khi bạn còn muốn thao tác lên dữ liệu chứa trong session đó.</p>
<p><strong>Chúc bạn thành công &#8211; <a title="thiet ke website" href="www.ticsoft.com">www.ticsoft.com</a></strong> (Nguồn: phpvn)</p>
<br />Posted in Học PHP Tagged: php, sử dụng, session, thiet ke website <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/666/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=666&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/07/18/s%e1%bb%ad-d%e1%bb%a5ng-session-trong-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajax login form</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/06/18/ajax-login-form/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/06/18/ajax-login-form/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 10:46:19 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=619</guid>
		<description><![CDATA[Bài này hướng dẫn các bạn viết 1 form login bằng Ajax. Mục tiêu không nhằm giới thiệu 1 ajax framework nào mà viết toàn bộ từ bước cơ bản nhất kỹ thuật Ajax để có thể hiểu sâu Ajax là gì. 1. Tạo form login Code: &#60;body&#62; &#60;!&#8211; Include AJAX Framework &#8211;&#62; &#60;script src=&#8221;ajax/ajax_framework.js&#8221; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=619&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bài này hướng dẫn các bạn viết 1 form login bằng Ajax. Mục tiêu không nhằm giới thiệu 1 ajax framework nào mà viết toàn bộ từ bước cơ bản nhất kỹ thuật Ajax để có thể hiểu sâu Ajax là gì.<br />
<strong><br />
1. Tạo form login</strong></p>
<p>Code:</p>
<p>&lt;body&gt;</p>
<p>&lt;!&#8211; Include AJAX Framework &#8211;&gt;<br />
&lt;script src=&#8221;ajax/ajax_framework.js&#8221; language=&#8221;javascript&#8221;&gt;&lt;/script&gt;</p>
<p>&lt;!&#8211; Show Message for AJAX response &#8211;&gt;<br />
&lt;div id=&#8221;login_response&#8221;&gt;&lt;/div&gt;<br />
&lt;div id=&#8221;divForm&#8221;&gt;<br />
&lt;!&#8211; Form: the action=&#8221;javascript:login()&#8221;call the javascript function &#8220;login&#8221; into ajax_framework.js &#8211;&gt;<br />
&lt;form action=&#8221;javascript:login()&#8221; method=&#8221;post&#8221;&gt;<br />
&lt;input name=&#8221;email&#8221; type=&#8221;text&#8221; id=&#8221;emailLogin&#8221; value=&#8221;"/&gt;<br />
&lt;input name=&#8221;psw&#8221; type=&#8221;password&#8221; id=&#8221;pswLogin&#8221; value=&#8221;"/&gt;<br />
&lt;input type=&#8221;submit&#8221; name=&#8221;Submit&#8221; value=&#8221;Login&#8221;/&gt;<br />
&lt;/form&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;</p>
<p>Để ý thấy khi submit, ta dùng một JS function để khởi tạo lời gọi Ajax: login(). Bạn không tìm thấy đoạn JS cho login() ở đây vì tôi link với 1 file .js bên ngoài tên là ajax-framework.js.<br />
<strong><br />
2. Tạo file .js để viết code Ajax</strong></p>
<p>Code:</p>
<p>/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- */<br />
/* XMLHTTPRequest Enable */<br />
/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- */<br />
function createObject() {<br />
var request_type;<br />
var browser = navigator.appName;<br />
if(browser == &#8220;Microsoft Internet Explorer&#8221;){<br />
request_type = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
}else{<br />
request_type = new XMLHttpRequest();<br />
}<br />
return request_type;<br />
}</p>
<p>var http = createObject();</p>
<p>/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; */<br />
/* LOGIN */<br />
/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; */<br />
/* Required: var nocache is a random number to add to request. This value solve an Internet Explorer cache issue */<br />
var nocache = 0;<br />
function login() {<br />
// Optional: Show a waiting message in the layer with ID ajax_response<br />
document.getElementById(&#8216;login_response&#8217;).innerHTML = &#8220;Loading&#8230;&#8221;<br />
// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues about character encoding.<br />
var email = encodeURI(document.getElementById(&#8216;emailLogin&#8217;).value);<br />
var psw = encodeURI(document.getElementById(&#8216;pswLogin&#8217;).value);<br />
// Set te random number to add to URL request<br />
nocache = Math.random();<br />
// Pass the login variables like URL variable<br />
http.open(&#8216;get&#8217;, &#8216;login.php?email=&#8217;+email+&#8217;&amp;psw=&#8217;+psw+&#8217;&amp;nocache = &#8216;+nocache);<br />
http.onreadystatechange = loginReply;<br />
http.send(null);<br />
}<br />
function loginReply() {<br />
if(http.readyState == 4){<br />
var response = http.responseText;<br />
alert(response);<br />
if(response == &#8217;0&#8242;){<br />
// if login fails<br />
document.getElementById(&#8216;login_response&#8217;).innerHTML = &#8216;Login failed! Verify user and password&#8217;;<br />
// else if login is ok show a message: &#8220;Welcome + the user name&#8221;.<br />
} else {<br />
document.getElementById(&#8216;login_response&#8217;).innerHTML = &#8216;Welcome &#8216;+response;<br />
document.getElementById(&#8216;divForm&#8217;).style.display = &#8216;none&#8217;;<br />
}<br />
}<br />
}</p>
<p>Tập trung vào hàm login(), công việc của chúng ta là lấy được dữ liệu nhậu của user thông qua JS, dùng document.getElementById() để tìm đúng textbox cần lấy giá trị.</p>
<p>Sau đó, ta tạo một chuỗi query string, có thêm một giá trị nocache là giá trị phát sinh random nhằm chống lại việc trình duyệt cache file login.php, không truyền về server.</p>
<p>Đối tượng http là một đối tượng XMLHTTPRequest, giúp ta gửi 1 request tới server, đối tượng này tạo ra bởi hàm CreateObject().</p>
<p>Đoạn lệnh mock up này giúp chúng ta biết khi nào nhận được kết quả từ server thì sẽ gọi tiếp hàm loginReply() để xử lý.<br />
http.onreadystatechange = loginReply;</p>
<p>Sau khi đã đặt thông tin hàm xử lý (gọi là hàm CallBack) thì http.send() sẽ gửi thông tin cần xử lý tới server. Ở đây, chúng ta gửi tới 1 file chuyên xử lý lời gọi Ajax là login.php</p>
<p><strong>3. Tạo file xử lý lời gọi Ajax</strong><br />
File login.php</p>
<p>Code:</p>
<p>&lt;?php<br />
if(isset($_GET['email']) &amp;&amp; isset($_GET['psw'])){</p>
<p>$email = $_GET['email'];<br />
$psw = $_GET['psw'];</p>
<p>if ($email==&#8217;hung5s@yahoo.com&#8217; &amp;&amp; $psw == &#8217;123&#8242;)<br />
echo $email;<br />
else<br />
echo &#8217;0&#8242;;<br />
}<br />
?&gt;</p>
<p>Bạn thấy rằng việc xử lý này cốt trả về một giá trị (hãy coi nó như 1 hàm trả về giá trị) nên ta chỉ trả về giá trị qua lệnh echo và giá trị đó phải dễ xử lý như là 0 hay $email.</p>
<p>Tiếp theo, function loginReply() xử lý giá trị trả về để hiển thị kết quả.</p>
<p>Bài viết chỉ tới đây để đơn giản cho các bạn thử nghiệm. Reply tiếp theo sẽ phân tích sâu hơn bản chất của Ajax và về đối tượng XMLHttpRequest.</p>
<p><strong>Chúc bạn thành công – <a title="Thiết Kế Website" href="http://www.ticsoft.com/">www.ticsoft.com</a></strong> (Nguồn: phpvn)</p>
<br />Posted in Học PHP Tagged: ajax, form, login, php <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/619/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/619/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/619/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/619/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/619/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/619/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/619/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/619/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/619/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/619/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/619/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/619/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/619/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/619/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=619&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/06/18/ajax-login-form/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Thao tác với email</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/06/18/thao-tac-v%e1%bb%9bi-email/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/06/18/thao-tac-v%e1%bb%9bi-email/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 10:40:09 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[enail]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[thao tác]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=616</guid>
		<description><![CDATA[Trong PHP, chúng ta có thể viết các ứng dụng email ngon lành cỡ outlook một cách khá đơn giản. Bài viết này giới thiệu một số kỹ thuật dùng để gửi và nhận email bằng PHP. Phần I. Gửi email bằng PHP Trong PHP có hai cách gửi mail: Gửi email trực tiếp bằng [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=616&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Trong PHP, chúng ta có thể viết các ứng dụng email ngon lành cỡ outlook một cách khá đơn giản. Bài viết này giới thiệu một số kỹ thuật dùng để gửi và nhận email bằng PHP.</p>
<p><strong> Phần I. Gửi email bằng PHP</strong></p>
<p>Trong PHP có hai cách gửi mail: Gửi email trực tiếp bằng hàm mail (chạy trực tiếp trên máy chủ) và gửi email thông qua một mail server khác (cách này phức tạp hơn so với cách trên vì ta phải kết nối tới máy kia và biết cách họat động của chùm giao thức SMTP).<br />
<strong><br />
</strong><em>1. Gửi email thông qua hàm mail()</em></p>
<p>Để gửi email trực tiếp từ máy chủ, ta có thể sử dụng hàm mail () với cú pháp như sau:</p>
<p>mail (dia_chi_nhan,tieu_de,noi_dung,cac_tham_so_mo_rong_tuy_chon).<br />
<strong><br />
Ví dụ: </strong></p>
<p>Code:</p>
<p>&lt;html&gt;<br />
&lt;body&gt;</p>
<p>&lt;?php<br />
if (isset($_REQUEST['email']))<br />
//if &#8220;email&#8221; is filled out, send email<br />
{<br />
//send email<br />
$email = $_REQUEST['email'] ;<br />
$to = $_REQUEST['to'] ;<br />
$subject = $_REQUEST['subject'] ;<br />
$message = $_REQUEST['message'] ;<br />
mail( $to, &#8220;Subject: $subject&#8221;,$message&#8221; );<br />
echo &#8220;Thank you for using our mail form&#8221;;<br />
}<br />
else<br />
//if &#8220;email&#8221; is not filled out, display the form<br />
{<br />
echo &#8220;&lt;form method=&#8217;post&#8217; action=&#8217;phpmail.php&#8217;&gt;<br />
Người gửi: &lt;input name=&#8217;email&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;<br />
Gửi tới: &lt;input name=&#8217;to&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;<br />
Tiêu đề: &lt;input name=&#8217;subject&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;<br />
Nội dung:&lt;br /&gt;<br />
&lt;textarea name=&#8217;message&#8217; rows=&#8217;15&#8242; cols=&#8217;40&#8242;&gt;<br />
&lt;/textarea&gt;&lt;br /&gt;<br />
&lt;input type=&#8217;submit&#8217; /&gt;<br />
&lt;/form&gt;&#8221;;<br />
}<br />
?&gt;</p>
<p>&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p><em>2. Kỹ thuật gửi email với phần Header mở rộng</em></p>
<p>Kỹ thuật này sẽ cho phép bạn đưa thêm một số thông tin vào phần Header của thông điệp email (Nếu bạn kiểm tra email sẽ có phần Header, trong đó ghi rất nhiều thông tin , chẳng hạn như địa chỉ IP xuất phát, qua những máy email nào, thời điểm&#8230;).</p>
<p>Ở đây chúng ta sẽ sử dụng phần tham số mở rộng.<br />
VD:</p>
<p>Code:<br />
$ThongTinMoRong=&#8221;From: webmaster@$SERVER_NAME\r\n&#8221;<br />
.&#8221;Reply-To: webmaster@$SERVER_NAME\r\n&#8221;<br />
.&#8221;X-Mailer: PHP/&#8221; . phpversion();<br />
mail($EmailGui, $EmailNhan, $NoiDung,$ThongTinMoRong);</p>
<p><em>3. Kỹ thuật gửi email theo định dạng HTML.</em><br />
Chú ý rằng ở chế độ mặc định, nội dung thông điệp được truyền tải đi dưới dạng văn bản thuần túy (plain text), và không thể hiện được các cấu trúc HTML thông thường. Để có thể đưa định dạng HTML vào mail, qua đó cho phép hiển thị hình ảnh, định dạng font chữ&#8230;, ta phải đưa thêm dòng sau đây vào phần header:</p>
<p>MIME-Version: 1.0<br />
Content-type: text/html; charset=iso-8859-1</p>
<p>Ví dụ:</p>
<p>Code:<br />
&lt;?<br />
/* recipients */<br />
$to  = &#8220;Mary &lt;mary@example.com&gt;&#8221; . &#8220;, &#8221; ; //note the comma<br />
$to .= &#8220;Kelly &lt;kelly@example.com&gt;&#8221;;</p>
<p>/* subject */<br />
$subject = &#8220;Birthday Reminders for August&#8221;;</p>
<p>/* message */<br />
$message = &#8216;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Birthday Reminders for August&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;p&gt;Here are the birthdays upcoming in August!&lt;/p&gt;<br />
&lt;table&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;Person&lt;/th&gt;&lt;th&gt;Day&lt;/th&gt;&lt;th&gt;Month&lt;/th&gt;&lt;th&gt;Year&lt;/th&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;Joe&lt;/td&gt;&lt;td&gt;3rd&lt;/td&gt;&lt;td&gt;August&lt;/td&gt;&lt;td&gt;1970&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;Sally&lt;/td&gt;&lt;td&gt;17th&lt;/td&gt;&lt;td&gt;August&lt;/td&gt;&lt;td&gt;1973&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
&#8216;;</p>
<p>/* To send HTML mail, you can set the Content-type header. */<br />
$headers  = &#8220;MIME-Version: 1.0\r\n&#8221;;<br />
$headers .= &#8220;Content-type: text/html; charset=iso-8859-1\r\n&#8221;;</p>
<p>/* additional headers */<br />
$headers .= &#8220;From: Birthday Reminder &lt;birthday@example.com&gt;\r\n&#8221;;</p>
<p>$headers .= &#8220;Cc: birthdayarchive@example.com\r\n&#8221;;<br />
$headers .= &#8220;Bcc: birthdaycheck@example.com\r\n&#8221;;</p>
<p>/* and now mail it */<br />
mail($to, $subject, $message, $headers);<br />
?&gt;</p>
<p><strong>Chúc bạn thành công – <a title="Thiết Kế Website" href="http://www.ticsoft.com/">www.ticsoft.com</a></strong> (Nguồn: phpvn)</p>
<br />Posted in Học PHP Tagged: enail, php, thao tác <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/616/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=616&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/06/18/thao-tac-v%e1%bb%9bi-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Xử lý XML</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/06/18/x%e1%bb%ad-ly-xml/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/06/18/x%e1%bb%ad-ly-xml/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 10:02:08 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xử lý]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=610</guid>
		<description><![CDATA[PHP5 cung cấp class SimpleXML là một class rất dễ sử dụng, bài này sẽ hướng dẫn các bạn parse file XML trong 7 nốt nhạc. Đầu tiên, lấy một đoạn XML mẫu để tập tành phân tích: Code: &#60;?xml version=&#8221;1.0&#8243;?&#62; &#60;books&#62; &#60;book isbn=&#8221;978-1594489501&#8243;&#62; &#60;title&#62;A Thousand Splendid Suns&#60;/title&#62; &#60;author&#62;Khaled Hosseini&#60;/author&#62; &#60;publisher&#62;Riverhead Hardcover&#60;/publisher&#62; &#60;amazon_price&#62;14.27&#60;/amazon_price&#62; &#60;/book&#62; &#60;book [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=610&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>PHP5 cung cấp class SimpleXML là một class rất dễ sử dụng, bài này sẽ hướng dẫn các bạn parse file XML trong 7 nốt nhạc.</p>
<p>Đầu tiên, lấy một đoạn XML mẫu để tập tành phân tích:</p>
<p>Code:<br />
&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;books&gt;<br />
&lt;book isbn=&#8221;978-1594489501&#8243;&gt;<br />
&lt;title&gt;A Thousand Splendid Suns&lt;/title&gt;<br />
&lt;author&gt;Khaled Hosseini&lt;/author&gt;<br />
&lt;publisher&gt;Riverhead Hardcover&lt;/publisher&gt;<br />
&lt;amazon_price&gt;14.27&lt;/amazon_price&gt;<br />
&lt;/book&gt;<br />
&lt;book isbn=&#8221;978-1594489587&#8243;&gt;<br />
&lt;title&gt;The Brief Wondrous Life of Oscar Wao&lt;/title&gt;<br />
&lt;author&gt;Junot Diaz&lt;/author&gt;<br />
&lt;publisher&gt;Riverhead Hardcover&lt;/publisher&gt;<br />
&lt;amazon_price&gt;14.97&lt;/amazon_price&gt;<br />
&lt;/book&gt;<br />
&lt;book isbn=&#8221;978-0545010221&#8243;&gt;<br />
&lt;title&gt;Harry Potter and the Deathly Hallows&lt;/title&gt;<br />
&lt;author&gt;J. K. Rowling&lt;/author&gt;<br />
&lt;publisher&gt;Arthur A. Levine Books&lt;/publisher&gt;<br />
&lt;amazon_price&gt;19.24&lt;/amazon_price&gt;<br />
&lt;/book&gt;<br />
&lt;/books&gt;</p>
<p>Để tạo ra một đối tượng SimpleXmlElement, cách đơn giản là truyền vào một chuỗi hoặc một file:</p>
<p>Code:<br />
// Passing the XML<br />
$books = SimpleXMLElement($XmlData);<br />
//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
// Passing a filename<br />
$books = SimpleXMLElement(&#8216;books.xml&#8217;, null, true);</p>
<p>Nhìn vào đoạn XML ví dụ, ta sẽ lấy ra tất cả các book hay của Amazon:</p>
<p>Code:<br />
&lt;?php<br />
// load SimpleXML<br />
$books = new SimpleXMLElement(&#8216;books.xml&#8217;, null, true);</p>
<p>echo &lt;&lt;&lt;EOF<br />
&lt;table&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;Title&lt;/th&gt;<br />
&lt;th&gt;Author&lt;/th&gt;<br />
&lt;th&gt;Publisher&lt;/th&gt;<br />
&lt;th&gt;Price at Amazon.com&lt;/th&gt;<br />
&lt;th&gt;ISBN&lt;/th&gt;<br />
&lt;/tr&gt;</p>
<p>EOF;<br />
foreach($books as $book) // loop through our books<br />
{<br />
echo &lt;&lt;&lt;EOF<br />
&lt;tr&gt;<br />
&lt;td&gt;{$book-&gt;title}&lt;/td&gt;<br />
&lt;td&gt;{$book-&gt;author}&lt;/td&gt;<br />
&lt;td&gt;{$book-&gt;publisher}&lt;/td&gt;<br />
&lt;td&gt;${$book-&gt;amazon_price}&lt;/td&gt;<br />
&lt;td&gt;{$book['isbn']}&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>EOF;<br />
}<br />
echo &#8216;&lt;/table&gt;&#8217;;<br />
?&gt;</p>
<p>Bạn để ý rằng $books (có chữ &#8216;s&#8217; nhé) là một Element do khái niệm mỗi một file XML thì phải có root element. Vì thế, đừng mong đợi có đối tượng SimpleXml không nhé. Mỗi element có thể có nhiều element con cùng loại hay khác loại, ví dụ này là cùng loại &#8216;book&#8217; và class SimpleXmlElement này cho phép ta duyệt qua các element con cùng loại như một array như ví dụ foreach() ở trên.</p>
<p>Cuối cùng, nói về cú pháp truy cập child element và attribute. Bác nào chưa biết khái niệm này nữa thì:</p>
<p>Code:<br />
&lt;book isbn=&#8221;978-1594489501&#8243;&gt;<br />
&lt;title&gt;A Thousand Splendid Suns&lt;/title&gt;<br />
&lt;author&gt;Khaled Hosseini&lt;/author&gt;<br />
&lt;publisher&gt;Riverhead Hardcover&lt;/publisher&gt;<br />
&lt;amazon_price&gt;14.27&lt;/amazon_price&gt;<br />
&lt;/book&gt;</p>
<p>isbn là một attribute, các giá trị của một attribute phải để trong dấu (&#8220;)<br />
&lt;title&gt;, &lt;author&gt;,&#8230; là các child element</p>
<p>Chỉ giải thích tới đây thôi, bác nào có ý định ngâm cứu XML, XML Schema,&#8230; thì 5s gợi ý là nên &#8230; từ bỏ ý định ngông cuống thừa thời gian này đi vì có cả năm  may ra học mới xong mà học từ tháng 1-12 thì tới tháng 12 sẽ quên tháng 1 . Cứ việc coi nó như khái niểm HTML đã  học rồi xài cho thoải mái nhá.</p>
<p>Quay về cú pháp, lại coi ví dụ &#8216;simple&#8217; trên: $book-&gt;title là truy cập child element trong khi $book['isbn'] là truy cập attribute. Done!!!</p>
<p>Đơn giản thế thôi, bạn thấy xử lý XML data có dễ chưa ?</p>
<p>Ví dụ trên, nếu bạn không thích dụng foreach thì có thể dùng biến counter $i, viết lại là $tempBook = $books-&gt;book[$i] rồi dùng $tempBook để xử lý.</p>
<p>Giờ thêm vào tí XPath cho nó bằng anh bằng em:</p>
<p>XPath đơn giản là cách chỉ ra đường dẫn &#8220;path&#8221; trong 1 XML document thông qua các element cha/con theo cú pháp giống như thư mục của linux: /home/user/&#8230; Xpath giúp bạn lọc ra các child element trong các element cha cùng loại, gom lại thành mảng và xử lý.</p>
<p>Ví dụ sau giúp bạn lấy ra tất cả các title của book và tất cả các số ISBN:</p>
<p>Code:<br />
$titles = $books-&gt;xpath(&#8216;book/title&#8217;);<br />
foreach($titles as $title)<br />
{<br />
echo $title.PHP_EOL;<br />
}<br />
//////////////////////////////////////////////<br />
$isbn = $books-&gt;xpath(&#8216;book/@isbn&#8217;);<br />
foreach($isbn as $isbn)<br />
{<br />
echo $isbn.PHP_EOL;<br />
}</p>
<p>Nhớ chú ý cách dùng cú pháp / và /@ nhé.</p>
<p>Giờ parse thử RSS của tuổi trẻ coi sao nè</p>
<p>Code:<br />
&lt;?php<br />
$rss = new SimpleXMLElement(&#8216;http://www.tuoitre.com.vn/tianyon/RssView.aspx?ChannelID=16&#8242;, null, true);</p>
<p>echo &#8220;&lt;h1&gt;&lt;a href=&#8217;{$rss-&gt;channel-&gt;link}&#8217;&gt;{$rss-&gt;channel-&gt;title}&lt;/a&gt;&lt;/h1&gt;&#8221;.PHP_EOL.&#8217;&lt;hr /&gt;&#8217;.PHP_EOL;</p>
<p>foreach($rss-&gt;xpath(&#8216;channel/item&#8217;) as $item)<br />
{<br />
echo &lt;&lt;&lt;EOF<br />
&lt;h2&gt;&lt;a href=&#8217;{$item-&gt;link}&#8217;&gt;{$item-&gt;title}&lt;/a&gt;&lt;/h2&gt;<br />
&lt;div&gt;Posted at: {$item-&gt;pubDate}&lt;/div&gt;<br />
{$item-&gt;description}<br />
&lt;hr /&gt;</p>
<p>EOF;<br />
}<br />
?&gt;</p>
<p>Cuối cùng,một vài thuộc tính của đối tượng SimpleXmlElement các bạn sẽ quan tâm:<br />
$value      = trim((string) $element);  // Bản thên element nó là XML, bạn lấy giá trị của element thì ép kiểu về string<br />
$attributes = $element-&gt;attributes();   // lấy tất cả các attribute<br />
$children   = $element-&gt;children();     // lấy các child element</p>
<p><strong>Chúc bạn thành công – <a title="Thiết Kế Website" href="http://www.ticsoft.com/">www.ticsoft.com</a></strong> (Nguồn: phpvn)</p>
<br />Posted in Học PHP Tagged: php, xử lý, xml <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/610/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=610&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/06/18/x%e1%bb%ad-ly-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Tìm hiều về LDAP (Lightweight Directory Access Protocol)</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/06/18/tim-hi%e1%bb%81u-v%e1%bb%81-ldap-lightweight-directory-access-protocol/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/06/18/tim-hi%e1%bb%81u-v%e1%bb%81-ldap-lightweight-directory-access-protocol/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 09:58:24 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Lightweight Directory Access Protocol]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[thiết kế website]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=608</guid>
		<description><![CDATA[Hiện nay, để xây dựng các hệ thống lớn, điều tối quan trọng là phải làm cách nào để có thể tích hợp dữ liệu để từ đó có thể dùng chung giữa các hệ thống khác nhau. Trong đó, tích hợp tài khoản của người sử dụng là vấn đề cần thiết nhất trong [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=608&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hiện nay, để xây dựng các hệ thống lớn, điều tối quan trọng là phải làm cách nào để có thể tích hợp dữ liệu để từ đó có thể dùng chung giữa các hệ thống khác nhau.</p>
<p>Trong đó, tích hợp tài khoản của người sử dụng là vấn đề cần thiết nhất trong những cái &#8220;tối quan trọng&#8221; trên.</p>
<p>Hãy tưởng tượng một hệ thống với khoảng 5 &#8211; 6 mô đun khác nhau, mỗi mô đun lại được thiết kế trên một nền tảng khác nhau (Có ông thì dùng Oracle + AS Portal, có người thì xài DB2 với WebSphere, lão khác thì MySQL với phpnuke, ông thì xài Wíndow, lão thì cài Linux, có thằng điên lại chỉ thích Unix&#8230;hic, cuộc đời thật đúng là bể khổ), do đó cần có một hệ thống người dùng khác nhau. Vậy thì với mỗi mô đun, người sử dụng cần phải có một User Name, một mật khẩu khác nhau, đó là điều không thể chấp nhận được. Người dùng chẳng mấy chốc mà chán ghét hệ thống.</p>
<p>Làm cách nào để có thể tích hợp được người dùng giữa các hệ thống trên? Câu trả lời đó là LDAP.</p>
<p><strong>Vây LDAP là gì?</strong></p>
<p>LDAP &#8211; viết tắt của Lightweight Directory Access Protocol, hay dịch ra tiếng Việt có nghĩa là giao thức truy cập nhanh các dịch vụ thư mục.<br />
•   Là một giao thức tìm, truy nhập các thông tin dạng thư mục trên server.<br />
•   Nó là giao thức dạng Client/Server dùng để truy cập dịch vụ thư mục.<br />
•   LDAP chạy trên TCP/IP hoặc các dịch vụ hướng kết nối khác.<br />
•   Là một mô hình thông tin cho phép xác định cấu trúc và đặc điểm của thông tin trong thư mục.<br />
•   Là một không gian tên cho phép xác định cách các thông tin được tham chiếu và tổ chức<br />
•   Một mô hình các thao tác cho phép xác định các tham chiếu và phân bố dữ liệu.<br />
•   Là một giao thức mở rộng<br />
•   Là một mô hình thông tin mở rộng.</p>
<p>Ở đây chúng ta cần tránh hiểu nhầm từ &#8220;thư mục&#8221; như trên Windows là folder hay directory, đó là thư mục theo nghĩa hẹp để quản lý hệ thống tệp tin. Từ thư mục trong LDAP mang ý nghĩa rộng hơn, nó bao hàm các cấu trúc dữ liệu dạng liệt kê theo thư mục (hay mục lục) &#8211; một &#8220;từ khoá&#8221; của dân thư viện nhằm ám chỉ cách thức sắp xếp dữ liệu để tiện truy xuất nhất.</p>
<p><strong>Làm việc với LDAP thông qua PHP</strong></p>
<p>Trình tự cơ bản khi có thao tác với LDAP gồm các bước<br />
•   Connect (kết nối với LDAP)<br />
•   Bind (kiểu kết nối: nặc danh hoặc đăng nhập xác thực)<br />
•   Search (tìm kiếm)<br />
•   Interpret search (xử lý tìm kiếm)<br />
•   Result (kết quả)<br />
•   Close connection (đóng kết nối)</p>
<p>Ldap_connect():<br />
hàm kết nối tới máy chủ LDAP, hàm này có 2 tham số: hostname (tên máy chủ LDAP) và port (cổng kết nối, mặc định là cổng 389)<br />
Ldap_connect(string hostname, int port);</p>
<div><span style="font-family:Verdana;color:#000000;font-size:x-small;">Code:<br />
</span><span style="color:#000000;"><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">&lt;?php</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// LDAP variables<br />
</span><span style="color:#0000bb;">$ldaphost </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;ldap.example.com&#8221;</span><span style="color:#007700;">; </span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// your ldap servers<br />
</span><span style="color:#0000bb;">$ldapport </span><span style="color:#007700;">= </span><span style="color:#0000bb;">389</span><span style="color:#007700;">; </span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// your ldap server&#8217;s port number</p>
<p>// Connecting to LDAP
</p>
<p></span><span style="color:#0000bb;">$ldapconn </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_connect</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ldaphost</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$ldapport</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">)<br />
or die(</span><span style="color:#dd0000;">&#8220;Không thể kết nối được đến $ldaphost&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">);</p>
<p></span></span><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">?&gt;</p>
<p></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>Ldap_bind();<br />
</strong>Hàm nối kết với server LDAP để  có thể thao tác với LDAP<br />
Vd kết nối với LDAP server bằng user và password hợp  lệ<br />
</span></span></span></span></span></div>
<div><span style="font-family:Verdana;color:#000000;font-size:x-small;">Code:<br />
</span><span style="color:#000000;"><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">&lt;?php</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// using ldap bind<br />
</span><span style="color:#0000bb;">$ldaprdn </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8216;uname&#8217;</span><span style="color:#007700;">; </span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// ldap rdn or dn<br />
</span><span style="color:#0000bb;">$ldappass </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8216;password&#8217;</span><span style="color:#007700;">; </span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// associated password</p>
<p>// connect to ldap server
</p>
<p></span><span style="color:#0000bb;">$ldapconn </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;ldap.example.com&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">)<br />
or die(</span><span style="color:#dd0000;">&#8220;Could not connect to LDAP server.&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p>if (</p>
<p></span><span style="color:#0000bb;">$ldapconn</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">) {</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// binding to ldap server<br />
</span><span style="color:#0000bb;">$ldapbind </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_bind</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ldapconn</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$ldaprdn</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$ldappass</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">);</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// verify binding<br />
</span><span style="color:#007700;">if (</span><span style="color:#0000bb;">$ldapbind</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">) {<br />
echo </span><span style="color:#dd0000;">&#8220;LDAP bind successful&#8230;&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
} else {<br />
echo </span><span style="color:#dd0000;">&#8220;LDAP bind failed&#8230;&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">;<br />
}</p>
<p>}</p>
</p>
<p></span></span><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">?&gt;</p>
<p></span><strong><em><span style="font-family:Verdana;color:#000000;font-size:x-small;">Nếu kết nối bằng quyền anonymously<br />
</span></em></strong></span></span></div>
<div><span style="font-family:Verdana;color:#000000;font-size:x-small;">Code:<br />
</span><span style="color:#000000;"><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">&lt;?php</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">//using ldap bind anonymously</p>
<p>// connect to ldap server
</p>
<p></span><span style="color:#0000bb;">$ldapconn </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;ldap.example.com&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">)<br />
or die(</span><span style="color:#dd0000;">&#8220;Could not connect to LDAP server.&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p>if (</p>
<p></span><span style="color:#0000bb;">$ldapconn</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">) {</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// binding anonymously<br />
</span><span style="color:#0000bb;">$ldapbind </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_bind</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ldapconn</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p>if (</p>
<p></span><span style="color:#0000bb;">$ldapbind</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">) {<br />
echo </span><span style="color:#dd0000;">&#8220;LDAP bind anonymous successful&#8230;&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
} else {<br />
echo </span><span style="color:#dd0000;">&#8220;LDAP bind anonymous failed&#8230;&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">;<br />
}</p>
<p>}</p>
</p>
<p></span></span><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">?&gt;</span><span style="color:#000000;"><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">&lt;?php</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">//using ldap bind anonymously</p>
<p>// connect to ldap server
</p>
<p></span><span style="color:#0000bb;">$ldapconn </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;ldap.example.com&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">)<br />
or die(</span><span style="color:#dd0000;">&#8220;Could not connect to LDAP server.&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p>if (</p>
<p></span><span style="color:#0000bb;">$ldapconn</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">) {</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// binding anonymously<br />
</span><span style="color:#0000bb;">$ldapbind </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_bind</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ldapconn</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p>if (</p>
<p></span><span style="color:#0000bb;">$ldapbind</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">) {<br />
echo </span><span style="color:#dd0000;">&#8220;LDAP bind anonymous successful&#8230;&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
} else {<br />
echo </span><span style="color:#dd0000;">&#8220;LDAP bind anonymous failed&#8230;&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">;<br />
}</p>
<p>}</p>
</p>
<p></span></span><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">?&gt;</p>
<p></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>ldap_search();<br />
</strong>ldap_search ( resource  link_identifier, string base_dn, string filter [, array attributes [, int  attrsonly [, int sizelimit [, int timelimit [, int deref]]]]] )<br />
VD tìm kiếm  các thông tin của tất cả mọi người ở trong “My Company” nơi surname hoặc given  name chứa trong biến $person. Ví dụ này yêu cầu server tìm ra thông tin của  nhiều hơn một thuộc tính cần tìm kiếm.</p>
<p></span></span></span></span></span></span></span></div>
<div><span style="font-family:Verdana;color:#000000;font-size:x-small;">Code:</p>
<p></span><span style="color:#000000;"><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">&lt;?php<br />
</span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// $ds is a valid link identifier for a directory server</p>
<p>// $person is all or part of a person&#8217;s name, eg &#8220;Jo&#8221;</p>
</p>
<p></span><span style="color:#0000bb;">$dn </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;o=My Company, c=US&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">$filter</span><span style="color:#007700;">=</span><span style="color:#dd0000;">&#8220;(|(sn=$person*)(givenname=$person*))&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">$justthese </span><span style="color:#007700;">= array(</span><span style="color:#dd0000;">&#8220;ou&#8221;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8220;sn&#8221;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8220;givenname&#8221;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8220;mail&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p></span><span style="color:#0000bb;">$sr</span><span style="color:#007700;">=</span><span style="color:#0000bb;">ldap_search</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$dn</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$filter</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$justthese</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p></span><span style="color:#0000bb;">$info </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_get_entries</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$sr</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p>echo </p>
<p></span><span style="color:#0000bb;">$info</span><span style="color:#007700;">[</span><span style="color:#dd0000;">"count"</span><span style="color:#007700;">].</span><span style="color:#dd0000;">&#8221; entries returned\n&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">;<br />
</span></span><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">?&gt;</p>
<p></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>Ldap_close();</p>
<p></strong>Hàm đóng kết nối với LDAP,  hàm này tương đương với ldap_unbind();<br />
bool ldap_unbind ( resource  link_identifier );<br />
Nếu kết nối đóng thành công sẽ trả về giá trị TRUE, ngược  lại là FALSE.</p>
<p></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>ldap_add();</p>
<p></strong>Hàm thêm các entry vào thư mục  LDAP</p>
<p>bool ldap_add ( resource link_identifier, string dn, array entry  )</p>
</p>
<p></span></span></span></span></span></div>
<div><span style="font-family:Verdana;color:#000000;font-size:x-small;">Code:<br />
</span><span style="color:#000000;"><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#0000bb;">&lt;?php<br />
$ds </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;localhost&#8221;</span><span style="color:#007700;">); </span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// assuming the LDAP server is on this host</p>
<p></span><span style="color:#007700;">if (</span><span style="color:#0000bb;">$ds</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">) {<br />
</span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// bind with appropriate dn to give update access<br />
</span><span style="color:#0000bb;">$r </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_bind</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8220;cn=root, o=My Company, c=US&#8221;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8220;secret&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">);</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// prepare data<br />
</span><span style="color:#0000bb;">$info</span><span style="color:#007700;">[</span><span style="color:#dd0000;">"cn"</span><span style="color:#007700;">] = </span><span style="color:#dd0000;">&#8220;John Jones&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">$info</span><span style="color:#007700;">[</span><span style="color:#dd0000;">"sn"</span><span style="color:#007700;">] = </span><span style="color:#dd0000;">&#8220;Jones&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">$info</span><span style="color:#007700;">[</span><span style="color:#dd0000;">"mail"</span><span style="color:#007700;">] = </span><span style="color:#dd0000;">&#8220;jonj@example.com&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">$info</span><span style="color:#007700;">[</span><span style="color:#dd0000;">"objectclass"</span><span style="color:#007700;">] = </span><span style="color:#dd0000;">&#8220;person&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">;</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// add data to directory<br />
</span><span style="color:#0000bb;">$r </span><span style="color:#007700;">= </span><span style="color:#0000bb;">ldap_add</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8220;cn=John Jones, o=My Company, c=US&#8221;</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$info</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p></span><span style="color:#0000bb;">ldap_close</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);<br />
} else {<br />
echo </span><span style="color:#dd0000;">&#8220;Unable to connect to LDAP server&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">;<br />
}<br />
</span></span><span style="color:#0000bb;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">?&gt;</p>
<p></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>ldap_delete();</p>
<p></strong>Xóa một entry khỏi thư mục  LDAP</p>
<p></span></span></span></span></span></div>
<div><span style="font-family:Verdana;color:#000000;font-size:x-small;">Code:<br />
bool ldap_delete ( resource link_identifier, string dn  )</p>
<p>Hàm trả về giá trị TRUE nếu xóa thành công và FALSE nếu thất  bại</p>
</p>
<p></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>ldap_compare();</p>
<p></strong>So sánh giá trị của một  thuộc tính</p>
<p>mixed ldap_compare ( resource link_identifier, string dn,  string attribute, string value )</p>
<p>VD:</p>
</p>
<p></span></span></span></div>
<div><span style="font-family:Verdana;color:#000000;font-size:x-small;">Code:<br />
</span><span style="color:#000000;"><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#0000bb;">&lt;?php</p>
<p>$ds</p>
<p></span><span style="color:#007700;">=</span><span style="color:#0000bb;">ldap_connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;localhost&#8221;</span><span style="color:#007700;">); </span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// assuming the LDAP server is on this host</p>
<p></span><span style="color:#007700;">if (</span><span style="color:#0000bb;">$ds</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">) {</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// bind<br />
</span><span style="color:#007700;">if (</span><span style="color:#0000bb;">ldap_bind</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">)) {</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// prepare data<br />
</span><span style="color:#0000bb;">$dn </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;cn=Matti Meikku, ou=My Unit, o=My Company, c=FI&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">$value </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;secretpassword&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">$attr </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;password&#8221;</span></span></span></span><span style="color:#007700;"><span style="font-family:Verdana;color:#000000;font-size:x-small;">;</p>
<p></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#ff8000;">// compare value<br />
</span><span style="color:#0000bb;">$r</span><span style="color:#007700;">=</span><span style="color:#0000bb;">ldap_compare</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$dn</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$attr</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$value</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p>if (</p>
<p></span><span style="color:#0000bb;">$r </span><span style="color:#007700;">=== -</span><span style="color:#0000bb;">1</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">) {<br />
echo </span><span style="color:#dd0000;">&#8220;Error: &#8221; </span><span style="color:#007700;">. </span><span style="color:#0000bb;">ldap_error</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);<br />
} elseif (</span><span style="color:#0000bb;">$r </span><span style="color:#007700;">=== </span><span style="color:#0000bb;">true</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">) {<br />
echo </span><span style="color:#dd0000;">&#8220;Password correct.&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
} elseif (</span><span style="color:#0000bb;">$r </span><span style="color:#007700;">=== </span><span style="color:#0000bb;">false</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">) {<br />
echo </span><span style="color:#dd0000;">&#8220;Wrong guess! Password incorrect.&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
}</p>
<p>} else {<br />
echo </p>
<p></span><span style="color:#dd0000;">&#8220;Unable to bind to LDAP server.&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
}</p>
<p></span><span style="color:#0000bb;">ldap_close</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ds</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">);</p>
<p>} else {<br />
echo </p>
<p></span><span style="color:#dd0000;">&#8220;Unable to connect to LDAP server.&#8221;</span></span></span></span><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="color:#007700;">;<br />
}<br />
</span><span style="color:#0000bb;">?&gt;</span></span></span></span></span></p>
<p><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>Ldap_count_entries();</strong></span></span></span></p>
<p>Đếm số lượng các  entry được tìm thấy từ kết quả của lệnh tìm kiếm.</p>
<p><em>int  ldap_count_entries ( resource link_identifier, resource result_identifier  )</em></p>
<p>ldap_error();</p>
<p>trả lại thông báo lỗi LDAP của lệnh LDAP cuối  cùng.</p>
<p><em>string ldap_error ( resource link_identifier  )</em></p>
<p><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>ldap_first_attribute();<br />
</strong>hàm trả lại thuộc tính  đầu tiên của entry</span></span></span></p>
<p><em><span style="font-family:Verdana;color:#000000;font-size:x-small;">string ldap_first_attribute ( resource link_identifier,<br />
resource result_entry_identifier,<br />
int &amp;ber_identifier  )</span></em></p>
<p><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>ldap_first_entry();</strong></span></span></span></p>
<p>trả lại kết quả id đầu  tiên của entry</p>
<p><em><span style="font-family:Verdana;color:#000000;font-size:x-small;">ldap_first_entry ( resource link_identifier, resource result_identifier  )</span></em></p>
<p><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>ldap_first_reference();</strong></span></span></span></p>
<p>trả lại tham chiếu  đầu tiên</p>
<p><em><span style="font-family:Verdana;color:#000000;font-size:x-small;">ldap_first_reference ( resource link, resource result  )</span></em></p>
<p><span style="font-family:Verdana;"><span style="font-size:x-small;"><span style="color:#000000;"><strong>ldap_free_result();</strong></span></span></span></p>
<p>giải phóng kết quả bộ  nhớ</p>
<p><span style="font-family:Verdana;color:#000000;font-size:x-small;"><em>bool  ldap_free_result ( resource result_identifier )<br />
</em></span></p>
</div>
<p><strong>Chúc bạn thành công – <a title="Thiết Kế Website" href="http://www.ticsoft.com/">www.ticsoft.com</a></strong> (Nguồn: phpvn)</p>
<br />Posted in Học PHP Tagged: LDAP, Lightweight Directory Access Protocol, php, thiết kế website <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/608/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=608&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/06/18/tim-hi%e1%bb%81u-v%e1%bb%81-ldap-lightweight-directory-access-protocol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Ứng dụng sockets với php</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/06/05/%e1%bb%a9ng-d%e1%bb%a5ng-sockets-v%e1%bb%9bi-php/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/06/05/%e1%bb%a9ng-d%e1%bb%a5ng-sockets-v%e1%bb%9bi-php/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 04:51:28 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[ứng dụng]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sockets]]></category>
		<category><![CDATA[thiết kế website]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=601</guid>
		<description><![CDATA[Sockets là một cách thức dùng trong PHP để kết nối với một server khác qua mạng hay internet. function căn bản để mở kết nối đến server là fsocken(). Có thể bạn sẽ thấy ngạc nhiên tại sao bạn lại muốn kết nối đến server khác. Nếu bạn cần thêm thông tin về 3rd [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=601&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sockets là một cách thức dùng trong PHP để kết nối với một server khác qua mạng hay internet.</p>
<p>function căn bản để mở kết nối đến server là fsocken(). Có thể bạn sẽ thấy ngạc nhiên tại sao bạn lại muốn kết nối đến server khác. Nếu bạn cần thêm thông tin về 3rd party server thì sockets là cái cho bạn cần.<br />
Tutorial này hướng dẫn chúng ta các phương thức sau đây :<br />
# Connect To A Server Using Sockets<br />
# Disconnect From a Server%br%<br />
# Send a request to a server%br%<br />
# List the number of lines returned by the server on a request%br%<br />
# Use sockets in a practical project like a whois look-up script</p>
<p>Kết nối qua sử dụng sockets với PHP<br />
Nếu bạn có ý nghĩ nối kết với internet server khác với php rất rắc rối , có lẽ bạn hơi lầm. Bạn chỉ cần nối mạng bằng một dòng code của php. trong phần này sẽ giải thích cách nối và ngắt nối mạng qua sử dụng sockets.<br />
Code:</p>
<p>&lt;?php<br />
/*<br />
Tham số mà fsockopen cần là:<br />
fsockopen(IP/Hostname, cổng (port), Lỗi ($errno), miêu tả lỗi phát hiện($errdesc)<br />
*/<br />
$fp = fsockopen( &#8220;www.abc.com&#8221;, 80, $errno,<br />
$errdesc);<br />
?&gt;<br />
Bạn đã thiết lập một kết nối đến server vd: phpvn.org. Bạn cũng nên làm quen với function fclose() để ngắt nối mạng.</p>
<p>&lt;?php<br />
$fp = fsockopen( &#8220;www.abc.com&#8221;, 80, $errno,<br />
$errdesc); //establish connection<br />
fclose($fp); //close connection<br />
?&gt;</p>
<p>Gởi một Request</p>
<p>Trong phần kế tiếp này bạn sẽ làm quen với cách gởi một request đến server và cho thể hiện một danh sách mà server gởi trả lại cho bạn cũng như cách làm việc của nó. Việc trước tiên cần làm là mở một kết nối đến server với một tên biến $fp, có nghĩa bạn đã gởi một $fp và nhận được một kết quả trả về từ server mà bạn đã gởi đến.<br />
Code:</p>
<p>&lt;?php<br />
/*<br />
Kết nối đến server vd: www. example.com<br />
*/<br />
$host = &#8220;www.example.com&#8221;;<br />
$page = &#8220;/index.html&#8221;;<br />
$fp = fsockopen($host, 80, $errno, $errdesc) or<br />
die(&#8220;Connection to $host failed&#8221;);<br />
/*<br />
Chúng ta xác định thông tin của header để gởi đến cho server<br />
GET, được hiểu chúng ta muốn nhận được thông tin hay trang web từ server đó<br />
Bạn cũng có thể sử dụng POST để làm việc này.<br />
*/<br />
$request = &#8220;GET $page HTTP/1.0&#92;r&#92;n&#8221;;<br />
$request .= &#8220;Host: $host&#92;r&#92;n&#8221;;<br />
$request .= &#8220;Referer: $host&#92;r&#92;n&#8221;;<br />
/*<br />
Sử dụng function fput() gởi đòi hỏi(request)  đến server  và tạo một vòng lập (loop)<br />
lấy kết quả được từ mãng, được gọi là $page<br />
*/<br />
fputs($fp, $request);<br />
while(!feof($fp)){<br />
$page[] = fgets($fp, 1024);<br />
}<br />
/*<br />
Đóng mạng đồng thời lấy tổng số trang nhận được<br />
*/<br />
fclose($fp);<br />
echo &#8220;The server returned &#8220;.(count($page)).<br />
&#8221; Lines&#8221;;<br />
/*<br />
Tạo vòng lập (for) và in dữ liệu.<br />
*/<br />
for($i=0; $i&amp;lt;count($page); $i++){<br />
echo $page[$i];<br />
}<br />
?&gt;</p>
<p>Tìm kiếm (Searching for a page)<br />
Trong phần này chúng ta sử dụng fsockenopen() để kể nối đến nhiều server và kiểm soát một trang nào đó trong server.<br />
Code:</p>
<p>&lt;?php<br />
$servers = array(<br />
&#8220;www.example.com&#8221; =&amp;gt; &#8220;/index.html&#8221;,<br />
&#8220;www.example2.com&#8221; =&amp;gt; &#8220;/index.php&#8221;<br />
);<br />
/*<br />
Tạo vòng lập cho server array và kết nối đên mạng,<br />
Báo lỗi nếu không kết nối được<br />
*/<br />
foreach($servers as $host=&amp;gt; $page){<br />
$fp = fsockopen($host,80,$errno,$errdesc,10);<br />
echo &#8220;Trying $host&amp;lt;br&amp;gt;&#92;n&#8221;;<br />
if(!$fp){<br />
echo(&#8220;couldnt connect to $host&#8221;);<br />
echo &#8220;&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&amp;lt;br&amp;gt;&#92;n&#8221;;<br />
continue;<br />
}<br />
/*<br />
Xác định thông tin, và gởi request đến server<br />
*/<br />
echo &#8220;trying to get $page&amp;lt;br&amp;gt;&#92;n&#8221;;<br />
$request = &#8220;HEAD $page HTTP/1.0&#92;r&#92;n&#92;r&#92;n&#8221;;<br />
fputs($fp, $request);<br />
echo fgets($fp, 1024);<br />
echo &#8220;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#92;n&#8221;;<br />
/*<br />
Đóng mạng<br />
*/<br />
fclose($fp);</p>
<p>}<br />
?&gt;</p>
<p>Dòng code trên được diễn như sau:<br />
Trying: www.example.com<br />
Trying to get: /index.html<br />
HTTP/1.1 200 OK</p>
<p>Nó chỉ hiện những trang đã tìm được, nếu không sẽ thay thế trang 404 bằng mã số 200.</p>
<p>ứng dụng Whois</p>
<p>Bạn đã biết qua ứng dụng kết nối đến một server, tạo vòng lập để in kết quả và cách đóng mạng. chúng ta thực hành thêm một vài thao tác cho ứng dụng whois.</p>
<p>Code:</p>
<p>&lt;?php<br />
extract($_POST);<br />
function whois($domain,$ext){<br />
$url=$domain.$ext;<br />
/*<br />
sử dụng switch() để xác định whois server nào là server thích hợp<br />
nhất để kết nối domain<br />
*/<br />
switch($ext){<br />
case &#8220;.co.uk&#8221;:<br />
$whois = &#8220;whois.nic.uk&#8221;;<br />
break;<br />
case &#8220;.com&#8221;:<br />
$whois = &#8220;whois.networksolutions.com&#8221;;<br />
break;<br />
case &#8220;.fr&#8221;:<br />
$whois = &#8220;whois.nic.fr&#8221;;<br />
break;<br />
case &#8220;.biz&#8221;:<br />
$whois = &#8220;whois.biz&#8221;;<br />
break;<br />
default:<br />
$whois = &#8220;whois.networksolutions.com&#8221;;<br />
}<br />
if (trim($url) &amp;lt;&amp;gt; &#8220;&#8221;) {<br />
$url = trim($url);<br />
/*<br />
kết nối đến server<br />
*/<br />
$f = fsockopen($whois, 43, $errno, $errstr, 30);<br />
if (!$f) {<br />
echo &#8220;Connection To Server Failed ($errno)&#8221;;<br />
} else {<br />
/*<br />
Gởi domain đến một server và chờ nhận kết quả<br />
*/<br />
fputs($f, &#8220;$url&#92;r&#92;n&#8221;);<br />
print &#8220;&amp;lt;pre&amp;gt;&#92;r&#92;n&#8221;;<br />
while (!feof($f)) {<br />
echo fread($f,128);<br />
}<br />
print &#8220;&amp;lt;/pre&amp;gt;&#8221;;<br />
/*<br />
Đóng mạng<br />
*/<br />
fclose($f);<br />
}<br />
}else{<br />
echo &#8220;Invalid domain entered&#8221;;<br />
}<br />
}<br />
?&gt;</p>
<p><strong><span style="font-family:Arial;">Chúc bạn thành công  – </span></strong><a title="Thiết kế website" href="http://www.ticsoft.com/"><strong>www.ticsoft.com</strong></a><span style="font-family:Arial;"> (Nguồn: sưu tầm)</span></p>
<br />Posted in Học PHP Tagged: ứng dụng, php, sockets, thiết kế website <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/601/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=601&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/06/05/%e1%bb%a9ng-d%e1%bb%a5ng-sockets-v%e1%bb%9bi-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Tìm hiểu về thư viện ZendFramework với PHP</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/06/05/tim-hi%e1%bb%83u-v%e1%bb%81-th%c6%b0-vi%e1%bb%87n-zendframework-v%e1%bb%9bi-php/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/06/05/tim-hi%e1%bb%83u-v%e1%bb%81-th%c6%b0-vi%e1%bb%87n-zendframework-v%e1%bb%9bi-php/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 03:56:47 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[thiết kế website]]></category>
		<category><![CDATA[thư viện]]></category>
		<category><![CDATA[ZendFramework]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=596</guid>
		<description><![CDATA[Hướng dẫn này nhằm giúp các bạn đi vào thế giới của ZendFramework để có thể dễ dàng tạo các ứng dụng web qua thư viện của ZF, trong phần hướng dẫn này chúng ta cùng nhau làm một ứng dụng lưu giữ dữ liệu của CD trong CSDL. Cấu trúc Model-View-Controller Một lối viết [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=596&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hướng dẫn này nhằm giúp các bạn đi vào thế giới của ZendFramework để có thể dễ dàng tạo các ứng dụng web qua thư viện của ZF, trong phần hướng dẫn này chúng ta cùng nhau làm một ứng dụng lưu giữ dữ liệu của CD trong CSDL.</p>
<p><strong>Cấu trúc Model-View-Controller</strong></p>
<p>Một lối viết code bình thường trong ừng dụng PHP như sau:<br />
Code:</p>
<p>&lt;?php<br />
include &#8220;common-libs.php&#8221;;<br />
include &#8220;config.php&#8221;;<br />
mysql_connect($hostname, $username, $password);<br />
mysql_select_db($database);<br />
?&gt;</p>
<p>&lt;?php include &#8220;header.php&#8221;; ?&gt;<br />
&lt;h1&gt;Home Page&lt;/h1&gt;</p>
<p>&lt;?php<br />
$sql = &#8220;SELECT * FROM news&#8221;;<br />
$result = mysql_query($sql);<br />
?&gt;<br />
&lt;table&gt;<br />
&lt;?php<br />
while ($row = mysql_fetch_assoc($result)) {<br />
?&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;?php echo $row['date_created']; ?&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;?php echo $row['title']; ?&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;?php<br />
}<br />
?&gt;<br />
&lt;/table&gt;<br />
&lt;?php include &#8220;footer.php&#8221;; ?&gt;</p>
<p>Dần theo thời gian tuổi đời của ứng dụng nó khó có thể phát triển theo nhu cầu của khách hàng, khi cần được được phát triển toàn bộ.<br />
Cách tốt nhất dùng để cải tiến và chăm sóc một ứng dụng cho dễ dàng là chia cắt ngăn nấp cấu trúc của ứng dụng thành 3 tầng riêng lẻ.<br />
Mỗi tầng sẽ có một trách nhiệm riêng của nó ( và hầu hết các tệp tin đều nằm riêng lẽ ).</p>
<p>- MODEL : Mô hình MD là một trong 3 lớp như vừa kể trên, nó có tác dụng đến thuộc tính của các tệp tin có nhiệm vụ thi hành một chức năng nào đó.<br />
Ứng dụng trên cho thấy cách thiết kế về dữ liệu Tin Tức. Do đó Mô hình MD tập trung một cánh lô ghíc lôi dữ liệu ra từ csdl cộng thêm chức năng cất giữ dữ liệu vào csdl.<br />
- VIEWS :  Mô hình Views có nhiệm vụ liên kết với Mô hình Model và xuất các dữ liệu ra trình duyệt theo nhu cầu đòi hỏi của người tiêu dùng (user). Điển hình là các văn bản HTML.<br />
- CONTROLLER : Mô hình CT liên kết hai mô hình MD và Views cúng như kiểm soát chính xác các tệp tin trước khi cho tệp tin đó hiện thị ra trình duyệt.</p>
<p>Zend Framework đáp ứng đầy đủ các đòi hỏi trên theo cấu trúc Model-View-Controller  (MVC).<br />
ZF được sử dụng vào các phát triển theo nhu cầu nhiều phần và chức năng động để cải tiến và sửa chữa ứng dụng sau này.</p>
<p><strong>Nhu cầu cần thiết</strong><br />
Zend Framework cần các điều kiện như sau:</p>
<p>•    PHP 5.1.4 (hoặc mới hơn)<br />
•    Web-Server cho phép thao tác với mod_rewrite , nếu chưa kích hoạt bạn nên xóa # trước dòng rewrite_mode này. (tệp config này nằm trong hộp thoại Apache/config)</p>
<p>Tải Zendframework :  http://framework.zend.com/download/stable<br />
Cấu hình ứng dụng( chúng ta sắp làm) :<br />
theo trình bày của Zend  trong Document chúng ta không cần một cấu hình căn bản nào cả, nhưng khi viết một ứng dụng chung ta cần một tổ chức mạch lạc cho cấu trúc hộp thoại.<br />
và cho rằng chúng ta là một Admin của một host để có đủ quyền sửa chữa các tệp tin cần thiết.<br />
Bắt đầu tạo một cấu trúc với tên zf-tutorial trong Document Root của server. địa chỉ của Url sẽ là như vầy : http://localhost/zf-tutorial</p>
<p>Tạo các hộp thoại sau như cấu hình này:</p>
<p>Code:</p>
<p>zf-tutorial/<br />
/application<br />
/controllers<br />
/models<br />
/views<br />
/filters<br />
/helpers<br />
/scripts<br />
/library<br />
/public<br />
/images<br />
/scripts<br />
/styles</p>
<p>Như bạn thấy chúng ta đã thiết lâp mô hìnheo kiểu MVC với cách thức chia cách mạch lạc, ngăn nắp .Các hộp thoại hình ảnh, Javascript và tệp Css đều nằm riêng và nằm trong cấu trúc của thư mục Public.<br />
Thư viện ZendFramework sau khi unzip ra chúng copy nó vào trong thư mục library/Zend.</p>
<p><strong>Chúc bạn thành công &#8211; <a title="Thiết Kế Website" href="http://www.ticsoft.com/">www.ticsoft.com</a></strong> (Nguồn: phpvn)</p>
<br />Posted in Học PHP Tagged: php, thiết kế website, thư viện, ZendFramework <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/596/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/596/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/596/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/596/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/596/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/596/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/596/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/596/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/596/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/596/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/596/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/596/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/596/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/596/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=596&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/06/05/tim-hi%e1%bb%83u-v%e1%bb%81-th%c6%b0-vi%e1%bb%87n-zendframework-v%e1%bb%9bi-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Sử dụng smarty template trong PHP</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/06/05/s%e1%bb%ad-d%e1%bb%a5ng-smarty-template-trong-php/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/06/05/s%e1%bb%ad-d%e1%bb%a5ng-smarty-template-trong-php/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 03:14:25 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[thiết kế website]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=591</guid>
		<description><![CDATA[Code: &#60;?php define(&#8216;SMARTY_DIR&#8217;, &#8216;/Path/to/Smarty/&#8217;); require_once(SMARTY_DIR. &#8216;Smarty.class.php&#8217;); ?&#62; Tạo lớp: Code: &#60;?php $smarty = new Smarty(); ?&#62; Tạo thêm các hàm sau: Code: &#60;?php $smarty-&#62;compile_check = true // kiểm tra xem template đã có thay đổi gì không, nếu có, nạp dữ liệu mới $smarty-&#62;caching = true // bật hàm caching ?&#62; Ta cần 4 folders [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=591&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Code:</p>
<p>&lt;?php<br />
define(&#8216;SMARTY_DIR&#8217;, &#8216;/Path/to/Smarty/&#8217;);<br />
require_once(SMARTY_DIR. &#8216;Smarty.class.php&#8217;);<br />
?&gt;</p>
<p>Tạo lớp:<br />
Code:</p>
<p>&lt;?php<br />
$smarty = new Smarty();<br />
?&gt;</p>
<p>Tạo thêm các hàm sau:<br />
Code:</p>
<p>&lt;?php<br />
$smarty-&gt;compile_check = true // kiểm tra xem template đã có thay đổi gì không, nếu có, nạp dữ liệu mới<br />
$smarty-&gt;caching = true // bật hàm caching<br />
?&gt;</p>
<p>Ta cần 4 folders :<br />
- templates ( Chứa đựng các Templates, trong hộp này ta cũng có thể tào thêm các hộp con (subfolder)<br />
- templte_c ( Chứa các templates được Smarty compiled)<br />
- configs  (Cho các tệp tin configs)<br />
-cache ( cho các templates Cache) // chỉ là option thôi khong có không sao</p>
<p>Smarty luôn tìm nhũng hộp (folder) này khi php hoạt động. Ta có thể định đường dẫn như thế này:<br />
Code:</p>
<p>&lt;?php<br />
$smarty-&gt;template_dir   = &#8216;/path/to/Template_Folder/&#8217;;<br />
$smarty-&gt;compile_dir    = &#8216;/path/to/Template_c_Folder/&#8217;;<br />
$smarty-&gt;config_dir     = &#8216;/path/to/Config_Folder/&#8217;;<br />
$smarty-&gt;cache_dir      = &#8216;/path/to/Cache_folder/&#8217;;</p>
<p>?&gt;</p>
<p>1) Đưa một giá trị (value) đến Smarty Class.<br />
Code:</p>
<p>&lt;?php<br />
// Array, có thể lấy từ Database</p>
<p>$array = array(<br />
0 =&gt; array( &#8216;id&#8217; =&gt; 1,<br />
&#8216;text&#8217; =&gt; &#8216;test&#8217;),<br />
1 =&gt; array( &#8216;id&#8217; =&gt; 2,<br />
&#8216;text&#8217; =&gt; &#8216;foobar&#8217; ),<br />
2 =&gt; array( &#8216;id&#8217; =&gt; 3,<br />
&#8216;text&#8217; =&gt; &#8216;another test&#8217;<br />
));</p>
<p>$test   = &#8216;string&#8217;;<br />
$test2  = 2;</p>
<p>$smarty-&gt;assign(&#8216;test_array&#8217;,   $array);<br />
$smarty-&gt;assign(&#8216;test&#8217;,         $test);<br />
$smarty-&gt;assign(&#8216;test2&#8242;,        $test2);<br />
?&gt;</p>
<p>2) Tích hợp Template.tpl<br />
Code:</p>
<p>&lt;body&gt;&lt;table&gt;&lt;tr&gt;<br />
Variable test : {$test}<br />
Variable test2 : {$test2}</p>
<p>{foreach from=$test_array item=arr}<br />
Item ID : {$arr.id}<br />
Text From : {$arr.text}<br />
{/foreach}<br />
&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;</p>
<p>Template sẽ hiển thị 2 thông số Test &amp; Test2 như đã định trong têp .php , kế tiếp lệnh foreach sẽ được kích họat.Trong loop này bao gồm 2 Params có trị số from và item .from là thuộc tinh array và item là tên biến được trả về với biến {$arr.id} tương tự như value của 1 array : $arr['id'].<br />
Thử test xem template có work không nha. vd:tên tệp của template là test.tpl<br />
Code:</p>
<p>&lt;?php<br />
$smarty-&gt;display(&#8216;test.tpl&#8217;);<br />
?&gt;</p>
<p>Nếu trình duyệt xuất ra dòng Text thì bạn đã thành công. Smarty còn nhiều function khác nữa.Đây chỉ là một gợi ý nhỏ cho việc sự dụng Smarty Template.</p>
<p>test_file.php:<br />
Code:</p>
<p>&lt;?php</p>
<p>define(&#8216;SMARTY_DIR&#8217;, &#8216;/xampp/htdocs/smarty/libs/&#8217;);<br />
require_once(SMARTY_DIR. &#8216;Smarty.class.php&#8217;);</p>
<p>$smarty = new Smarty;</p>
<p>$smarty-&gt;compile_check = true;<br />
$smarty-&gt;debugging = true;<br />
//$smarty-&gt;caching = true // bật hàm caching</p>
<p>$array = array(<br />
0 =&gt; array( &#8216;id&#8217; =&gt; 1,<br />
&#8216;text&#8217; =&gt; &#8216;test&#8217;),<br />
1 =&gt; array( &#8216;id&#8217; =&gt; 2,<br />
&#8216;text&#8217; =&gt; &#8216;foobar&#8217; ),<br />
2 =&gt; array( &#8216;id&#8217; =&gt; 3,<br />
&#8216;text&#8217; =&gt; &#8216;another test&#8217;<br />
));</p>
<p>$test   = &#8216;string&#8217;;<br />
$test2  = 2;</p>
<p>$smarty-&gt;assign(&#8216;test_array&#8217;,   $array);<br />
$smarty-&gt;assign(&#8216;test&#8217;,         $test);<br />
$smarty-&gt;assign(&#8216;test2&#8242;,        $test2);</p>
<p>$smarty-&gt;display(&#8216;test.tpl&#8217;);</p>
<p>?&gt;</p>
<p>test.tpl<br />
Code:</p>
<p>&lt;body&gt;&lt;table&gt;&lt;tr&gt;<br />
Variable test : {$test}<br />
Variable test2 : {$test2}</p>
<p>{foreach from=$test_array item=arr}<br />
Item ID : {$arr.id}<br />
Text From : {$arr.text}<br />
{/foreach}<br />
&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;</p>
<p>test.conf (trong config folder)<br />
Code:</p>
<p>title = Welcome to Smarty!<br />
cutoff_size = 40</p>
<p><strong>Chúc bạn thành công – <a title="Thiết Kế Website" href="http://www.ticsoft.com/">www.ticsoft.com</a></strong> (Nguồn: phpvn)</p>
<br />Posted in Học PHP Tagged: php, smarty, template, thiết kế website <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/591/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/591/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/591/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/591/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/591/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/591/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/591/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/591/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/591/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/591/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/591/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/591/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/591/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/591/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=591&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/06/05/s%e1%bb%ad-d%e1%bb%a5ng-smarty-template-trong-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Các thao tác kết nối tới MySQL và lựa chọn CSDL bằng PHP</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/05/15/cac-thao-tac-k%e1%ba%bft-n%e1%bb%91i-t%e1%bb%9bi-mysql-va-l%e1%bb%b1a-ch%e1%bb%8dn-csdl-b%e1%ba%b1ng-php/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/05/15/cac-thao-tac-k%e1%ba%bft-n%e1%bb%91i-t%e1%bb%9bi-mysql-va-l%e1%bb%b1a-ch%e1%bb%8dn-csdl-b%e1%ba%b1ng-php/#comments</comments>
		<pubDate>Fri, 15 May 2009 03:45:29 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[csdl]]></category>
		<category><![CDATA[kết nối]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=588</guid>
		<description><![CDATA[Bài viết này sẽ tập trung vào việc khai thác hệ quản trị CSDL miễn phí MySQL. Các bước xây dựng chương trình có kết nối tới CSDL My SQL: Thông thường, trong một ứng dụng có giao tiếp với CSDL, ta phải làm theo bốn trình tự sau: Bước 1: Thiết lập kết nối [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=588&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bài viết này sẽ tập trung vào việc khai thác hệ quản trị CSDL miễn phí MySQL.</p>
<p>Các bước xây dựng chương trình có kết nối tới CSDL My SQL:</p>
<p>Thông thường, trong một ứng dụng có giao tiếp với CSDL, ta phải làm theo bốn trình tự sau:<br />
Bước 1: Thiết lập kết nối tới CSDL.<br />
Bước 2: Lựa chọn CSDL.<br />
Bước 3: Tiến hành các truy vấn SQL, xử lý các kết quả trả về nếu có<br />
Bước 4: Đóng kết nối tới CSDL.</p>
<p>Nếu như trong lập trình thông thường trên Windows sử dụng các chương trình điều khiển trung gian (ADO, ODBC&#8230;) để thực hiện kết nối và truy vấn, thì trong PHP, khi lập trình tương tác với CSDL, chúng ta thường sử dụng thông qua các hàm.</p>
<p>Chú ý: Trước khi sử dụng PHP để lập trình với MySQL, hãy sử dụng chương trình quản lý phpMyAdmin để tạo trước một CSDL, vài bảng cũng như người dùng&#8230; để tiện thực hành. Bài hướng dẫn sử dụng phpMyAdmin sẽ được trình bày sau.</p>
<p>Trong bài viết này, tôi sử dụng MySQL chạy trên nền máy chủ localhost, người sử dụng của CSDL này có username là mysql_user, mật khẩu là mysql_password</p>
<p><strong>Thiết lập kêt nối tới MySQL.</strong></p>
<p>Để kết nối tới MySQL, ta sử dụng hàm mysql_connect()<br />
Cú pháp:<br />
mysql_connect(host,tên_truy_cập,mật_khẩu);<br />
trong đó:<br />
host là chuỗi chứa tên (hoặc địa chỉ IP) của máy chủ cài đặt MySQL.<br />
tên_truy_cập là chuỗi chứa tên truy cập hợp lệ của CSDL cần kết nối<br />
mật_khẩu là chuỗi chứa mật khẩu tương ứng với tên truy cập<br />
Ví dụ:<br />
&lt;?<br />
mysql_connect (&#8220;localhost&#8221;, &#8220;thu_mot_ti&#8221;,&#8221;thu_hai_ti&#8221;);<br />
?&gt;<br />
Khi kết nối tới MySQL thành công, hàm sẽ trả về giá trị là một số nguyên định danh của liên kết, ngược lại, hàm trả về giá trị false.<br />
Ta có thể dùng hàm if để kiểm tra xem có kết nối được tới MySQL hay không:</p>
<p>&lt;?php<br />
$link = mysql_connect(&#8220;localhost&#8221;, &#8220;mysql_user&#8221;, &#8220;mysql_password&#8221;);<br />
if (!$link)<br />
{<br />
echo &#8220;Không thể kết nối được tới CSDL MySQL&#8221;;<br />
}<br />
?&gt;</p>
<p><strong>Lựa chọn CSDL</strong></p>
<p>Để lựa chọn một CSDL nào đó mà người sử dụng có tên là tên_truy_cập&#8221; có quyền sử dụng, ta dùng hàm mysql_select_db:<br />
mysql_select_db (tên_CSDL);<br />
Hàm này thường được dùng sau khi thiết lập kết nối bằng hàm mysql_connect. Hàm này trả về true nếu thành công, false nếu thất bại.<br />
VD:<br />
&lt;?php<br />
$link = mysql_connect(&#8220;localhost&#8221;, &#8220;mysql_user&#8221;, &#8220;mysql_password&#8221;);<br />
if (!$link)<br />
{<br />
echo &#8220;Không thể kết nối được tới MySQL&#8221;;<br />
}<br />
if (!mysql_select_db (&#8220;Forums&#8221;))<br />
{<br />
echo &#8220;Không thể lựa chọn được CSDL Forums&#8221;;<br />
}<br />
?&gt;</p>
<p><strong>Đóng kết nối tới CSDL:</strong><br />
Để đóng kết nối tới CSDL, ta dùng hàm mysql_close.<br />
Hàm này có nhiệm vụ đóng kết nối tới CSDL có mã định danh được tạo ra bởi hàm mysql_connect().<br />
Cú pháp: mysql_close(mã_định_danh_kết_nối).</p>
<p>Ví dụ:<br />
&lt;?php<br />
$link = mysql_connect(&#8220;localhost&#8221;, &#8220;mysql_user&#8221;, &#8220;mysql_password&#8221;);<br />
if (!$link)<br />
{<br />
echo &#8220;Không thể kết nối được tới MySQL&#8221;;<br />
}<br />
mysql_close($link);<br />
?&gt;</p>
<p><strong><span style="font-family:Arial;">Chúc bạn thành công  – </span></strong><a title="Thiết kế website" href="http://www.ticsoft.com"><strong>www.ticsoft.com</strong></a><span style="font-family:Arial;"> (Nguồn: sưu tầm)</span></p>
<br />Posted in Học PHP Tagged: csdl, kết nối, mysql, php <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/588/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=588&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/05/15/cac-thao-tac-k%e1%ba%bft-n%e1%bb%91i-t%e1%bb%9bi-mysql-va-l%e1%bb%b1a-ch%e1%bb%8dn-csdl-b%e1%ba%b1ng-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
		<item>
		<title>Hằng và biến trong php</title>
		<link>http://thietkewebsitegiare.wordpress.com/2009/05/15/h%e1%ba%b1ng-va-bi%e1%ba%bfn-trong-php/</link>
		<comments>http://thietkewebsitegiare.wordpress.com/2009/05/15/h%e1%ba%b1ng-va-bi%e1%ba%bfn-trong-php/#comments</comments>
		<pubDate>Fri, 15 May 2009 03:40:38 +0000</pubDate>
		<dc:creator>thietkewebsitegiare</dc:creator>
				<category><![CDATA[Học PHP]]></category>
		<category><![CDATA[biến]]></category>
		<category><![CDATA[hằng]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://thietkewebsitegiare.wordpress.com/?p=585</guid>
		<description><![CDATA[Nếu các bạn chưa từng học lập trình, chắc các bạn đang còn xa lạ với hằng và biến. 1. Hằng và biến Nếu các bạn chưa từng học lập trình, chắc các bạn đang còn xa lạ với hằng và biến. - Giống như trong toán học, một hằng số xác định một giá [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=585&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nếu các bạn chưa từng học lập trình, chắc các bạn đang còn xa lạ với hằng và biến.</p>
<p><strong>1. Hằng và biến</strong><br />
Nếu các bạn chưa từng học lập trình, chắc các bạn đang còn xa lạ với hằng và biến.<br />
- Giống như trong toán học, một hằng số xác định một giá trị duy nhất thông qua tên của hằng số, trong Tin học cũng vậy. Môt hằng số xác định một giá trị duy nhất trong toàn bộ chương trình. Người ta có thể sử dụng giá trị này thông qua tên của hằng số đó trong chương trình<br />
- Tương tự đối với biến. Một biến trong lập trình được sử dụng để lưu trữ một giá trị nào đó thông qua tên biến. Sở dĩ người ta gọi nó là biến, vì không như hằng số (giữ nguyên giá trị trong toàn bộ quá trình chạy chương trình), người ta có thể thay đổi giá trị của biến số thông qua các phép gán.</p>
<p>Để tạo điều kiện dễ dàng trong quá trình phân tích dữ liệu, PHP quy định bất kỳ từ nào có dấu $ ở trước đều là tên của biến. Ví dụ:<br />
$ten xác định một biến có tên là ten<br />
$custome_name: xác định một biến có tên là $custome_name</p>
<p>Bạn cần biết rằng tên biến là một chuỗi các ký tự chỉ bao gồm các chữ số, chữ cái (a..z) và dấu gạch dưới ( _ ). Và PHP quy định phân biệt các biến chữ hoa và chữ thường là khác nhau. CHẳng hạn $ab và $Ab là 2 biến hoàn toàn khác nhau. Một điểm cần lưu ý khác là không được đặt tên biến bắt đầu bằng các chữ số (0.. 9)</p>
<p>Do quy định các chuỗi ký tự có chứa dấu $ ở trước là một tên biến, nên PHP tự động khởi gán giá trị của các biến này là rỗng (đối với kiểu dữ liệu văn bản) hoặc 0 đối với kiểu dữ liệu số. Bạn sẽ được biết đến các kiểu dữ liệu sau này.</p>
<p>Để gán giá trị cho các biến, bạn sử dụng câu lệnh gán như sau:<br />
$tên_biến = giá trị cần gán;</p>
<p>Ví dụ:<br />
$nam_sinh=1980;<br />
$ho_ten=&#8221;CMXQ&#8221;;</p>
<p>Các bạn chú ý đến 2 ví dụ tôi nhập dữ liệu: một cái thì nằm trong cặp dấu ngoặc kép chỉ thị biến đó chứa dữ liệu theo kiểu xâu, còn một cái thì không nằm trong cặp dấu ngoặc kép chỉ thị biến đó chứa dữ liệu kiểu số. Bạn sẽ biết chi tiết hơn ở ngay sau đây:</p>
<p><strong>2. Các kiểu dữ liệu trong PHP</strong></p>
<p>PHP có 3 kiểu dữ liệu cơ bản: Integer, double và string. Ngoài ra còn một số kiểu dữ liệu khác, đượ xây dựng dựa trên các kiểu dữ liệu cơ bản trên, như mảng, object, mà chúng ta sẽ đề cập đến sau. Tất cả các biến đều được chỉ định kiểu dữ liệu, và như chúng ta đã nói ở trên, giá trị của chúng có thể bị thay đổi trong quá trình sử dụng.</p>
<p>Kiểu giá trị Integer sử dụng 4 byte của bộ nhớ. Đây là kiểu giá trị nguyên (không phải là số thực) và có giá trị nằm trong khoảng từ -2 tỷ đến 2 tỷ. Kiểu dữ liệu double là kiểu dữ liệu số thực, cho phép chứa các số thưc. Kiểu String được sử dụng để chứa các dữ liệu như là các ký tự văn bản, ký tự đặc biệt và các chữ số. Dữ liệu kiểu string được đặt trong cặp dấu ngoặc kép (&#8220;&#8221;) chỉ định một xâu (hay còn gọi là chuỗi ký tự).</p>
<p>Ví dụ:<br />
2: Kiểu integer;<br />
2.0: kiểu double<br />
&#8220;2&#8243;: Kiểu xâu<br />
&#8220;2 gio&#8221;: Kiểu xâu</p>
<p><strong>3.Định nghĩa hằng</strong></p>
<p>Hàm define() được sử dụng để tạo một hằng số:<br />
Hàm này có cấu trúc sau:<br />
define (&#8220;tên_hằng&#8221;,&#8221;giá trị của hằng&#8221;);<br />
Ví dụ:<br />
define (&#8220;COMPANY&#8221;,&#8221;NS Co.Ltd&#8221;);// Định nghĩa hằng COMPANY với giá trị là &#8220;NS Co Ltd&#8221;<br />
define (&#8220;diem_so&#8221;,4.5);// định nghĩa hằng diem_so với giá trị là 4.5 (hic&#8230; thi lại );</p>
<p>Sau khi một hằng số được tạo ra, ta có thể sử dụng chúng thay cho giá trị của chúng:<br />
echo (&#8220;Tên công ty: &#8220;.COMPANY);<br />
Điều này tương đương với echo (&#8220;Tên công ty: NS Co Ltd&#8221;);</p>
<p>4. Một số hằng xây dựng sẵn (built in constant)</p>
<p>PHP có chứa một số hằng được xây dựng sẵn. TRUE và FALSE là 2 hằng đã được dựng sẵn với chỉ định true (1) và false (=0 hoặc một xâu rỗng)</p>
<p>Hằng số PHP_VERSION chỉ định phiên bản của bộ phân tích PHP mà bạn đang dùng hiện tại. Hằng PHP_OS chỉ định hệ điều hành server mà trình phân tích PHP đang chạy.</p>
<p>echo (PHP_OS); // in ra màn hình &#8220;Linux&#8221; (ví dụ)</p>
<p>_FILE_and_LINE_ trả về tên của đoạn script (đoạn mã nhúng) đang được phân tích tại dòng hiện thời trong đoạn mã script.</p>
<p>PHP còn cung cấp một số hàm để thông báo lỗi như E_ERROR, E_WARNING, E_PARSE và E_NOTICE.</p>
<p>Ngoài ra, PHP còn cung cấp một số biến cung cấp thông tin về môi trường PHP đang sử dụng. Để xem các thông tin này,bạn có thể dùng hàm phpinfo() như sau:</p>
<p>&lt;HTML&gt;<br />
&lt;!&#8211; phpinfo.php&#8211;&gt;<br />
&lt;BODY&gt;<br />
&lt;?php<br />
phpinfo();<br />
?&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML<br />
5. Lừa kiểu và ép kiểu dữ liệu</p>
<p>Như chúng ta đã biết, tất cả các biến PHP đều có kiểu dữ liệu riêng. Kiểu dữ liệu của biến sẽ được tự động xác định bởi giá trị đặt vào biến</p>
<p>$a=1 // $a là kiểu integer<br />
$a=1.2 // Bây giờ, nó là kiểu double<br />
$a=&#8221;1&#8243; // Và bây giờ nó là kiểu string</p>
<p>a) Chuyển kiểu chuỗi và lừa kiểu dữ liệu</p>
<p>Nếu bạn làm các thao tác tính toán số trên một chuỗi, PHP sẽ tính toán chuỗi như là một số. Điều này được biết đến với cái tên gọi là &#8220;chuyển kiểu chuối (String conversion), mặc dù giá trị chuỗi của nó có thể không cần phải thay đổi. Trong đoạn ví dụ sau, biến $str được xác định là một chuỗi:<br />
$str=&#8221;756300 không có&#8221;;<br />
Nếu chúng ta cố cộng thêm một giá trị nguyên là 3 vào biến $str, biến $str sẽ tự động tính với số nguyên 756300:<br />
$x=4+$str;//$x =756304</p>
<p>Nhưng bản thân giá trị của biến $str không thay đổi</p>
<p>echo ($str); // In ra màn hình chuỗi &#8220;756300 không có&#8221;</p>
<p>Chuyển kiểu chuỗi phải tuân theo 2 nguyên tắc sau:<br />
- Chỉ những chuỗi bắt đầ là một xâu các chữ số. Nếu chuỗi bắt đầu bằng một giá trị số hợp lệ, chuỗi này sẽ được xác định như giá trị của nó, trong trường hợp khác, nó sẽ trả về 0. VD: chuỗi &#8220;35 tuổi&#8221; sẽ được ước lượng là 35, nhưng chuỗi &#8220;tuổi 35&#8243; sẽ chỉ xác định giá trị 0.</p>
<p>- Một chuỗi sẽ chỉ được xác định như là một giá trị kiểu double nếu giá trị kiểu double được miêu tả bao gồm toàn bộ chuỗi. Chuỗi &#8220;3.4&#8243;, &#8220;-4.2&#8243; sẽ được ước lượng như giá trị thực 3.4 và -4.2. Nếu một ký tự không phải là ký tự kiểu số thực được đưa vào chuỗi, giá trị của chuỗi đó sẽ được ước lượng như là một số nguyên. Chuỗi &#8220;3.4 dollar&#8221; sẽ thành số nguyên 3.</p>
<p>Trong việc cộng với chuỗi chuyển kiểu, PHP sẽ thực hiện &#8220;lừa kiểu&#8221; giữa 2 kiểu số. Nếu bạn thực hiện một phép toán số học giữa kiểu thực và kiểu nguyên, giá trị sẽ là số thực</p>
<p>$a=1 //$ a là một số nguyên<br />
$b= 1.0 //$b là số thực<br />
$c=$a+$b //$c là kiểu số thực , = 2.0<br />
$d = $c+&#8221;6th&#8221; //$d là kiểu số thực = 8.0</p>
<p>Ép kiểu dữ liệu</p>
<p>Ép kiểu dữ liệu cho phép bạn thay đổi kiểu dữ liệu của biến</p>
<p>$a=11.2// $a là kiểu thực<br />
$a=(int)$a// Bây giờ, $ a là kiểu nguyên, giá trị = 11<br />
$a= (double) $a// Bây giờ $a lại trở về kiểu thực = 11.0<br />
$b= (string)$a// $b là giá trị kiểu chuỗi =&#8221;11&#8243;</p>
<p>Ngoài ra, chúng ta còn được phép ép kiểu (array) và (object)</p>
<p>(integer) tương đương với (int); (fload) và (real) tương đương với (double)</p>
<p>6. Một số hàm tiện ích khác</p>
<p>PHP có một số hàm hỗ trợ làm việc với các biến</p>
<p>- Hàm gettype($ten_bien) xác định kiểu của biến. Nó sẽ trả về một trong các giá trị: &#8220;integer&#8221;, &#8220;double&#8221;, &#8220;string&#8221;, &#8220;array&#8221;, &#8220;object&#8221;, &#8220;class&#8221;, &#8220;unknown type&#8221; (Chúng ta sẽ tìm hiểu kỹ hơn vể mảng (array) và kiểu đối tượng (object) ở các bài sau.<br />
Ví dụ:<br />
echo(gettype($name));</p>
<p>- Hàm settype($ten_bien,&#8221;kieu_du_lieu&#8221;) sẽ đặt kiểu dữ liệu cho biến $ten_bien. Kiểu dữ liệu được viết dưới dạng một chuỗi, và có thể có một trong các kiểu sau: &#8220;integer&#8221;, &#8220;double&#8221;, &#8220;string&#8221;, &#8220;array&#8221;, &#8220;object&#8221;. Nếu kiểu dữ liệu không được đặt, giá trị false sẽ được trả về, còn nếu thành công, nó sẽ trả về giá trị true.</p>
<p>VD:<br />
$a=7.5; //$a là kiểu thực<br />
settype($a,&#8221;integer&#8221;); // bây giờ nó là một số nguyên có giá trị 7</p>
<p>- Hàm isset($ten_bien) được sử dụng để xác định xem biến $ten_bien đã đặt một giá trị nào đó hay chưa. Nếu biến đó đã có giá trị, hàm trả về true. Trong truờng hợp ngược lại, hàm trả về giá trị false;<br />
- Hàm unset($ten_bien) được sử dụng để huỷ bỏ biến $ten_bien, giải phóng bộ nhớ bị chiếm dụng của biến đó.</p>
<p><strong><span style="font-family:Arial;">Chúc bạn thành công  – </span></strong><a title="Thiết kế website" href="http://www.ticsoft.com/"><strong>www.ticsoft.com</strong></a><span style="font-family:Arial;"> (Nguồn: sưu tầm)</span></p>
<br />Posted in Học PHP Tagged: biến, hằng, php <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thietkewebsitegiare.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thietkewebsitegiare.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thietkewebsitegiare.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thietkewebsitegiare.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thietkewebsitegiare.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thietkewebsitegiare.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thietkewebsitegiare.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thietkewebsitegiare.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thietkewebsitegiare.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thietkewebsitegiare.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thietkewebsitegiare.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thietkewebsitegiare.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thietkewebsitegiare.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thietkewebsitegiare.wordpress.com/585/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thietkewebsitegiare.wordpress.com&#038;blog=5466217&#038;post=585&#038;subd=thietkewebsitegiare&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thietkewebsitegiare.wordpress.com/2009/05/15/h%e1%ba%b1ng-va-bi%e1%ba%bfn-trong-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">thietkewebsitegiare</media:title>
		</media:content>
	</item>
	</channel>
</rss>
