数据POST到PHP脚本时的怪异

时间:2012-04-09 17:48:39

标签: php android mysql post httpclient

我使用以下代码将数据从Android应用程序发布到PHP脚本:

public class Upload extends Activity implements OnClickListener {
EditText joke;
Button upload = (Button) findViewById(R.id.bUpload);
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.upload);
    upload.setOnClickListener(this);
}
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.bUpload:
        uploadJoke();
        break;
    }

}
private void uploadJoke() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://xxxx/telejoke.php");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("username", "test"));
        nameValuePairs.add(new BasicNameValuePair("joke", joke.getText().toString()));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
    } catch (IOException e) {
    }
}

此代码将数据发送到PHP脚本,然后将其发送到SQL数据库。此数据显示在SQL数据库中,但如果我尝试echo $username之类的内容,则在转到http://xxxx/telejoke.php时,它不会显示用户名。

PHP脚本:

<?php
  include 'DBConnect.php';
  include 'JokeValidate.php';

  $username = $_POST['username'];
  $joke = $_POST['joke'];
  $dbname = 'Telejoke';
  mysql_select_db($dbname);

  echo $username. " " . $joke;

  if (validate()){
    $query = "INSERT INTO jokes (username, joke) VALUES ('$username','$joke')";
    mysql_query($query) or die('Error, insert query failed');
  }
  mysql_close($conn);
?>

请帮忙。我想用PHP对发布的数据做一些事情,只需将其发送到数据库。

1 个答案:

答案 0 :(得分:2)

我想register_globals已关闭(很好)!!!

你必须通过$ _POST ['username']来处理用户名(当然是在telepost.php中)。

OKAY(在你发布你的php脚本之后我想我得到了它)。 您说“转到http://xxx/telejoke.php后,我无法看到我的用户名,但数据已正确上传”。

- &GT;是的,这种行为是正确的。 您没有将任何POST参数传递给您的php脚本,因此$ _POST ['username']为空。

- &GT;但是,如果您通过应用程序调用脚本,则将所需的POST参数(用户名,笑话等)传递给您的脚本。因此,它可以在您的数据库中正确编写数据。

此外,您应该优化SQL /脚本以防止SQL注入。 糟糕的用户可能会对您的网站造成损害(例如删除所有笑话等)