THIET KE WEBSITE GIA RE

THIET KE WEBSITE GIA RE

  • RSS Thế Giới BlackBerry

    • Mẹo vặt về sử dụng blackberry
      Cùng học cách áp dụng các mẹo vặt và phím tắt cho chiếc smartphone BlackBerry (lưu ý: có một số ứng dụng không hỗ trợ cho các dòng BB cổ) của bạn. Hãy bắt đầu bằng cách chọn các ứng dụng dưới đây: • Tìm kiếm • Đính kèm • Trình duyệt • Camera • [...]
    • Game Linh Vương trên blackberry
      Download game linh vuong Chúc bạn thành công – www.ticsoft.com (Nguồn: Sưu tầm) Filed under: Games blackberry Tagged: blackberry, game, linh vuong
    • Assasin’s Creed 81xx,83xx,87xx và 88xx
      Download Chúc bạn thành công – www.ticsoft.com (Nguồn: Sưu tầm) Filed under: Games blackberry Tagged: 81xx, 83xx, 87xx, 88xx, Assasin's Creed, blackberry
    • Game Prince of Persia- Hoàng tử Ba Tư
      Prince of Persia – Hoàng Tử Ba Tư, series game đình đám của “ông lớn” Ubisoft đã làm ngây ngất bao trái tim của các game thủ trên các hệ máy chơi game, đã được làm lại trên các hệ điện thoại khác nhau (Chủ yếu cho Nokia S60- cái này em search trên 4rum [...]
    • Diamond Twister-Game xếp kim cương cho mọi người
      Đúng với tên gọi, Diamond Twister có gameplay tương tự game xếp kim cương trên máy tính đã làm điêu đứng chị em văn phòng 1 thời.Nay với Diamond Twister trên Blackberry thì chị em Tinh tế lại có thời gian bên em BB yêu quí.Với màu sắc bắt mắt và cốt truyện hay, Diamond [...]
    • The Sims 3 cho 83xx
      Download The Sim Chúc bạn thành công – www.ticsoft.com (Nguồn: Sưu tầm) Filed under: Games blackberry Tagged: 83xx, blackberry, the sim
    • Konami Pes 2010 cho các dòng blackberry
      Konami Pes 2010 cho các dòng blackberry
    • Lưu trữ tin nhắn SMS trên Blackberry
      Lưu trữ tin nhắn SMS trên Blackberry Nếu vô tình xóa đi các tin nhắn quan trọng trên điện thoại thì Dexrex SMS Backup sẽ là vị cứu tinh cho bạn. Cách thức lưu trữ và sắp xếp tất cả tin nhắn gửi/nhận SMS từ BlackBerry cũng tương tự như các trình tin nhắn và [...]
    • Game xếp gạch cho blackberry
      Game xếp gạch cho blackberry, hãy nhìn vào hình vẽ để biết phím đánh game này nha Download game xếp gạch Chúc bạn thành công – www.ticsoft.com – thiết kế website Posted in Games blackberry Tagged: blackberry, game, xếp gạch
    • Yamee – Phần mềm chat yahoo tốn ít kb nhất
      Các bạn tải file zip về , giải nén thành file Yamee.jar , copy vô thẻ nhớ của BB , xong vào Media trên BB , mở Menu–>Explore–> Media Card –> nhấn vào Yamee.jar –> download (nghĩa là tải từ file java vô máy chứ ko connect với mạng đâu, yên tâm , không tốn [...]

Archive for Tháng Sáu 18th, 2009

Thao tác với email

Posted by thietkewebsitegiare on 18/06/2009

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 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).

1. Gửi email thông qua hàm mail()

Để 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:

mail (dia_chi_nhan,tieu_de,noi_dung,cac_tham_so_mo_rong_tuy_chon).

Ví dụ:

Code:

<html>
<body>

<?php
if (isset($_REQUEST['email']))
//if “email” is filled out, send email
{
//send email
$email = $_REQUEST['email'] ;
$to = $_REQUEST['to'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail( $to, “Subject: $subject”,$message” );
echo “Thank you for using our mail form”;
}
else
//if “email” is not filled out, display the form
{
echo “<form method=’post’ action=’phpmail.php’>
Người gửi: <input name=’email’ type=’text’ /><br />
Gửi tới: <input name=’to’ type=’text’ /><br />
Tiêu đề: <input name=’subject’ type=’text’ /><br />
Nội dung:<br />
<textarea name=’message’ rows=’15′ cols=’40′>
</textarea><br />
<input type=’submit’ />
</form>”;
}
?>

</body>
</html>

2. Kỹ thuật gửi email với phần Header mở rộng

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…).

Ở đây chúng ta sẽ sử dụng phần tham số mở rộng.
VD:

Code:
$ThongTinMoRong=”From: webmaster@$SERVER_NAME\r\n”
.”Reply-To: webmaster@$SERVER_NAME\r\n”
.”X-Mailer: PHP/” . phpversion();
mail($EmailGui, $EmailNhan, $NoiDung,$ThongTinMoRong);

3. Kỹ thuật gửi email theo định dạng HTML.
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ữ…, ta phải đưa thêm dòng sau đây vào phần header:

MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1

Ví dụ:

Code:
<?
/* recipients */
$to  = “Mary <mary@example.com>” . “, ” ; //note the comma
$to .= “Kelly <kelly@example.com>”;

/* subject */
$subject = “Birthday Reminders for August”;

/* message */
$message = ‘
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
‘;

/* To send HTML mail, you can set the Content-type header. */
$headers  = “MIME-Version: 1.0\r\n”;
$headers .= “Content-type: text/html; charset=iso-8859-1\r\n”;

/* additional headers */
$headers .= “From: Birthday Reminder <birthday@example.com>\r\n”;

$headers .= “Cc: birthdayarchive@example.com\r\n”;
$headers .= “Bcc: birthdaycheck@example.com\r\n”;

/* and now mail it */
mail($to, $subject, $message, $headers);
?>

Chúc bạn thành công – www.ticsoft.com (Nguồn: phpvn)

Đăng trong Học PHP | Tagged: , , | Leave a Comment »

Xử lý XML

Posted by thietkewebsitegiare on 18/06/2009

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:
<?xml version=”1.0″?>
<books>
<book isbn=”978-1594489501″>
<title>A Thousand Splendid Suns</title>
<author>Khaled Hosseini</author>
<publisher>Riverhead Hardcover</publisher>
<amazon_price>14.27</amazon_price>
</book>
<book isbn=”978-1594489587″>
<title>The Brief Wondrous Life of Oscar Wao</title>
<author>Junot Diaz</author>
<publisher>Riverhead Hardcover</publisher>
<amazon_price>14.97</amazon_price>
</book>
<book isbn=”978-0545010221″>
<title>Harry Potter and the Deathly Hallows</title>
<author>J. K. Rowling</author>
<publisher>Arthur A. Levine Books</publisher>
<amazon_price>19.24</amazon_price>
</book>
</books>

Để 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:

Code:
// Passing the XML
$books = SimpleXMLElement($XmlData);
//——————-
// Passing a filename
$books = SimpleXMLElement(‘books.xml’, null, true);

Nhìn vào đoạn XML ví dụ, ta sẽ lấy ra tất cả các book hay của Amazon:

Code:
<?php
// load SimpleXML
$books = new SimpleXMLElement(‘books.xml’, null, true);

echo <<<EOF
<table>
<tr>
<th>Title</th>
<th>Author</th>
<th>Publisher</th>
<th>Price at Amazon.com</th>
<th>ISBN</th>
</tr>

EOF;
foreach($books as $book) // loop through our books
{
echo <<<EOF
<tr>
<td>{$book->title}</td>
<td>{$book->author}</td>
<td>{$book->publisher}</td>
<td>${$book->amazon_price}</td>
<td>{$book['isbn']}</td>
</tr>

EOF;
}
echo ‘</table>’;
?>

Bạn để ý rằng $books (có chữ ‘s’ 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 ‘book’ 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.

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ì:

Code:
<book isbn=”978-1594489501″>
<title>A Thousand Splendid Suns</title>
<author>Khaled Hosseini</author>
<publisher>Riverhead Hardcover</publisher>
<amazon_price>14.27</amazon_price>
</book>

isbn là một attribute, các giá trị của một attribute phải để trong dấu (“)
<title>, <author>,… là các child element

Chỉ giải thích tới đây thôi, bác nào có ý định ngâm cứu XML, XML Schema,… thì 5s gợi ý là nên … 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á.

Quay về cú pháp, lại coi ví dụ ‘simple’ trên: $book->title là truy cập child element trong khi $book['isbn'] là truy cập attribute. Done!!!

Đơn giản thế thôi, bạn thấy xử lý XML data có dễ chưa ?

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->book[$i] rồi dùng $tempBook để xử lý.

Giờ thêm vào tí XPath cho nó bằng anh bằng em:

XPath đơn giản là cách chỉ ra đường dẫn “path” 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/… 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ý.

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:

Code:
$titles = $books->xpath(‘book/title’);
foreach($titles as $title)
{
echo $title.PHP_EOL;
}
//////////////////////////////////////////////
$isbn = $books->xpath(‘book/@isbn’);
foreach($isbn as $isbn)
{
echo $isbn.PHP_EOL;
}

Nhớ chú ý cách dùng cú pháp / và /@ nhé.

Giờ parse thử RSS của tuổi trẻ coi sao nè

Code:
<?php
$rss = new SimpleXMLElement(‘http://www.tuoitre.com.vn/tianyon/RssView.aspx?ChannelID=16′, null, true);

echo “<h1><a href=’{$rss->channel->link}’>{$rss->channel->title}</a></h1>”.PHP_EOL.’<hr />’.PHP_EOL;

foreach($rss->xpath(‘channel/item’) as $item)
{
echo <<<EOF
<h2><a href=’{$item->link}’>{$item->title}</a></h2>
<div>Posted at: {$item->pubDate}</div>
{$item->description}
<hr />

EOF;
}
?>

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:
$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
$attributes = $element->attributes();   // lấy tất cả các attribute
$children   = $element->children();     // lấy các child element

Chúc bạn thành công – www.ticsoft.com (Nguồn: phpvn)

Đăng trong Học PHP | Tagged: , , | Leave a Comment »

Tìm hiều về LDAP (Lightweight Directory Access Protocol)

Posted by thietkewebsitegiare on 18/06/2009

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 những cái “tối quan trọng” trên.

Hãy tưởng tượng một hệ thống với khoảng 5 – 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…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.

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.

Vây LDAP là gì?

LDAP – 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.
• Là một giao thức tìm, truy nhập các thông tin dạng thư mục trên server.
• Nó là giao thức dạng Client/Server dùng để truy cập dịch vụ thư mục.
• LDAP chạy trên TCP/IP hoặc các dịch vụ hướng kết nối khác.
• 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.
• 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
• 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.
• Là một giao thức mở rộng
• Là một mô hình thông tin mở rộng.

Ở đây chúng ta cần tránh hiểu nhầm từ “thư mục” 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) – một “từ khoá” 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.

Làm việc với LDAP thông qua PHP

Trình tự cơ bản khi có thao tác với LDAP gồm các bước
• Connect (kết nối với LDAP)
• Bind (kiểu kết nối: nặc danh hoặc đăng nhập xác thực)
• Search (tìm kiếm)
• Interpret search (xử lý tìm kiếm)
• Result (kết quả)
• Close connection (đóng kết nối)

Ldap_connect():
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)
Ldap_connect(string hostname, int port);

Code:
<?php

// LDAP variables
$ldaphost = “ldap.example.com”;
// your ldap servers
$ldapport = 389;
// your ldap server’s port number

// Connecting to LDAP

$ldapconn = ldap_connect($ldaphost, $ldapport)
or die(
“Không thể kết nối được đến $ldaphost”
);

?>

Ldap_bind();
Hàm nối kết với server LDAP để có thể thao tác với LDAP
Vd kết nối với LDAP server bằng user và password hợp lệ

Code:
<?php

// using ldap bind
$ldaprdn = ‘uname’;
// ldap rdn or dn
$ldappass = ‘password’;
// associated password

// connect to ldap server

$ldapconn = ldap_connect(“ldap.example.com”)
or die(
“Could not connect to LDAP server.”
);

if (

$ldapconn) {

// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass
);

// verify binding
if ($ldapbind
) {
echo
“LDAP bind successful…”
;
} else {
echo
“LDAP bind failed…”
;
}

}

