[PHP] UPDATED - 03.07 - Javascript an PHP

Dieses Thema im Forum "Webentwicklung" wurde erstellt von freakZ, 2. Juli 2012 .

Schlagworte:
  1. 2. Juli 2012
    Zuletzt bearbeitet: 3. Juli 2012
    UPDATED - 03.07 - Javascript an PHP

    hi,

    folgendes snipped hab ich gestestet und für mich minimiert
    Code:
    <!DOCTYPE html>
    <html>
    <body>
    <p id="demo">Click the button to get your coordinates:</p>
    <button onclick="getLocation()">Try It</button>
    <script>
    var x=document.getElementById("demo");
    function getLocation()
     {
     if (navigator.geolocation)
     {
     navigator.geolocation.watchPosition(showPosition);
     }
     else{x.innerHTML="Geolocation is not supported by this browser.";}
     }
    function showPosition(position)
     {
     x.innerHTML="Latitude: " + position.coords.latitude + 
     "<br />Longitude: " + position.coords.longitude; 
     }
    </script>
    </body>
    </html>
    
    

    Update.:
    Habt ihr tipps - ich möchte immer wenn ein user was in die db inserted die long und lat mit eintragen - ist ein kleiner ajax chat wie löse ich das am besten.
    Am besten wäre es zu includen denke ich und dann $long $lat zu haben - bitte helft mir!
     
  2. 6. Juli 2012
    AW: UPDATED - 03.07 - Javascript an PHP

    Du könntest deinen Aufruf deine Variablen an xajax weitergeben, der dir dann die Serverseitige Verarbeitung mittels PHP zur Verfügung stellt, um DB-Einträge vorzunehmen.

    Siehe die Beispiele von xajax: http://www.xajaxproject.org/

    Alternativ kannst du auch andere js-Bibliotheken verwenden, wie z.B. jQuery um nen Ajax-Query abzusetzen und deine Variablen an eine verarbeitende PHP-Datei zu schicken.
     
  3. 7. Juli 2012
    Zuletzt bearbeitet: 9. Juli 2012
    AW: UPDATED - 03.07 - Javascript an PHP

    index.html:
    HTML:
    <!DOCTYPE html>
    <meta charset="UTF-8">
    <title>Geo</title>
    <style>output { font-family: sans-serif; font-size:14pt; }</style>
    
    <output></output>
    
    <script>
     (function(win, doc) {
     var out = doc.querySelector('output');
     
     if (!('geolocation' in win.navigator)) {
     out.value = 'Leider nein.';
     return;
     }
     
     var sync = true;
     function done() { sync = true; }
     
     function copy(coords) {
     var res = {};
     
     [ 'latitude', 'longitude', 'altitude', 'accuracy', 
     'altitudeAccuracy', 'heading', 'speed' ].forEach(
     function(k) { res[k] = coords[k]; }
     );
     
     return res;
     }
     
     win.navigator.geolocation.watchPosition(
     function(pos) {
     if (!sync) return; // wir warten noch auf die letzte ajax anfrage!
     sync = false;
     
     var coords = pos.coords;
     
     // ausgabe
     out.value = 'lat: ' + coords.latitude + '; lon: ' + coords.longitude;
     
     var xhr = new XMLHttpRequest;
     xhr.open('POST', 'script.php', true);
     xhr.withCredentials = true;
     
     xhr.setRequestHeader('Content-type', 'text/json; Charset=UTF-8');
     xhr.addEventListener('load', done, false);
     xhr.addEventListener('error', done, false);
     xhr.addEventListener('abort', done, false);
     
     xhr.send(JSON.stringify(copy(coords)));
     }
     ); 
     })(window, document);
    </script>
    script.php
    PHP:
    <? php

    $inp 
    file_get_contents ( 'php://input' );
    $pos  json_decode ( $inp true );

    // $pos verarbeiten ...
    // z.b.:

    file_put_contents 'current_lat_lon.log' $pos [ 'latitude' ] .  ' | '  $pos [ 'longitude' ]);

     
  4. 7. Juli 2012
    AW: UPDATED - 03.07 - Javascript an PHP

    Hallo,

    danke verstehe leider nur bahnhof , warum das via json_decode reinkommt und man nicht direkt $pos['latitude'] . ' | ' . $pos['longitude'] ausgeben kann - so kann ich das direkt in die mysql knallen .. ;(( tut mir leid versteh es nur leider überhaupt nicht .. schongarnicht weil current_lat_lon.log hier erwähnt ist.
     
  5. 7. Juli 2012
    AW: UPDATED - 03.07 - Javascript an PHP

    du solltest wirklich (noch einmal?) die Grundlagen von PHP und auch von Javascript lernen!

    Wenn ich schon so etwas lese wie "direkt in die mysql knallen"

    Du wirst die freuen wenn du die Daten direkt in die Datenbank schickst ohne sie vorher zu sichern und bald jemand das ausnutzt um deine Datenbank zu löschen :]

    file_put_contents nutz Murdoc nur als Beispiel um die Daten auf dem Server in eine Datei zu schreiben, dort kommt dein Mysql-Code hin.


    json_decode muss du nutzen da der Wert in $inp ein STRING ist.
    Der STRING kommt von diesem Code im Javascript JSON.stringify(copy(coords)) ein Object kann nicht einfach von Javascript nach PHP gesendet werden, daswegen Konvertiert man ihn in einen STRING (JSON), das versteht auch PHP.
     
  6. 7. Juli 2012
    AW: UPDATED - 03.07 - Javascript an PHP

    @Nanobyte.:
    Danke für dein Feedback jedoch "direkt in die mysql knallen" bedeutet nichts anderes als in die mysql schreiben wie du richtig sagtest.

    Ausserdem woher nimmst du das wissen, dass DU sagst "Du wirst die freuen wenn du die Daten direkt in die Datenbank schickst ohne sie vorher zu sichern und bald jemand das ausnutzt um deine Datenbank zu löschen" - dafür gibt es diverse "trau keinem user" methoden

    Verstehe ausserdem nicht warum man das ganze nicht automatisch via ajax / jquery an eine url senden kann mittels POST und dort die geodaten aufbereitet / speichert what ever ..
     
  7. 7. Juli 2012
    Zuletzt bearbeitet: 7. Juli 2012
    AW: UPDATED - 03.07 - Javascript an PHP

    du kannst dir aus dem coords object auch nen query-string basteln wenns für dich einfacher is ...
    ich schick das ding in meinem beispiel halt direkt als json über den äther.

    Code:
    *schipp*
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; Charset=UTF-8');
    
    *schnipp*
    
    var query = [], coords = copy(coords);
    Object.keys(coords).forEach(function(k) { query.push(k + '=' + encodeURIComponent(coords[k])); });
    xhr.send(query.join('&'));
    habs ned geprüft, da im editor getippt und weils mir einfach zu blöd is
    auf serverseite hast dann $_POST['...']
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.