2013-08-21 2 views
0

Я изучаю Android и пытаюсь написать код для проверки имени пользователя и пароля с использованием PHP-скрипта и сервера WAMP. Я продолжаю получать неопределенные ошибки индекса из моего PHP-скрипта. Насколько я могу констатировать, что мой PHP-скрипт не может получить доступ к данным из URL-адреса. Вот соответствующий код. Любая помощь приветствуется.HTTP Post не работает с PHP в android

//build url data to be sent to server 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair("username",username)); 
     nameValuePairs.add(new BasicNameValuePair("password",password)); 

     String result = ""; 
     InputStream is = null; 
     //http post 
     try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://10.0.2.2/PasswordCheck.php"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
     }catch(Exception e){ 
      Log.e("Connection", "Error in http connection "+e.toString()); 
     } 

Вот мой PHP скрипт

<?php 
mysql_connect("localhost", "root", "") or die("could not connect to mysql"); 
mysql_select_db("drop-in") or die("database not found"); 

$username = $_POST["username"]; 
$suppliedPassword = $_POST["password"]; 
$databasePassword = ""; 
$output = "false"; 
$query = mysql_query("SELECT Password FROM users WHERE Username = '$username'") or die("query failed"); 
if(mysql_num_rows($query) > 0){ 
    $row = mysql_fetch_assoc($query); 
    $databasePassword = $row['password']; 
    if($databasePassword == $suppliedPassword) 
    { 
     $output = "true"; 
    } 
} 
    print($output); 
    mysql_close(); 
?> 

А вот картина ответ сервера

http://imgur.com/sQStI2D

EDIT: Так я понял, что даже если PHP скрипт дает эти ошибки переменные $ username и $ password содержат значения, которые мое приложение Android пыталось пройти. Однако наличие этих ошибок по-прежнему возится с моим кодом, потому что HTML для таблиц ошибок отправляется обратно в приложение Android в ответ

ответ

1

Для меня это выглядит так, как будто ваш Android-код не отправляет «имя пользователя» и поля «пароль», что объясняет, почему скрипт PHP не может их найти.

В своем коде, new ArrayList<NameValuePair>();, длина ArrayList может отсутствовать, глядя на этот код sample: он выглядит, как он должен быть new ArrayList<NameValuePair>(2);, вы должны попробовать и посмотреть, что если решает эту проблему.

+0

ArrayList растет по мере необходимости, поэтому это не проблема. Спасибо в любом случае. –

0

Оказывается, это была простая орфографическая ошибка. Я использовал нижний регистр «p» в слове «пароль» в моем цикле, а не в верхнем регистре. Странно, что это вызвало ошибку.

0

Вы можете попробовать json_decode() функции в PHP:

попытаться создать файл на сервере и поместить содержимое андроида запроса в простой текстовый файл, который вы получите выходной массив. в этом файле.

на сервере в .php записи файла ниже код:

<?php 
$data=file_put_content(collect.txt, $_POST); 
// if you got to know object or array name from txt file use it. 
$array=json_decode($data, true) // for array output. 
print_r($array); 
?> 

и если вы не хотите, чтобы читать из файла, который вы можете напрямую использовать, если вы знаете имя массива в объекте JSon

<?php 

$array=json_decode($data) // remove true for use as an object output. 
print_r($array); 
?> 

после того, как ваш массив присваивает значения новым переменным и делает с ними все, что вы хотите. Обновление базы данных или чего-либо в соответствии с вашим запросом