?>

Nếu kết nối bằng quyền anonymously

Code:
<?php

//using ldap bind anonymously

// connect to ldap server

$ldapconn = ldap_connect(“ldap.example.com”)
or die(
“Could not connect to LDAP server.”
);

if (

$ldapconn) {

// binding anonymously
$ldapbind = ldap_bind($ldapconn
);

if (

$ldapbind) {
echo
“LDAP bind anonymous successful…”
;
} else {
echo
“LDAP bind anonymous failed…”
;
}

}

?><?php

//using ldap bind anonymously

// connect to ldap server

$ldapconn = ldap_connect(“ldap.example.com”)
or die(
“Could not connect to LDAP server.”
);

if (

$ldapconn) {

// binding anonymously
$ldapbind = ldap_bind($ldapconn
);

if (

$ldapbind) {
echo
“LDAP bind anonymous successful…”
;
} else {
echo
“LDAP bind anonymous failed…”
;
}

}

?>

ldap_search();
ldap_search ( resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]] )
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.

Code:

<?php
// $ds is a valid link identifier for a directory server

// $person is all or part of a person’s name, eg “Jo”

$dn = “o=My Company, c=US”;
$filter=“(|(sn=$person*)(givenname=$person*))”
;
$justthese = array(“ou”, “sn”, “givenname”, “mail”
);

