Hệ thống theo dõi xe mã nguồn php

Chào mừng bạn đến với hướng dẫn về cách tạo hệ thống theo dõi GPS bằng PHP và Javascript. Cần theo dõi nơi một chiếc xe đang ở?

Hệ thống theo dõi GPS cơ bản với PHP và Javascript yêu cầu các thành phần sau

  1. Một bảng cơ sở dữ liệu để ghi lại các vị trí đã biết cuối cùng
  2. Thư viện và điểm cuối PHP để chấp nhận và quản lý cập nhật vị trí
  3. Một trang web hoặc ứng dụng để gửi vị trí GPS hiện tại của người lái đến máy chủ
  4. Cuối cùng, một trang quản trị để theo dõi tất cả các tay đua

Hãy để chúng tôi xem qua một ví dụ đơn giản trong hướng dẫn này – Đọc tiếp

ⓘ Tôi đã bao gồm một tệp zip chứa tất cả mã nguồn khi bắt đầu hướng dẫn này, vì vậy bạn không cần phải sao chép-dán mọi thứ… Hoặc nếu bạn chỉ muốn đi sâu vào

 

 

MỤC LỤC

 

TẢI XUỐNG & LƯU Ý

Đầu tiên, đây là liên kết tải xuống mã ví dụ như đã hứa

 

GHI CHÚ NHANH

  • Tạo cơ sở dữ liệu và nhập
    <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    9
  • Thay đổi cài đặt cơ sở dữ liệu trong
    CREATE TABLE `gps_track` (
      `rider_id` bigint(20) NOT NULL,
      `track_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `track_lng` decimal(11,7) NOT NULL,
      `track_lat` decimal(11,7) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `gps_track`
      ADD PRIMARY KEY (`rider_id`),
      ADD KEY `track_time` (`track_time`);
    0 thành cài đặt của riêng bạn
  • Truy cập
    CREATE TABLE `gps_track` (
      `rider_id` bigint(20) NOT NULL,
      `track_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `track_lng` decimal(11,7) NOT NULL,
      `track_lat` decimal(11,7) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `gps_track`
      ADD PRIMARY KEY (`rider_id`),
      ADD KEY `track_time` (`track_time`);
    1 cho trang theo dõi khách hàng/người lái và
    <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    0 cho trang quản trị demo
  • Hãy lưu ý thêm rằng vị trí địa lý GPS yêu cầu
    <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    1 để hoạt động bình thường.
    <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    2 là một ngoại lệ để thử nghiệm
Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với cả thế giới… Nếu bạn cần câu trả lời gấp, vui lòng xem danh sách các trang web của tôi để được trợ giúp về lập trình

 

MÃ VÍ DỤ TẢI XUỐNG

Nhấp vào đây để tải xuống mã nguồn, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên mã nguồn hoặc sử dụng nó trong dự án của riêng bạn

 

 

THEO DÕI GPS MYSQL PHP

Được rồi, bây giờ chúng ta hãy tìm hiểu chi tiết về hệ thống theo dõi GPS với PHP và MYSQL

 

PHẦN 1) CƠ SỞ DỮ LIỆU – VỊ TRÍ ĐƯỢC BIẾT CUỐI CÙNG

1-cơ sở dữ liệu. sql

