當前位置:首頁 > 綜合實例 > 列表

PHP設計聊天室步步通(一)

發布:smiling 來源: PHP粉絲網  添加日期:2013-11-16 21:39:00 瀏覽: 評論:0 

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

注冊通常采用2種方法:

1、先注冊然后進入聊天

2、自動注冊

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

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

  1. //$useronline為在線人的數據文件名稱  
  2. //$useronlinelock為在線人的鎖定標志  
  3. //$register為已經注冊的數據文件名稱  
  4. //$registerlock為注冊文件的鎖定標志  
  5. //$split為分隔符  
  6. //登陸參數 enter  
  7. if($action == "enter")  
  8. {  
  9. //當前時間秒數  
  10. $timecurrent = date("U");  
  11.  
  12. //鎖定在線人數文件,防止同時修改同一個文件  
  13. whilefile_exists($useronlinelock))  
  14. {  
  15. if(!file_exists($useronlinelock))  
  16. {  
  17. break;  
  18. }  
  19. //創建臨時文件  
  20. fclose(fopen($useronlinelock,"w"));  
  21.  
  22. //讀入在線用戶和已經注冊用戶的信息:密碼,昵稱,更新時間  
  23. $useronline = file($useronline);  
  24. $register = file($register);  
  25.  
  26. //用于判斷登陸是否成功的標志  
  27. $namesign=0;  
  28.  
  29. //判斷用戶名,密碼的錯誤,用戶名不允許為空,不允許超過10個字符,密碼不允許超過20個字符  
  30. if(($name =="") || (strlen($name) > 10) || (strlen($pass) > 20) )  
  31. {  
  32. PRint("沒有昵稱或密碼過長");  
  33. //登陸失敗  
  34. $namesign=1;  
  35. //刪除臨時文件  
  36. unlink($useronlinelock);  
  37. }  
  38. else 
  39. {  
  40. //查找是否已經有人注冊或者密碼錯誤  
  41. $foundsign=0;  
  42. for($i=0;$icount($register);$i++)  
  43. {  
  44. //分割  
  45. $tempregister = split($split,$register[$i],99);  
  46. //找到已經注冊的用戶名  
  47. if$name == $tempregister[0] )  
  48. {  
  49. //已經找到標志  
  50. $foundsign=1;  
  51. //密碼正確嗎  
  52. if($pass != $tempregister[1])  
  53. print("密碼錯了!");  
  54. //登陸失敗  
  55. $namesign=1;  
  56. unlink($useronlinelock);  
  57. break;  
  58. }  
  59. else 
  60. {  
  61. //老用戶登陸成功  
  62. $namesign=0;  
  63. break;  
  64. }  
  65. }  
  66.  
  67. }  
  68.  
  69. //如果沒有找到這個用戶名,那么就自動注冊  
  70. if(!$foundsign)  
  71. {  
  72. //保存用戶名和密碼  
  73. $handle = fopen($register,"a");  
  74. fputs($handle,"$name$split$pass$splitrn");  
  75. fclose($handle);  
  76. //新用戶登陸成功  
  77. $namesign=0;  
  78. }  
  79. }  
  80. }  
  81. if(!$namesign)  
  82. {  
  83. //更新在線人的名單  
  84. $useronlinehandle = fopen($useronline,"w");  
  85.  
  86. //判斷是否已經在里面,只是刷新頁面  
  87. $updatesign = 0;  
  88. for($i=0;$icount($useronline);$i++)  
  89. {  
  90. $usertemp=split($split,chop($useronline[$i]),99);  
  91. if($name == $usertemp[0])  
  92. {  
  93. //更新標志  
  94. $updatesign = 1;  
  95. fputs($useronlinehandle,$useronline[$i]);  
  96. }  
  97. else 
  98. {  
  99. fputs($useronlinehandle,$useronline[$i]);  
  100. }  
  101. }  
  102. //如果沒有在里面,則增加到里面  
  103. if(!$updatesign)  
  104. fputs($useronlinehandle,"$name$split$level$split$pass$split$timecurren 
  105. trn");  
  106. fclose($useronlinehandle);  
  107.  
  108. //去掉縮定  
  109. unlink($useronlinelock);  
  110.  
  111. //登陸成功  

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

Tags: PHP 設計 聊天室

分享到:

天气网首页彩吧