Connexion base de données mysql
Fermé
mel
-
8 nov. 2017 à 18:27
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 9 nov. 2017 à 09:00
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 9 nov. 2017 à 09:00
A voir également:
- Connexion base de données mysql
- Gmail connexion - Guide
- Hotmail connexion - Guide
- Formules excel de base - Guide
- Facebook connexion - Guide
- Coco.fr connexion mobile ✓ - Forum Réseaux sociaux
4 réponses
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 nov. 2017 à 18:58
8 nov. 2017 à 18:58
Bonjour
Sans voir ton code COMPLET impossible de t'aider.
Sans voir ton code COMPLET impossible de t'aider.
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 8 nov. 2017 à 19:21
Modifié le 8 nov. 2017 à 19:21
Salut,
Il est probable que le localhost dans ton émulateur soit le téléphone virtualisé, et que tu aies installé ton serveur Php et Mysql sur ton ordinateur, qui n'est pas le même hôte.
Détermine l'IP locale de ton ordinateur sur laquelle tourne le serveur Mysql, et utilise cette adresse depuis ton application.
L'utilisateur Mysql doit aussi disposer de permissions de connexion ailleurs que depuis localhost.
Pour des raisons de sécurité, permettre à des utilisateurs Mysql de se connecter d'ailleurs que localhost est souvent interdit. En pratique, tu interagis avec une interface que tu crées, par exemple avec du Php qui va gérer les requêtes et retourner les résultats en JSON.
Dal
Il est probable que le localhost dans ton émulateur soit le téléphone virtualisé, et que tu aies installé ton serveur Php et Mysql sur ton ordinateur, qui n'est pas le même hôte.
Détermine l'IP locale de ton ordinateur sur laquelle tourne le serveur Mysql, et utilise cette adresse depuis ton application.
L'utilisateur Mysql doit aussi disposer de permissions de connexion ailleurs que depuis localhost.
Pour des raisons de sécurité, permettre à des utilisateurs Mysql de se connecter d'ailleurs que localhost est souvent interdit. En pratique, tu interagis avec une interface que tu crées, par exemple avec du Php qui va gérer les requêtes et retourner les résultats en JSON.
Dal
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 nov. 2017 à 19:19
8 nov. 2017 à 19:19
J'ose espérer qu'il est passé par un web service php tell que son explication le laisse penser...et qu'en aucun cas il tente une connexion à mysql depuis son script android.. ...(ca serait une grosse erreur )
Et dans ce cas.. ta réponse ne devrait pas convenir je pense...
Et dans ce cas.. ta réponse ne devrait pas convenir je pense...
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 nov. 2017 à 19:22
8 nov. 2017 à 19:22
Enfin..si.. il faut quand meme utiliser l'IP du poste hébergeant le script php.
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
8 nov. 2017 à 19:30
8 nov. 2017 à 19:30
Oui, attaquer directement la base est une mauvaise idée, du moins en production.
Quant à savoir si ma réponse "convient" ou pas, il doit prendre ses responsabilités et je l'ai alerté sur les risques de sécurité.
Enfin, s'il le fait juste dans le cadre de son développement pour rapatrier des données dont il a besoin et les intégrer d'une façon ou d'une autre à son application, et qu'il n'a pas besoin d'intéragir avec la base en production, construire une API est peut-être un peu lourd, et s'il limite la possibilité de connexion au réseau local, il limite les risques durant le temps du développement.
Quant à savoir si ma réponse "convient" ou pas, il doit prendre ses responsabilités et je l'ai alerté sur les risques de sécurité.
Enfin, s'il le fait juste dans le cadre de son développement pour rapatrier des données dont il a besoin et les intégrer d'une façon ou d'une autre à son application, et qu'il n'a pas besoin d'intéragir avec la base en production, construire une API est peut-être un peu lourd, et s'il limite la possibilité de connexion au réseau local, il limite les risques durant le temps du développement.
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 8 nov. 2017 à 19:34
Modifié le 8 nov. 2017 à 19:34
En tout cas, si son problème est bien celui que je pressens, je ne pense pas que poster la totalité de son code sur le forum nous aide, ou puisse contribuer à lui apporter une réponse utile ... sauf si je me trompe sur l'origine de son problème, ce qui est aussi une possibilité ;-)
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
>
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
8 nov. 2017 à 19:33
8 nov. 2017 à 19:33
Le tuto dont il parle passe bien par un web service php...
je vous remercie
c'est bien ça, en même temps c'est très logique de ne plus pouvoir utiliser le localhost une fois qu'on est sur une machine virtuelle
je viens de corriger et de mettre mon adresse ip
mais là j'ai un autre problème le résultat qu'il me retourne c'est "<html>"
au lieu d'un message avec SCUCESS ou FAILURE
voici mon code
et voici la page php qu'il appelle
Merci pour votre aide
c'est bien ça, en même temps c'est très logique de ne plus pouvoir utiliser le localhost une fois qu'on est sur une machine virtuelle
je viens de corriger et de mettre mon adresse ip
mais là j'ai un autre problème le résultat qu'il me retourne c'est "<html>"
au lieu d'un message avec SCUCESS ou FAILURE
voici mon code
package com.example.json;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.widget.Toast;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class SignupActivity extends AsyncTask<String, Void, String> {
private Context context;
String link="";
public SignupActivity(Context context) {
this.context = context;
}
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... arg0) {
String userName = arg0[0];
String passWord = arg0[1];
String data;
BufferedReader bufferedReader;
String result;
try {
data = "?nom=" + URLEncoder.encode(userName, "UTF-8");
data += "&mp=" + URLEncoder.encode(passWord, "UTF-8");
link = "http://41.230.219.96/data.php" + data;
URL url = new URL(link);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
result = bufferedReader.readLine();
return result;
} catch (Exception e) {
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(context, result, 100).show();
String jsonStr = result;
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
String query_result = jsonObj.getString("query_result");
if (query_result.equals("SUCCESS")) {
Toast.makeText(context, "Data inserted successfully. Signup successful.", 100).show();
} else if (query_result.equals("FAILURE")) {
Toast.makeText(context, "Data could not be inserted. Signup failed.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Couldn't connect to remote database.", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(context, result, 100).show();
Toast.makeText(context, "Error parsing JSON data.", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(context, "Couldn't get any JSON data.", Toast.LENGTH_SHORT).show();
}
}
}
et voici la page php qu'il appelle
?php
$n=$_GET['nom'];
$m=$_GET['mp'];
$con=mysql_connect('localhost','root','') or die("erreur de connexion au serveur $host");
mysql_select_db("base");
$result=mysql_query("SELECT * FROM account where log='".$n."' and pwd='".$m."'");
if(mysql_num_rows($result)==0) {
echo '{"query_result":"FAILURE"}';
}
else{
echo '{"query_result":"SUCCESS"}';
}
mysql_close($con);
?>
Merci pour votre aide
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 nov. 2017 à 23:21
8 nov. 2017 à 23:21
Je t'invite à passer a pdo ou mysqli
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
>
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
8 nov. 2017 à 23:22
8 nov. 2017 à 23:22
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
En fait quand j'y pense je me suis peut être trompée d'adresse ip
comment je peux l'adresse de ma machine svp??
comment je peux l'adresse de ma machine svp??
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 9 nov. 2017 à 09:00
Modifié le 9 nov. 2017 à 09:00
Comme indiqué dans mon message précédent :
http://androidcss.com/android/test-android-app-php-localhost-wamp/ contient des captures d'écran montrant comment déterminer l'IP locale d'un poste Windows avec ipconfig
http://androidcss.com/android/test-android-app-php-localhost-wamp/ contient des captures d'écran montrant comment déterminer l'IP locale d'un poste Windows avec ipconfig