1

我研究了所有的互联网,并找到了关于如何使用 http post 从 android 到 php 服务器的文章。我不是在寻找如何将数据从 android 传递到网站的示例。我正在寻找 POST 变量在 PHP 中始终为 NULL 的原因。是否有一些我需要在 PHP 上检查的设置(我已经检查了输出缓冲、最大帖子等)或为 HTTP POST 导入一个类,以便为 POST 变量正确工作。

下面的代码基本上将值插入到 mysql 数据库中。因为 POST 变量是空白的,所以它会插入空白行。这验证了它正在连接到我的服务器/数据库,但没有传递 POST 值。任何想法?=)

以下是代码:

    //Java Code-------------------------------------------------
    public static void executeHttpGet(Context context, String urlName){
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    String postURL = G.GetUrl(urlName);
    HttpPost httpPost = new HttpPost(postURL);
        httpPost.setHeader("Accept", "text/html,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
        httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");

    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

    try {
        nameValuePairs.add(new BasicNameValuePair("value1", "My Name"));
        nameValuePairs.add(new BasicNameValuePair("value2", "My Address"));
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httpPost);

    } catch (ClientProtocolException e) {

    } catch (IOException e) {

    }
} 

    //PHP code ----------------------------------------------------
    connectMySQL();

    mysql_query("
       INSERT INTO myhome(myname,myaddress,createdate)
       VALUES('{$_POST['value1']}','{$_POST['value2']}',NOW())
    ;")
    or die(mysql_error());
4

1 回答 1

0

您可以尝试在 SQL 中使用它们之前打印 $_POST['value1'] 和 $_POST['value2'] 并查看它们打印的内容吗?

为了简单起见,我建议您重写您的 PHP 代码:

connectMySQL();
$value1 = trim($_POST['value1']);
$value2 = trim($_POST['value2']);
if ($value1 != "" && $value2 != "") {
    mysql_query("
       INSERT INTO myhome(myname,myaddress,createdate)
       VALUES('".$value1."','".$value2."',NOW())
    ;")
}

此外,一旦您确认它工作正常,我强烈建议您阅读有关 SQL 注入攻击的内容,并尝试使用绑定变量或参数化查询,而不是直接在 SQL 语句中使用请求参数值。

于 2012-08-12T16:24:33.540 回答