⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ajax_im.php

📁 ajax 聊天室,实现多人聊天,无刷新!
💻 PHP
📖 第 1 页 / 共 2 页
字号:
                  $to_delete[] = $row['id'];
               }
            } else if($row['type'] == 'event') {
               $output['events'][$j++] = Array('event'=>$row['message'], 'sender'=>$row['sender'], 'group'=>$reverse_list[$row['sender']], 'recipient'=>$row['recipient']);
               $output['numEvents']++;
               $to_delete[] = $row['id'];
            }
         }

         if(count($to_delete) > 0)
            $delete_new = @mysql_query("DELETE FROM ".SQL_PREFIX."messages WHERE id IN('".implode("','", $to_delete)."')");         
         
         print($json->encode($output));
      } else {
      	 $set_status = @mysql_query("UPDATE ".SQL_PREFIX."users SET is_online='0', last_ping='".time()."' WHERE username='".mysql_real_escape_string($from)."'");
      	 print 'not_logged_in';
      }
      break;      


   case 'login':
      ///////////// login to the server /////////
      // login parts (within array $_POST):    //
      // from     -  user logging in           //
      // pwd      -  password                  //
      ///////////////////////////////////////////
      $query = @mysql_query("SELECT buddylist FROM ".SQL_PREFIX."users WHERE username='".mysql_real_escape_string($from)."' AND password='".$pwd."'");
      if(@mysql_num_rows($query) > 0) {
         $user = mysql_fetch_assoc($query);
         $set_status = @mysql_query("UPDATE ".SQL_PREFIX."users SET is_online='1' WHERE username='".mysql_real_escape_string($from)."'");
         if(strlen($user['buddylist']) > 0) {
            $buddylist = user_event($from, $user['buddylist'], 'status,1');
            $output['buddy'] = $json->encode($buddylist);
         } else {
            $output['buddy'] = Array();
         }
         
         print($json->encode($output));
      } else {
         print 'invalid';
      }
      break;

   case 'logout':
      ///////////// logout of the server ////////
      // parts (within array $_POST):          //
      // from     -  user logging out          //
      // pwd      -  password                  //
      ///////////////////////////////////////////
      $query = @mysql_query("SELECT buddylist FROM ".SQL_PREFIX."users WHERE username='".mysql_real_escape_string($from)."' AND password='".$pwd."'");
      if(@mysql_num_rows($query) > 0) {
         $user = mysql_fetch_assoc($query);
         $set_status = @mysql_query("UPDATE ".SQL_PREFIX."users SET is_online='0', last_ping='".time()."' WHERE username='".mysql_real_escape_string($from)."'");
         $exit_rooms = @mysql_query("DELETE FROM ".SQL_PREFIX."chats WHERE user='".mysql_real_escape_string($from)."'");
         $notify_buddies = user_event($from, $user['buddylist'], 'status,0');
         print 'logged_out';
      } else {
         print 'invalid';
      }
      break;

   case 'register':
      ///////////// register a new user /////////
      // parts (within array $_POST):          //
      // from     -  username chosen           //
      // pwd      -  password chosen           //
      // email    -  email address             //
      ///////////////////////////////////////////
      $email = $_POST['email'];

      if(preg_match('/^[a-z0-9_\\d]+$/', $from) !== false && strlen($from) >= 3 && strlen($from) <= 16) {
         if(preg_match('/^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/', $email) !== false) {
            if(strlen($pwd) >= 4 && strlen($pwd) <= 16) {
               if(mysql_num_rows(mysql_query("SELECT email FROM ".SQL_PREFIX."users WHERE email='".mysql_real_escape_string($email)."'")) == 0) {
                  $query = @mysql_query("SELECT username FROM ".SQL_PREFIX."users WHERE username='".mysql_real_escape_string($from)."'");
                  if(@mysql_num_rows($query) == 0) {
                     $query = @mysql_query("INSERT INTO ".SQL_PREFIX."users (username, password, email) VALUES ('".mysql_real_escape_string($from)."', '".md5($pwd)."', '".mysql_real_escape_string($email)."')");
                     print 'user_registered';
                  } else {
                     print 'username_taken';
                  }
               } else {
                  print 'email_already_used';
               }
            } else {
               print 'password_bad_length';
            }
         } else {
            print 'invalid_email';
         }
      } else {
         print 'username_bad';
      }
      break;

   case 'save':
      //////// save the users buddylist /////////
      // parts (within array $_POST):          //
      // from     -  user saving the buddylist //
      // pwd      -  password                  //
      // list     -  the buddylist             //
      ///////////////////////////////////////////
      $query = @mysql_query("SELECT username FROM ".SQL_PREFIX."users WHERE username='".mysql_real_escape_string($from)."' AND password='".$pwd."'");
      if(@mysql_num_rows($query) > 0) {
            $query = @mysql_query("UPDATE ".SQL_PREFIX."users SET buddylist='".$_POST['list']."' WHERE username='".mysql_real_escape_string($from)."'");
            print 'saved';
      } else {
            print 'not_logged_in';
      }
      break;

   case 'isuser':
      ////////// check if user exists ///////////
      // parts (within array $_POST):          //
      // from     -  user saving the buddylist //
      // pwd      -  password                  //
      // username -  the username in question  //
      ///////////////////////////////////////////      
      $query = @mysql_query("SELECT username FROM ".SQL_PREFIX."users WHERE username='".mysql_real_escape_string($from)."' AND password='".$pwd."'");
      if(@mysql_num_rows($query) > 0) {
            $query = @mysql_query("SELECT is_online FROM ".SQL_PREFIX."users WHERE username='".mysql_real_escape_string($_POST['username'])."'");
            if(mysql_num_rows($query) > 0) {
               $userinfo = @mysql_fetch_assoc($query);
               if($userinfo['is_online'] == 100) {
                  $check_friendship = @mysql_query("SELECT is_online FROM ".SQL_PREFIX."users WHERE username='".mysql_real_escape_string($_POST['username'])."' AND buddylist LIKE '%\"".mysql_real_escape_string($from)."\"%'");
                  if(@mysql_num_rows($check_friendship) == 0) {
                     print '0';
                  } else {
                     print $userinfo['is_online'];
                  }
               } else {
                  print $userinfo['is_online'];
               }
            } else {
               print 'not_exists';
            }
      } else {
            print 'not_logged_in';
      }
      break;

   case 'reset':
      //////// reset the users password /////////
      // parts (within array $_POST):          //
      // from     -  the email for the account //
      ///////////////////////////////////////////
      $from = str_replace(' AT ', '@', str_replace(' DOT ', '.', $from));
      $query = @mysql_query("SELECT email FROM ".SQL_PREFIX."users WHERE email='".mysql_real_escape_string($from)."'");
      if(@mysql_num_rows($query) > 0) {
         $new_pass = generatePassword();
         $query = @mysql_query("UPDATE ".SQL_PREFIX."users SET password='".md5($new_pass)."' WHERE email='".mysql_real_escape_string($from)."'");
         mail($from, 'Your Reset Password', "You requested your password be reset -- your new password is below.\n\nNew Password: $new_pass", 'From: Reset Password <reset_password@'.$_SERVER['HTTP_HOST'].'>');
         print 'pw_reset';
      } else {
         print 'no_email_on_record';
      }
      break;

   case 'pwdchange':
      //////// change the users password ////////
      // parts (within array $_POST):          //
      // from     -  user changing the passwd  //
      // pwd      -  current password          //
      // newpwd   -  new password              //
      ///////////////////////////////////////////
      $query = @mysql_query("SELECT username FROM ".SQL_PREFIX."users WHERE username='".mysql_real_escape_string($from)."' AND password='".$pwd."'");
      if(@mysql_num_rows($query) > 0) {
         if(strlen($_POST['newpwd']) >= 4 && strlen($_POST['newpwd']) <= 16) {
            $query = @mysql_query("UPDATE ".SQL_PREFIX."users SET password='".md5($_POST['newpwd'])."' WHERE username='".mysql_real_escape_string($from)."'");
            print 'pw_changed';
         } else {
            print 'password_bad_length';
         }
      } else {
         print 'invalid_pw';
      }
      break;
      
   case 'joinroom':
      ///////////// join a chatroom /////////////
      // parts (within array $_POST):          //
      // from     -  user saving the buddylist //
      // pwd      -  password                  //
      // room     -  the room to join          //
      ///////////////////////////////////////////  
      $room = $_POST['room'];
      $query = @mysql_query("SELECT id FROM ".SQL_PREFIX."chats WHERE user='".mysql_real_escape_string($from)."' AND room='".mysql_real_escape_string(strtolower($room))."'");

      if(@mysql_num_rows($query) > 0) {
         print 'already_joined';
      } else {
         $query = @mysql_query("SELECT username FROM ".SQL_PREFIX."users WHERE LOWER(username)='".mysql_real_escape_string(strtolower($room))."'");
         if(@mysql_num_rows($query) == 0) {
            if(preg_match('/^[^a-z0-9_\d]+$/', $room) == false) {
               $query = @mysql_query("INSERT INTO ".SQL_PREFIX."chats (room, user) VALUES ('".mysql_real_escape_string(strtolower($room))."', '".mysql_real_escape_string($from)."')");
               $get_users = @mysql_query("SELECT user FROM ".SQL_PREFIX."chats WHERE room='".mysql_real_escape_string(strtolower($room))."'");
               while($row = @mysql_fetch_assoc($get_users))
                  $output['users'][] = $row['user'];
               $notify_buddies = user_event($from, $output, 'chat,join,'.$room);
               print($json->encode($output));
            } else {
               print 'invalid_chars';
            }
         } else {
            print 'room_is_user';
         }
      }
      break;
   
   case 'leaveroom':
      //////////// leave a chatroom /////////////
      // parts (within array $_POST):          //
      // from     -  user saving the buddylist //
      // pwd      -  password                  //
      // room     -  the room to leave         //
      ///////////////////////////////////////////  
      $room = $_POST['room'];
      $query = mysql_query("SELECT id FROM ".SQL_PREFIX."chats WHERE user='".mysql_real_escape_string($from)."' AND room='".mysql_real_escape_string(strtolower($room))."'") ;
			
      if(mysql_num_rows($query) > 0) { 
         $row = mysql_fetch_assoc($query);
         $query = mysql_query("DELETE FROM ".SQL_PREFIX."chats WHERE id='".$row['id']."'");
         $get_users = @mysql_query("SELECT user FROM ".SQL_PREFIX."chats WHERE room='".mysql_real_escape_string(strtolower($room))."'");
         while($row = @mysql_fetch_assoc($get_users))
            $output['users'][] = $row['user'];
         $notify_buddies = user_event($from, $output, 'chat,left,'.$room);
         print 'left';
      }
      break;
      
}

mysql_close();
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -