Showing posts with label travel. Show all posts
Showing posts with label travel. Show all posts

Sunday, July 29, 2012

[Tutorial] Send/Receive Mail Using SMTP/POP3 In C #

Xây dựng lớp SMTP – dùng để gửi mail

1. Các thuộc tính cần có của một bức thư (mail):
- Danh sách người nhận.
// Danh sách người nhận
private string[] _DanhSachNguoiNhan;
public string[] DanhSachNguoiNhan
{
get { return _DanhSachNguoiNhan; }
set { _DanhSachNguoiNhan = value; }
}
Danh sách Bcc.
// Danh sách Bcc
private string[] _DanhSachBcc;
public string[] DanhSachBcc
{
get { return _DanhSachBcc; }
set { _DanhSachBcc = value; }
}
Danh sách Cc.
// Danh sách Cc
private string[] _DanhSachCc;
public string[] DanhSachCc
{
get { return _DanhSachCc; }
set { _DanhSachCc = value; }
}
- Danh sách file attachment (đính kèm).
// Danh sách file đính kèm
private Attachment[] _DanhSachAttment;
public Attachment[] DanhSachAttment
{
get { return _DanhSachAttment; }
set { _DanhSachAttment = value; }
}
Subject (tiêu đề).
// Tiêu đề mail cần gửi
private string _Subject;
public string Subject
{
get { return _Subject; }
set { _Subject = value; }
}
Content (nội dung).
// Nội dung mail cần gửi
private string _Contents;
public string Contents
{
get { return _Contents; }
set { _Contents = value; }
}
Các công việc cần làm khi gửi mail
- Set danh sách người nhận.
public void setDanhSachNguoiNhan(string SendTo)// SendTo là danh sách người nhận truyền vào
{
if (SendTo == "")
{
MessageBox.Show("Bạn Chưa Nhập Địa Chỉ Một Người Nhận Nào", "Thông Báo");// nếu danh sách truyền vào trống thì thông báo
return;
}
DanhSachNguoiNhan = SendTo.Split(',');// tách các người nhận bằng dấu ",";
}
Set danh sách Cc.
public void setDanhSachCc(string Cc)
{
if (Cc != "")
{
DanhSachCc = Cc.Split(',');
}
}
Tương tự set danh sách Bcc.
- Set danh sách file đính kèm.
public void setDanhSachAttachment(string[] AttachmentPath)
{
DanhSachAttment = new Attachment[AttachmentPath.Length];
for (int i = 0; i < AttachmentPath.Length; i++)
DanhSachAttment[i] = new Attachment(AttachmentPath[i]);
}
Sau khi đã lấy đủ thông tin cần thiết, ta thực hiện gửi mail. Trong C# có hai namespace hỗ trợ việc gửi mail bằng smtp là:
using System.Net.Sockets;
using System.Net.Mail;
Hàm thực hiện việc gửi mail:
+ Tạo kết nối tới server: (ở đây mình làm là Gmail, tương tự các bạn có thể làm với Yahoo Mail,…)
SmtpClient SmtpServer = new SmtpClient();
SmtpServer.Credentials = new System.Net.NetworkCredential(user.TenTaiKhoan, user.MatKhau);
SmtpServer.Port = 587;
SmtpServer.Host = "smtp.gmail.com";
SmtpServer.EnableSsl = true;
Tạo một mail:
MailMessage smail = new MailMessage();
smail.From = new MailAddress(user.TenTaiKhoan, user.TenHienThi, System.Text.Encoding.UTF8);
Byte i;
for (i = 0; i < DanhSachNguoiNhan.Length; i++)
smail.To.Add(DanhSachNguoiNhan[i]);
if(DanhSachCc != null)
{
for (i = 0; i < DanhSachCc.Length; i++)
smail.CC.Add(DanhSachCc[i]);
}
if (DanhSachBcc != null)
{
for (i = 0; i < DanhSachBcc.Length; i++)
smail.Bcc.Add(DanhSachBcc[i]);
}
if (DanhSachAttment != null)
{
for (i = 0; i < DanhSachAttment.Length; i++)// danh sách file đính kèm (nếu có)
smail.Attachments.Add(DanhSachAttment[i]);
}
smail.Subject = Subject;
smail.Body = Contents;
smail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
Và gửi nó đi:
try
{
#region Tạo một bức thư điện tử
// Tạo một mail, phần code tạo một mail
#endregion
SmtpServer.Send(smail);
SmtpServer.Dispose();
return true;
}
catch
{ return false; }
*Chú thích : biến user.TenTaiKhoan và user.MatKhau là tên tài khoản và mật khẩu tài khoản gmail của bạn.

Vậy là xong lớp SMTP dùng để gửi mail. Bây giờ ta chỉ cần thiết kế một form gửi mail nữa là ok, các bạn lưu ý là nếu các bạn sử dụng code của mình thì chú thiết kế form cung cấp đủ các biến cho nó nhé!.
Bạn có thể vào đây:
http://www.mediafire.com/?eb4hk5buxj9898t
Bạn vào link trên để lấy class đó để bổ sung nhé!

Saturday, July 21, 2012

Câu lệnh UPDATE trong SQL (SQL p9)

Câu lệnh UPDATE được sử dụng để cập nhật/sửa đổi dữ liệu đã có trong bảng.

Cú pháp:

UPDATE tên_bảng
SET tên_cột = giá_trị_mới
WHERE tên_cột = giá_trị

Ví dụ: bảng Person của ta như sau:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Storgt 67


Giả sử ta muốn bổ xung thêm phần tên cho người có họ là Rasmussen:

UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'

Ta sẽ có kết quả như sau:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Storgt 67


Bây giờ ta lại muốn đổi tên và địa chỉ:

UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'

Kết quả sẽ là:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger

Câu lệnh DELETE trong SQL (SQL p10)

Cú pháp:

DELETE FROM tên_bảng
WHERE tên_cột = giá_trị

Ví dụ: Bảng Person của ta như sau:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger


Ta xoá người có tên là Nina Rasmussen:

DELETE FROM Person WHERE LastName = 'Rasmussen'

Kết quả sau khi xoá:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger


Đôi khi ta muốn xoá tất cả dữ liệu trong bảng nhưng vẫn giữ lại bảng cùng với cấu trúc và tất cả các thuộc tính của bảng, ta có thể dùng câu lệnh:

DELETE FROM table_name

hoặc

DELETE * FROM table_name

Mệnh đề GROUP BY, mệnh đề HAVING trong SQL (SQL p13)

Các hàm tập hợp (ví dụ như SUM) thông thường cần thêm chức năng của mệnh đề GROUP BY.

GROUP BY…

