Thứ Ba, 31 tháng 7, 2012

Wikipedia dọa khóa tất cả bài viết tiếng Anh

Dịch vụ bách khoa toàn thư trực tuyến miễn phí Wikipedia dự định đóng cửa toàn bộ các bài viết bằng tiếng Anh trong một động thái nhằm phản đối dự luật SOPA (Stop Online Piracy Act) hiện đang gây tranh cãi và phản ứng từ những công ty Internet hàng đầu.

Anh ngữ là một trong những ngôn ngữ được sử dụng nhiều nhất trên bách khoa toàn thư mở Wikipedia - Ảnh minh họa: Digitaltrends

Tham gia làn sóng phản đối nội dung của bản dự luật SOPA, sẽ được đưa ra bỏ phiếu trong vài ngày tới tại Ủy ban công tố thuộc Thượng viện Mỹ trong ít ngày tới, Wikipedia dự định đóng cửa toàn bộ các bài viết bằng ngôn ngữ tiếng Anh. Đây là tuyên bố chính thức từ người sáng lập Wikipedia Jimmy Wales, sau khi chứng kiến cộng đồng Wikipedia tiếng Ý thành công bằng một cuộc tuần hành.

Hiện tỉ lệ người bỏ phiếu trực tiếp ủng hộ cú "tắt điện" của Wikipedia (tiếng Anh) đã đạt tỉ lệ 88,5%, 14,6% còn lại là không tán thành. Xem thêm tại đây .

"Vài tháng trước, cộng đồng người tham gia xây dựng Wikipedia tiếng Ý đã đóng cửa toàn bộ các bài viết bằng ngôn ngữ của họ nhằm phản đối một bộ luật có nguy cơ đe dọa đến quyền biên tập của trang Wikipedia tiếng Ý. Ngay sau đó, Quốc hội Ý phải lùi bước. Hiện tại, một dự luật tệ hơn rất nhiều được trá hình bởi cái tên "Đạo luật chấm dứt nạn xâm phạm bản quyền trực tuyến" (Stop Online Piracy Act) đang sắp sửa được đưa ra bỏ phiếu tại Quốc hội Hoa Kì. Tôi cho rằng một hành động quyết liệt như những gì từng xảy ra tại Ý sẽ có tác dụng để ngăn chặn mối nguy này", Wales viết trong thông báo.

Cụ thể, SOPA cho phép các tập đoàn, trong đó có cả những doanh nghiệp nắm giữ bản quyền nội dung một loại tài sản trí tuệ nào đó, cũng như cả chính quyền Mỹ được phép chặn hướng truy cập đến bất cứ trang web nào bị nghi là phát tán nội dung bị sao chép trái phép. Những người ủng hộ SOPA cho rằng một đạo luật như vậy là cần thiết để đấu tranh chống lại nạn xâm phạm bản quyền trên mạng, và để bảo vệ tài sản trí tuệ của những người làm ra hoặc nắm giữ bản quyền của chúng.

Về phía phản đối SOPA có cả nhiều gương mặt lớn của ngành công nghệ như Google, Facebook, Twitter, AOL, eBay, Yahoo và cả Microsoft… Đại diện những doanh nghiệp này cho rằng SOPA mang đến mối nguy hiểm lớn bởi lẽ dự luật này có thể dẫn đến việc kiểm duyệt một cách chưa từng có tiền lệ mọi nội dung trên mạng, cũng như ẩn chứa rủi ro hủy hoại toàn bộ nền móng cơ bản của Internet, từ đó đe dọa bảo mật riêng tư của người dùng.

Theo NSS - Tuổi trẻ online/Digitaltrends

Thứ Hai, 30 tháng 7, 2012

Facebook và Google chung tay chống nạn “tự tử”

2 website lớn là Facebook và Google đang tìm cách áp dụng công nghệ của họ vào việc ngăn chặn những người có ý định "tự kết thúc cuộc đời mình".

Facebook và Google đang hợp tác với ủy ban Phòng chống Tự tử Quốc Gia nhằm áp dụng những dịch vụ tư vấn khẩn cấp cho những thành viên của họ trong những trường hợp cần thiết.

Nếu người dùng truy cập Facebook và thấy được một status hay comment nào đó của một người bạn mà có ý định tự tử thì hãy click ngay vào nút "Suicidal content" để Facebook có thể biết được danh sách những "hành vi có hại". Facebook sẽ gửi một tin nhắn đến người đó để họ có được một cuộc trò chuyện với một người thuộc ủy ban Phòng chống Tự tử Quốc gia.

Và nếu một người dùng tìm kiếm những nội dung mà có liên quan tới hành vi tự tự, Google cũng sẽ gửi một số điện thoại của ủy ban trên tới họ.

"Tôi nghĩ rằng sự hợp tác này sẽ mang đến nhiều điều tích cực. Bạn bè sẽ biết được khi bạn cần sự hỗ trợ hay bạn có thể nhận được sự trợ giúp chuyên nghiệp hơn", bác sĩ Cynthia Long, một chuyên gia tâm lí cho biết.

Theo Whsv

Thứ Bảy, 28 tháng 7, 2012

Facebook Timeline chính thức ra mắt người dùng trên toàn thế giới

Sau khi được giới thiệu tại F8 từ tháng 9 và cung cấp cho người dùng tại Úc, tính năng Timeline cuối cùng cũng được cung cấp cho toàn bộ người dùng Facebook.

Thay vì việc liệt kê các thông tin cá nhân như bình thường, Timeline sẽ hiển thị chi tiết những thông tin xung quanh cuộc sống của chủ trang Facebook. Những bức ảnh, status, video clip được hiển thị rất to, rõ ràng và được sắp xếp theo thanh thời gian ở phía góc trên bên phải. Với đúng nghĩa "Timeline", người dùng có thể xem lại những hoạt động của một ai đó trong một khoảng thời gian cụ thể.

Điểm nhấn của giao diện có lẽ là bức hình lớn Cover ở phần trên cùng của trang, đây là một điểm mới so với giao diện trắng đơn giản trước đây.

Một tính năng mới được thêm vào là Activity Log cho phép người dùng quản lí tất cả các thông tin được hiển thị trên Timeline. Giao diện của Activity Log thực chất là Timeline rút gọn cung cấp cho người dùng các tùy chọn như ẩn hoặc xóa thông tin.

Giống như tất cả những lần thay đổi lớn khác của Facebook, Timeline đã nhận được rất nhiều ý kiến phản hồi cả tích cực lẫn tiêu cực. Nhiều người cho rằng việc thông tin cá nhân được hiển thị quá chi tiết và dễ dàng truy cập như thế này có thể dẫn tới việc trộm cắp danh tính.

