Bonsoir,

Mon site maintenant fini, je m'attaque à l'espace membre ou plutôt à l'espace Admin.

Alors je créé une feuille php "inscription.php", jusqu'à la tout va bien mais lors que je remplit le formulaire d'inscription pour le tester j'ai une erreur me disant qu'il ne trouve pas le serveur..

Voici ce qu'il m'affiche :

Warning: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. 
in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\inscription.php on line 20

Warning: mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. 
in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\inscription.php on line 20
Error

Et voici ce qu'il y a dans mon code :

$connect = mysqli_connect(' ********.mysql.db','*********',' *********') or die('Error');
mysqli_select_db('users');

J'espère que vous trouverez une solution à mon problème ou si vous pourrez me donner une piste.

Bonne soirée.

6 réponses


AcriX
Auteur

Bonjour,

Merci de ta réponse.

Donc j'ai essayé de comprendre PDO et dans l'ensemble, je pense avoir compris.

J'ai copié le code de connexion PDO et j'ai remplacé le host, user, motdepasse.. Enfin, pour m'assurer que je l'ai bien fait après le = je met l'adresse du serveur, dbname= je mets la table qu'il doit utiliser soit "users" chez moi et dans motdepasse le mot de passe.

Jusqu'à c'est bon mais je met le fichier en ligne sur mon site pour voir et là ça me fait:

Impossible de se connecter à la base de donnéeSQLSTATE[42000] [1044] Access denied for user 'blackbirqi'@'%' to database 'users'

Donc bien sur j'ai chercher de mon côté mais je n'ai pas vraiment trouvé de solution mais de ce que j'ai compris ça viendrait d'un mauvais mot de passe ou utilisateur, pourtant j'ai vérifié trois fois et j'ai bien mis les bons utilisateurs et mot de passe.. :/

Je mets mon code au cas ou :

try{
$db = new PDO('mysql:host=black ****.mysql.db;dbname=users', 'black****', ' *********');
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$db->exec("SET CHARACTER SET utf8");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}catch (Exception $e){
echo 'Impossible de se connecter à la base de donnée';
echo $e->getMessage();
die();
}

Voilà, donc j'ai pu avancer en résolvant un problème, mais un autre survient :D

Merci d'avance de vos réponses :)

PS: Juste une petite question, pourquoi dans le PHP V5.50 il modifie et ne laisse pas l'ancienne version pour faire une requête au serveur pour se connecter ? Je n'ai pas tout compris.

AcriX
Auteur

Non j'ai mis le nom de la table ou il y a les infos "id;user;password" donc "users. Faut-il mettre le nom de la base de donnée à cette endroit ?

EDIT: Oui effectivement je me suis trompé il faut que je mette le nom de la base de donnée.. :)

AcriX
Auteur

Sinon après avoir réussi le formulaire d'inscription et de connexion toute marche niquel sauf que quand je m'inscrit dans la base de données l'utilisateur n'ai pas indiqué et quand je me connecte pareil il ne trouve pas l'utilisateur.. Pourtant l'inscription avait l'air concluant !

Je vous mets mon code pour que vous puissiez voir car je ne comprend pas là..

inscription.php :

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Accueil - BlackBirds Virtuel</title>
</head>
<?php
if(isset($_POST'submit']))
{
    $username =htmlentities(trim($_POST'username']));
    $password =htmlentities(trim($_POST'password']));
    $repeatpassword =htmlentities(trim($_POST'repeatpassword']));
    if($username&&$password&&$repeatpassword)
    {
        if($password==$repeatpassword)
        {
        try{
    $db = new PDO('mysql:host=black ****.mysql.db;dbname=black****', 'blackbirqi', ' ***********');
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $db->exec("SET CHARACTER SET utf8");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}catch (Exception $e){
    echo 'Impossible de se connecter à la base de donnée';
    echo $e->getMessage();
    die();
}
        $query = mysqli_query("INSERT INTO users VALUES('','$username','$password')");
        die("Inscription terminée <a href='login.php'> connectez</a> vous");
        }else echo "Les deux passwords doivent être identiques";
    }else echo "Veuillez saisir tout les champs";
}

?>
<form method="POST" action="inscription.php">
<p>Votre Pseudo:</p>
<input type="text" name="username">
<p>Votre Password:</p>
<input type="password" name="password">
<p>Répétez votre Password:</p>
<input type="password" name="repeatpassword"><br /><br />
<input type="submit" value="S'inscrire" name="submit">
</form>
</html>

Et pour login.php :

<?php
session_start();
if(isset($_POST'submit']))
{
    $username =htmlentities(trim($_POST'username']));
    $password =htmlentities(trim($_POST'password']));
    if($username&&$password)
    {
    $password = md5($password);
try{
    $db = new PDO('mysql:host=black ****.mysql.db;dbname=black****', 'blackbirqi', ' **********');
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $db->exec("SET CHARACTER SET utf8");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}catch (Exception $e){
    echo 'Impossible de se connecter à la base de donnée';
    echo $e->getMessage();
    die();
}
    $query = mysqli_query("SELECT * FROM users WHERE username='$username'&&$password='$password'");
    $rows = mysqli_num_rows($query);
    if(rows==1)
    {
    $_SESSION'username']=$username;
    header('Location: admin/index.html');
    }else echo"Pseudo ou password incorrect";
    }else echo"Veuillez saisir tout les champs";
}
?>

<form method="POST" action="login.php">
<p>Votre Pseudo:</p>
<input type="text" name="username">
<p>Votre Password:</p>
<input type="password" name="password"><br /><br />
<input type="submit" value="Login" name="submit">
</form>

Et voici ce que j'ai dans phpmyadmin :

-- phpMyAdmin SQL Dump
-- version 4.1.9
-- http://www.phpmyadmin.net
--
-- Client : black ****.mysql.db
-- Généré le : Mar 12 Août 2014 à 18:15
-- Version du serveur : 5.1.73-1.1+squeeze+build0+1-log
-- Version de PHP : 5.3.8
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données : `black **** `
--
-- --------------------------------------------------------
--
-- Structure de la table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `password` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Voilà, j'espère que vous pourrez trouver car là c'est problème sur problème..

AcriX
Auteur

J'ai changé mais toujours pareil, toujours rien dans la base de donnée MySQL..

Je sais plus ou chercher...

J'ai juste remarquer une petite erreur :

Pour la page login.php:

$db->query("SELECT * FROM users WHERE username='$username'&&$password='$password'");

inscription.php:

$db->query("INSERT INTO users VALUES('','$username','$password'");

Non? Mais sa ne résolu pas mon problème :/

Je pense que j'ai du mal faire un truc dans phpmyadmin ! Car je crois que c'est le transfert de donnée entre mon site et MySQL qui ne marche pas.

Ce n'est pas

$db->query("SELECT * FROM users WHERE username='$username'&&$password='$password'");

mais :

$db->query("SELECT * FROM users WHERE username='$username' AND password='$password'");

Pour l'inscription :

$db->query("INSERT INTO users VALUES('','$username','$password'") or die ($db->errorInfo());

Cela permettra de savoir s'il y a une erreur dans la requête.
Sinon pour les insert, il vaut mieux utiliser les requêtes préparés.

AcriX
Auteur

Problème résolu ! :D Merci à tous pour votre aide !