Квартиры, дома, земельные участки Краснодарского края без посредников. Объявления собственников недвижимости.
Реклама здесь
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Проверка статуса пользователя в MSN

Класс позволяет проверить онлайн-статус пользователя в MSN.

Результат проверки - TRUE, если пользователь в сети, или FALSE - если не в сети.

MSN:



<?php
/**
* This is an attempt to check online status for users.
* Method:
* first we ping an onlinestatus server. If response time is too long, or if it's down, we change.
* Time response has to be under 1s.
*
* You can find some address here: http://www.onlinestatus.org/usage.php
*
* I've seen that IP addresses are faster than "human" addresses, as we don't have to resolve these adresses.
*
* getStatus() sets status to :
* 0 : offline
* 1 : online
* 2 : unknown
*
* isOnline() returns true only if status is 1
*
* Requiered:
* 1- fsockopen support
*
* @author C. Jeanneret <cjeanneret@internux.ch>
*/

/*
Copyright (C) 2007 Jeanneret Internux

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/


class checkMSN {

 
/* Server we're going to use later (after "ping" prob). Should be private
  * @var string  */
 
var $server;
 
/* Port on remote server. Should be private
  * @var int  */
 
var $port;
 
/* Account we're going to check.
  * @var string  */
 
var $account;
 
/* Status. Should be private
  * @var bool  */
 
var $status;

 
/* Constructor
  * @param string $account
  * @return checkMSN  */
 
function checkMSN($account) {
    
$this->account $account;
 }

 
/* Probe if a server is up and if it's responding within 1s.
  * @return bool true if we find one server. Else false, with error message. */
 
function ping() {

  
$a_servs = array (
  
'83.142.226.228',
  
'217.8.135.183',
  
'210.169.107.134',
  
'69.72.168.157',
  
'66.177.205.6');

  
$a_port = array ('81',
  
'54345',
  
'8000',
  
'80',
  
'8000');

  
$nb count($a_servs);

  
// let's check
  
for($i=0;$i<$nb;$i++) {

   
// "ping"
   
$sock = @fsockopen($a_servs[$i],$a_port[$i],$errno,$errstr,1);
   if(
$sock) {
    
$this->server $a_servs[$i];
    
$this->port $a_port[$i];
    return 
true;
   } 
//end sock test
   
@fclose($sock);
  }
  
// if all servers are down
  
echo '<p>Sorry, all servers are currently down !</p>';
  return 
false;
 }

 
/* Get user status. It first uses $this->ping() to find a good server, then grab status
  * @return bool true if we have a status.  */
 
function getStatus() {
  if(
$this->ping()) {
   
$url $this->server.':'.$this->port.'/msn/'.$this->account;
   
$curl curl_init($url);
   
curl_setopt($curlCURLOPT_URL$url);
   
curl_setopt($curlCURLOPT_HEADER1);

   
ob_start();
   
curl_exec($curl);
   
$sta ob_get_contents();
   
curl_close($curl);
   
ob_get_clean();

   if (
preg_match('/online.gif/i',$sta)) {
    
$this->status 1;
   }
   elseif(
preg_match('/unknown.gif/i',$sta)) {
    
$this->status 2;
   } else{
    
$this->status 0;
   }
   return 
true;
  } else {
   return 
false;
  }
 }

 
/* Just give us the status.
  * @return bool true if online  */
 
function isOnline() {
  if(
$this->getStatus())
  return (
$this->status == 1);
 }


?>
Скопировать в буфер

Пример использования:

 $msn = new checkMSN('ddddd@hotmail.com');
 print($msn->isOnline());
Лучший дизайн интерьера коттеджа в вашем стиле.

© Copyright 2008-2012 by KDG