Cũng như đã có các file trên host!
Giờ mình sẽ khai triển tiếp 1 code thứ 2 cao cấp hơn nha!
Bây giờ mình làm 1 code thế này, ứng dụng với forum VBB và mod Casino - Shop
(các mod khác thì tương tự nhé)
Ứng dụng:
Soạn tin: SMS DONATE USERID gửi đến 8222
Trong đó:
- SMS: keyword
- DONATE: Tiếp đầu ngữ
- USERID: mã số của user trong Forum, cái mã số này khi bạn click vào username, hiện trên thanh address mấy số cuối cùng đó
1. Kiến thức cần có
Ở ứng dụng này, đòi hỏi các bạn ngoài kiến thức về php, cần phải có kiến thức về
+Forum VBB, cái này chắc các bạn biết ít nhiều!
+MySQL: đây là hệ CSDL mà VBB cũng như các host Linux cung cấp.
Vì ở ứng dụng này, chúng ta sẽ truy vấn đến CSDL của VBB, lấy các thông tin cũng như cập nhật lại!
2. Chuẩn bị trước khi code:
Trước khi code, các bạn cần phải vào CSDL của forum, để xem table và column tiền. Tong ví dụ này, Table là user, và column là cash.
Tạo 1 code kết nối CSDL:
Để truy vấn vào MySQL, các bạn phải kết nối vào database.
Database này cũng chính là database của forum!
Cấu trúc file này đơn giản như sau:
PHP Code:
<?php
$dbname = 'tên_database';$link = mysql_connect("localhost","tên_user","mật_khẩu") or die("Couldn't make connection.");$db = mysql_select_db($dbname, $link) or die("Couldn't select database");?>
Cái này mình sẽ không giải thích nhiều, quan trọng nhất là 2 lệnh
mysql_connect() và mysql_select_db()
3. Bắt tay vào code
Có file connect rồi, bây giờ, chúng ta mở Emeditr, và chuẩn bị cho 1 code mới.
Code này tất nhiên sẽ có những đều bắt buộc như code trên nha
PHP Code:
<?php//Nhận nội dung từ GW$cuphap=$_REQUEST['message'];$phone= $_REQUEST['phone'];$service=$_REQUEST['service'];?>
Các bạn chú ý thấy, cú pháp tin nhắn là
SMS DONATE USERID
Vậy, 1 tin nhắn sẽ có 3 phần khác nhau, và cách nhau bằng dấu cách.
Để ấy được USERID, chúng ta có nhiều cách, mình dùng cách đơn giản nhất, là tách nguyên message trên ra các phần khác nhau, phân biệt bởi dấu cách nhé
Lệnh tách chuỗi sẽ là:
PHP Code:
$tmp=explode(" ",$cuphap);
Vậy lúc này, $tmp sẽ là 1 mảng kiểu chuỗi, được bắt đầu từ 0.
Ta sẽ có $tmp[0], $tmp[1], $tmp[2]....
Ví dụ, KH nhắn tin: SMS DONATE 1
Thì:
$tmp[0]='SMS';
$tmp[1]='DONATE';
$tmp[2]='1';
Xong, bây giờ ta sẽ quan tâm đến cái mà ta cần, đó là USERID, bây giờ nó là $tmp[2].
Ta sẽ tiến hành xét xem, KH nhắn tin có đúng cú pháp không nhé! Nghĩa là có USERID trong tin nhắn, hay $tmp[2] khác rỗng.
PHP Code:
if(@$tmp[2]!=NULL)
{
//Ok, KH đã nhắn đúng cú pháp, tiến hành xử lý tiếp}
else
{
//Khách hàng không nhắn đúng cú pháp, trả về tin nhắn báo lỗi!}
PHP Code:
echo '<ClientResponse>
<Message>
<PhoneNumber>'.$phone.'</PhoneNumber>
<Message>Tin nhan sai cu phap, soan SMS DONATE USERID gui 8222 nhe! Xin vui long lien he voi chung toi neu khong biet USERID. Than.</Message>
<SMSID> -1</SMSID>
<ServiceNo>'.$service.'</ServiceNo>
</Message>
</ClientResponse>';
Bây giờ hợp những gì chúng ta đã làm ở trên nhé, để xem ta đã có gì, và làm được gì!
PHP Code:
<?php//Nhận nội dung từ GW$cuphap=$_REQUEST['message'];$phone= $_REQUEST['phone'];$service=$_REQUEST['service'];//Phân tách cú pháp tin nhắn đến để nhận USERID$tmp=explode(" ",$cuphap);//Kiểm tra tin nhắn có đúng cú pháp khôngif(@$tmp[2]!=NULL)
{
//Ok, KH đã nhắn đúng cú pháp, tiến hành xử lý tiếp}
else
{
//Khách hàng không nhắn đúng cú pháp, trả về tin nhắn báo lỗi!echo '<ClientResponse>
<Message>
<PhoneNumber>'.$phone.'</PhoneNumber>
<Message>Tin nhan sai cu phap, soan SMS DONATE USERID gui 8222 nhe! Xin vui long lien he voi chung toi neu khong biet USERID. Than.</Message>
<SMSID> -1</SMSID>
<ServiceNo>'.$service.'</ServiceNo>
</Message>
</ClientResponse>';
}?>
Việc tiếp theo, ta sẽ viết tiếp code để xử lý khi cú pháp đúng!
Lúc này, ta lại phải kiểm tra 1 tường hợp nữa. Cái USERID mà KH gửi là đúng hay sai? Có USER nào có mã số đó không? Để làm được việc này, ta cần phải connect vào database. Đến lúc cần dùng cái file connect.php rồi đó!
Khai triển tiếp 1 code thứ 2 (tiếp theo)
3. Bắt tay vào code (tiếp theo)
PHP Code:
require_once("connect.php");
PHP Code:
$result = mysql_query("SELECT * FROM user where userid='$tmp[2]'");$duplicates = mysql_num_rows($result);
Tiếp theo ta sẽ đếm xem có bao nhiêu kết quả được trả về, nghĩa là có bao nhiêu user có userid = $tmp[2].
Ta sẽ chỉ có 2 trường hợp, hoặc có 1, hoặc không có!
Vì thế, biến $duplicates cũng chỉ có 2 giá trị 0 hoặc 1.
Phân tích tí nhé!
Nếu $duplicates =0 nghĩa là hoặc KH nhắn sai mã số, hoặc mã số đó không tồn tại. Lúc này, ta đơn giản hồi báo 1 tin cho KH là USERID đó không tồn tại!
PHP Code:
echo '
'.$phone.'
Cam on ban da ung ho VuiHoc.Info. Nhung ma so thanh vien '.$tmp[2].' khong ton tai!
-1
'.$service.'
';
PHP Code:
//xử lý khi userid tồn tại
// Đặt biến số tiền tăng thêm
$money = 2000;
// đọc dữ liệu từ MySQL vào biến $row
$row = mysql_fetch_array($result, MYSQL_ASSOC);
// tính số tiền sau khi cộng vào
$money = $row['cash'] + $money;
//Thực hiện lệnh querry để cộng thêm tiền cho user
mysql_query("UPDATE user SET cash='$money' where userid=$tmp[2]") or die(mysql_error());
echo '<ClientResponse>
<Message>
<PhoneNumber>'.$phone.'</PhoneNumber>
<Message>Ban da nap tien thanh cong. So tien hien tai cua ban la '.$money.'. Chuc ban luon vui!</Message>
<SMSID> -1</SMSID>
<ServiceNo>'.$service.'</ServiceNo>
</Message>
</ClientResponse>';
PHP Code:
<?php
//Nhận nội dung từ GW
$cuphap=$_REQUEST['message'];
$phone= $_REQUEST['phone'];
$service=$_REQUEST['service'];//Phân tách cú pháp tin nhắn đến để nhận USERID$tmp=explode(" ",$cuphap);//Kiểm tra tin nhắn có đúng cú pháp khôngif(@$tmp[2]!=NULL)
{
//Ok, KH đã nhắn đúng cú pháp, tiến hành xử lý tiếp
//Kết nối vào CSDL
require_once("connect.php");
//Xác định xem userid có tồn tại không
$result = mysql_query("SELECT * FROM user where userid='$tmp[2]'");
$duplicates = mysql_num_rows($result);
if($duplicates == 0)
{
//Hồi báo khi userid không tồn tại
echo '<ClientResponse>
<Message>
<PhoneNumber>'.$phone.'</PhoneNumber>
<Message>Cam on ban da ung ho VuiHoc.info. Nhung ma so '.$tmp[2].' khong ton tai!</Message>
<SMSID> -1</SMSID>
<ServiceNo>'.$service.'</ServiceNo>
</Message>
</ClientResponse>';
}
else
{
//xử lý khi userid tồn tại
// Đặt biến số tiền tăng thêm
$money = 2000;
// đọc dữ liệu từ MySQL vào biến $row
$row = mysql_fetch_array($result, MYSQL_ASSOC);
// tính số tiền sau khi cộng vào
$money = $row['cash'] + $money;
//Thực hiện lệnh querry để cộng thêm tiền cho user
mysql_query("UPDATE user SET cash='$money' where userid=$tmp[2]") or die(mysql_error());
echo '<ClientResponse>
<Message>
<PhoneNumber>'.$phone.'</PhoneNumber>
<Message>Ban da nap tien thanh cong. So tien hien tai cua ban la '.$money.'. Chuc ban luon vui!</Message>
<SMSID> -1</SMSID>
<ServiceNo>'.$service.'</ServiceNo>
</Message>
</ClientResponse>';
}
}
else
{
//Khách hàng không nhắn đúng cú pháp, trả về tin nhắn báo lỗi!
echo '<ClientResponse>
<Message>
<PhoneNumber>'.$phone.'</PhoneNumber>
<Message>Tin nhan sai cu phap, soan SMS DONATE USERID gui 8222 nhe! Xin vui long lien he voi chung toi neu khong biet USERID. Than.</Message>
<SMSID>-1/SMSID>
<ServiceNo>'.$service.'</ServiceNo>
</Message>
</ClientResponse>';
}
?>
Xong, giờ save file lại, ví dụ donate.php, up lên host chung với các file bắt buộc của Fibo nhé, và up luôn file connect.php nha! Giống hôm qua vậy!
Hôm qua ta đã up lên thư mục donggop, thì bay6 giờ vẫn up vào donggop nhé.
Rồi, vậy trong thư mục đóng góp giờ sẽ có 6 file, 4 file hôm qua và 2 file mới up.
(Đảm bảo chắc chắn như thế nhé)
Xong, vào http://fibosms.com, đăng nhập và thiết lập 1 cấu hình tin nhắn mới thôi! Cái này khỏi nhắc lại nhé!
Vậy là xong hết rồi, các bạn đã biết cách thiết lập 1 cấu hình tin nhắn với 1 code tương đối phức tạp, liên quan đến phân tích cú pháp lẫn truy vấn CSDL.
Cứ như thế mà phát triển các ứng dụng khác theo ý mình nhé!
Chúc các bạn thành công!!!
0 nhận xét:
Đăng nhận xét