اذهب إلى المحتوى
  • 0

إرسال صفحة HTML لمعرفة موقع المستخدم في PHP

Gaming Pro

السؤال

Recommended Posts

  • 0

يمكن أن تستعمل HTML Geolocation API التي تدعمها المتصفحات، بحيث نقرأ موقع المستخدم من مكانه من خلال جافاسكربت في المتصفح، ثم نرسل هذه البيانات للخادم (صفحة PHP خاصتنا)

  • geocoordinates.php ملف PHP لمعالجة الطلبية
  • latitude و longitude إحداثيات خطوط الطول و العرض
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>صفحة الموقع</title>
  <!-- تضمين جيكويري -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  <script>
    // جلب الموقع
  function getLocation() {
      if (navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(savePosition, positionError, {timeout:10000});
      } else {
          var x = document.getElementById("error-location");
         x.innerHTML = "Geolocation is not supported by this browser."; // متصفح غير مدعوم
      }
  }

  // معاجلة بيانات الموقع في حال خطأ
  function positionError(error) {
      var errorCode = error.code;
      var message = error.message;

      alert(message);
  }
// إرسال بيانات الموقع للخادم
  function savePosition(position) {
    // نستعمل جيكويري للسهولة
    // نعمل طلب post
            $.post("geocoordinates.php", {lat: position.coords.latitude, lng: position.coords.longitude});
  }
  </script>
</head>
<body>
    <button onclick="getLocation();"> مشاركة موقعي </button>
  <p id="error-location"></p>
</body>
</html>

ثم معالجة الطلبية في ملف geocoordinates.php

<?php

// التحقق من استقبال بيانات الطول و العرض
if(isset($_POST['lat'], $_POST['lng'])) {
  // تخزين القيم في متغيرات
    $lat = $_POST['lat'];
    $lng = $_POST['lng'];
 // لعرض الخريطة
    $url = sprintf("https://maps.googleapis.com/maps/api/geocode/json?latlng=%s,%s", $lat, $lng);

    $content = file_get_contents($url); // الحصول على البيانات على هيئة json content

    $metadata = json_decode($content, true); //json فك ترميز

    if(count($metadata['results']) > 0) {
        // مثال لشكل الطلبية
        // https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452
        $result = $metadata['results'][0];

        // احفظ في قاعدة البيانات
        echo $result['formatted_address'];

    }
    else {
        // لم يتم استلام بياناتك لوجود خطأ
    }
}

?>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...