Mệnh đề GROUP BY…được thêm vào SQL bởi vì các hàm tập hợp (như SUM) trả về một tập hợp của các giá trị trong cột mỗi khi chúng được gọi, và nếu không có GROUP BY ta không thể nào tính được tổng của các giá trị theo từng nhóm riêng lẻ trong cột.

Cú pháp của GROUP BY như sau:

SELECT tên_cột, SUM(tên_cột) FROM tên_bảng GROUP BY tên_cột

Ví dụ sử dụng GROUP BY:

Giả sử ta có bảng Sales như sau:

Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100
Câu lệnh SQL sau:

SELECT Company, SUM(Amount) FROM Sales

sẽ trả về kết quả:

Company SUM(Amount)
W3Schools 17100
IBM 17100
W3Schools 17100
Kết quả trả về ở trên đôi khi không phải là cái mà ta mong đợi. Ta thêm mệnh đề GROUP BY vào trong câu lệnh SQL:

SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company

và kết quả trả về lần này sẽ là:

Company SUM(Amount)
W3Schools 12600
IBM 4500
Kết quả này đúng là cái mà ta mong muốn.

HAVING…

Mệnh đề HAVING…được thêm vào SQL vì mệnh đề WHERE không áp dụng được đối với các hàm tập hợp (như SUM). Nếu không có HAVING, ta không thể nào kiểm tra được điều kiện với các hàm tập hợp.

Cú pháp của HAVING như sau:

SELECT tên_cột, SUM(tên_cột) FROM tên_bảng
GROUP BY tên_cột
HAVING SUM(tên_cột) điều_kiện giá_trị

Ta sử dụng lại bảng Sales ở trên. Câu lệnh SQL sau:

SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company
HAVING SUM(Amount) > 10000

sẽ trả về kết quả:

Company SUM(Amount)
W3Schools 12600

Nối kết và khoá trong SQL (SQL p15)

Nối kết và khoá

Đôi khi chúng ta phải lấy dữ liệu từ hai bảng cùng một lúc, chúng ta thực hiện một kết nối.

Các bảng trong CSDL có thể quan hệ ràng buộc với nhau thông qua các khoá. Một khoá chính (primary key) là một cột mà trong đó mỗi giá trị của hàng phải là duy nhất. Mục đích của khoá là kết nối dữ liệu lại với nhau, từ nhiều bảng khác nhau mà không gây trùng lắp dữ liệu giữa các bảng.

Trong bảng Employees (nhân viên) ở ví dụ dưới đây có cột Employees_ID là khoá chính, bảo đảm rằng không thể có hai dòng nào có trùng Employees_ID. Employees_ID dùng để phân biệt hai nhân viên khi họ trùng tên.

Trong ví dụ dưới đây:

Employee_ID là khoá chính của bảng Employees.
Prod_ID là khoá chính của bảng Orders.
Cột Employeed_ID trong bảng Orders được sử dụng để kết nối với bảng Employees, chỉ đến nhân viên trong bảng Employees.
Bảng Employees:

Employees_ID Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari
Bảng Orders:

Prod_ID Product Employee_ID
234 Printer 01
657 Table 03
865 Chair 03
Kết nối hai bảng với nhau

Chúng ta có thể lấy dữ liệu từ hai bảng bằng cách kết nối chúng, tương tự như sau:

Ví dụ: Tìm xem ai đã đặt hàng sản phẩm và họ đã đặt món hàng gì:

SELECT Employees.Name, Orders.Product
FROM Employees, Orders
WHERE Employees.Employee_ID = Orders.Employee_ID

kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: Tìm xem ai đã đặt hàng máy in:

SELECT Employees.Name
FROM Employees, Orders
WHERE Employees.Employee_ID = Orders.Employee_ID
AND Orders.Product = 'Printer'

kết quả trả về:

Name
Hansen, Ola
Sử dụng JOIN

Ta có thể sử dụng từ khoá JOIN để kết nối dữ liệu từ hai bảng.

Ví dụ: INNER JOIN

Cú pháp:

SELECT cột_1, cột_2, cột_3
FROM bảng_1
INNER JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại

Ai đã đặt hàng và họ đã đặt món hàng nào:

SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID

INNER JOIN trả về tất cả các dòng ở cả hai bảng khi chúng tương ứng với nhau. Nếu có một dòng ở bảng Employees không ứng với dòng nào ở bảng Orders, dòng đó sẽ không được tính.

kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: LEFT JOIN

Cú pháp:

SELECT cột_1, cột_2, cột_3
FROM bảng_1
LEFT JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại

Liệt kê tất cả các nhân viên và món hàng mà họ đặt (nếu có):

SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID

LEFT JOIN trả về tất cả các dòng của bảng thứ nhất (Employees), ngay cả khi các dòng đó không ứng với dòng nào ở bảng thứ hai (Orders). Nếu có một dòng nào ở bảng Employees không ứng với bất cứ dòng nào ở bảng Orders thì dòng đó cũng vẫn được tính.

kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Tove
Svendson, Stephen Table
Svendson, Stephen Chair
Pettersen, Kari
Ví dụ: RIGHT JOIN

Cú pháp:

SELECT cột_1, cột_2, cột_3
FROM bảng_1
RIGHT JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại

Liệt kê tất cả các mặt hàng được đặt và tên người đặt hàng (nếu có):

SELECT Employees.Name, Orders.Product
FROM Employees
RIGHT JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID

RIGHT JOIN trả về tất cả các dòng ở bảng thứ hai (Orders), ngay cả khi các dòng đó không ứng với dòng nào ở bảng thứ nhất (Employees). Nếu có một dòng nào ở bảng Orders không ứng với bất cứ dòng nào ở bảng Employees thì dòng đó cũng vẫn được tính.

kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: Ai đã đặt hàng máy in:

SELECT Employees.Name
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID
WHERE Orders.Product = 'Printer'

kết quả trả về:

Name
Hansen, Ola

Kết nối Database Access bằng Dreamweaver (ASP)

Hiện nay, đa số các Website đều có kết nối đến cơ sở dữ liệu (CSDL, database) dựa trên các ngôn ngữ phía chủ (server side) như ASP, PHP, JSP…

