0

我正在尝试通过 php 从 android 设备向 mysql 发送地理位置数据。由于某种原因,它不起作用。它不会出现在 mySQL 数据库中。难道我做错了什么?

AS3

var myLat;
var myLong;
if (Geolocation.isSupported){
    var my_geo:Geolocation = new Geolocation();
    my_geo.addEventListener(GeolocationEvent.UPDATE, onGeoUpdate);
    my_geo.setRequestedUpdateInterval(100);
} 
function onGeoUpdate(event:GeolocationEvent):void {
    myLat = event.latitude;
    myLong = event.longitude;
    test1.text = myLat;
    test2.text = myLong;
}
// Send Geolocation
function sendGps():void {
    var variables:URLVariables = new URLVariables();
    var varSend:URLRequest = new URLRequest("http://www.mypage.com/handler.php");
    varSend.method = URLRequestMethod.POST;
    varSend.data = variables;
    var varLoader:URLLoader = new URLLoader;
    varLoader.dataFormat = URLLoaderDataFormat.TEXT;
    variables.myrequest = "write_gps";
    variables.username = userName;
    variables.lati = myLat;
    variables.longi = myLong;
    varLoader.load(varSend);    
}

var myTimer:Timer = new Timer(1000);
myTimer.addEventListener(TimerEvent.TIMER, runItAll);
myTimer.start();
function runItAll(event:TimerEvent):void {
     sendGps();
}

PHP

if (isset($_POST['myrequest']) && $_POST['myrequest'] == "write_gps") {
    $username = $_POST['username'];
    $latitude = $_POST['lati'];
    $longitude = $_POST['longi'];
    require_once "connect_to_mysql.php";
    $update_sql = mysql_query("UPDATE current SET longitude='$longitude',     latitude='$latitude' WHERE username='$username'");
    mysql_close();
};
4

2 回答 2

0

您的代码对 SQL 注入是开放的,并且在与 MySQL 交互时您应该始终使用 PDO( http://php.net/manual/de/ref.pdo-mysql.php )。

当您在 PHP 代码中执行 print_r($_POST) 时,您是否获得了所需的数据?

于 2013-10-01T12:59:42.187 回答
0

在 AS3 中,您的代码部分varLoader不受垃圾收集器的保护,当URLLoader不发送任何数据时可能会导致问题。为了防止varLoaderGC,您可以添加Event.COMPLETE没有弱引用的侦听器:

varLoader.addEventListener(Event.COMPLETE, onLoaderComplete)

private function onLoaderComplete(event:Event):void
{
    URLLoader(event.target).removeEventListener(event.type, onLoaderComplete);
}

我还建议您使用URLLoaderDataFormat.VARIABLES而不是,URLLoaderDataFormat.TEXT因为您发送 URL 编码参数。

于 2013-10-01T13:55:30.057 回答