Je suis en train de créer une connexion simple à mon application Android qui compare l'entrée de l'utilisateur à des données à partir d'une base de données suivant ces tutoriels:Impossible de se connecter à l'application Android base de données MySQL en utilisant WAMP comme serveur local
- http://androidcss.com/android/test-android-app-php-localhost-wamp/
- http://androidcss.com/android/android-php-mysql-login-tutorial/
J'utilise WAMP en tant que serveur local juste pour tester si je peux faire la connexion. J'ai deux fichiers PHP appelés config.inc.php et login.inc.php placé dans le répertoire suivant: C: \ wamp64 \ www \ DUFT et ils ressemblent à ceci:
config .inc.php
<?php $servername = "localhost:80";
$username = "root";
$password = "root";
$dbname = "duft";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
die("OOPs something went wrong");
}
?>
login.inc.php
<?php
include 'config.inc.php';
// Check whether username or password is set from android
if(isset($_POST['username']) && isset($_POST['password']))
{
// Innitialize Variable
$result='';
$username = $_POST['username'];
$password = $_POST['password'];
// Query database for row exist or not
$sql = 'SELECT * FROM tbl_login WHERE email = :username AND adgangskode = :password';
$stmt = $conn->prepare($sql);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->execute();
if($stmt->rowCount())
{
$result="true";
}
elseif(!$stmt->rowCount())
{
$result="false";
}
// send result back to android
echo $result;
}?>
J'ai ma classe LoginActivity où j'utilise AsyncTask à ma ke la connexion à la base de données en arrière-plan. Dans la méthode onPostExecute(), j'essaie de démarrer une nouvelle activité si l'entrée de l'utilisateur correspond à ce qui se trouve dans la base de données. Mais je continue à obtenir cette erreur à partir des fichiers PHP:
Avertissement (!): PDO :: __ construct(): serveur MySQL a disparu dans C: \ wamp64 \ www \ DUFT \ login. inc.php sur la ligne Appelez la pile # TimeMemoryFunctionLocation10.0042244400 {main}() ... \ login.inc.php : 020.0043245592http: //www.php.net/PDO.construct 'target =' _ new '> __ construct ( ) ... \ login.inc.php : 10 (!) Avertissement: PDO :: __ construct(): Erreur lors de la lecture du paquet d'accueil. PID = 9636 dans C: \ wamp64 \ www \ DUFT \ login.inc.php en ligne Appel Stack # TimeMemoryFunctionLocation10.0042244400 {main}() ... \ login.inc.php : 020.0043245592http: « target = '_ //www.php.net/PDO.construct nouveau'> __ construct ( ) ... \ login.inc.php : 10OOPs quelque chose a mal tourné
C'est ce que mon logcat dit:
classe Mon LoginActivity Java ressemble à ceci:
public class LoginActivity extends AppCompatActivity{
//NYT
// CONNECTION_TIMEOUT and READ_TIMEOUT are in milliseconds
public static final int CONNECTION_TIMEOUT=2000000000;
public static final int READ_TIMEOUT=2000000000;
private EditText etEmail;
private EditText etPassword;
//NYT
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//NYT
// Get Reference to variables
etEmail = (EditText) findViewById(R.id.eMail);
etPassword = (EditText) findViewById(R.id.password);
//NYT
TextView klikHer = (TextView) findViewById(R.id.klikHer);
klikHer.setPaintFlags(klikHer.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Button login = (Button) findViewById(R.id.signIn);
login.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Intent intent = new Intent(LoginActivity.this, MenuScreen.class);
//startActivity(intent);
//NYT
// Get text from email and passord field
final String email = etEmail.getText().toString();
final String password = etPassword.getText().toString();
// Initialize AsyncLogin() class with email and password
new AsyncLogin().execute(email, password);
//NYT
}
});
}
private class AsyncLogin extends AsyncTask<String, String, String> {
ProgressDialog pdLoading = new ProgressDialog(LoginActivity.this);
HttpURLConnection conn;
URL url = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
//this method will be running on UI thread
pdLoading.setMessage("\tLoading...");
pdLoading.setCancelable(false);
pdLoading.show();
}
@Override
protected String doInBackground(String... params) {
try {
// Enter URL address where your php file resides
url = new URL("http://192.168.87.100/DUFT/login.inc.php");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "exception";
}
try {
// Setup HttpURLConnection class to send and receive data from php and mysql
conn = (HttpURLConnection) url.openConnection();
//conn.setReadTimeout(READ_TIMEOUT);
//conn.setConnectTimeout(CONNECTION_TIMEOUT);
conn.setRequestMethod("POST");
// setDoInput and setDoOutput method depict handling of both send and receive
conn.setDoInput(true);
conn.setDoOutput(true);
// Append parameters to URL
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("username", params[0])
.appendQueryParameter("password", params[1]);
String query = builder.build().getEncodedQuery();
// Open connection for sending data
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
conn.connect();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return "exception";
}
try {
int response_code = conn.getResponseCode();
// Check if successful connection made
if (response_code == HttpURLConnection.HTTP_OK) {
// Read data sent from server
InputStream input = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
StringBuilder result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
// Pass data to onPostExecute method
return (result.toString());
} else {
return ("unsuccessful");
}
} catch (IOException e) {
e.printStackTrace();
return "exception";
} finally {
conn.disconnect();
}
}
@Override
protected void onPostExecute(String result) {
//this method will be running on UI thread
pdLoading.dismiss();
if (result.equalsIgnoreCase("true")) {
/* Here launching another activity when login successful. If you persist login state
use sharedPreferences of Android. and logout button to clear sharedPreferences.
*/
Intent intent = new Intent(LoginActivity.this, MenuScreen.class);
startActivity(intent);
LoginActivity.this.finish();
} else if (result.equalsIgnoreCase("false")) {
// If username and password does not match display a error message
//Toast.makeText(LoginActivity.this, "Invalid email or password", Toast.LENGTH_LONG).Show();
} else if (result.equalsIgnoreCase("exception") || result.equalsIgnoreCase("unsuccessful")) {
//Toast.makeText(LoginActivity.this, "OOPs! Something went wrong. Connection Problem.", Toast.LENGTH_LONG).Show();
}
}
}}
J'ai suivi toutes les étapes des tutoriels, et je suis en mesure d'accéder au serveur local avec mon téléphone en entrant l'adresse IPv4 dans mon navigateur mobile. Cela doit signifier que je suis également capable d'accéder à une base de données sur ce serveur local, non?
a autorisé les connexions à votre fichier de configuration httpd –
essayez en supprimant le port hôte: 80 dans config.php .. – Omi
@OussemaAroua pouvez-vous me dire plus spécifique comment autoriser les connexions? – Sumsar9000