top
Loading...
聊天室技術(一)--大門
聊天室可以采用完全自由的方式運行,你可以隨意輸入呢稱,不用密碼,不保存你的聊天狀態,優點是:自由,非常適合于游客!另外一個方法是注冊聊天室,每個進入聊天室的人都要輸入自己的用戶名和密碼才能進入!優點:充分體現個性,非常適合于老朋友,他們的呢稱不會被人惡意侵占使用.我的聊天室使用注冊方法!

注冊通常采用2種方法:1,先注冊然后進入聊天;2,自動注冊,然后在里面修改自己的資料!我采用第2種方法!!每個新進入的聊友的用戶名會被自動保存到注冊到數據庫內,下次登陸必須輸入準確的密碼才能進入!

下面是判斷部分!本程序使用文本數據庫!

//$useronline為在線人的數據文件名稱
//$useronlinelock為在線人的鎖定標志
//$register為已經注冊的數據文件名稱
//$registerlock為注冊文件的鎖定標志
//$split為分隔符

//登陸參數 enter
if($action == "enter")
{
//當前時間秒數
$timecurrent = date("U");

//鎖定在線人數文件,防止同時修改同一個文件
while( file_exists($useronlinelock))
{
if(!file_exists($useronlinelock))
{
break;
}
}

//創建臨時文件
fclose(fopen($useronlinelock,"w"));

//讀入在線用戶和已經注冊用戶的信息:密碼,昵稱,更新時間
$useronline = file($useronline);
$register = file($register);

//用于判斷登陸是否成功的標志
$namesign=0;

//判斷用戶名,密碼的錯誤,用戶名不允許為空,不允許超過10個字符,密碼不允許超過20個字符
if(($name =="") || (strlen($name) > 10) || (strlen($pass) > 20) )
{
print("沒有昵稱或密碼過長");
//登陸失敗
$namesign=1;
//刪除臨時文件
unlink($useronlinelock);
}
else
{
//查找是否已經有人注冊或者密碼錯誤
$foundsign=0;
for($i=0;$i<count($register);$i++)
{
//分割
$tempregister = split($split,$register[$i],99);
//找到已經注冊的用戶名
if( $name == $tempregister[0] )
{
//已經找到標志
$foundsign=1;
//密碼正確嗎
if($pass != $tempregister[1])
print("密碼錯了!");
//登陸失敗
$namesign=1;
unlink($useronlinelock);
break;
}
else
{
//老用戶登陸成功
$namesign=0;
break;
}
}

}

//如果沒有找到這個用戶名,那么就自動注冊
if(!$foundsign)
{
//保存用戶名和密碼
$handle = fopen($register,"a");
fputs($handle,"$name$split$pass$splitrn");
fclose($handle);
//新用戶登陸成功
$namesign=0;
}
}
}
if(!$namesign)
{
//更新在線人的名單
$useronlinehandle = fopen($useronline,"w");

//判斷是否已經在里面,只是刷新頁面
$updatesign = 0;
for($i=0;$i<count($useronline);$i++)
{
$usertemp=split($split,chop($useronline[$i]),99);
if($name == $usertemp[0])
{
//更新標志
$updatesign = 1;
fputs($useronlinehandle,$useronline[$i]);
}
else
{
fputs($useronlinehandle,$useronline[$i]);
}
}
//如果沒有在里面,則增加到里面
if(!$updatesign)
fputs($useronlinehandle,"$name$split$level$split$pass$split$timecurren
trn");
fclose($useronlinehandle);

//去掉縮定
unlink($useronlinelock);

//登陸成功
}

到這里,用戶的驗證已經完成,聊友已經合法的進入了聊天室,攜帶者呢稱和密碼

原作者:howtodo
來源:php2000.com

北斗有巢氏 有巢氏北斗