Hiện tại, Timeline đang ở trong giai đoạn 7 ngày thăm dò, và người dùng có thể xem xét tất cả các tính năng cũng như quyết định những thông tin nào sẽ được hiển thị. Một khi người dùng đã chuyển sang Timeline, giao diện này sẽ được giữ nguyên đến hết 7 ngày đó. Người dùng cũng có thể chuyển về giao diện cũ qua một số thủ thuật nhỏ được đăng rất nhiều trên mạng.

Timeline cũng đã được cung cấp cho các thiết bị Android cũng như phiên bản dành cho điện thoại của Facebook tại địa chỉ m.facebook.com.

Với những ai chưa dùng Timeline và muốn thử trải nghiệm nó, hãy truy cập vào trang http://www.facebook.com/about/timeline và nhấn chọn nút Get Timeline.

Giới thiệu về Facebook Timeline

Theo Mashable

Thứ Sáu, 27 tháng 7, 2012

“Rebecca Black” đứng đầu danh sách tìm kiếm năm 2011

"Thảm họa âm nhạc" Rebecca Black với ca khúc "Friday" đã trở thành từ khóa được tìm kiếm nhiều nhất trên Google trong danh sách 10 cái tên của Zeitgeist.

Ra đời vào tháng Ba, "Friday" nhanh chóng tạo nên cơn sốt tìm kiếm khổng lồ với cô ca sĩ 13 tuổi, tăng hơn 10.000 %.

Vị trí thứ hai trong danh sách những cụm từ được tìm kiếm nhiều nhất thuộc về mạng xã hội Google+. Bảng xếp hạng của Zeitgeist còn dựa trên tần suất được tìm kiếm của các từ khóa, vì vậy những từ khóa mới xuất hiện trong năm nay như "Rebecca Black" hay "Google+" chiếm được nhiều lợi thế hơn. Đứng thứ ba trong danh sách là ngôi sao của series "Jackass" trên MTV Ryan Dunn, người đã qua đời sau một vụ tai nạn xe hơi.

Lượng tìm kiếm cho người sáng lập ra Apple - Steve Jobs đứng thứ chín trong danh sách, tăng 982% so với năm trước và đạt đỉnh điểm trong một tuần sau sự ra đi của ông vào tháng Mười.

Trong danh sách này cũng có sự xuất hiện của tên một sản phẩm không hề tồn tại, iPhone 5, lượng tìm kiếm cho từ khóa này tăng đột biến trong 25 ngày trước khi Apple tung ra thị trường sản phẩm mới nhất là iPhone 4S.

Trong khi nhiều cụm từ "hot" có được lượng tìm kiếm cao thì "MySpace" một mạng xã hội lại rớt thê thảm trên bảng xếp hạng.

Theo Chicagotribune

Thứ Tư, 25 tháng 7, 2012

Add Công Cụ Định Dạng Văn Bản Kind Editor Vào Forums

Vấn đề là nếu chúng ta tạo 1 cái forum bằng code PHP thì nó  không có công cụ gì cho việc đinh dạng văn bản như : tô màu chữ, màu nền , .. , chèn hình ảnh , công thức toán nè ... thế thì cái forum của chúng ta nó quá điệu ( hay nó quá cùi ) . Vậy làm sao ta có được những thứ kể trên, ta dùng công cụ "  Kind Editor " , đây là chương trình định dạng văn bảng "free", các bạn tìm và tải nó trên mạng , sau khi tải về bạn giải nén ra  và thưc  hiện những bước sau:
1. Chép toàn bộ thư mục giải nén vào thư mục web root .

2. Vào thư mục "examples" của thư mục vừa copy trên, bạn sẽ  thấy rất nhiều file " *.html " và 1 file "index.css" . Mõi file " *.html" nó sẽ  cung cấp cho bạn cách đinh dạng khác nhau, ở đây mình chọn file " full mode ... .html " file này mình chọn là vì thấy nó cung cấp khá đầy đủ tính năng, những file " *.html" còn lại bạn không dùng có thể xóa bỏ để giảm dung lượng. Chú trọng phần chữ đỏ.

3. View code file " full mode... .html" sẽ có dạng như sau :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>KindEditor</title>
  <style type="text/css" rel="stylesheet">
    form {
        margin: 0;
    }
    .editor {
        margin-top: 5px;
        margin-bottom: 5px;
    }
  </style>
  <script type="text/javascript" charset="utf-8" src="./../kindeditor.js"></script>
  <script type="text/javascript">
    KE.show({
        id : 'content1',
        cssPath : './index.css'
    });
  </script>

</head>
<body>

<h3>Default Mode</h3>
<form name="example" method="post" action="./../php/demo.php">
<div class="editor">
<textarea id="content1" name="content" tyle="width:530px;height:300px;visibility:hidden;">


<p>
Kind editor is a powerful yet easy to use, online web-base html editor, which allows users to edit web page in WYSIWYG way. It is compatible with IE, Firefox, Chrome, Safari, Opera and other popular browsers over different platforms.<br />
Written in Javascript, Kind editor could be integrated with any backend technology, such as Java, .NET, PHP, ASP and RoR.
Kind editor has been widely used in different CMS(Content Management System), shopping, forum, blog, wiki, email and other web based applications.  
With excellent user experience, it is becoming one of the most poplular editors.
</p>
</textarea>
</div>
<input type="button" name="button" value="Formate Text"
onclick="javascript:alert(KE.util.getData('content1'));" />
    <input type="button" name="button" value="Plain Text" onclick="javascript:alert(KE.util.getPureData('content1'));" />
    <input type="submit" name="button" value="Submit" />
  </form>
</body>
</html>
4. Đặt đoạn code sau vào phần " <head>... </head> " của file chứa form nhập liệu :
<style type="text/css" rel="stylesheet">    form {        margin: 0;    }    .editor {        margin-top: 5px;        margin-bottom: 5px;    }  </style>  <script type="text/javascript" charset="utf-8" src="./../kindeditor.js"></script> // thay doi duong dan theo web root cua ban */  <script type="text/javascript">    KE.show({        id : 'content1',        cssPath : './index.css' /* thay doi duong dan chua file  inde.css theo web root cua ban */    });  </script>



5. Thay thế form nhập liệu của bạn bằng form sau, chú ý <textarea id="content1" name="content" tyle="width:530px;height:300px;visibility:hidden;"> nên thay đổi phần "width " "height " cho phù hợp, nhớ tên name="" của thẻ " </textarea> </textarea> " ở form nhập liệu lúc đầu của bạn để sau này biết mà gọi biến để lấy giá trị . Sau đó dổi action="./../php/demo.php" như form lúc đầu của bạn.

<form name="example" method="post" action=" ./../php/demo.php"> /* thay doi cho phu hop */
<div class="editor">

<textarea id="content1" name="content" tyle="width:530px;height:300px;visibility:hidden;">
</textarea>

