Не удается проверить подлинность - PullRequest
0 голосов
/ 03 июля 2011

В настоящее время я хочу, чтобы пользователь ввел свое имя пользователя и пароль (данные поддельные @MySQL), но это не работает.

My file.php:

<?php
    include("ConnectDatabase.php");
    $Username = $_POST['Username'];
    $Password = $_POST['Password'];

    $q = mysql_query("SELECT Username, Password FROM Users
                    where Username = '".$Username."' and
                    Password = '".$Password."'");

    if(mysql_num_rows($q) > 0){
        print json_encode($q);
    }else{
        print "1";
    }
     mysql_close();
   ?>

Мой файл java:

public class Authentication extends Activity implements OnClickListener,
        OnKeyListener, OnCheckedChangeListener {

    /** Called when the activity is first created. */

    ArrayList<NameValuePair> authentication;
    String passIn, userIn, result;
    EditText username, password;
    CheckBox remember;
    Button b_login;
    InputMethodManager inputManager;
    InputStream is;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // userIn = username.getText().toString();
        // passIn = password.getText().toString();
        username = (EditText) findViewById(R.id.usrname);
        password = (EditText) findViewById(R.id.password);
        inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        remember = (CheckBox) findViewById(R.id.remember);
        remember.setOnCheckedChangeListener(this);
        b_login = (Button) findViewById(R.id.login);
        b_login.setOnClickListener(this);
        username = (EditText) findViewById(R.id.usrname);
        username.setOnKeyListener(this);
        password = (EditText) findViewById(R.id.password);
        password.setOnKeyListener(this);

    }

    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.login:
            while (true) {
                userIn = username.getText().toString();
                passIn = password.getText().toString();
                try {
                    sendAuthenticationData(userIn, passIn);
                    break;
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (WrongInputException e) {
                    Toast.makeText(Authentication.this, "Invalid username or password", Toast.LENGTH_LONG);

                }
//              break;
            }
            Intent intent = new Intent(this, ApplicationMenus.class);
            this.startActivity(intent);
            clearText(username,password);

            break;
        }
    }

    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if ((event.getAction() == KeyEvent.ACTION_DOWN)
                && (keyCode == KeyEvent.KEYCODE_ENTER)) {
            // Perform action on key press

            inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
            return true;
        }
        return false;
    }


    public void clearText(EditText usr, EditText pass) {
        usr.setText("");
        pass.setText("");
    }

    public void sendAuthenticationData(String username, String password)
            throws ClientProtocolException, IOException, WrongInputException {

        authentication = new ArrayList<NameValuePair>();
        authentication.add(new BasicNameValuePair("Username", userIn));
        authentication.add(new BasicNameValuePair("Password", passIn));
        this.sendData(authentication);
    }

    public void sendData(ArrayList<NameValuePair> data)
            throws ClientProtocolException, IOException, WrongInputException {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(
                "path/Authentication.php"); // I use real path here
        httppost.setEntity(new UrlEncodedFormEntity(data));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
//      is = entity.getContent();
        String temp = EntityUtils.toString(entity);

        if (temp.equals("1")) {
            throw new WrongInputException();
        }

    }}

Я впервые пишу код, который соединяется с сервером PHP и JSON.Я довольно сильно путаюсь с JSON, хотя старался следовать многим образцам.Ценим за любую помощь

1 Ответ

2 голосов
/ 03 июля 2011

Первое, что вы забыли, это mysql_real_escape_string для входящих переменных:

$Username = $_POST['Username'];

И ваша вторая проблема, вероятно, такая:

   if (mysql_num_rows($q) > 0) {
        print json_encode($q);

$q переменная является результатом mysql_ handle .Он не может быть представлен в формате JSON.Вы, вероятно, хотели использовать:

        print json_encode(mysql_fetch_assoc($q));

Таким образом, вы получите по крайней мере массив результатов / объект с именем пользователя / паролем.Может быть, будет проще, если вы просто отправите еще один простой числовой результат - print "2"; или что-то в этом роде.

Также вы проверили, запускаете ли вы PHP 5.2 или новее, так что json_encodeконечно есть в наличии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...