Skip to content

Geo Loacation

PHP
1 1 338
  • In den exif Daten können sich die GPS Daten des Standortes verstecken. Die wollen wir haben 😉

     <?php
       
      //Test ob in der Datei GPS Daten drin sind   
      $img = '../upload/IMG_20181117_104123_ergebnis_34.jpg'; //or $fileName='xxxxxxxxx';
      $test = exif_read_data($img, 0, true);
      var_dump($test);
     
     echo "<br>";
     echo "<br>";
     
      $img = '../upload/IMG_20181206_153916.jpg'; //or $fileName='xxxxxxxxx';
      $test = exif_read_data($img, 0, true);
      var_dump($test);
     
           
      /**
      * get_image_location
      * Returns an array of latitude and longitude from the Image file
      * @param $image file path
      * @return multitype:array|boolean
      */
     function get_image_location($image = ''){
         $exif = exif_read_data($image, 0, true);
         if($exif && isset($exif['GPS'])){
             $GPSLatitudeRef = $exif['GPS']['GPSLatitudeRef'];
             $GPSLatitude    = $exif['GPS']['GPSLatitude'];
             $GPSLongitudeRef= $exif['GPS']['GPSLongitudeRef'];
             $GPSLongitude   = $exif['GPS']['GPSLongitude'];
             
             $lat_degrees = count($GPSLatitude) > 0 ? gps2Num($GPSLatitude[0]) : 0;
             $lat_minutes = count($GPSLatitude) > 1 ? gps2Num($GPSLatitude[1]) : 0;
             $lat_seconds = count($GPSLatitude) > 2 ? gps2Num($GPSLatitude[2]) : 0;
             
             $lon_degrees = count($GPSLongitude) > 0 ? gps2Num($GPSLongitude[0]) : 0;
             $lon_minutes = count($GPSLongitude) > 1 ? gps2Num($GPSLongitude[1]) : 0;
             $lon_seconds = count($GPSLongitude) > 2 ? gps2Num($GPSLongitude[2]) : 0;
             
             $lat_direction = ($GPSLatitudeRef == 'W' or $GPSLatitudeRef == 'S') ? -1 : 1;
             $lon_direction = ($GPSLongitudeRef == 'W' or $GPSLongitudeRef == 'S') ? -1 : 1;
             
             $latitude = $lat_direction * ($lat_degrees + ($lat_minutes / 60) + ($lat_seconds / (60*60)));
             $longitude = $lon_direction * ($lon_degrees + ($lon_minutes / 60) + ($lon_seconds / (60*60)));
     
             return array('latitude'=>$latitude, 'longitude'=>$longitude);
         }else{
             return false;
         }
     }
     
     function gps2Num($coordPart){
         $parts = explode('/', $coordPart);
         if(count($parts) <= 0)
         return 0;
         if(count($parts) == 1)
         return $parts[0];
         return floatval($parts[0]) / floatval($parts[1]);
     }
     
     
     $imageURL = "../upload/IMG_20181117_104123_ergebnis_34.jpg";
     //$imageURL = "../upload/IMG_20181201_081430.jpg";
     
     //get location of image
     $imgLocation = get_image_location($imageURL);
     var_dump($imgLocation);
    
    //Fehlerbehandlung
     if ($imgLocation == false) {
         echo "ERROR";
     }
    
     //Ausgabe
     //latitude & longitude
     $imgLat = $imgLocation['latitude'];
     $imgLng = $imgLocation['longitude'];
     echo "<br>";
     echo $imgLat . "<br>";
     echo $imgLng;
    

    Muss noch optimiert werden!

    Quelle: https://www.codexworld.com/get-geolocation-latitude-longitude-from-image-php/

  • Debian - php8.2 security update

    Linux debian linux php
    1
    0 Stimmen
    1 Beiträge
    110 Aufrufe
    Niemand hat geantwortet
  • php8.2 secutity update

    PHP php linux
    1
    0 Stimmen
    1 Beiträge
    163 Aufrufe
    Niemand hat geantwortet
  • PHP Webseite lokal einhängen mit sshfs

    PHP php linux
    1
    2
    0 Stimmen
    1 Beiträge
    83 Aufrufe
    Niemand hat geantwortet
  • PHP Installation

    Angeheftet PHP php
    3
    0 Stimmen
    3 Beiträge
    616 Aufrufe
    FrankMF
    Falls jemand auch die Warnung in Joomla! bezüglich der php Version 7.4 loswerden möchte, installiert kein php8.1. Damit habe ich eine dicke Fehlermeldung. Es müssen wohl sämtliche Erweiterungen und Templates 8.1 unterstützen, was wohl derzeit noch nicht der Fall ist. Nehmt 8.0, das läuft bei mir aktuell. apt install php8.0-common php8.0-mysql php8.0-opcache php8.0-readline php8.0-xml php8.0-xsl php8.0-zip apt install php8.0-cli php8.0-curl php8.0-gd php8.0-intl php8.0-mbstring php8.0-redis apt install php8.0-bcmath php8.0-gmp php8.0-imagick apt install php8.0-fpm
  • PHP Data Objects

    Linux pdo php
    4
    0 Stimmen
    4 Beiträge
    358 Aufrufe
    FrankMF
    Datensatz löschen Voraussetzung ist, das man die ID des zu löschenden Eintrages kennt. $statement = $pdo->prepare("DELETE FROM feinstaub WHERE id = ?"); $statement->execute(array($id)); if ($statement->execute()) { echo "Der DB-Eintrag wurde erfolgreich gelöscht!"; } else { echo "Bitte den Administrator informieren!"; }
  • Yubikey als 2FA

    PHP yubikey php
    3
    1
    0 Stimmen
    3 Beiträge
    424 Aufrufe
    FrankMF
    Die ersten 12 Stellen eines Yubikeys sind immer gleich. Diese 12 Stellen speichern wir in einer Datenbank. $otp = substr ($otpKey, 0, 12); In der Datenbank speichern. //SQL $statement = $pdo->prepare("UPDATE users SET otpKey = :otpKey_neu WHERE id = :id"); $statement->execute(array('otpKey_neu' => $otp, 'id' => $userid)); //Überwachung auf Erfolg if ($statement->execute()) { // DB Eintrag erfolgreich geschrieben echo "YubiKey Passwort erfolgreich gespeichert!"; } else { echo "Datenbank Fehler! Bitte informieren Sie den Administrator."; } Ich hoffe, es hilft dem ein oder anderen sich mit diesem Thema etwas zu beschäftigen.
  • Wichtige Links zum Coden

    PHP php
    1
    0 Stimmen
    1 Beiträge
    421 Aufrufe
    Niemand hat geantwortet
  • Reload einer PHP Seite verhindern

    PHP php
    1
    0 Stimmen
    1 Beiträge
    815 Aufrufe
    Niemand hat geantwortet