</div>
<input type="button" name="button" value="Formate Text"



6. Vào thư mục " php " ở thư mục copy trên , view code fiel "demo.php" sẽ thấy như sau 

:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>KindEditor 3.0</title><meta http-equiv="content-type"
content="text/html; charset=utf-8" />
<link href="../examples/index.css" rel="stylesheet" type="text/css" />
<link href="../skins/common/editor.css" rel="stylesheet" type="text/css" />

</head>
<body>
<div class="ke-content"><?php
if (get_magic_quotes_gpc()) {
echo(stripslashes($_POST['content']));
} else {
echo($_POST['content']);
}

?>
</div><center><br /><br /><input type="button" value="Go Back" onclick="javascript:history.back();" /></center>
</body>
</html>


7. Đặt đoạn code sau vào phần  đầu của file mà form " acction = " tới , nhớ thay đổi đường dẫn các file " *.css" cho phù hợp. 
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="../examples/index.css" rel="stylesheet" type="text/css" />
<link href="../skins/common/editor.css" rel="stylesheet" type="text/css" />
8. Đặt đoạn code sau vào trước phần xuất dữ liệu hoặc trước khi đưa dữ liệu vào table - CSDL của Server, giả sử bạn có tên name="replay_topic" của thẻ " </textarea> </textarea> " ở form nhập liệu lúc đầu , khi đưa vào CCSDL là $_POST['replay_topic'] .
if (get_magic_quotes_gpc()) {
$tmp=stripslashes($_POST['content']);
} else {
$tmp=$_POST['content'];
}
           $_POST['replay_topic'] =$tmp;

9. Demo : Khi nào rãnh mình demo sau nha : ))


Trung Quốc muốn quản lí thông tin người dùng tiểu blog

Chính quyền thành phố Bắc Kinh đã công bố quy định mới yêu cầu những người sử dụng các trang mạng xã hội như Twitter phải đăng kí thông tin cá nhân thật với cơ quan thẩm tra thuộc chính phủ nước này.

Động thái trên cho thấy rõ ràng việc Trung Quốc đang muốn dọn dẹp các bài viết blog hay trên mạng xã hội từ những người dùng vô danh, phát hiện những người gây bạo loạn hay tổ chức các cuộc biểu tình.

Trích dẫn từ Tân Hoa Xã, tờ Nhật báo phố Wall chỉ ra rằng rằng các thông tin bí mật có nguy cơ đe dọa an ninh quốc gia, gây thù hằn dân tộc, phân biệt đối xử và các bài viết liên quan đến các cuộc biểu tình làm phá vỡ trật tự xã hội sẽ bị cấm trên các trang tiểu blog.

Thông báo này cũng đến với những công dân Trung Quốc đang sử dụng các trang web như Sina Weibo để gửi tin nhắn văn bản, hình ảnh, video, các ghi chú... vốn được xem là nguyên nhân gây ra các cuộc biểu tình nổ ra ảnh hưởng đến kinh tế và xã hội gần đây. Các cuộc biểu tình của người dân phía Nam nước này hiện đang đe dọa có thể được kích động thành một phong trào có quy mô lớn. Ngoài ra, hai vị trí lãnh đạo hàng đầu của Trung Quốc sẽ được thay đổi vào năm 2012, một sự kiện chỉ xảy ra mỗi 10 năm một lần.

Sina Weibo là một trong những trang tiểu blog hàng đầu Trung Quốc gần đây đã có tổng cộng 230 triệu thành viên (tính đến tháng 9-2011) với khoảng 800.000 danh tính được xác nhận. Tờ Tân Hoa Xã cũng trích dẫn lời ông Tong Liqiang, phó chủ tịch điều hành Văn phòng thông tin Internet Bắc Kinh, nói rằng đó là một dịch vụ cần thiết cho xã hội, giúp cơ quan an ninh có thể xác minh một cách dễ dàng về người dùng. Tờ này cũng ví Internet như là "một liều thuốc tâm lí và là một khối u ác tính, gây nhiễm độc cho xã hội".Hiện tại các quy định mới chỉ được áp dụng cho các trang tiểu blog có trụ sở ở Bắc Kinh và không rõ thời gian có hiệu lực chính thức trong toàn quốc.

Ngoài ra cũng không có hình phạt được đề cập trong quy định mới. Tạp chí cũng báo cáo rằng chính phủ dường như không có kế hoạch đóng cửa các dịch vụ blog hoàn toàn.Động thái này của các nhà lãng đạo Trung Quốc rõ ràng xuất phát từ các tình hình bất ổn ở khu vực các nước Ả Rập khi mà các chính phủ ở Trung Đông dường như đang bị lật đổ một cách dây chuyền bởi một phần do các trang web truyền thông mạng xã hội.

Theo ICTWorld

Thứ Ba, 24 tháng 7, 2012

Bí mật thú vị ngay trên công cụ tìm kiếm của Google

Nổi tiếng là một công ty thích trêu đùa người sử dụng, Google luôn ẩn chứa những bí mật bên trong các dịch vụ của mình. Mới đây, một bí mật vừa được tìm thấy trong công cụ tìm kiếm của Google, mà có vẻ như để chào đón ngày Giáng sinh và năm mới sắp đến.

Theo đó, khi bạn tìm kiếm cụm từ "let it snow" (có hoặc không có ngoặc kép) trên Google, lập tức kết quả sẽ trả về như bình thường, tuy nhiên kèm theo đó là hình ảnh những bông tuyết rơi xuống trên màn hình.

Bên cạnh những bông tuyết rơi, hiệu ứng hơi nước sẽ xuất hiện trên màn hình trình duyệt, tạo nên cảm giác giá lạnh gây ra bởi những bông tuyết, tương tự như hơi nước bám trên cửa kính trong những mùa đông lạnh giá. Chờ trong giây lát, sau khi hiệu ứng hơi nước bám đầy trên màn hình, bạn sẽ cảm thấy màn hình trình duyệt trở nên mờ đi. Khi đó, bạn có thể nhấn chuột trái và di chuyển trên màn hình để tạo nên những hình vẽ, tương tự như khi dùng ngón tay để quẹt lên trên mặt gương đầy hơi nước.

Để khám phá bí mật độc đáo này của Google, bạn cần phải sử dụng trình duyệt web hỗ trợ HTML5 (như Chrome, Firefox và IE9), tuy nhiên, tốt nhất bạn nên sử dụng trình duyệt Chrome của chính Google.Đây không phải là bí mật thú vị duy nhất trên công cụ tìm kiếm của Google. Ngoài ra, khi bạn điền cụm từ "do a barrel roll" (không dùng 2 dấu ngoặc kép) vào khung tìm kiếm của Google và nhấn Enter, lập tức, trang kết quả tìm kiếm hiện ra sau đó sẽ… xoay 1 vòng trước khi ở trạng thái ổn định.