Tạo ứng dụng Web ASP có kết nối cơ sở dữ liệu bằng Dreamweaver MX
Hiện nay, đa số các Website đều có kết nối đến cơ sở dữ liệu (CSDL, database) dựa trên các ngôn ngữ phía chủ (server side) như ASP, PHP, JSP… Điều này làm tăng khả năng tương tác giữa trang Web với người dùng, đồng thời cho phép Webmaster (người quản trị trang Web) cập nhật thông tin một cách dễ dàng. Tuy nhiên, để thiết kế những Website như thế đòi hỏi bạn phải có những kiến thức nhất định về lập trình Web và CSDL. May mắn thay, với Dreamweaver MX (DW MX), những người thiết kế Web nghiệp dư chỉ biết HTML thuần túy vẫn có thể tự tạo cho mình những Website tương tác dễ dàng thông qua các thao tác trực quan và dễ hiểu.
Bài này sẽ hướng dẫn bạn từng bước tạo một Website ASP đơn giản có tích hợp CSDL bằng DW MX. Qua đó bạn có thể áp dụng vào Website của mình để nó ngày càng chuyên nghiệp hơn.
Chuẩn bị trước khi thiết kế
Bạn phải “sắm sửa” các thứ như sau:
- Một ứng dụng Web Server (trình chủ Web) để thử nghiệm trang Web như PWS (Personel Web Server) hay IIS (Internet Information Server).
- Hệ CSDL như MS Access, SQL Server, Oracle…Ở đây, ta sẽ chọn hệ CSDL MS Access cho đơn giản.
- Cuối cùng, dĩ nhiên là DW MX.
Cấu hình hệ thống thành máy chủ
Web Trước hết, bạn cần cấu hình máy của mình thành máy chủ Web (Web server). Việc này khá đơn giản, bạn kiểm tra xem máy của mình đã cài đặt trình chủ Web hay chưa bằng cách xem trong ổ C có thư mục Inetpub không. Nếu không thấy, bạn phải cài đặt trình chủ Web tùy theo hệ điều hành (HĐH) mà mình đang dùng. Nếu giới hạn ở các HĐH Windows, ta có hai trường hợp đáng chú ý:
- HĐH cho máy chủ (Win 2K, NT Server, XP Pro): Khi cài đặt Windows, IIS sẽ được cài đặt sẵn theo mặc định như là một thành phần (component) của Windows. Nếu chưa có, bạn hãy vào Add/Remove Windows Components trong Control Panel để cài đặt thêm IIS.
- HĐH cho máy trạm (Win 98, Win NT Workstation) : Bạn có thể cài đặt PWS từ đĩa Win 98. Bạn cũng có thể tải xuống PWS từ Website của Microsoft. (Xin tham khảo thêm trong cuốn “PHP và Web tiếng Việt, dễ ợt!” do e-CHÍP ấn hành).
Trình chủ Web sẽ chuyển một thư mục trên ổ cứng của bạn thành thư mục gốc của Website, theo mặc định là thư mục C:\Inetpub\wwwroot\. Sau khi có những thứ cần thiết, bạn nên sao chép thư mục GettingStarted có sẵn trong DW MX (thư mục này nằm trong\Macromedia\DreamweaverMX\Samples\) vào thư mục làm việc của mình, chẳng hạn C:\MyWebsite.
Tạo Dreamweaver Site
Sau khi khởi động DW MX, bạn cần xác lập Dreamweaver Site, tương tự như tạo Project trong Visual Basic. Việc này giúp bạn tiết kiệm thời gian và công sức trong quá trình thiết kế. Bạn vào Site\New Site để mở cửa sổ Site Definition và chọn thẻ Advanced.
XÁC LẬP LOCAL INFO
- Site Name – Tên Site: Tương tự như Project Name trong VB6, chỉ có ý nghĩa định danh đối với người thiết kế. Bạn có thể đặt bất cứ tên gì mình thích.
- Local Root Folder – Thư mục gốc cục bộ: Đây là đường dẫn (path) của thư mục dùng để lưu trữ các trang Web của bạn trên ổ cứng. Vì ta sẽ thiết kế bằng ngôn ngữ ASP, bạn hãy chọn đường dẫn C:\MyWebsite\GettingStarted\Develop\asp\ bằng cách nhấp vào biểu tượng thư mục kế bên.
- Refresh Local File List Automatically – Làm tươi danh sách tập tin cục bộ một cách tự động: Đánh dấu vào hộp kiểm ở mục này để DW MX tự động cập nhật danh sách các tập tin khi ta thực hiện các thao tác chỉnh sửa bên ngoài DW MX.
- Default Images Folder – Thư mục chứa hình ảnh mặc định: Đây là đường dẫn của thư mục chứa các tập tin hình ảnh mà ta sẽ chèn (insert) vào trang Web. Sau này, nếu bạn chèn một hình ảnh nào đó vào trang Web thì DW MX sẽ tự động sao chép hình ảnh đó vào thư mục này. Bạn hãy chọn đường dẫn C:\MyWebsite\GettingStarted\Develop \asp\Assets\images\.
XÁC LẬP REMOTE INFO
- Access – Truy nhập: Chọn phương thức truy nhập để DW MX truy nhập đến thư mục chứa Website của bạn trên máy chủ Web. Ở đây ta sẽ chọn Local/Network vì máy chủ Web chính là máy của bạn.
- Remote Folder – Thư mục xa: Đây là đường dẫn của thư mục trên máy chủ Web mà ta sẽ tải Website của mình lên. Đường dẫn mặc định của thư mục này là C:\Inetpub\wwwroot\..
- Refresh Remote File List Automatically – Làm tươi danh sách tập tin từ xa một cách tự động: Chức năng này tương tự như Refresh Local File List Automatically nhưng thực hiện trên Remote Folder.
- Automatically upload files to server on save – Tự động tải tập tin lên máy chủ khi lưu: Khi bạn lưu trang Web, DW MX sẽ tự động đưa tập tin ấy vào Remote Folder.
XÁC LẬP TESTING SERVER
- Server Model – Loại trình chủ: Xác định loại ngôn ngữ (công nghệ) phía chủ mà DW MX tự động triển khai khi thiết kế. Bạn sẽ thực hiện phần lớn công việc thông qua các thao tác trực quan, còn DW MX sẽ viết mã (operate code) hộ bạn. Ở đây ta sẽ chọn ngôn ngữ phía chủ là ASP và ký mã (script) là VBScript.
Ở phần này, bạn nên chú ý mục URL Prefix – Tiền tố URL. Theo mặc định đó là http://localhost/mywebsite/. Khi xem thử Website của mình bằng trình duyệt, bạn phải nhập đường dẫn nêu trên vào ô địa chỉ của trình duyệt. Xác lập xong, bạn nhấn OK để hoàn tất.
Kết nối trang Web với cơ sở dữ liệu
Ta hãy thử dùng một CSDL mẫu của DW MX mang tên GlobalCar (CSDL về các dịch vụ cho thuê ô-tô). Sau này, để kết nối với CSDL khác, bạn nhấn nút Define và chọn CSDL cần thiết.
Cụ thể, bạn nhấn vào tiêu đề cửa sổ Application để mở rộng cửa sổ ấy rồi thực hiện các bước sau:
Nhấn vào nút cộng (+), chọn Data Source Name (DSN) từ trình đơn để mở cửa sổ Data Source Name (DSN).
Nhập Connection Name là myConn.
Chọn CSDL GlobalCar trong danh sách Data Source Name (DSN).
Chọn Using Local DSN ở mục Dreamweaver Should Connect.
Nhấn nút OK để hoàn tất.
Kể từ đây, bạn có thể lấy dữ liệu từ CSDL GlobalCar để đưa vào trang Web của mình. Để làm quen, ta thử dùng một trang ASP có sẵn, ràng buộc nó với CSDL GlobalCar. Bạn thực hiện các bước như sau:
Bấm kép vào tập tin locationMaster.asp trong cửa sổ Files để mở tập tin này. Giao diện của trang ASP này đã được thiết kế sẵn, ta chỉ việc hiển thị các dòng dữ liệu của CSDL GlobalCar mà thôi.
Chọn thẻ Binding trong cửa sổ Application. Sau đó nhấn vào nút cộng (+) và chọn Recordset (Query) để mở cửa sổ Recordset. Hiểu nôm na thì record set là tập hợp các cột trong bảng nào đó của CSDL. Tập hợp các cột này có thể trích từ nhiều bảng (Table hoặc Query/View) khác nhau.
Đặt tên (Name) cho Recordset là rsLocation.
Chọn myConn ở mục Connection.
Chọn thử bảng Locations ở mục Table.
Ở mục Columns, ta để chế độ hiển thị mặc định là All để hiển thị tất cả các cột trong bảng Locations. Tuy nhiên, bạn cũng có thể hiển thị các cột có chọn lọc bằng cách chuyển sang chế độ Selected và chọn những cột mà mình muốn (ấn giữ phím Shift hoặc Ctrl khi nhấn).
Nhấn OK để hoàn tất.
Nhấn vào dấu + phía trước Recordset(rsLocations) để “xổ” các nhánh con của nó. Mỗi nhánh chính là một cột trong bảng Locations.
Tạo bảng để chứa dữ liệu trên trang Web bằng cách chọn Insert\Table trên thanh trình đơn, nhập Row: 1, Columns: 1 rồi nhấn OK.
Kéo và thả nhánh CODE từ thẻ Bindings vào bảng mà bạn vừa tạo ra để hiển thị dữ liệu của cột CODE trong bảng đó.
Tùy biến cách hiển thị dữ liệu
Đến đây, ta chỉ hiển thị được dòng đầu tiên trong cột CODE. Nếu muốn hiển thị toàn bộ cột CODE, bạn phải dùng vòng lặp hiển thị từng dòng trong cột. Bạn làm như sau:
Nhấn vào thẻ (nơi có các thẻ
) trong thanh trạng thái dưới cửa sổ thiết kế rồi chọn Insert\Application Objects\Repeated Region trên thanh trình đơn để mở cửa sổ Repeat Region.
Theo mặc định, Repeat Region hiển thị mỗi lần 10 dòng (Show 10 Records at a Time). Nếu bạn muốn hiển thị toàn bộ cột thì chọn Show All Records.
Nhấn OK để hoàn tất.
Tiếp theo, bạn cần thêm vào một thanh điều hướng dữ liệu (Navigation Bar) để hiển thị các dòng kế tiếp trong cột. Bạn di chuyển con trỏ xuống vị trí phía dưới bảng rồi chọn Insert\Application Objects\Recordset Navigation Bar trên thanh trình đơn để mở cửa sổ Recordset Navigation Bar. Bạn có thể giữ nguyên lựa chọn mặc định, nhấn luôn OK để chèn ngay thanh điều hướng vào trang. Bạn có thể chuyển các chuỗi “First”, “Previous”, “Next”, “Last” sang tiếng Việt, thành “Đầu – Trước – Sau – Cuối”.
Thế là xong! Ta đã có một trang Web có khả năng hiển thị thông tin một cách linh hoạt từ CSDL đã chọn. Bạn hãy nhấn F12 để xem nó chạy như thế nào trên trình duyệt. Bạn thấy đó, nhờ thanh điều hướng dữ liệu, người dùng có thể duyệt qua dữ liệu trong cột CODE của CSDL GlobalCar.