$sr=ldap_search($ds, $dn, $filter, $justthese);

$info = ldap_get_entries($ds, $sr);

echo

$info["count"].” entries returned\n”;
?>

Ldap_close();

Hàm đóng kết nối với LDAP, hàm này tương đương với ldap_unbind();
bool ldap_unbind ( resource link_identifier );
Nếu kết nối đóng thành công sẽ trả về giá trị TRUE, ngược lại là FALSE.

ldap_add();

Hàm thêm các entry vào thư mục LDAP

bool ldap_add ( resource link_identifier, string dn, array entry )

Code:
<?php
$ds
= ldap_connect(“localhost”);
// assuming the LDAP server is on this host

if ($ds) {
// bind with appropriate dn to give update access
$r = ldap_bind($ds, “cn=root, o=My Company, c=US”, “secret”
);

// prepare data
$info["cn"] = “John Jones”
;
$info["sn"] = “Jones”
;
$info["mail"] = “jonj@example.com”
;
$info["objectclass"] = “person”
;

// add data to directory
$r = ldap_add($ds, “cn=John Jones, o=My Company, c=US”, $info
);

ldap_close($ds);
} else {
echo
“Unable to connect to LDAP server”
;
}
?>

ldap_delete();

Xóa một entry khỏi thư mục LDAP