Theo Dân Trí

Chủ Nhật, 22 tháng 7, 2012

Cách diệt virut Trojan.Spbot.C

MÔ TẢ

Trojan.Spbot.C là một loại Trojan cho phép máy tính bị nhiễm được sử dụng như là một đại diện thay đổi.

Kích thước: 264,192 bytes.

Lây nhiễm vào các hệ điều hành: Windows 2000, Windows 95, Windows 98, Windows Me, Windows NT, Windows Server 2003, Windows XP.

Khi hoạt động, Trojan.Spbot.C thực hiện các công việc sau:

  1. Tạo file sau:
  2. Thêm giá trị: "divx" = "%System%\divxenc.exe" vào khóa registry: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run và chạy nó mỗi khi Windows khởi động.
  3. Thêm giá trị: "dll1" = "%System%\msld.dll" "run" = "%System%\divxenc.exe" vào khóa registry: HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Preferences\msld và chạy nó mỗi khi Windows khởi động.
  4. Thêm giá trị: "Shell" = "Explorer.exe "C:\WINDOWS\System32\divxenc.exe"" vào khóa registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon và chạy nó mỗi khi Windows khởi động.
  5. Thêm chính nó vào quá trình sau: explorer.exe
  6. Gửi thông báo của tình trạng của chính nó tới địa chỉ URL sau, nếu nó được cài đặt thành công: [http://]www.drinkmagik.biz/[REMOVED]sder.php
  7. Cho phép máy tính bị nhiễm được sử dụng như là một đại diện thay đổi để gửi spam. Email được gửi đi sẽ có một trường From mà bao gồm một trong những tên miền sau:
  8. Có thể download và thực hiện các file điều khiển từ xa.

CÁCH DIỆT

1. Tắt chế độ System Restore của hệ thống bởi vì chương trình diệt virus không quét được thông tin trên phần Restore của Windows.

Bấm vào nút Start .

Bấm phải chuột vào  My Computer , chọn Properties .

Tại System Restore tab, bấm Turn off System Restore  hoặc Turn off System Restore on all drives như hình vẽ dưới:

Bấm Apply . Thông báo như sau hiện ra:

Bấm nút   Yes .

2. Cập nhật các thông tin chống virus mới nhất vào chương trình chống virus.

3. Khởi động lại với chế độ Safemode (Bấm F8 khi khởi động Windows) vào thực hiện chương trình quét virus, quét và sửa những tệp bị nhiễm.

4. Xoá các khoá trong registry. Các giá trị cần xoá đã liệt kê ở trên.

Bạn có thể Download chương trình chống virus khá nhỏ của Sysmantec tại đây SAVCECLT.EXE

Bạn có thể Download chương trình chống spyware và rootkit của Microsoft tại đây Antispyware

Thứ Bảy, 21 tháng 7, 2012

Cách diệt virut SymbOS.Fontal.B

MÔ TẢ

SymbOS.Fontal.B là một loại Trojan mà cho những file hỏng vào trong thiết bị nhiễm virut. Trojan này chạy trên hệ điều hành Symbian, được sử dụng khá phổ biến trong các máy di động Nokia dòng 60.

Kích thước: 20,153 bytes.

Lây nhiễm vào các hệ điều hành: EPOC.

SymbOS.Fontal.B lây nhiếm giống như file sau:

EICAR Anti-virus.SIS

Khi SymbOS.Fontal.B hoạt động nó thực hiện các công việc sau:

  1. Hiển thị một thông điệp báo cho người sử dụng rằng một chương trình ứng dụng có thể đến từ nguồn không đáng tin và có thể nguyên nhân gây ra các vấn đề tiềm tàng khi cài đặt trên thiết.
  2. Ghi những file sau vào thiết bị nhiễm virut:

3.    Nhắc người sử dụng khởi động lại thiết bị nhiễm virut để hoàn thành quá trình cài đặt.

CÁCH DIỆT

  1. Cài đặt chương trình quản lý trong thiết bị.
  2. Kích hoạt chế độ xem toàn bộ các file trong hệ thống.
  3. Xóa các file sau:
  4. Thóat khỏi chương trình quản lý.

Thứ Sáu, 20 tháng 7, 2012

Cách diệt virut SymbOS.Cardblock.A

MÔ TẢ

SymbOS.Cardblock.A là một loại Trojan mà lây nhiễm qua các điện thoại di động dòng 60 dùng hệ điều hành Symbian.

Kích thước: 35,558 bytes.

Lây nhiễm vào các hệ điều hành: EPOC.

Khi SymbOS.Cardblock.A hoạt động nó thực hiện các công việc sau:

  1. Ghi các file sau:
  2. Thiêt lập một password ngẫu nhiên ở thẻ nhớ đa phương tiện của thiết bị, gây khó khăn cho việc khởi động lại điện thoại.
  3. Xóa những thư mục sau từ thiết bị:

CÁCH DIỆT

  1. Cài đặt chương trình quản lý trong thiết bị.
  2. Kích hoạt chế độ xem toàn bộ các file trong hệ thống.
  3. Xóa các file sau:
  4. Thóat khỏi chương trình quản lý.

Thứ Năm, 19 tháng 7, 2012

Cách diệt virus W32.Rontokbro.B@mm

MÔ TẢ

W32.Rontokbro.B@mm là một loại sâu mail phổ biến gây nên sự không ổn định của hệ thống.

Lây nhiễm vào các hệ điều hành: Windows 2000, Windows 95, Windows 98, Windows Me, Windows NT, Windows Server 2003, Windows XP.

Kích thước: 81,920 bytes.

Khi W32.Rontokbro.B@mm hoạt động, nó thực hiện các công việc sau:

  1. Copy chính nó với tên sau:
  2. Tạo thư mục sau: %UserProfile%\Local Settings\Application Data\Bron.tok-3-3
  3. Ghi đè lên file C:\Autoexec.bat với đoạn văn bản sau: "pause"
  4. Thêm giá trị: "Bron-Spizaetus" = "%Windir%\INF\norBtok.exe" vào khóa registry sau: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run và chạy nó mỗi khi Windows khởi động.
  5. Thêm giá trị: "NoFolderOptions" = "1" vào khóa registry sau: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\Explorer
  6. Thêm giá trị: "DisableRegistryTools" = "1" "DisableCMD" = "0" vào khóa registry sau: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\System
  7. Thêm giá trị: "Tok-Cirrhatus" = "%UserProfile%\Local Settings\Application Data\smss.exe" vào khóa registry sau: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  8. Thêm một nhiệm vụ vào lập biểu của Windows để chạy file sau lúc 5:08 chiều mỗi ngày: %UserProfile%\Templates\A.kotnorB.com
  9. Khởi động máy tính khi phát hiện một cửa sổ mà tiêu đề bao gồm một trong những kí tự sau:
  10. Nó cũng có thể chạy một kiểu tấn công ping flood từ site sau:
  11. Thu thập những địa chỉ email từ những file với phần đuôi mở rộng sau trong tất cả các ổ đĩa từ C đến Y:
  12. Không gửi chính nó tới những địa chỉ email mà bao gồm bất kì những kí tự sau trong tên miền:
  13. Có thể thêm tiền tố sau vào tên miền để tìm những máy dịch vụ Mail Transfer Protocol (SMTP):
  14. Sử dụng chính phương thức SMTP engine để gửi chính nó tới những địa chỉ email mà nó tìm thấy. Email này có những đặc điểm sau: Từ:  [SPOOFED] Chủ đề: [BLANK] Thông điệp: BRONTOK.A  [ By: H[REMOVED]M Community ] -- Hentikan kebobrokan di negeri ini -- 1. Adili Koruptor, Penyelundup, Tukang Suap, Penjudi, & Bandar NARKOBA ( Send to "NUSAKAMBANGAN") 2. Stop Free Sex, Absorsi, & Prostitusi 3. Stop (pencemaran laut & sungai), pembakaran hutan & perburuan liar. 4. SAY NO TO DRUGS !!! -- KIAMAT SUDAH DEKAT -- Terinspirasi oleh: Elang Brontok (Spizaetus Cirrhatus) yang hampir punah[ By: H[REMOVED]unity -- File đính kèm: Kangen.exe

CÁCH DIỆT

1. Tắt chế độ System Restore của hệ thống bởi vì chương trình diệt virus không quét được thông tin trên phần Restore của Windows.

Bấm vào nút Start .

Bấm phải chuột vào  My Computer , chọn Properties .

Tại System Restore tab, bấm Turn off System Restore  hoặc Turn off System Restore on all drives như hình vẽ dưới:

Bấm Apply . Thông báo như sau hiện ra:

Bấm nút   Yes .

2. Cập nhật các thông tin chống virus mới nhất vào chương trình chống virus.

3. Khởi động lại với chế độ Safemode (Bấm F8 khi khởi động Windows) vào thực hiện chương trình quét virus, xoá những tệp bị nhiễm. Nhớ chọn chế độ quét tất cả các tệp chứ không chỉ quét riêng tệp .exe

4. Xoá các khoá trong registry. Các giá trị cần xoá đã liệt kê ở trên.

5. Xóa nhiệm vụ được ghi trong danh mục (scheduled task).

Bạn có thể Download chương trình chống virus khá nhỏ của Sysmantec tại đây SAVCECLT.EXE

Bạn có thể Download chương trình chống spyware và rootkit của Microsoft tại đây Antispyware

Thứ Sáu, 13 tháng 7, 2012

Cách kiểm tra mật khẩu Yahoo, Gmail có bị lộ hay không


Thử ngay cách sau để biết mình có phải nạn nhân trong số hơn 400.000 tài khoản Yahoo bị lộ vừa qua.
D33DS-Yahoo-hacked.jpg
Yahoo xác nhận hôm 12/7 rằng Yahoo!Voices đã bị tấn công, với hơn 400.000 tên người dùng và mật khẩu bị đánh cắp từ máy chủ. Tuy nhiên, không chỉ có địa chỉ email Yahoo! mới bị ảnh hưởng: tài khoản Gmail, MSN, Hotmail, Comcast và tài khoản AOL cũng gặp nguy vì Yahoo!Voices cho phép người dùng đăng nhập bằng địa chỉ email không phải Yahoo.
Nhờ Sucuri Malware Labs – một công ty bảo mật, bạn có thể kiểm tra ngay bây giờ để xem tài khoản email của mình trên Yahoo!Voices có bị rò rỉ hay không.
yahoo.PNG
Bước 1: Nhấp chuột vào đây.
Bước 2: Gõ tên địa chỉ email sau đó chọn Check email.
Kết quả trả về sẽ cho bạn biết bạn có phải một trong số những nạn nhân của hacker không.
Thông tin tài khoản email rò rỉ xuất hiện trên mạng vào sớm hôm qua và do nhóm hacker có tên “D33ds” đăng tải. Bởi mật khẩu không được mã hóa, danh sách dài tên người dùng và mật khẩu đã bị đăng theo dạng văn bản trơn (plain text) cho tất cả mọi người xem.
Tin xấu cho người dùng Yahoo tới chỉ một ngày sau khi 420.000 thành viên của mạng xã hội Formspring bị rò rỉ, và vài tuần sau khi hàng triệu mật khẩu từ các trang web như LinkedIn, eHarmony và Last.fm bị lộ.
Trả lời với trang web TechCrunch, Yahoo cho biết đang vá các lỗ hổng dẫn tới vụ thất thoát dữ liệu, thay đổi mật khẩu của những người dùng Yahoo bị ảnh hưởng và thông báo tới các công ty mà tài khoản người dùng của họ có thể bị lộ kèm lời xin lỗi. Yahoo cũng vận động người dùng cập nhật mật khẩu thường xuyên.

Hình ảnh trên Facebook sẽ có kích cỡ lớn và tải nhanh hơn

Hôm 27/8, trên blog chính thức của mình, Facebook thông báo sẽ tung ra trình xem ảnh mới, theo đó các hình ảnh sẽ hiển thị với kích thước bề rộng lên tới 960 pixel thay vì 720 pixel như trước.

Trình xem ảnh này cũng sẽ thay thế hộp đen phía sau bức ảnh bằng màu trắng đục, đặt trọng tâm lên bản thân bức ảnh. Facebook cũng cho biết các bức ảnh sẽ được tải nhanh gấp đôi, mặc dù không nói rõ bằng cách nào.

Trình xem ảnh mới với kích thước 960px

Cập nhật tính năng Photos gần nhất trên Facebook là vào tháng 9/2010, khi Facebook giới thiệu trình xem ảnh dựa vào hộp đen và hỗ trợ các bức ảnh có bề ngang 2048 pixel (không hiển thị trên trình xem ảnh, nhưng có thể tải về đúng với kích thước này). Cập nhật này đã biến Facebook thành công cụ chia sẻ hình ảnh chất lượng cao thực sự (trước đây chỉ có thể tải phiên bản chất lượng thấp).

Theo ICTNews

Thứ Tư, 11 tháng 7, 2012

Tạo Forums Bằng PHP - MySQL

Vấn đề là chúng ta muốn tự mình code PHP kết hợp vói  CSDL của MySQL   để tạo ra 1 forums chứ không dùng chương trình tạo forums . Bài này sẽ hướng dẫn các bạn tạo 1 forums bằng code PHP ,bài sau mình sẽ hướng dẫn cách add bộ định dạng cho văn bản vào forum . Để tạo forums ta thực hiện trình tự các bướ như sau :
1. Tạo tên CSDL : "forums_by_php"

2. Tạo bảng CSDL trong "forums_by_php", chúng ta tạo những file *.sql như sau, sau do import vào CSDL:
  File "users.sql":

CREATE TABLE IF NOT EXISTS `users` (
`user_id` INT(8) NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR(30) NOT NULL,
`user_pass`   VARCHAR(255) NOT NULL,
`user_email` VARCHAR(255) NOT NULL,
`user_date` DATETIME NOT NULL,
`user_level` INT(8) NOT NULL,
UNIQUE INDEX user_name_unique (user_name),
PRIMARY KEY (user_id)
) ENGINE=INNODB;
File "topics.sql" :
CREATE TABLE IF NOT EXISTS `topics` (
`topic_id` INT(8) NOT NULL AUTO_INCREMENT,
`topic_subject`   VARCHAR(255) NOT NULL,
`topic_date` DATETIME NOT NULL,
`topic_cat` INT(8) NOT NULL,
`topic_by` INT(8) NOT NULL,
PRIMARY KEY (topic_id)
) ENGINE=INNODB;
File "posts.sql" :
CREATE TABLE IF NOT EXISTS `posts` (
`post_id` INT(8) NOT NULL AUTO_INCREMENT,
`post_content` TEXT NOT NULL,
`post_date` DATETIME NOT NULL,
`post_topic` INT(8) NOT NULL,
`post_by` INT(8) NOT NULL,
PRIMARY KEY (post_id)
) ENGINE=INNODB;
File "categories.sql":
CREATE TABLE IF NOT EXISTS `categories` (
`cat_id`  INT(8) NOT NULL AUTO_INCREMENT,
`cat_name`  VARCHAR(255) NOT NULL,
`cat_description`  VARCHAR(255) NOT NULL,
UNIQUE INDEX cat_name_unique (cat_name),
PRIMARY KEY (cat_id)
) ENGINE=INNODB;
 


3. Tạo file"style.css" :

/* BEGIN BASIC FORUM STYLES */
body {
background-color: #4E4E4E;
text-align: center; /* make sure IE centers the page too */
}

#wrapper {
width: 530px;
margin: 0 auto; /* center the page */
}

#content {
background-color: #fff;
border: 1px solid #000;
float: left;
font-family: Arial;
padding: 20px 30px;
text-align: left;
width: 85%; /* fill up the entire div */
}