Làm phòng chat với ASP

Khi bạn truy xuất đến trang web, ví dụ http://www.vietchat.com/, thì trình duyệt web sẽ tải về đoạn mã java và chạy tại máy của bạn. Chương trình java này sẽ tạo một kết nối bằng đường socket của TCP/IP đến máy chủ. Kết nối này được xác lập và định vị bằng địa chỉ IP máy chủ, địa chỉ IP máy trạm, và cổng (port) cố định nào đó. Kết nối này là kết nối 2 chiều, nghĩa là dữ liệu sẽ được chuyển từ máy chủ về máy trạm và ngược lại. Khi nào bạn còn hiện diện trong phòng chat thì kết nối này còn duy trì. Chương trình java trên máy của bạn sẽ truyền nội dung chat đến máy chủ và từ máy chủ về máy bạn qua kết nối này. Loại phòng chat này chạy rất nhanh và có nhiều chức năng vì đây là những kết nối liên tục (không bị đứt quãng giữa chừng). Tuy nhiên nhược điểm là không dùng được cho người dùng internet ở bên trong 1 bức tường lửa (firewall) hay proxy server, vì firewall sẽ giới hạn người dùng chỉ được sử dụng 1 số cổng nhất định nào mà thôi. Firewall Việt Nam chỉ cho sử dụng một số cổng chuẩn (phổ biến) là cổng 80 (dùng cho HTTP), cổng 21 (dùng cho FTP)…Nếu chương trình sử dụng một cổng nằm ngoài danh sách cho phép của firewall VN thì coi như là bị khóa.
Để tránh nhược điểm này, người ta nghĩ ra cách làm phòng chat bằng HTML thuần tuý. Nguyên tắc như sau:

Trên máy trạm bạn sẽ truy xuất 1 trang web có ít nhất 2 frame, một trong 2 frame đó sẽ có form cho phép bạn nhập dữ liệu.
Dữ liệu bạn nhập vào được chuyển về máy chủ và ghi xuống một biến ở cấp application (biến ở cấp application là biến mà mọi người đang kết nối với máy chủ đều truy xuất được).
Frame thứ hai sẽ lấy thông tin chat từ máy chủ qua biến cấp application này. Do nội dung chat luôn luôn thay đổi nên frame thứ hai sẽ được đặt ở chế độ làm tươi liên tục. Nếu bạn đặt thời gian làm tươi là 5 giây thì cứ sau mỗi 5 giây, bạn mới thấy được những câu chat mới được gửi từ những người khác trong phòng chat.
Tuy nhiên chương trình chat kiểu này có nhược điểm: cách truyền dữ liệu theo kiểu trang web (nghi thức HTTP) là đường truyền 1 chiều, nghĩa là chỉ có máy trạm là chủ động ra yêu cầu cần dữ liệu, máy chủ nhận được yêu cầu thì trả lời, không có trường hợp ngược lại là máy chủ yêu cầu dữ liệu từ máy trạm. Chính lý do này ta cần phải làm tươi (refresh) nội dung của trang web trên máy trạm.

