昨天在說明 IMified 機器人時,說到某些功能無法使用,而無法做多樣變化。
而昨晚在官方的知識庫中,發現了一些新資訊。
這個資訊對於「功能」的加強,會有非常大的幫助。
如果各位擅長於開發網站,想必對 Session 已經有足夠的認識。
而在 IMified 的設計中,機器人是無法儲存 Cookie 的,因此 Session ID 也理所當然的在每次使用時「被更換」
那麼,要如何存取 Session 呢?
這下有人建議:「將 User Key 設定為 Session ID 吧!」
原本我對於 Session ID 並沒有深入認識,不過一看到之後。
就馬上去了解 Session ID 的相關資訊,也得出了處理方法。
本篇文章介紹的是 PHP 的作法,畢竟我比較擅長PHP撰寫。
<?php
session_id($_REQUEST['userkey'].'-at-'.$_REQUEST['network']); //設定Session ID 並且依照 Network 分別紀錄
session_start();
if($_SESSION['action']){
switch($_SESSION['action']){
case 1:
//此區為登入功能,省略
break;
case 2:
//此需為查詢服務,省略
break;
//這裡可以自由擴充
default:
echo "未定義動作。";
}
}else{ //沒有Session 紀錄時運行
switch($_REQUEST['msg']){
case '/?':
case '/help': //設定兩種方式取得幫助( Pidgin使用者無法使用 /help 語法故提供 /? )
echo "輸入對應數字可開啟對應功能
1. 登入系統
2. 查詢帳戶";
break;
case 1:
$_SESSION['action'] = 'login';
echo "請輸入帳號";
break;
case 2:
if(!$_SESSION['auth']){
echo "尚未登入";
}else{
echo "輸入對應數字取得相關服務";
}
break;
default:
echo "需要幫助請輸入 /? 或者 /help 查詢。";
}
}
?>
以上程式碼為即時撰寫出來,並沒有實際的測試。
如果有錯誤請留言告知,我會儘快修正。
有了 Session 的支援,在開發上又更加的省力。
比起我原本使用的與value0的訊息紀錄,更能夠做多樣的變化。
最後,希望大家仍能提供「心得」給我。