#menu {
float: left;
border: 1px solid #000;
border-bottom: none; /* avoid a double border */
clear: both; /* clear:both makes sure the content div doesn't float next to this one but stays under it */
width:85%;
height:50px;
padding: 0 30px;
background-color: #FFF;
text-align: left;
font-size: 85%;
}

#menu a:hover {
background-color: #009FC1;
}

#userbar {
background-color: #fff;
float: right;
width: 200px;
}

#footer {
clear: both;
}

/* begin table styles */
table {
border-collapse: collapse;
width: 100%;
}

table a {
color: #000;
}

table a:hover {
color:#373737;
text-decoration: none;
}
/* Begin font styles */
h1, #footer {
font-family: Arial;
color: #F1F3F1;
}
h3 {margin: 0; padding: 0;}
/* Menu styles */
.item {
background-color: #00728B;
border: 1px solid #032472;
color: #FFF;
font-family: Arial;
padding: 5px;
text-decoration: none;
}
.small {
font-size: 75%;
color: #373737;
}
#footer {
font-size: 65%;
padding: 5px 0 0 0;
}
.topic-post {
height: 100px;
overflow: auto;
}
.post-content {
padding: 30px;
}
textarea {
width: 472px;
height: 200px;
}
4. Tạo file "connect.php":
<?php
session_start();
//connect.php
$server    = "127.0.0.1";
$username = "root";
$password = "";
$database = "forums_by_php";
if(!mysql_connect($server, $username, $password))
{
  exit('Error: could not establish database connection');
}
if(!mysql_select_db($database))
{
  exit('Error: could not select the database');
}
?> 