Code:
bool ldap_delete ( resource link_identifier, string dn )

Hàm trả về giá trị TRUE nếu xóa thành công và FALSE nếu thất bại

ldap_compare();

So sánh giá trị của một thuộc tính

mixed ldap_compare ( resource link_identifier, string dn, string attribute, string value )

VD:

Code:
<?php

$ds

=ldap_connect(“localhost”); // assuming the LDAP server is on this host

if ($ds) {

// bind
if (ldap_bind($ds
)) {

// prepare data
$dn = “cn=Matti Meikku, ou=My Unit, o=My Company, c=FI”
;
$value = “secretpassword”
;
$attr = “password”
;

// compare value
$r=ldap_compare($ds, $dn, $attr, $value
);

if (

$r === -1) {
echo
“Error: ” . ldap_error($ds
);
} elseif (
$r === true
) {
echo
“Password correct.”
;
} elseif (
$r === false
) {
echo
“Wrong guess! Password incorrect.”
;
}

} else {
echo

“Unable to bind to LDAP server.”;
}

ldap_close($ds);

} else {
echo

“Unable to connect to LDAP server.”;
}
?>

Ldap_count_entries();

Đếm số lượng các entry được tìm thấy từ kết quả của lệnh tìm kiếm.

int ldap_count_entries ( resource link_identifier, resource result_identifier )

ldap_error();

trả lại thông báo lỗi LDAP của lệnh LDAP cuối cùng.

string ldap_error ( resource link_identifier )

ldap_first_attribute();
hàm trả lại thuộc tính đầu tiên của entry

string ldap_first_attribute ( resource link_identifier,
resource result_entry_identifier,
int &ber_identifier )

ldap_first_entry();

trả lại kết quả id đầu tiên của entry

ldap_first_entry ( resource link_identifier, resource result_identifier )

ldap_first_reference();

trả lại tham chiếu đầu tiên

ldap_first_reference ( resource link, resource result )

ldap_free_result();

giải phóng kết quả bộ nhớ

bool ldap_free_result ( resource result_identifier )

Chúc bạn thành công – www.ticsoft.com (Nguồn: phpvn)

Đăng trong Học PHP | Tagged: , , , | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.