IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

Formulaire de connexion android


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Par défaut Formulaire de connexion android
    Bonjour , je suis nouveau sur la programmation Android, j'ai quelque erreurs dans mon code et aimerai avoir un peu d'aide.

    J'ai donc établie une classe java permettant une connexion à la bdd avec le formulaire qui va avec.

    Voici ma classe java :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
     
     
     
        }
    public class Login extends ActionBarActivity implements View.OnClickListener {
     
        Button ok,back,exit;
        TextView result;
     
     
     
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            // Login button clicked
            ok = (Button)findViewById(R.id.btn_login);
            ok.setOnClickListener(this);
     
            result = (TextView)findViewById(R.id.lbl_result);
     
        }
        public void postLoginData() {
            // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
     
            /* login.php returns true if username and password is equal to saranga */
            HttpPost httppost = new HttpPost("http://localhost/Android/login.php");
            HttpPost httppost2 = new HttpPost("http://localhost/Android/login2.php");
     
            try {
                // Add user name and password
                EditText uname = (EditText)findViewById(R.id.txt_username);
                String username = uname.getText().toString();
     
                EditText pword = (EditText)findViewById(R.id.txt_password);
                String password = pword.getText().toString();
     
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                nameValuePairs.add(new BasicNameValuePair("username", username));
                nameValuePairs.add(new BasicNameValuePair("password", password));
                httppost2.setEntity(new UrlEncodedFormEntity(nameValuePairs));
     
                // Execute HTTP Post Request
                Log.w("SENCIDE", "Execute HTTP Post Request"); //
     
                HttpResponse response = httpclient.execute(httppost); // On execute la requete 1  qui permet la recuperation du nom
                HttpResponse response2 = httpclient.execute(httppost2); //On execute la requete 2  qui permet la recuperation du mdp
     
                String str2 = inputStreamToString(response2.getEntity().getContent()).toString(); // Conversion de la requete 2 en String
                String str = inputStreamToString(response.getEntity().getContent()).toString(); // Conversion de la requete 1 en String
                Log.w("SENCIDE", str);
     
     
     
     
                if(username==str && password== str2) // Si le nom et le mdp taper par l'utilisateur est egale aux nom et mdp ds la bdd
                {
                    Log.w("SENCIDE", "TRUE");
                    result.setText("Connexion reussie"); // affiche connexion reussie
                }
                else                               
                {
                    Log.w("SENCIDE", "FALSE");
                    result.setText("Mdp ou login erroné");
                }
     
            } catch (ClientProtocolException | UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
     
     
        private StringBuilder inputStreamToString(InputStream is) {
            String line = "";
            StringBuilder total = new StringBuilder();
            // Wrap a BufferedReader around the InputStream
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));
            // Read response until the end
            try {
                while ((line = rd.readLine()) != null) {
                    total.append(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            // Return full string
            return total;
        }
     
     
        public void onClick(View view) {
            if(view == ok){
                postLoginData();
            }

    Les deux fichiers php qui correspondent au requêtes exécuter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    // on se connecte à notre base
    $base = mysql_connect ('localhost', 'root', '');
    mysql_select_db ('gsb3') ;
    $sql = 'SELECT nom FROM visiteur';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    ?>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    // on se connecte à notre base
    $base = mysql_connect ('localhost', 'root', '');
    mysql_select_db ('gsb3') ;
    $sql = 'SELECT mdp FROM visiteur';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    ?>


    Un peu d'aide serai la bienvenue .
    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Plusieurs choses:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String str2 = inputStreamToString(response2.getEntity().getContent()).toString(); // Conversion de la requete 2 en String
    String str = inputStreamToString(response.getEntity().getContent()).toString(); // Conversion de la requete 1 en String
    Pourquoi réinventer la roue ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String str2 = EntityUtils.toString(response2.getEntity(),"UTF-8");
    String str = EntityUtils.toString(response.getEntity(),"UTF-8");


    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    } catch (ClientProtocolException | UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    Préférer un truc genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    } catch (Exception ex) {
        Log.e("MonActivity","Erreur de récupération des logins !",ex);
    }


    Ensuite,
    Les URLS me semblent étranges.... On est d'accord que "http://localhost/Android/login.php" pointe sur la machine du client qui va chercher l'url... sur un ordi, c'est l'ordi lui même, sur un device, le device lui-même, et il y a peu de chances que le-dit device (sous android) propose un serveur web avec gestion PHP....
    A mon avis, le device doit aller chercher sur un "serveur", et ce serveur n'est jamais localhost (sauf quand on est sur le serveur lui-même).
    Bien entendu, l'émulateur ne fait pas exception... Toutefois, afin de "simplifier" le debug, l'adresse 10.0.2.2 correspond à la machine qui "host" l'émulateur (donc l'ordi sur lequel l'émulateur tourne): http://developer.android.com/tools/d...tworkaddresses


    Ensuite,
    L'appel est fait dans le thread de l'UI (puisqu'il intervient dans le code du "onClick"). Non seulement cela a toujours été interdit (de faire des traitement potentiellement longs dans le thread de l'UI), mais en plus depuis Android 3.0, android le detecte, et va émettre un NetworkOnMainThreadException.
    Utiliser un ASyncTask pour effectuer l'opération.

    Pour finir,
    Il n'est pas évident du tout que DefaultHttpClient propose plusieurs connexions parallèle. Hors la on effectue une requete, et *avant* de la traiter entièrement (lecture du contenu), on en refait une autre immédiatement, ce qui risque d'attendre la fin de la première. Je ne sais absoluement pas comment peut réagir DefaultHttpClient, mais je ne mettrai pas ma main à couper que ça marche !

Discussions similaires

  1. formulaire de connexion inscription android
    Par danieldou dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 09/05/2014, 14h32
  2. Formulaire de connexion
    Par Interface dans le forum Langage
    Réponses: 6
    Dernier message: 21/09/2007, 14h06
  3. formulaire de connexion ne fonctionne pas
    Par masterix59 dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2007, 00h31
  4. formulaire de connexion utilisateurs
    Par lucienkany dans le forum Access
    Réponses: 1
    Dernier message: 02/07/2007, 22h45
  5. PB Utilisation formulaire de connexion
    Par stan314 dans le forum Access
    Réponses: 2
    Dernier message: 25/05/2006, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo