2013-05-13 4 views
0

Я создал веб-сервис под названием «login.php», где я отправляю информацию об идентификаторе и пароле от android. Webservice успешно находит идентификатор и пароль. Мне нужно сравнить этот идентификатор и пароль с теми, которые уже присутствуют в базе данных, и проверить, существуют они или нет. Если они это сделают, мне нужно отправить обратно сообщение «okay» обратно в android, чтобы я мог начать новое намерение. Если идентификатор и пароль не существуют, я хочу показать ошибку. Ниже мой код.Как получить данные из базы данных обратно в android

Login.java

HttpPost httppost = new HttpPost("http://abc.com/webservice/Login.php"); 
      try { 
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

        nameValuePairs.add(new BasicNameValuePair("userid", et1.getText().toString())); 
        nameValuePairs.add(new BasicNameValuePair("pass", et2.getText().toString()));      
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
        client.execute(httppost); 
        Log.d("valueeeeeeeeeeee", et6.getText().toString()); 


       } catch (ClientProtocolException e) { 
         // TODO Auto-generated catch block 
        Log.d("exppppppp", "msg"); 
       } catch (IOException e) { 
         // TODO Auto-generated catch block 
        Log.d("exppppppp", "msg"); 
       } 

login.php:

<?php 
$host = "localhost"; 
$user = "user"; 
$pass = "pass"; 
$connection = mysql_connect($host,$user,$pass) or die (mysql_errno().": ".mysql_error()."<BR>"); 

$userid = $_POST['userid']; 
$pass = $_POST['pass']; 

$db_select=mysql_select_db("my_db"); 
if(!$db_select){ 
    die(mysql_error()); 
    echo "error"; 
}  

Что запрос я должен работать здесь, чтобы проверить базу данных против конкретного идентификатора и пароля он и за полученный отправить обратно «хорошо сообщение "в приложение для Android. Благодаря

ответ

1

Вы можете попробовать что-то вроде этого:

Java:

HttpPost httppost = new HttpPost("http://abc.com/webservice/Login.php"); 
     try { 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

       nameValuePairs.add(new BasicNameValuePair("userid", et1.getText().toString())); 
       nameValuePairs.add(new BasicNameValuePair("pass", et2.getText().toString()));      
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
//This piece of code should do the trick 
HttpResponse response = client.execute(httppost); 
HttpEntity respEntity = response.getEntity(); 

if (respEntity != null) { 
    // EntityUtils to get the reponse content 
    String content = EntityUtils.toString(respEntity); 

} 
       Log.d("valueeeeeeeeeeee", et6.getText().toString()); 


      } catch (ClientProtocolException e) { 
        // TODO Auto-generated catch block 
       Log.d("exppppppp", "msg"); 
      } catch (IOException e) { 
        // TODO Auto-generated catch block 
       Log.d("exppppppp", "msg"); 
      } 

PHP:

<?php 
    $host = "localhost"; 
    $user = "user"; 
    $pass = "pass"; 
    $connection = mysql_connect($host,$user,$pass) or die (mysql_errno().": ".mysql_error()."<BR>"); 

    $userid = mysql_real_escape_string($_POST['userid']); 
    $pass = mysql_real_escape_string($_POST['pass']); 

    $db_select=mysql_select_db("my_db"); 
    if(!$db_select){ 
     die(mysql_error()); 
     echo "error"; 
    } 
    $query = "select count(1) as count_users from user_table where user_field = '".$userid."' and pass_field ='".$pass."'"; 

    $result = mysql_query($query); 
    $row = mysql_fetch_assoc($result); 

    if($row['count_users']>0) 
    { 
     echo "Okey"; 
    } 
    else 
    { 
     echo "Not found"; 
    } 

    ?> 

PS: Пожалуйста, не используйте mysql_extension, пойти на MySQLi или PDO вместо этого.

+0

Мне нужно получить «okey», который вы эхом отдавали в свое приложение для Android (не имеет значения, если его строка или int или без разницы). Достаточно ли кода, который вы указали, или мне нужно добавить еще немного кода на стороне Android? Заранее спасибо. –

+0

Это дает мне сообщение «okey» независимо от того, присутствуют ли данные или нет в таблице. –

+0

Я обновляю ответ ... просто попробуйте добавить Java-код. – Hackerman

0

Я бы порекомендовал делать то, что вы есть. Инициировать HTTP post/get запрос на страницу PHP, которая подключается к базе данных MySQL с помощью mysqli (mysql_query устарела). Затем вы можете сформировать результат в ответ JSON, который будет передан обратно и может быть легко проанализирован в android для извлечения любой необходимой информации. Я рекомендовал бы эти учебники:

Connect android with PHP and MySql, JSON in android и PHP and MySQLi

Я использовал эти учебники и удалось получить то, что вы пытаетесь сделать работу без особых трудностей.

Вы можете получить доступ к пройденному переменным присылает из Android с помощью

$ _GET [ 'идентификатора пользователя'] и $ _GET [ 'прохода']

и действительный запрос SQL будет

Вы должны остерегаться, хотя использование непроверенного ввода непосредственно в операторах SQL оставляет вас восприимчивыми к атакам SQL-инъекций и их следует избегать, если это вообще возможно. В целях исследования и экспериментирования на частном сервере вы должны быть в порядке. Имейте в виду, что перед распространением программного обеспечения с подключением к серверу существует множество проблем с безопасностью.

+0

Как вы можете видеть, я только хотел, чтобы на андроидном конце было получено простое сообщение, и я получил его. Что делать, если я хочу получать фактические данные, такие как имя, местоположение, время и т. Д. Из моей базы данных? Можете ли вы ответить на это? Или я должен начать новую тему? Благодарю. –

+0

Вот где находится JSON. Если вы посмотрите на ссылку в ответе, Connect android с PHP и MySql, в разделе 6b показано, как читать базу данных, создавать массив JSON и отправлять его обратно на клиентскую сторону. Существует также класс json Parser о том, как получить информацию в приложении Android, а также классы, которые используют его, чтобы показать, как это работает. Все, что вам нужно, содержится в трех ссылках, которые я опубликовал в своем ответе. Я бы посоветовал вам читать их, тогда, если у вас есть другие вопросы, измените оригинал, чтобы добавить больше информации или лучше, создайте новый вопрос – o0rebelious0o

Смежные вопросы