5. Tạo file"header.php " :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta name="description" content="A short description." />
  <meta name="keywords" content="put, keywords, here" />
  <title>PHP-MySQL forum</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<h1>My forum</h1>
<div id="wrapper">
<div id="menu">
<a class="item" href="http://127.0.0.1/source/index.php">Home</a>
<a class="item" href="http://127.0.0.1/source/create_topic.php">Create Topic</a>
<a class="item" href="http://127.0.0.1/source/create_cat.php">Create Category</a>

<div id="userbar">
<?php
if(isset($_SESSION['signed_in']))
{
echo'<br/>';
echo 'Hello <b>' . htmlentities($_SESSION['user_name']) . '</b>.<a class="item" href="signout.php">Logout</a>';
}
else
{
echo '<a class="item" href="signin.php">Login</a> or <a class="item" href="signup.php">Regedit</a>';
}
?>
</div>
</div>
<div id="content">


6. Tạo file "footer.php" :


</div>
<!-- content -->

</div>
<!-- wrapper -->
<div id="footer"> CôĐơn Online</div>

</body>
</html>


7. Tạo file "topic.php" :

<?php
//create_cat.php
include 'connect.php';
include 'header.php';

$sql = "SELECT
topic_id,
topic_subject
FROM
topics
WHERE
topics.topic_id = " . mysql_real_escape_string($_GET['id']);
$result = mysql_query($sql);

if(!$result)
{
echo 'The topic could not be displayed, please try again later.';
}
else
{
if(mysql_num_rows($result) == 0)
{
echo 'This topic doesn&prime;t exist.';
}
else
{
while($row = mysql_fetch_assoc($result))
{
//display post data
echo '<table class="topic" border="1">
<tr>
<th colspan="2">' . $row['topic_subject'] . '</th>
</tr>';
//fetch the posts from the database
$posts_sql = "SELECT
posts.post_topic,
posts.post_content,
posts.post_date,
posts.post_by,
users.user_id,
users.user_name
FROM
posts
LEFT JOIN
users
ON
posts.post_by = users.user_id
WHERE
posts.post_topic = " . mysql_real_escape_string($_GET['id']);
$posts_result = mysql_query($posts_sql);
if(!$posts_result)
{
echo '<tr><td>The posts could not be displayed, please try again later.</tr></td></table>';
}
else
{
while($posts_row = mysql_fetch_assoc($posts_result))
{
echo '<tr class="topic-post">
<td class="user-post">' . $posts_row['user_name'] . '<br/>' . date('d-m-Y H:i', strtotime($posts_row['post_date'])) . '</td>
<td class="post-content">' . htmlentities(stripslashes($posts_row['post_content'])) . '</td>
 </tr>';
}
}
if(isset($_SESSION['signed_in']))
{
//show reply box
echo '<tr><td colspan="2"><h2>Reply:</h2><br />
<form method="post" action="reply.php?id=' . $row['topic_id'] . '">
<textarea name="reply-content"></textarea><br /><br />
<input type="submit" value="Submit reply" />
</form></td></tr>';
} else
{
echo '<tr><td colspan=2>You must be <a href="signin.php">signed in</a> to reply. You can also <a href="signup.php">sign up</a> for an account.';
}
//finish the table
echo '</table>';
}
}
}

