二月 24th, 2010

IMified – 設置使用者暱稱之一

13 views, 程式語言, by 蒼時弦也.

今天的網誌可能太晚,因為我在撰寫簡易的程式。
雖然很簡單,不過還是花了一點時間。
(不過寫到一半被奶奶叫去,所以只好拖到現在。)

本篇文章會著重在程式部份,所以文字敘述比較少。
那麼,廢話不多說,就先來開始今天的主題吧!

今天是使用文字檔案儲存,並且無快取。
因此適合小型使用,大型使用時請避免這種作法。

bot.php – 機器人主程式

<?php

session_id($_REQUEST['userkey'].'-at-'.$_REQUEST['network']);
session_start();

include('./data.inc.php');

$nickname = getnick($_REQUEST['userkey']);

if($_REQUEST['msg'] == 'exit'){
	$_SESSION['action'] = NULL;
	echo "成功逃離無限地獄!";
}else{

	switch($_SESSION['action']){
		case 1:
			upnick($_REQUEST['msg'], $_REQUEST['userkey']);
			$_SESSION['action'] = NULL;
			echo "修改完成!";
		break;
		case 2:
			echo "{$nickname}想繼續發呆就別輸入 exit";
		break;
		default:
			switch($_REQUEST['msg']){
				case '?':
				case 'help':
					echo "輸入1修改暱稱,輸入2開始發呆";
				break;
				case '1':
					$_SESSION['action'] = 1;
					echo "輸入暱稱後更新";
				break;
				case '2':
					$_SESSION['action'] = 2;
					echo "進入發呆區";
				break;
				default:
					echo "需要幫助請輸入 ? 或 help";
			}
	}
}

?>

上方的程式碼是之前的版本修改而來,並且改用 Session 作為選單紀錄。

data.inc.php – 目前只有一項功能,暫時針對此功能製作。

<?php
	function data($path = './nickname.txt'){ //存取資料
		$data = file_get_contents($path);
		$line = explode("\n", $data);
		foreach($line as $nicks){
			$nicks = explode("\t", $nicks);
			$nickname[$nicks[0]] = $nicks[1];
		}
		return $nickname;
	}

	function getnick($userkey){ //取得暱稱
		$nickname = data();
		$nickname = $nickname[$userkey] ? $nickname[$userkey] : '訪客';
		return $nickname;
	}

	function upnick($nickname, $userkey, $path = './nickname.txt'){ //更新暱稱
		$data = data();
		$data[$userkey] = $nickname;
		foreach($data as $key => $nicks){
			$line[] = "{$key}\t{$nicks}";
		}
		$nicknames = implode("\n", $line);
		file_put_contents($path, $nicknames);
	}
?>

此程式碼是以 PHP5 為基礎使用,因此無法運作時請檢查 PHP 版本。

大致上就算完成製作了,我也進行過測試。
一切都正常運作,不過因為會頻繁讀取檔案,所以小型機器人的架構使用會比較好。

下次寫程式就不知道是何時了!
畢竟「開學,事情又增多!」

總之,希望大家別忘記在有空的時候經常來拜訪本站!

相關文章

Back Top


Blog Widget by LinkWithin