CREATE TABLE `gps_track` (
  `rider_id` bigint(20) NOT NULL,
  `track_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `track_lng` decimal(11,7) NOT NULL,
  `track_lat` decimal(11,7) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `gps_track`
  ADD PRIMARY KEY (`rider_id`),
  ADD KEY `track_time` (`track_time`);
FieldDescription
<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
3Khóa chính, ID người lái… Hoặc ID của bất kỳ thứ gì bạn muốn theo dõi.
<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
4Thời gian người lái “đăng ký” lần cuối.
<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
5Kinh độ.
<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
6Vĩ độ

Vâng, đó là tất cả những gì chúng ta cần. Chỉ là một bảng để lưu trữ các vị trí đã biết cuối cùng của các tay đua

 

PHẦN 2) THƯ VIỆN PHP THEO DÕI GPS

2-lib-theo dõi. php

<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();

Cái này thoạt nhìn có vẻ đáng sợ, nhưng hãy bình tĩnh và phân tích từ từ

  • (A, B, G) Khi
    <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    7 được tạo, hàm tạo sẽ tự động kết nối với cơ sở dữ liệu. Hàm hủy đóng kết nối
  • (C)
    <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    8 là một hàm trợ giúp đơn giản chạy truy vấn SQL
  • (D & E) Chỉ có 2 chức năng “theo dõi GPS thực tế”
    • <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      9 ghi lại tọa độ GPS của người lái
    • <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      20 trả về tọa độ đã biết cuối cùng của người lái
  • (F) Tự giải thích. Hãy nhớ thay đổi cài đặt cơ sở dữ liệu thành của riêng bạn

 

 

PHẦN 3) AJAX ENDPOINT

3-ajax-theo dõi. php

<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
2

Thư viện cốt lõi sẽ không tự hoạt động, vì vậy đây là điểm cuối AJAX. Cách thức hoạt động rất đơn giản – Chỉ cần chuyển vào một

<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
21 để chỉ định yêu cầu, theo sau là các tham số bắt buộc

Yêu cầuMô tả
<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
22Cập nhật vị trí của người lái đã cho. Thông số
  • <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    3
  • <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    24
  • <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    25
<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
26Nhận vị trí đã biết cuối cùng của một người lái nhất định. Thông số
  • <?php
    class Track {
      // (A) CONSTRUCTOR - CONNECT TO DATABASE
      public $pdo = null;
      public $stmt = null;
      public $error = "";
      function __construct () { try {
        $this->pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
     
      // (D) UPDATE RIDER COORDINATES
      function update ($id, $lng, $lat) {
        $this->query(
          "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
          [$id, date("Y-m-d H:i:s"), $lng, $lat]
        );
        return true;
      }
     
      // (E) GET RIDER(S) COORDINATES
      function get ($id=null) {
        $this->query(
          "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
          $id==null ? null : [$id]
        );
        return $this->stmt->fetchAll();
      }
    }
     
    // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
     
    // (G) START!
    $_TRACK = new Track();
    3 Tùy chọn, không gửi gì để có được tất cả người đi

 

 

PHẦN 4) CÁC TRANG THEO DÕI HTML

4A) TRANG THEO DÕI NGƯỜI LÁI

đường 4a. html

<?php
class Track {
  // (A) CONSTRUCTOR - CONNECT TO DATABASE
  public $pdo = null;
  public $stmt = null;
  public $error = "";
  function __construct () { try {
    $this->pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }
 
  // (D) UPDATE RIDER COORDINATES
  function update ($id, $lng, $lat) {
    $this->query(
      "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
      [$id, date("Y-m-d H:i:s"), $lng, $lat]
    );
    return true;
  }
 
  // (E) GET RIDER(S) COORDINATES
  function get ($id=null) {
    $this->query(
      "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
      $id==null ? null : [$id]
    );
    return $this->stmt->fetchAll();
  }
}
 
// (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");
 
// (G) START!
$_TRACK = new Track();
1

Đó là tất cả cho phần hướng dẫn, và đây là một số bổ sung nhỏ và liên kết có thể hữu ích cho bạn

 

Ý TƯỞNG CẢI TIẾN

  • Tích hợp bản đồ – Có hơn một chục dịch vụ bản đồ tại thời điểm viết bài. Xem các liên kết bên dưới và chọn chất độc của bạn. Tôi cũng có một hướng dẫn sử dụng Mapbox, hãy theo liên kết “Nhận GPS & Tạo bản đồ” bên dưới
  • Đăng nhập Người dùng/Quản trị viên/Người lái – Bảo mật điểm cuối AJAX và các trang. Xem các liên kết bên dưới nếu bạn không có hệ thống đăng nhập
  • Lịch sử theo dõi – Nếu bạn muốn lưu lại lịch sử hành trình
    • Thay đổi cơ sở dữ liệu, đặt
      <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      3 và
      <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      4 làm khóa chính tổng hợp. Tốt hơn là thêm một
      <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      16 nữa
    • Thay đổi thư viện PHP
      <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      17, chỉ cần
      <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      18 một mục nhập mới thay vì
      <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      19
    • Tất nhiên,
      <?php
      class Track {
        // (A) CONSTRUCTOR - CONNECT TO DATABASE
        public $pdo = null;
        public $stmt = null;
        public $error = "";
        function __construct () { try {
          $this->pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET, 
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
       
        // (D) UPDATE RIDER COORDINATES
        function update ($id, $lng, $lat) {
          $this->query(
            "REPLACE INTO `gps_track` (`rider_id`, `track_time`, `track_lng`, `track_lat`) VALUES (?, ?, ?, ?)",
            [$id, date("Y-m-d H:i:s"), $lng, $lat]
          );
          return true;
        }
       
        // (E) GET RIDER(S) COORDINATES
        function get ($id=null) {
          $this->query(
            "SELECT * FROM `gps_track`" . ($id==null ? "" : " WHERE `rider_id`=?"),
            $id==null ? null : [$id]
          );
          return $this->stmt->fetchAll();
        }
      }
       
      // (F) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
       
      // (G) START!
      $_TRACK = new Track();
      80 cũng cần được cập nhật
    • Đảm bảo tiết lộ rằng bạn đang lưu giữ lịch sử du lịch trong chính sách/thỏa thuận của công ty. Luật riêng tư có thể là một nỗi đau ở một số khu vực

 

KHÔNG PHẢI THEO DÕI THỜI GIAN THỰC?

Tất nhiên, đây không phải là một hệ thống thời gian thực. Mặc dù có thể làm như vậy, nhưng chúng tôi phải xem xét các giới hạn kỹ thuật và liệu điều đó có đáng làm hay không

  • Thứ nhất, thời gian thực sẽ làm cạn kiệt pin điện thoại thông minh nhanh chóng
  • Thứ hai, bạn sẽ cần một cơ sở hạ tầng mạng mạnh mẽ để hỗ trợ nhiều kết nối ổ cắm “luôn bật”
  • Cuối cùng, một hệ thống máy chủ rất mạnh có khả năng xử lý dữ liệu theo thời gian thực

Vì vậy, vâng… Nếu ai đó sẵn sàng bỏ ra số tiền đó và nghĩ rằng nó có lợi cho công việc kinh doanh của họ – Vậy thì tại sao không?

 

KIỂM TRA TÍNH TƯƠNG THÍCH

  • Chức năng mũi tên – CanIUse
  • Định vị địa lý – CanIUse
  • Tìm nạp – CanIUse

Ví dụ này hoạt động với hầu hết các trình duyệt hiện đại

 

LIÊN KẾT và THAM KHẢO

  • API định vị địa lý Javascript – MDN
  • Hệ thống đăng nhập người dùng đơn giản với PHP MySQL – Code Boxx
  • Hệ thống quản lý vai trò người dùng đơn giản với PHP MySQL – Code Boxx
  • Nhận tọa độ GPS & Tạo bản đồ trong Javascript – Code Boxx
  • Cần bản đồ?
    • bản đồ Google
    • Bản đồ TẠI ĐÂY
    • Bản đồ Apple
    • bản đồ Bing
    • Tờ rơi (Mở bản đồ đường phố)
    • Bản đồ
    • hộp bản đồ
    • Lớp mở
    • rừng sấm sét
    • bản đồ. nhị hoa. com

 

HƯỚNG DẪN YOUTUBE

 

KẾT THÚC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến phần cuối của hướng dẫn này. Tôi hy vọng rằng nó đã giúp bạn với dự án của bạn và nếu bạn muốn chia sẻ bất cứ điều gì với hướng dẫn này, xin vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc

Làm cách nào để triển khai theo dõi trong PHP?

Làm theo các bước bên dưới. Tạo mã theo dõi Analytics. Tạo tập tin PHP. Tải tệp PHP lên máy chủ của bạn. .
Nhận mã theo dõi. .
Tạo một tệp PHP. .
Tải lên tệp PHP trong máy chủ. .
Thêm thẻ PHP trong trang web. .
Xác minh triển khai PHP của Analytics

Làm cách nào để theo dõi vị trí người dùng trong PHP?

Phương thức getCurrentPosition() được sử dụng để lấy vị trí của khách truy cập và phương thức showLocation() được sử dụng để lấy địa chỉ của khách truy cập từ getLocation. php tập tin sử dụng Ajax. Mã HTML. Sau khi nhận được vị trí của khách truy cập, địa chỉ sẽ được hiển thị trên trang web ( #location span)

Làm cách nào để tạo trình theo dõi GPS của riêng bạn?

Cách tạo Trình theo dõi GPS .
Bước 1. Mua bộ chuyển đổi USB 12v sang 5v. .
Bước 2. Mua điện thoại Android cũ. .
Bước 3. Mua thẻ SIM. .
Bước 4. Tải phần mềm theo dõi. .
Bước 5. Cung cấp cho thiết bị của bạn một nguồn điện. .
Bước 6. Theo dõi xe của bạn

Mô-đun GPS và GSM là gì?

Mô-đun GPS lấy thông tin vị trí từ các vệ tinh ở dạng vĩ độ và kinh độ. Bộ vi điều khiển xử lý thông tin này và gửi đến modem GSM. Modem GSM sau đó gửi thông tin đến điện thoại di động của chủ sở hữu