Thực hiện:

Cấu trúc trang web
Trong bài viết này, chúng tôi sẽ hướng dẫn cách làm 1 phòng chat bằng ngôn ngữ ASP. Cửa sổ chat gồm có 3 phần: 2 phần như đã nói trên, đó là phần nội dung chat và phần nhập liệu. Phần thứ ba là hiển thị danh sách những người đang có mặt trong phòng chat.

Do cửa sổ chat có 3 phần nên ta cần 3 frame như sau:



ASP CHATROOM









Sorry, your browser does not support frames.



Bạn lưu đoạn mã trên vào file frames.html, đây là phần khung chính của toàn bộ chatroom. Trong đó frame thứ nhất tên là users sẽ chứa danh sách users, frame này sẽ gọi file users.asp trên server. Frame này sẽ làm tươi sau mỗi 25 giây nên cần có đoạn mã làm tươi như sau:









Frame thứ hai là nội dung chat, tên frame là chat và chỉ đến file chat.asp trên server được làm tươi sau mỗi 10 giây. Bạn đánh đoạn code sau đây và lưu thành file có tên chat.asp:









Frame cuối là để nhập dữ liệu tên là input sẽ gọi file input.asp trên server mỗi khi user nhập dữ liệu và nhấn phím enter. Vì cần phải nhập dữ liệu bằng form, nên file input.asp sẽ có chứa form như sau:












Đến đây bạn đã có tất cả 4 files: frames.html, users.asp, chat.asp, và input.asp. Bây giờ xin mời bạn xem tiếp cách tổ chức dữ liệu trên máy chủ.

Tổ chức dữ liệu
Danh sách users và nội dung chat sẽ được chứa trong array. Giả sử ta chỉ cần giữ lại 20 câu chat sau cùng, ta cần array 20 phần tử. Và để đơn giản, ta giới hạn số người chat nhiều nhất là 10 người ==> cần array 10 phần tử. Cả hai biến này đều ở cấp application vì mọi users đều truy xuất được. Ta đặt tên 2 biến này là Application(“content”) và Application(“users”). Do nội dung chat là 1 array được dùng xoay vòng, ta cần 1 biến Application(“pointer”) để chỉ phần tử nào là mới nhất trong array. Tuy nhiên, cần thêm 1 biến đếm số users đang hiện diện trong phòng chat, biến này kiểu integer: Application(“count”). Để truy xuất phần tử thứ n trong array Application(“content”) ta dùng cú pháp: Application(“content” & n).

Để tiện cho việc lập trình, mỗi user cần lưu trữ 1 biến cấp session chứa tên đăng ký lúc vào phòng chat: Session(“nick”).

Các biến cấp application và cấp session sẽ được khởi tạo trong global.asa như sau:



Sub Application_OnStart

Application(“CHATSIZE”) = 20
Application(“MAXUSER”) = 10

u_array = ARRAY(“”, “”, “”, “”, “”, “”, “”, “”, “”, “”)
REDIM u_array(Application(“MAXUSER”))
Application(“users”) = u_array

c_array = ARRAY(“”, “”, “”, “”, “”, “”, “”, “”, “”, “”)
REDIM c_array(Application(“CHATSIZE”))
Application(“content”) = c_array

Application(“count”) = 0
Application(“pointer”) = 0

End Sub

Sub Application_OnEnd

End Sub

Sub Session_OnStart

Session.TimeOut = 10
Session(“nick”) = “”

End Sub

Sub Session_OnEnd

End Sub



Lập trình cho máy chủ
Lập trình cho máy chủ gồm những phần nhỏ sau đây: thêm 1 câu chat mới vào nội dung, hiển thị nội dung của phòng chat, và hiển thị danh sách các user đang ở trong phòng chat.

1. Thêm câu chat mới:

<%

dim msg
dim current_pointer

msg = Request(“input_text”)

‘không cho phép dùng html trong phần nội dung chat
msg = Server.HTMLencode(msg)

‘thay thế các hình cười và khóc
msg = REPLACE(msg, “:)”, “”)
msg = REPLACE(msg, “:(“, “”)

‘nối thêm tên của người gửi vào
msg = “” & Session(“nick”) & “: ” & msg

‘Lưu câu chat mới vào array
Application.lock
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = msg
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)
Application.unlock

%>

Bạn nối phần mã này vào file input.asp. Lưu ý: biến pointer sẽ tăng lên 1 để chỉ phần tử kế tiếp trong array content, nhưng khi đến phần tử cuối cùng thì phải quay về phần tử đầu tiên là 0, vì trong đoạn code trên có phần modify cho CHATSIZE.

2. Hiển thị nội dung chat

Vì array content được dùng xoay vòng, nội dung chat sẽ được hiển thị từ phần tử pointer đến phần tử cuối trong array, sau đó từ phần tử 0 đến phần tử trước pointer (nếu pointer > 0).

<%

for i = Application(“pointer”) to Application(“CHATSIZE”) – 1
if Application(“content” & i) “” then
Response.write Application(“content” & i) & “
”
end if
next

if Application(“pointer”) > 0 then
for i = 0 to Application(“pointer”) – 1
if Application(“content” & i) “” then
Response.write Application(“content” & i) & “
”
end if
next
end if

%>

Bạn nối đoạn mã này vào phần BODY của file chat.asp. Lưu ý: sau mỗi câu chat cần phải xuống hàng mới do đó trong đoạn mã trên, ta nối thêm kí tự xuống dòng “
” cho mỗi câu chat.

3. Hiển thị danh sách users:

<%

Response.write “

Co ” & Application(“count”) & ” nguoi trong phong chat

”

for i = 0 to Application(“count”) – 1
if Application(“users” & i) “” then
if Session(“nick”) = Application(“users” & i) then
Response.write “<” & Application(“users” & i) & “>
”
else
Response.write Application(“users” & i) & “
”
end if
end if
next

%>

Bạn chép đoạn mã này vào phần thân (body) của file users.asp. Lưu ý: tên của bạn sẽ được in nằm giữa hai dấu .

4. Logon và logoff:

Bây giờ đến phần khá quan trọng là logon và logoff. Khi người dùng vào phòng chat của bạn, trước họ sẽ được nhắc nhập vào tên “nickname” và khi người sử dụng rời khỏi phòng chat họ sẽ quay về trang web này. Ta cần phải có form để người dùng nhập nickname như sau:



