SpyWatcher


Программное обеспечение сервера.


Эмблема

Эта статья предназначена для всех желающих организовать или расширить свой бизнес, в области дистанционного наблюдения за подвижными или стационарными объектами, т.е. создать собственный Центр Слежения.


В документе "Описание изделия", который Вы легко можете скачать здесь, подробно описано, какие данные SpyWatcher может передавать на сервер и в каком формате они представлены. Неизвестным осталось только имя принимающей (на сервере) программы (в документации оно обозначено, как xx.php).


Мы не можем открыть, как называеся эта программа на нашем сервере (поэтому и обозначили ее xx), чтобы никто не смог напихать в нашу базу данных кучу всякого мусора.


При отправке данных на сервер, SpyWatcher будет указывать имя принимающей программы, которое Вы ему сообщите командой: SR <имя>. Имя не длиннее 2-х допустимых символов без «.php». Команда подается один раз, для каждого SpyWatcher-а, который Вы продаете.


Допустим, что у Вас на сервере в базе данных (my_base) создана таблица (my_tab), содержащая следующие поля:

- id (varchar(16)) - номер телефона или имя SpyWatcher-а;

- dat (varchar(2)) - номер внешнего устройства;

- coord (varchar(17)) - координаты;

- speed (int(4)) - скорость объекта;

- time (varchar(6)) - время по UTC;

- color (varchar(1)) - цвет точки на экране монитора;

- unit (varchar(2)) - номер внешнего устройства, сгенерировавшего событие;

- stime (varchar(6)) - время сервера;

- sdate (varchar(8)) - дата сервера.


Тогда программа xx.php должна иметь, примерно, следующий вид:


  $dblocation = "localhost"; // Имя сервера
  $dbuser = "Anton";          // Имя пользователя
  $dbpasswd = "parol";      // Пароль
  $dbname = "my_base";       // Имя базы данных
      
  $dbconn = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  mysql_query('SET NAMES cp1251', $dbconn);
  if ($dbconn)        // Если дескриптор равен 0 соединение не установлено
   {
     if (@mysql_select_db($dbname, $dbconn)) 
      {
                
         $text = $_GET['string'];  //Читаем блок данных, которые передал SpyWatcher по GPRS

    	 $ckl = 0;     //Cчетчик циклов

         $st = strtok($text, ';'); //Сообщения в блоке разделены символом "точка с запятой"
         while ($st)		   //выделяем их. Всего их может быть от 1 до 12
          {
	    $ckl = $ckl +1;
	    
	    if ($ckl > 1) $st = $swname." ".$st; //Имя SpyWatcher-а есть только в первом сообщении блока

            $ar = explode(" ", $st); //Разделяем содержимое сообщения по пробелам (он всегда только один)

	    if ($ckl == 1) $swname = $ar[0]; //Запомним имя передающего, оно, только в первом сообщении

	    // Проверяем входящие данные: Имя должно начинаться со знака «+»
            // и не должно быть +Noname (т.е. незадано). Можно проверить имя по отдельной базе, как хотите.
            // Лучше, вместо имени использовать номер телефона.
	    // Проверяем координаты, если они нулевые - в базу не пишем, если не Северная или не Южная Широта
            // а какой-то спам - пропускаем

            if ($ar[1]=='0' and substr($ar[0],0,1) == '+' and $ar[0]!='+Noname' and
               (substr($ar[2],7,1) == 'N' or substr($ar[2],7,1) == 'S') and substr($ar[2],0,7) != '0000000')
                
            {
	    
              $stime = date("His"); // server time
              $sdate = date("dmY"); // server date: 21102010
	      
              $qu = "INSERT INTO `tracks`(`id`,`dat`,`coord`,`speed`,`time`,`color`,`unit`,`stime`,`sdate`)  
                   VALUES ('$ar[0]','$ar[1]','$ar[2]','$ar[3]','$ar[4]','$ar[5]','$ar[6]','$stime','$sdate')";
	     

              @mysql_query($qu);
                        
            }
            $st = strtok(';');
          }
         @mysql_close($dbconn);
       }
    }      


  



 

Назад       Другие статьи

 

Designed by..., tip Foto galerie