include 'footer.php';
?>
8. Tạo file "replay.php":
<?php
//create_cat.php
include 'connect.php';
include 'header.php';

if($_SERVER['REQUEST_METHOD'] != 'POST')
{
//someone is calling the file directly, which we don't want
echo 'This file cannot be called directly.';
}
else
{
//check for sign in status
if(!$_SESSION['signed_in'])
{
echo 'You must be signed in to post a reply.';
}
else
{
//a real user posted a real reply
$sql = "INSERT INTO 
posts(post_content,
 post_date,
 post_topic,
 post_by) 
VALUES ('" . $_POST['reply-content'] . "',
NOW(),
" . mysql_real_escape_string($_GET['id']) . ",
" . $_SESSION['user_id'] . ")";
$result = mysql_query($sql);
if(!$result)
{
echo 'Your reply has not been saved, please try again later.';
}
else
{
echo 'Your reply has been saved, check out <a href="topic.php?id=' . htmlentities($_GET['id']) . '">the topic</a>.';
}
}
}

include 'footer.php';
?>
9. Tạo file "create_topic.php" :
<?php
//create_topic.php
include 'connect.php';
include 'header.php';

echo '<h2>Create a topic</h2>';
if(isset($_SESSION['signed_in']))
{
//the user is signed in
if($_SERVER['REQUEST_METHOD'] != 'POST')
{
//the form hasn't been posted yet, display it
//retrieve the categories from the database for use in the dropdown
$sql = "SELECT
cat_id,
cat_name,
cat_description
FROM
categories";
$result = mysql_query($sql);
if(!$result)
{
//the query failed, uh-oh :-(
echo 'Error while selecting from database. Please try again later.';
}
else
{
if(mysql_num_rows($result) == 0)
{
//there are no categories, so a topic can't be posted
if($_SESSION['user_level'] == 1)
{
echo 'You have not created categories yet.';
}
else
{
echo 'Before you can post a topic, you must wait for an admin to create some categories.';
}
}
else
{
echo '<form method="post" action="">
Subject: <input type="text" name="topic_subject" /><br />
Category:'; 
echo '<select name="topic_cat">';
while($row = mysql_fetch_assoc($result))
{
echo '<option value="' . $row['cat_id'] . '">' . $row['cat_name'] . '</option>';
}
echo '</select><br />';
echo 'Message: <br /><textarea name="post_content" /></textarea><br /><br />
<input type="submit" value="Create topic" />
</form>';
}
}
}
else
{
//start the transaction
$query  = "BEGIN WORK;";
$result = mysql_query($query);
if(!$result)
{
//Damn! the query failed, quit
echo 'An error occured while creating your topic. Please try again later.';
}
else
{
//the form has been posted, so save it
//insert the topic into the topics table first, then we'll save the post into the posts table
$sql = "INSERT INTO 
topics(topic_subject,
  topic_date,
  topic_cat,
  topic_by)
  VALUES('" . mysql_real_escape_string($_POST['topic_subject']) . "',
  NOW(),
  " . mysql_real_escape_string($_POST['topic_cat']) . ",
  " . $_SESSION['user_id'] . "
  )";
 
$result = mysql_query($sql);
if(!$result)
{
//something went wrong, display the error
echo 'An error occured while inserting your data. Please try again later.<br /><br />' . mysql_error();
$sql = "ROLLBACK;";
$result = mysql_query($sql);
}
else
{
//the first query worked, now start the second, posts query
//retrieve the id of the freshly created topic for usage in the posts query
$topicid = mysql_insert_id();
$sql = "INSERT INTO
posts(post_content,
 post_date,
 post_topic,
 post_by)
VALUES
('" . mysql_real_escape_string($_POST['post_content']) . "',
 NOW(),
 " . $topicid . ",
 " . $_SESSION['user_id'] . "
)";
$result = mysql_query($sql);
if(!$result)
{
//something went wrong, display the error
echo 'An error occured while inserting your post. Please try again later.<br /><br />' . mysql_error();
$sql = "ROLLBACK;";
$result = mysql_query($sql);
}
else
{
$sql = "COMMIT;";
$result = mysql_query($sql);
//after a lot of work, the query succeeded!
echo 'You have succesfully created <a href="topic.php?id='. $topicid . '">your new topic</a>.';
}
}
}
}
} else
{
//the user is not signed in
echo 'Sorry, you have to be <a href="http://127.0.0.1/source/signin.php">signed in</a> to create a topic.';
}

include 'footer.php';
?>

10. Tạo file "create_cat.php" : 

<?php
//create_cat.php
include 'connect.php';
include 'header.php';

echo '<h2>Create a category</h2>';
if(isset($_SESSION['signed_in']) )
{
//the user has admin rights
if($_SERVER['REQUEST_METHOD'] != 'POST')
{
//the form hasn't been posted yet, display it
echo '<form method="post" action="">
Category name: <input type="text" name="cat_name" /><br />
Category description:<br /> <textarea name="cat_description" /></textarea><br /><br />
<input type="submit" value="Add category" />
</form>';
}
else
{
//the form has been posted, so save it
$sql = "INSERT INTO categories(cat_name, cat_description)
  VALUES('" . mysql_real_escape_string($_POST['cat_name']) . "',
'" . mysql_real_escape_string($_POST['cat_description']) . "')";
$result = mysql_query($sql);
if(!$result)
{
//something went wrong, display the error
echo 'Error' . mysql_error();
}
else
{
echo 'New category succesfully added.';
}
}
} else 
{
//the user is not an admin
echo 'Sorry, you do not have sufficient rights to access this page.';
}

include 'footer.php';
?>

11. Tạo file "category.php" :

