2011-11-11 74 views
1

下面是PHP服務器的代碼:試圖將數據發佈到PHP,但數據沒有被正確讀取

?php 


    //from the online tutorial: 

    $usr = "bikemap"; 
     $pwd = "pedalhard"; 
     $db = "test"; 
     $host = "localhost"; 

     $cid = mysql_connect($host,$usr,$pwd); 

     if (!$cid) { echo("ERROR: " . mysql_error() . "\n"); } 

     $userID = $_POST['userID']; 
     $date = $_POST['date']; 
     $time = $_POST['time']; 

     $lat = $_POST['lat']; 
     $long = $_POST['longi']; 
     $alt = $_POST['alt']; 
     mysql_select_db("test"); 
     mysql_query("INSERT INTO gpsdata (userID, date, time, lat, longi, alt) VALUES ('$userID', '$date', '$time', '$lat','$longi','$alt') ") or die(mysql_error()); 

     /*$SQL = " INSERT INTO gpsdata "; 
    $SQL = $SQL . " (userID, date, time, lat, longi, alt) VALUES "; 
    $SQL = $SQL . " ('$userID', '$date', '$time', '$lat','$longi','$alt') "; 
    $result = mysql_query("$SQL"); 

    if (!$result) { 
     echo("ERROR: " . mysql_error() . "\n$SQL\n"); } */ 

    //echo ("New Link Added\n"); 



    mysql_close($cid); 
    ?> 

從我的Android應用程序發送的數據:

[userID=Loren, date=today, time=now, lat=bit 1, longi=bit 2, alt=bit 3] 

出於某種原因,我PHP不讀取從Android應用程序(如上所示)發送的數據,但如果我從本地網頁發送相同的數據發佈的數據解析應該。

public static void sendAccelerationData(String userIDArg, String dateArg, String timeArg, 
      String timeStamp, String lat, String longi, String alt) 
    { 


     //Add data to be send. 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(6); 
     nameValuePairs.add(new BasicNameValuePair("userID", userIDArg)); 
     nameValuePairs.add(new BasicNameValuePair("date",dateArg)); 
     nameValuePairs.add(new BasicNameValuePair("time",timeArg)); 
     //nameValuePairs.add(new BasicNameValuePair("timeStamp",timeStamp)); 

     nameValuePairs.add(new BasicNameValuePair("lat",lat)); 
     nameValuePairs.add(new BasicNameValuePair("longi",longi)); 
     nameValuePairs.add(new BasicNameValuePair("alt",alt)); 

     //this.sendData(nameValuePairs); 
     try 
     { 
      TextLog.addLogStuff("SERV Trying to connect to Server"); 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new  
      HttpPost("http://myserver.php"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      Log.i("ServerConn", response.getStatusLine().toString()); 
      TextLog.addLogStuff("SERV PostData: " +response.getStatusLine().toString()); 
       //Could do something better with response. 
     } 
     catch(Exception e) 
     { 
      Log.e("log_tag", "Error: "+e.toString()); 
      TextLog.addLogStuff("SERV Connection error: " +e.toString()); 
     } 
    } 
+0

把那個教程拿回來,並將其折磨到死亡。它留給你敞開SQL注入攻擊 –

+3

cough..SQL注射!.. ahem..cough –

+0

它們是什麼想說的是去使用PDO ......認真壽傢伙..一個教程,你不關心sql注入 – Zak

回答

0

我需要看到你正在使用Android中張貼的數據就知道肯定的代碼,但它似乎是正確的格式Android應用不發佈該數據。你應該這樣做:Android, Java: HTTP POST Request

+0

添加上面的Android代碼 –

0

正如@約翰沃森說,那是因爲你的Android應用程序不發送數據,因爲「本地網頁」。 你可以發佈你的android應用程序代碼(我不會幫忙),或者將發送的數據記錄到其他地方,看看有什麼不對。將它們寫入日誌文件或通過郵件發送。我建議記錄它。

<?php 
$post = var_export($_POST, true); 
$f= fopen('log', 'a+'); 
fwrite($f, $post); 
fclose($f); 

需要正確的文件權限。 然後看你的日誌文件'日誌'

如上所述,這個腳本不適用於生產,因爲發送的數據需要檢查/轉義以避免sql注入。

+0

我收到此行的錯誤信息:post = var_export($ _ POST); 對不起,我一個小白 –

+0

遺憾,答案編輯 – 7seb

+0

file_put_contents( 「post.txt」 的print_r($ _ POST,真));獲取數組()你的日誌根本沒有得到我的文本。 –

0

我認爲服務器重定向搞亂了信息。

相關問題