ASP CHATROOM


Chao mung cac ban den voi ASP Chatroom


Moi ban nhap vao ten se dung trong luc chat (chi su dung chu, so va cac ki tu -, _)









Bạn lưu nội dung trên đây vào file index.asp, sau đó thêm đoạn mã bên dưới vào phần đầu của file để thêm người mới vào danh sách users khi logon:

<%

dim error
dim nick
dim numuser
dim current_pointer
dim error_msg(2)

nick = Request(“nickname”)

error_msg(0) = “—– ” & nick & “ vua vao chatroom —–”
error_msg(1) = “

—– Phong chat het cho, xin moi quay lai sau —–

”
error_msg(2) = “

—– Ten nay da co nguoi su dung, xin chon ten khac —–

”

‘chỉ thi hành đoạn mã này nếu user truy xuất trang này bằng nhấn nút submit trong form logon_form
if Request(“submit”) “” then
Application.lock
error = 0
numuser = Application(“count”)
if numuser >= Application(“MAXUSER”) then
error = 1 ‘chatroom đã đầy
else
if numuser > 0 then
for i = 0 to numuser – 1
if nick = Application(“users” & i) then
error = 2 ‘tên này đã có người dùng
exit for
end if
next
end if
end if

if error = 0 then
Application(“users” & numuser) = nick
Application(“count”) = numuser + 1
Session(“nick”) = nick

‘thêm câu chúc mừng user mới vào nội dung của chatroom
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = error_msg(0)
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)
Application.unlock

‘Chuyển user sang trang web có frame để chat
Response.Redirect “frames.html”
Response.End
else
Response.write error_msg(error)
Application.unlock
end if
end if

%>

Khi user ra khỏi phòng chat thì ta cần gọi file logoff để xóa tên user khỏi danh sách các user. Hơn nữa, ta cũng cần câu thông báo cho mọi người biết rằng user đó đã logoff. Lưu đoạn mã dưới đây vào file logoff.asp

<%

dim numuser
dim current_pointer

Application.lock
numuser = Application(“count”)

‘tìm vị trí của user này trong array chứa danh sách user
for i = 0 to numuser – 1
if Session(“nick”) = Application(“users” & i) then
index = i
exit for
end if
next

‘sau khi xóa user này xong, cần phải dồn array lại nếu đây không phải là user cuối cùng
if index < numuser – 1 then
for i = index to numuser – 2
Application(“users” & i) = Application(“users” & i + 1)
next
end if

‘thêm câu thông báo user mới vừa rời phòng chat
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = “—– ” & Session(“nick”) & “ vua roi chatroom —–”
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)

Application(“users” & numuser) = “”
Session(“nick”) = “”
Application(“count”) = numuser – 1
Application.unlock

Response.Redirect “index.asp”
Response.End

%>

Ta có thể đặt thêm nút nhấn trong file input.asp để user logoff như sau:













Tuy nhiên, nếu user không nhấn vào nút logoff mà đóng cửa sổ trình duyệt web lại thì sao? Để tránh trường hợp này, ta thêm đoạn mã javascript sau vào file frames.html:



ASP CHATROOM









Sorry, your browser does not support frames.



Đến đây, bạn có thể gộp các files trên lại và bỏ chung 1 vào thư mục nào đó và tạo 1 virtual folder trong IIS là có thể chạy được cái chatroom này rồi. Nhớ tạo ra 2 cái hình cười và mếu, bỏ vào thư mục con images!

Thay đổi cấu trúc bảng trong SQL (SQL p17)

Thay đổi cấu trúc bảng.

Câu lệnh ALTER TABLE được sử dụng để thêm hoặc xoá cột trong một bảng.
ALTER TABLE tên_bảng
ADD tên_cột kiểu_dữ_liệu

ALTER TABLE tên_bảng
DROP COLUMN tên_cột

Lưu ý: Một số hệ CSDL không cho phép việc xoá bỏ cột trong bảng.

Ví dụ: ta có bảng Person như sau:

LastName FirstName Address
Pettersen Kari Storgt 20
Thêm một cột tên là City vào bảng Person:

ALTER TABLE Person ADD City varchar(30)

kết quả:

LastName FirstName Address City
Pettersen Kari Storgt 20
Xoá cột Address:

ALTER TABLE Person DROP COLUMN Address

kết quả:

LastName FirstName City
Pettersen Kari

Thursday, July 19, 2012

Weekly News 16/7-22/7

-(Inquirer 18/7) Chinese newspaper slams PH, Vietnam for running to US for help: One of China’s top newspapers has assailed the Philippines and Vietnam for their alleged “attempt to grab islands and waters; (Atimes 18/7) Sea of trouble for ASEAN
-(Abs-cbnnews 17/7) China forming Spratlys government: China has started forming the backbone of a local government that will rule over the disputed Spratly Islands in the South China Sea; (Thediplomat 17/7) America’s ‘Rebalance’ Finds its Footing
-(Thenational 17/7) Beijing plays divide and conquer to win in South China Sea: Absent a diplomatic solution, China can only expect confrontations with the Philippines and Vietnam over fishing and natural resource exploration to continue and escalate; (Abs-cbnnews 17/7)Philippines warns China fishermen to stay away
-(FP 16/7) South China Sea issue divides Asean: For an organisation that chose “One Community, One Destiny” as the banner for its latest summit, Asean could not have imagined a more embarrassing outcome; (Nbr 16/7) ASEAN and the South China Sea: Deepening Divisions
-(Channelnewsasia 16/7) US Pacific chief affirms commitment to Philippines: The head of US forces in the Pacific reaffirmed American commitment to support the Philippines Monday, amid the country's continuing territorial dispute with China; (Xinhua 16/7) China manned sub may dive in South China Sea 2013
-(Eurasiareview 16/7) South China Sea Dispute Rocks ASEAN: In one of the most embarrassing moments in its four-decade history, ASEAN ended its annual talks in Cambodia this week without issuing its traditional joint statement; (Radioaustralia 16/7) South China Sea negotiations damage ASEAN's reputation
-(Globalresearch 16/7) ASEAN summit breaks up amid feuding over South China Sea: The lack of agreement at this week’s ASEAN summit is just the latest indication that the Obama administration’s strategy is recklessly inflaming regional tensions and thus the danger of military conflict; (Nationmultimedia 16/7) Key players holding Asean hostage!
-(Inquirer 15/7) Taiwan mulls extending runway in Spratlys – report: If approved, the project would extend by 500 meters (1,640 feet) the runway on Taiping Island, (Lowyinterpreter 16/7) Hope aground in South China Sea
-(Hindustantimes 15/7) Vietnam prefers Indian presence in South China Sea: Vietnam has decided to extend the contract for exploration of hydrocarbons in a crucial oil block in the region to ONGC Videsh Ltd; (Reuters 15/7 ) China frigate heads home, averts South China Sea standoff