<?php
//category.php
include 'connect.php';
include 'header.php';
//first select the category based on $_GET['cat_id']
$sql = "SELECT
cat_id,
cat_name,
cat_description
FROM
categories
WHERE
cat_id = " . mysql_real_escape_string($_GET['id']);
$result = mysql_query($sql);
if(!$result)
{
echo 'The category could not be displayed, please try again later.' . mysql_error();
}
else
{
if(mysql_num_rows($result) == 0)
{
echo 'This category does not exist.';
}
else
{
//display category data
while($row = mysql_fetch_assoc($result))
{
echo '<h2>Topics in &prime;' . $row['cat_name'] . '&prime; category</h2><br />';
}
//do a query for the topics
$sql = "SELECT topic_id,
topic_subject,
topic_date,
topic_cat
FROM
topics
WHERE
topic_cat = " . mysql_real_escape_string($_GET['id']);
$result = mysql_query($sql);
if(!$result)
{
echo 'The topics could not be displayed, please try again later.';
}
else
{
if(mysql_num_rows($result) == 0)
{
echo 'There are no topics in this category yet.';
}
else
{
//prepare the table
echo '<table border="1">
 <tr>
<th>Topic</th>
<th>Created at</th>
 </tr>'; while($row = mysql_fetch_assoc($result))
{ echo '<tr>';
echo '<td class="leftpart">';
echo '<h3><a href="topic.php?id=' . $row['topic_id'] . '">' . $row['topic_subject'] . '</a><br /><h3>';
echo '</td>';
echo '<td class="rightpart">';
echo date('d-m-Y', strtotime($row['topic_date']));
echo '</td>';
echo '</tr>';
}
}
}
}
}
include 'footer.php';
?>

12. Tạo file "signup.php" :

<?php
//category.php
include 'connect.php';
include 'header.php';
//first select the category based on $_GET['cat_id']
$sql = "SELECT
cat_id,
cat_name,
cat_description
FROM
categories
WHERE
cat_id = " . mysql_real_escape_string($_GET['id']);
$result = mysql_query($sql);
if(!$result)
{
echo 'The category could not be displayed, please try again later.' . mysql_error();
}
else
{
if(mysql_num_rows($result) == 0)
{
echo 'This category does not exist.';
}
else
{
//display category data
while($row = mysql_fetch_assoc($result))
{
echo '<h2>Topics in &prime;' . $row['cat_name'] . '&prime; category</h2><br />';
}
//do a query for the topics
$sql = "SELECT topic_id,
topic_subject,
topic_date,
topic_cat
FROM
topics
WHERE
topic_cat = " . mysql_real_escape_string($_GET['id']);
$result = mysql_query($sql);
if(!$result)
{
echo 'The topics could not be displayed, please try again later.';
}
else
{
if(mysql_num_rows($result) == 0)
{
echo 'There are no topics in this category yet.';
}
else
{
//prepare the table
echo '<table border="1">
 <tr>
<th>Topic</th>
<th>Created at</th>
 </tr>'; while($row = mysql_fetch_assoc($result))
{ echo '<tr>';
echo '<td class="leftpart">';
echo '<h3><a href="topic.php?id=' . $row['topic_id'] . '">' . $row['topic_subject'] . '</a><br /><h3>';
echo '</td>';
echo '<td class="rightpart">';
echo date('d-m-Y', strtotime($row['topic_date']));
echo '</td>';
echo '</tr>';
}
}
}
}
}
include 'footer.php';
?>

13. Tạo file "signin.php " :
<?php
//signin.php
include 'connect.php';
include 'header.php';
echo '<h3>Sign in</h3><br />';
//first, check if the user is already signed in. If that is the case, there is no need to display this page
if(isset($_SESSION['signed_in']) && $_SESSION['signed_in'] == true)
{
echo 'You are already signed in, you can <a href="signout.php">sign out</a> if you want.';
}
else
{
if($_SERVER['REQUEST_METHOD'] != 'POST')
{
/*the form hasn't been posted yet, display it
 note that the action="" will cause the form to post to the same page it is on */
echo '<form method="post" action="">
Username: <input type="text" name="user_name" /><br />
Password: <input type="password" name="user_pass"><br />
<input type="submit" value="Sign in" />
</form>';
}
else
{
/* so, the form has been posted, we'll process the data in three steps:
1. Check the data
2. Let the user refill the wrong fields (if necessary)
3. Varify if the data is correct and return the correct response
*/
$errors = array(); /* declare the array for later use */
if(!isset($_POST['user_name']))
{
$errors[] = 'The username field must not be empty.';
}
if(!isset($_POST['user_pass']))
{
$errors[] = 'The password field must not be empty.';
}
if(!empty($errors)) /*check for an empty array, if there are errors, they're in this array (note the ! operator)*/
{
echo 'Uh-oh.. a couple of fields are not filled in correctly..<br /><br />';
echo '<ul>';
foreach($errors as $key => $value) /* walk through the array so all the errors get displayed */
{
echo '<li>' . $value . '</li>'; /* this generates a nice error list */
}
echo '</ul>';
}
else
{
//the form has been posted without errors, so save it
//notice the use of mysql_real_escape_string, keep everything safe!
//also notice the sha1 function which hashes the password
$sql = "SELECT
user_id,
user_name,
user_level
FROM
users
WHERE
user_name = '" . mysql_real_escape_string($_POST['user_name']) . "'
AND
user_pass = '" . sha1($_POST['user_pass']) . "'";
$result = mysql_query($sql);
if(!$result)
{
//something went wrong, display the error
echo 'Something went wrong while signing in. Please try again later.';
//echo mysql_error(); //debugging purposes, uncomment when needed
}
else
{
//the query was successfully executed, there are 2 possibilities
//1. the query returned data, the user can be signed in
//2. the query returned an empty result set, the credentials were wrong
if(mysql_num_rows($result) == 0)
{
echo 'You have supplied a wrong user/password combination. Please try again.';
}
else
{
//set the $_SESSION['signed_in'] variable to TRUE
$_SESSION['signed_in'] = true;
//we also put the user_id and user_name values in the $_SESSION, so we can use it at various pages
while($row = mysql_fetch_assoc($result))
{
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['user_level'] = $row['user_level'];
}
echo 'Welcome, ' . $_SESSION['user_name'] . '. <br /><a href="index.php">Proceed to the forum overview</a>.';
}
}
}
}
}
include 'footer.php';
?>
14. Tạo file "signout.php" :

<?php//signout.phpinclude 'connect.php';include 'header.php';
echo '<h2>Sign out</h2>';
//check if user if signed inif($_SESSION['signed_in'] == true){ //unset all variables $_SESSION['signed_in'] = NULL; $_SESSION['user_name'] = NULL; $_SESSION['user_id']   = NULL;
echo 'Succesfully signed out, thank you for visiting.';}else{ echo 'You are not signed in. Would you <a href="signin.php">like to</a>?';}
include 'footer.php';?>
15. Demo : khi test thử bạn chú ý là xem lại: host , username, password ,tên csdl , đường dẫn đến thư mục chứa file , .. 
 Chắc còn khoản 2 bài nữa , 1. login ma hóa md5 và sha1 , 2. add khung định dạng văn bản vào forum .  Sau đó mình sẽ đề cập đến bảo mật .  :)))