数据发布到PHP脚本时的奇怪之处

数据发布到PHP脚本时的奇怪之处,php,android,mysql,post,httpclient,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-gene

我使用以下代码将数据从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
  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处理这些数据。

我猜register\u globals已关闭(这很好)

您必须通过$_POST['username'](当然是在telepost.php中)对用户名进行寻址

好的(在你发布了你的php脚本之后,我想我明白了)。 你说“去后我看不到我的用户名,但数据上传正确”

-->是的,这种行为是正确的。 您没有向php脚本传递任何POST参数,因此$\u POST['username']为空

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

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

如果数据进入数据库,那么我们需要查看telejoke.php,因为java代码没有问题。为什么不发布您的php代码?这个客户机代码对解决服务器代码中的问题没有多大帮助。单击按钮确实有效。上传后我可以看到数据库中的数据。EditText笑话用于
nameValuePairs.add(新的BasicNameValuePairs(“笑话”,笑话.getText().toString())当我从我的应用程序中调用脚本,然后转到时,它是否应该响应上一个发布的笑话的用户名?如果是这样的话,它就不会发生。稍后我会担心用户注入,但感谢您的提醒。不会,因为这是一个新请求(默认情况下http为无状态->未存储任何信息),因此您必须将请求参数传递给脚本,否则不会发生任何事情。但您可以创建一个页面,比如ListJones.php,在这里您可以看到存储在数据库中的所有笑话。谢谢你的帮助:P