1

私はすべてのインターネットを調査し、アンドロイドからphpサーバーへのhttp投稿の使用方法に関する記事を見つけました。Android から Web サイトにデータを渡す方法の例を探しているわけではありません。PHP で POST 変数が常に NULL である理由を探しています。PHPで確認する必要がある設定はありますか(出力バッファリング、最大投稿などを確認しました)、またはPOST変数に対してHTTP 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 に答える