Tình hình biển Đông căng thẳng hơn trong năm 2012

Thứ ba, 03 Tháng 7 2012
Những diễn biến mới như căng thẳng giữa Philippines và Trung Quốc xung quanh bãi cạn Scarborough và CNOOC mời thầu tại thềm lục địa Việt Nam là những đề tài được đề cập đến nhiều trong Hội thảo Biển Đông tại Washington DC. Phỏng vấn của RFA với Giám đốc Học viện Ngoại giao Đặng Đình Quý bên lề hội thảo.



Bản đồ chỉ rõ 9 lô dầu khí mà Tổng Công ty Dầu khí Hải Dương Trung Quốc mở thầu quốc tế hoàn toàn nằm trong vùng đặc quyền kinh tế 200 hải lý và thềm lục địa của Việt Nam (nguồn PVN).

Những diễn biến mới này cũng là đề tài được các học giả Việt Nam và Philippines đề cập đến rất nhiều trong cuộc hội thảo về an ninh biển Đông do Trung tâm chiến lược và nghiên cứu quốc tế tổ chức từ ngày 27 đến 28 tháng 6 vừa qua tại Washington DC.

Phóng viên Việt Hà có cuộc phỏng vấn ngắn với tiến sĩ Đặng Đình Quý, Giám đốc học viện ngoại giao quốc gia Việt Nam bên lề cuộc hội thảo.

Dần dần từng bước

Tàu chiến Haijian (Hải Giám) hiện đại của Trung Quốc tuần tiểu ngày đêm trên các khu vực tranh chấp ở Biển Đông. Nguồn báo TQ/peopledaily.cn.
Việt Hà: Thưa ông, xin ông cho biết là với những diễn biến gần đây trên biển Đông, nhất là việc Trung Quốc mời các công ty đấu thầu khai thác dầu khí thuộc vùng chủ quyền của Việt Nam, theo ông so sánh thì tình hình biển Đông năm nay so với năm ngoái thế nào?
TS. Đặng Đình Quý: Nó căng thẳng hơn vì nó nhiều hoạt động trên thực tế và những hoạt động đó nghiêm trọng hơn trước. Những năm trước thì còn ở mức độ thế nọ, mức độ thế kia, nhưng năm nay các hành động đó là tiến thêm một bước nữa trong việc khẳng định chủ quyền trên thực tế, trong tất cả các khu vực thuộc đường lưỡi bò. Đây là chiến lược mà Trung Quốc làm dần dần từng bước và liên tục như vậy theo hướng là dần dần đẩy tất cả mọi người ra khỏi đường lưỡi bò và chỉ còn một mình ở đấy duy nhất. Đó là hiện thực hóa yêu sách của họ. Điều đó hết sức nguy hiểm, nó tạo thành tiền lệ mà như thượng nghị sĩ Lieberman vừa nói là một hành động rất khiêu khích và nguy hiểm không chỉ đối với Việt Nam mà còn đối với tất cả các nước trong khu vực.

Biển Đông quan trọng với cả thế giới

Việt Hà: Trước hành động đó của Trung Quốc thì ngoài việc Việt Nam lên tiếng phản đối ra thì theo ông các nước như Việt Nam và Philippines là những nước bị ảnh hưởng nặng nề nhất bởi các hành động của Trung Quốc cần phải làm gì?

TS. Đặng Đình Quý: Tôi nghĩ là tất cả các nước trong khu vực Đông Nam Á, các nước liên quan trực tiếp là 5 nước 6 bên và tất cả các nước ở khu vực Đông Nam Á đều phải có những hành động lên tiếng trước các hành động như vậy. Ngoài những nước ở Đông Nam Á ra thì những nước sử dụng biển Đông như Mỹ, Nhật, Hàn, Úc, Ấn Độ cũng phải nên có thái độ rõ ràng với việc này.

Vì nếu chúng ta không có hành động rõ ràng thì các hành động tiếp theo sẽ tiếp tục leo thang và nó dẫn đến những hậu quả không lường trước được. Bởi vì Đông Nam Á hay là biển Đông không chỉ quan trọng với các nước liên quan mà còn quan trọng với tất cả các nước trên thế giới.



Việt Hà: Trong cuộc hội thảo ngày hôm nay, một số các chuyên gia cho rằng ASEAN có sự chia rẽ trong việc nói chuyện, bàn thảo với Trung Quốc về vấn đề biển Đông, theo ông thì Việt Nam và Philippines là những nước lên tiếng mạnh mẽ nhất về các hành động của Trung Quốc cần phải làm gì để đưa ASEAN lại gần lại với nhau?

TS. Đặng Đình Quý: Tôi không hoàn toàn nhất trí về chuyện ASEAN bị chia rẽ bởi vì trong vấn đề biển Đông thì các nước ASEAN có mức độ lợi ích khác nhau. Những nước có lợi ích liên quan trực tiếp như Philippines, Việt Nam, tiếp sau đó là Malaysia hay Brunei, tiếp theo nữa là Singapore hay Indonesia thì tất cả các nước đều có lợi ích cả nhưng mức độ không hoàn toàn như nhau. Vì lợi ích khác nhau nên quan điểm có lúc không đồng nhất, nhưng ASEAN thống nhất trong lập trường chung là duy trì hòa bình ổn định trên biển Đông và thống nhất giải quyết vấn đề qua hòa bình trên cơ sở luật pháp quốc tế là UNCLOS và DOC.

Bởi vì Đông Nam Á hay là biển Đông không chỉ quan trọng với các nước liên quan mà còn quan trọng với tất cả các nước trên thế giới.

TS. Đặng Đình Quý

Cái đó là thống nhất. còn Việt Nam, Philippines, Indonesia và các nước khác luôn hướng tới các việc tăng cường đoàn kết không chỉ trong vấn đề biển Đông mà còn trong tất cả các vấn đề khác liên quan đến an ninh và phát triển tại khu vực, và Việt Nam vẫn tiếp tục làm như thế.
Việt Hà: Vừa rồi Việt Nam có thông qua luật biển, ông đánh giá về tác dụng của luật này trong việc giúp Việt Nam bảo vệ chủ quyền?

