我開始學習Android編程,我完全新手到PHP。Android的形式爲PHP,PHP文件不發送字段在Android形式輸入
在發佈這個問題之前,我已經嘗試了所有與它相關的答案,而且沒有人爲我工作,所以我決定發佈一個新問題。
我有一個應用程序,其中用戶輸入一個表單並將其內容通過電子郵件發送給我。
我成功收到郵件,但只在php中定義了字符串。我也希望來自用戶的輸入也被傳送到我的電子郵件。
請檢查下面的php代碼和java代碼,並提出一個合適的建議。
電子郵件收到:
「姓:姓名:電郵地址:您的電話:」
沒有Android的形式向用戶輸入。 :(
email2.php
<?php
$ed1=$_POST['fname'];
$ed2=$_POST['lname'];
$ed3=$_POST['email'];
$ed4=$_POST['phone'];
$to="[email protected]";
$subject="android_email";
$from="$ed3";
$body="First Name:" .$ed1."\n Last Name:" .$ed2. "\n Your Email:".$ed3."\n Your Phone:" .$ed4."\n";
$header="From :".$from."\n";
if(mail($to,$subject,$body,$header))
{
echo "Thank you";
}
else
{
echo"Try Again";
}
?>
FormActivity.java
package com.example.getpost;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.ByteArrayBuffer;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class FormActivity extends Activity {
TextView txtvw;
String text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_form);
txtvw = (TextView)findViewById(R.id.textView1);
text = "";
postData();
}
public void postData(){
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.amit.comeze.com/email2.php");
EditText ed1 = (EditText)findViewById(R.id.editText1);
EditText ed2 = (EditText)findViewById(R.id.editText2);
EditText ed3 = (EditText)findViewById(R.id.editText3);
EditText ed4 = (EditText)findViewById(R.id.editText4);
try {
// Add your data
List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>();
nameValuePairs.add(new BasicNameValuePair("fname", ed1.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("lname", ed2.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("email", ed3.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("phone", ed4.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
InputStream is = response.getEntity().getContent();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(20);
int current = 0;
while((current = bis.read()) != -1){
baf.append((byte)current);
}
/* Convert the Bytes read to a String. */
text = new String(baf.toByteArray());
txtvw.setText(text);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
}
而且,當形式機器人被打開了 「THANKYOU」 信息時在啓動時即使形式是空的並且我猜郵件也沒有發送
我需要謝謝你的消息出現在用戶按下窗體上的提交按鈕,並且所有的驗證錯誤(不是cod編輯在PHP代碼給出)出現在用戶按下提交按鈕後。
期待您的寶貴意見,這將幫助我很大,將不勝感激。
此致敬禮。
AsyncTask確實是一個定時器...而DoInBackground()是必須在代碼中實現的。謝謝你把它帶給我注意。 – amit
我遵循這裏的Asynctask教程 - mobiledevtuts.com/android/android-http-with-asynctask-example。我得到的代碼正確工作,吐司也顯示爲編碼。我修改了下面的php文件,以接收我的電子郵件中的內容,如下所示,但我沒有收到電子郵件。你可以把光放在這個..'<?php //從應用程序的http請求接收數據$ data = $ _ POST [「myHttpData」]; $主題= 「的AsyncTask」; $到= 「[email protected]」; $ body =「名字:。$ data。」; if(mail($ to,$ subject,$ body)){echo「SENT」; } else {echo「TRY AGAIN」; }?>' – amit
嘿,阿米,很高興我能幫上忙。我建議你在SO標題下發佈一個新的問題,以便在這個問題上更有經驗的人可以幫助你! – Leonardo