Я пытаюсь сделать вход на свой сайт через приложение AnAndroid. По какой-то причине он всегда не может войти в систему.
Вот мой метод входа для приложения:
private void login() { //this method returns false HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://mysite.com/mobileauth.php"); JSONObject jsonObject = new JSONObject(); try { List nameValuePairs = new ArrayList(2); jsonObject.put("username", "user1"); jsonObject.put("password", "12345"); nameValuePairs.add(new BasicNameValuePair("jsonString", jsonObject.toString())); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); String responseStr = org.apache.http.util.EntityUtils.toString(response.getEntity()); statusText.setText(responseStr); } catch (ClientProtocolException e) { statusText.setText(e.toString()); } catch (IOException e) { statusText.setText(e.toString()); } catch (JSONException e) { statusText.setText(e.toString()); } }
Я создал конкретный файл для входа в мобильный телефон, такой как Android.
Вот мой файл аутентификации на сервере:
$host="*"; // Host name $username="*"; // Mysql username $password="*"; // Mysql password $tbl_name="users"; // Table name $db_name="database"; $link = mysql_connect($host, $username, $password) or die("Connection Error"); $db = mysql_select_db("$db_name")or die("Connection Error"); $myusername = $_REQUEST['username']; $mypassword = $_REQUEST['password']; $sql="SELECT * FROM $tbl_name WHERE username='$myusername' AND paswd='$mypassword'"; $result = mysql_query($sql); $count = mysql_num_rows($result); if ($count == 1) { $timeUpdateQuesry="UPDATE users SET lastLogin=Now() WHERE username='$myusername' AND paswd='$mypassword'"; mysql_query($timeUpdateQuesry); echo("true"); } else { //happend without leaving page echo ("false"); }
По какой-то причине я всегда получаю false
в своем статусе TextView.
Буду признателен за любую помощь
Благодаря,
Удалите все JSON из вашего кода Android. Вы не получаете его как JSON на стороне PHP, поэтому это, вероятно, является основной причиной. NameValuePairs должен работать нормально.
Ваш POSTing объект JSON, но пытается проанализировать переменные REQUEST (т.е. переменные $ _GET / $ _ POST / $ _ COKIE).
Не слишком уверен в Java, но я подозреваю, что он назначил сериализованный объект JSON переменной post с именем jsonString. (Вы можете легко проверить, написав простой скрипт PHP, чтобы сбрасывать все $ _POST, $ _GET и $ HTTP_RAW_POST_DATA)
В этом случае для получения значений в php:
$jsonString=json_decode($_POST['jsonString']); $myusername = $jsonString['username']; $mypassword = $jsonString['password'];