Как разработать систему оповещения, такую ​​как Facebook, используя PHP и Jquery? - PullRequest
10 голосов
/ 19 сентября 2010

Как я могу разработать систему оповещения, такую ​​как Facebook, где пользователь A добавляет пользователя B, а пользователь B получит некоторое число в разделе запроса дружбы в заголовке, как показано на рисунке нижеКак я могу разработать что-то подобное?Как мы можем получить числа, как это? Как я могу получить коды в PHP и JQuery?
alt text

1 Ответ

17 голосов
/ 19 сентября 2010

Полагаю, вы хотите средство оповещения пользователя A, когда пользователь B «подружился» с ним / с ней, не требуя обновления страницы?

Для этого требуется «AJAX».AJAX расшифровывается как асинхронный Javascript и XML, но в настоящее время это перегруженный термин, поскольку фактическая структура данных обмена часто использует JSON вместо XML.JSON - это нотация объектов JavaScript.В любом случае, идея заключается в том, что ваша веб-страница - без обновления - может совершать периодические звонки на ваш сервер, чтобы получить новую или обновленную информацию для обновления дисплея.С помощью PHP и jQuery вы сначала захотите настроить вызов AJAX на своей странице следующим образом:

$(function() { // on document ready

function updateAlerts() {
   $.ajax({
      url : "/check.php",
      type : "POST",
      data : {
         method : 'checkAlerts'
      },
      success : function(data, textStatus, XMLHttpRequest) {
         var response = $.parseJSON(data);

         // Update the DOM to show the new alerts!
         if (response.friendRequests > 0) {
            // update the number in the DOM and make sure it is visible...
            $('#unreadFriendRequestsNum').show().text(response.friendRequests);
         }
         else {
            // Hide the number, since there are no pending friend requests
            $('#unreadFriendRequestsNum').hide();
         }

         // Do something similar for unreadMessages, if required...
      }
   });
   setTimeout('updateAlerts()', 15000); // Every 15 seconds.
}

});

Это будет каждые 15 секунд отправлять запрос на ваш сервер по ссылке / проверке.PHP на том же домене, что и источник веб-страницы.PHP должен запросить вашу базу данных и вернуть количество непрочитанных запросов на добавление в друзья.Возможно, что-то вроде этого:

<?php

   function isValid(session) {
      // given the user's session object, ensure it is valid 
      // and that there's no funny business
      // TO BE IMPLEMENTED
   }

   function sanitize(input) {
      // return CLEAN input
      // TO BE IMPLEMENTED
   }

   // Be sure to check that your user's session is valid before proceeding, 
   // we don't want people checking other people's friend requests!
   if (!isValid(session)) { exit; }

   $method = sanitize($_POST['method']);

   switch ($method) {
      case 'checkAlerts' :
         // Check DB for number of unread friend requests and or unread messages
         // TO BE IMPLEMENTED

         $response = ['friendRequests' => $num_friend_requests,
                      'messages' => $num_unread_messages ];

         return json_encode( $response );
         exit;

      case 'someOtherMethodIfRequired' :
         // ...
         exit;
   }
?>
...