TS. Đặng Đình Quý: Đây là một hoạt động rất bình thường của một quốc gia ven biển. Theo tôi ở góc độ cá nhân, đáng ra phải ra luật biển từ lâu rồi vì Việt Nam là thành viên của công ước quốc tế về luật biển 1982, quá trình này là quá trình nội luật hóa các cam kết quốc tế của mình, và điều này khẳng định chủ quyền và tạo ra cơ sở pháp lý cho việc Việt Nam thực hiện chủ quyền của mình, quản lý biển và phát triển biển, kinh tế biển, cho tương lai của Việt Nam, đồng thời cũng vì hòa bình ổn định trong khu vực. Điều này hoàn toàn phù hợp với xu hướng chung của quốc tế, nước nhỏ xưa nay luôn tuân thủ luật pháp quốc tế vì hòa bình của cả khu vực.

Việt Hà: Xin cảm ơn ông.
by http://nghiencuubiendong.vn

Monday, July 16, 2012

HƯỚNG DẪN KIẾM TIỀN VỚI CO.CC TÊN MIỀN MIỄN PHÍ CÓ DNS TỐT NHẤT

 Domain Co.cc  là một dich vụ cung cấp tên miền Free (miễn phí) thông dụng và tốt nhất hiện nay, vì chức năng của dịch vụ này tương đương với các dịch vụ trả phí khác như .com .net .info… và bạn toàn quyền sử dụng chức năng DNS, CNAME, A Records (thường thì tên miền miễn phí khác không hỗ trợ dịch vụ này) Hướng dẫn đăng ký tên miền Co.cc Full DNS
Một số tên miền “độc” thì bạn phải trả phí. Giá trị nhỏ nhất là 3$/tên miền giá trị.
  







1Bước đầu tiên: Đăng nhập vào Referral.
Dang_ky_cocc
1. Nếu bạn đã có Tài khoản tại CO.CC thì:
Click vào (1) Returninng user, sign in here để đăng nhập và click vào (3) Referralsđể đăng ký kiếm tiền cùng CO.CC
2. Nếu chưa có tài khoản CO.CC thì:
Click vào (2) để đăng ký tài khoản, khi đăng ký xong thì làm như phần 1 trên
2Đăng ký Referrakl để kiếm tiền:
Sau khi click vào Referral trong bước 1, bạn vào màn hình và điền các thông tin như dưới:Tao_Acc_Referral
Sau khi đăng ký xong, bạn sẽ được cấp một link giới thiệu của riêng mình ví dụ của mình là :http://www.co.cc/?id=182877
Bạn giới thiệu bạn bè đăng ký qua link đó sẽ được co.cc trả hoa hồng theo các mức như sau:
1. free domain: $0.10 USD
2. for sale: 10% ~ 40% commission. (40% for PayPal, 10% for CreditCard)
Nếu đăng ký các domain thông thường thì là 0.1$, còn nếu ai mua domain đẹp của co.cc qua link bạn thì bạn được trả 40% số tiền mà người mua trả cho co.cc.
3Quảng bá , kiểm tra danh sách và rút tiền:
Sau khi đã đăng ký Referral, bạn thực hiện các bước như hình dưới (tranghttp://www.co.cc/affiliates/affiliates.php của CO.CC)
Check_CoCC- Get banners: để lấy codebanner quảng bá mời mọi người
- Sign up List: Kiểm tra List các domain đã đăng ký thông qua banner hoặc link
- Withdraw funds: Rút tiền về tài khoản Paypal khi đủ số tiền quy định tối thiểu là 1 USD (nếu chưa có tài khoản Paypal bạn tham khảo: Hướng dẫn Paypal từ A - Z cho MMO Việt)

Thư giãn cuối tuần 10/3/2012 - Hỏi xoáy đáp xoay (Số 75)








Hỏi xoáy đáp xoay 10/3/2012 - Hỏi xoáy đáp xoay, GS gửi thư chúc khán giả và nói lời chia tay chương trình. Gs Cù Trọng Xoay giới thiệu đồng nghiệp Xoày Trọng Chấm tiếp tục chương trình Hỏi xoáy đáp xoay. Cùng với sự trở lại của TS Xoáy

Channel http://www.youtube.com/soccaca
Đăng ký để nhận video nhanh nhất: http://goo.gl/L4Ty3
Google+ http://goo.gl/tGYDd
Facebook: http://facebook.com/xemtv
Twitter: http://twitter.com/xemtv

Hỏi xoáy đáp xoay: http://goo.gl/N5n1Q
Copy & bơm vá: http://goo.gl/y8vQs
Tiểu phẩm hài: http://goo.gl/aqv5y








Learn .NET and C# in 60 Days Lab 23(Day

Hoc .NET Tổng hợp tất cả các kiến thức mà bạn cần về C#

POPADS, KIẾM TIỀN VỚI POPUP TỪ BLOG/WEBSITE CỦA BẠN

Đăng ký Popads ngay hôm nay : Click Here

Popads là hình thức quảng cáo qua Popup mới với thu nhập khá tốt,hầu như kophân biệt traffic nên các website có lưu lượng truy cập từ VN chủ yếu vẫn có thể kiếm hàng trăm $ mỗi tháng nhờ Popads .

Hiện nay thu nhập của mình khoảng 5$ mỗi ngày với popads => tương đương mỗi tháng có 150$ (hơn 3 triệu đồng ) tiền uống nước cùng bạn bè
Hỗ trợ thanh toán qua Paypal hoặc Wire, AlertPay. Hầu như chưa có report scamnào trên thế giới nên các bạn hãy Yên tâm về Popads !




Đăng ký Popads : Click Here

Sau khi vào trang đăng ký hãy điền vào thông tin như hình dưới .


Đăng ký Popads : Click Here




Đăng ký Popads : Click Here




Sau khi có tài khoản của Popads ,hãy thêm vào website của bạn.
Click vào "New website"


 




Chờ khoảng 1 ngày để popads duyệt site của bạn .
Sau khi website được chấp nhận ( Approved ),hãy chọn "Get code" hoặc "Code Genarator" để lấy code và chèn vào website của bạn (nên để code mặc định ko thay đổi )









Lấy code và chèn vào website của bạn,có thể chèn vào trước thẻ thẻ </body> hoặc bất kỳ vị trí nào mà bạn có thể chèn mã html như banner hay textlink .
 
Khi đã có số tiền >= 5$ trong tài khoản, bạn có thể yêu cầu thanh toán bằng cách nhấn vào Billing ở menu bên trái và sau đó nhấn nút Withdraw.



Sau đó điền số tiền mình muốn rút ra tại Amount, chọn hình thức thanh toán qua Paypal, nhấn nút Withdraw và chờ khoảng 1 ngày để Popads chuyển tiền cho bạn.

Còn đây là bằng chứng (proof) mình đã nhận được thanh toán qua Paypal sau hơn 1 ngày Withdraw.
 


Chúc các bạn kiếm nhiều tiền từ Popads

Đăng ký Popads : Click Here