Aller au contenu

Connexion à base de donnée MariaDB impossible


Messages recommandés

Hello à tous 🤗,

 

J'aurai besoin d'un gros coup de main svp !!

Je suis sur Maria DB 10 mais incapable d'accéder à la base en PHP malgré ce super tuto https://skdavis.net/viewtopic.php?t=7 Merci au SAV Synology pour l'envoi de ce lien qui est très complet 👍)

Création de la BDD sous MariaDB :

         **Utilisateur:** root
         **Mot de passe :** 1234*

Sur PHPMyAdmin (auquel j'accède via **IPdemonNAS/phpMyAdmin/** ou **https://nomdedomaine/phpMyAdmin/**
   - Connexion PHPMyAdmin
              **Utilisateur:** root
              **mot de passe :** 1234*

image.thumb.png.700df0a09ae68d248969455c547705c7.png


Création de la base de données : utilisateur
            Création d'un utilisateur : utilisateur
              **mot de passe :** 12345*

image.png.9a2d169b551bf0fd1f6e0f372a045ff9.png
image.png

J'ai indiqué tous les privilèges et ai créé une base de donnée "utilisateur"
image.thumb.png.bda6202b05393949f5f271347ecc63a5.png 

Qu'est-il conseillé en terme de comptes, de privilèges et mots de passe, faut-il que:
        - le mot de passe et utilisateur à PHPMyAdmin soit le même que celui de MariaDB svp ?
        - la gestion de la sécurité de la BDD est-elle bonne (je précise que les identifiants indiqués soint juste pour le tuto 😉)

Ma page de connexion à laquelle j'accède via l'url distante : https://monsite.com/connexion.php :

Avec ce code en mysqli ça passe :

<?php
$serveur = '127.0.0.1:3307'; //par exemple 127.0.0.1 ou 127.0.0.1:3307 pour se connecter via le port 3307
$utilisateur = 'utilisateur'; //utilisateur qui a accès
$motdepasse = '12345*'; //mot de passe de l'utilisateur qui va bien
$base = 'utilisateur'; //surtout pas oublier la base
 
$lien_SGBD = mysqli_connect($serveur, $utilisateur, $motdepasse, $base);
 
if (!$lien_SGBD) {
    die('Erreur de connexion (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
 
echo 'Succès... ' . mysqli_get_host_info($lien_SGBD) . "\n";
 
mysqli_close($lien_SGBD);
?>

Ce qui donne la copie d'écran suivante :

image.png.b982105c700cab53d20bbbcd2bf4f62a.png

Mais avec celui-ci :

?php
 phpinfo()
    class connexionDB {
        private $host ='localhost:/run/mysqld/mysqld10.sock';
        private $name = 'utilisateur;
        private $user = 'utilisateur';
        private $pass = '12345*';
        private $connexion;
    
        function __construct($host = null, $name = null, $user = null, $pass = null){
            if($host != null){
                $this->host = $host;
                $this->name = $name;
                $this->user = $user;
                $this->pass = $pass;
            }
            
            try{
                $this->connexion = new PDO('mysql:host='.$this->host.';dbname='.$this->name,
                $this->user,$this->pass,array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8mb4', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
            }catch (PDOException $e){
                echo 'Erreur : Impossible de se connecter  à la BDD !';
                die();
            }
        }
        
        public function connexion(){
            return $this->connexion;
        }
    }

    $BDD = new connexionDB();
    $DB = $BDD->connexion();  
?>

Cela me génère une page blanche 🤨

Idem avec celui-ci (j'ai aussi essayé en mysqli en ayant vérifié au préalable que l'extension était cochée dans WebStation) :

image.png.c127d9f818b219ff32c3281c529a12a1.png

Le code est le suvant :

<?php
/*
 * Description of connexionDB
 *  Connexion à la base de donnée avec des fonctions des requêtes;

 */
 phpinfo()
	class connexionDB {
		private $serveur = '127.0.0.1:3307'; //nom de l'host
		private $base = 'utilisateur'; //nom de la base de données
		private $utilisateur = 'utilisateur';  //utilisateur
		private $motdepasse = '12345*'; 
		private $connexion;


		function __construct($host = null, $name = null, $user = null, $pass = null){
			if($host != null){
				$this->host = $host;
				$this->name = $name;
				$this->user = $user;
				$this->pass = $pass;
			}
			$this->connexion= mysqli_connect($serveur, $utilisateur, $motdepasse, $base);
 			if (!$this->connexion) {
   			 die('Erreur de connexion (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
			}
 
			echo 'Succès... ' . mysqli_get_host_info($this->connexion) . "\n";
 
			mysqli_close($this->connexion);

		}
		
		/*Cette fonction permet de charger la variable !DB */
		public function connexion(){
			return $this->connexion;
		}
	}

/*Ici on fait appel à la classe connexionDB*/
	$DB = new connexionDB;
/*C'est sur cette variable que l'on fait vraiment la connexion à la base de données*/
	$BDD = $DB->connexion();  
?>

 

Quelqu'un peut-il m'aider car je ne sais pas où je fais fausse route svp ? ☺️

J'ai ouvert les ports de mon routeur (est-ce une fausse bonne idée svp ?) et de mon NAS.

Ps : A la place de localhost dans le fichier connexion.php, cela vaudrait-il le coup de rentrer le lien absolu https://nomdedomaine/phpMyAdmin svp ?

Un grand merci

image.png

Modifié par Chaandgus
Lien vers le commentaire
Partager sur d’autres sites

Merci @Mike913, c'est sympa 👍! J'ai donc modifié mon fichier connexiondb.php

Mon problème est que quand je valide la page "inscription, cela me retourne une page blanche sans écrire pas dans la BDD.

connexiondb.php

<?php
/*
 * Description of connexionDB
 *  Connexion à la base de donnée avec des fonctions des requêtes;
 * @author Sitedudev
 */
 
    class connexionDB {
        private $host = '127.0.0.1:3307'; //nom de l'host
        private $name= 'utilisateur'; //nom de la base de données
        private $user = 'utilisateur';  //utilisateur
        private $pass = '12345*';
        private $connexion;
    
        function __construct($host = null, $name = null, $user = null, $pass = null){
            if($host != null){
                $this->host = $host;
                $this->name = $name;
                $this->user = $user;
                $this->pass = $pass;
            }
            
            try{$this->connexion = new mysqli($host, $user, $pass, $name);
/*Pas sur que la ligne ci-dessous soit correcte*/
            if ($this->connect_errno) {
                echo "Échec lors de la connexion à MySQL : (" . $this->connect_errno . ") " . $this->connexion->connect_error;
                }
                echo $this>host_info . "\n";
 
                $this->connexion = new mysqli($host, $user, $pass, $name, 3307);
                if ($this->connect_errno) {
                echo "Échec lors de la connexion à MySQL : (" . $this->connect_errno . ") " . $this->connect_error;
                }
 
                echo $mysqli->host_info . "\n";
                }
        }
                public function connexion(){
                    return $this->connexion;
                }
                }
                
    $BDD = new connexionDB();
    $DB = $BDD->connexion();  

?>

le inscription.php est :

<?php
    session_start();
    include_once('db/connexiondb.php');
if(isset($_SESSION['id'])){
        header('Location: /');
        exit;
    }
 
    if(!empty($_POST)){
        extract($_POST);
        $valid = (boolean) true;
        
        if(isset($_POST['inscription'])){
            $nom = (String) trim($nom);
            $prenom = (String) trim($prenom);
            $mail = (String) strtolower(trim($mail));
            $password = (String) trim($password);
            $jour = (int) $jour;
            $mois = (int) $mois;
            $annee = (int) $annee;
            $departement = (String) trim($departement);
 
            
            if(empty($pseudo)){
                $valid = false;
                $err_pseudo = "Veuillez renseigner ce champs !";
            }else{
                $req = $BDD->prepare("SELECT id
                    FROM particulier
                    WHERE pseudo = ?");
                    
                $req->execute(array($pseudo));
                $particulier = $req->fetch();
                
                if(isset($particulier['id'])){
                    $valid = false;
                    $err_pseudo = "Ce pseudo existe déjà";
                }
            }
            
            if(empty($mail)){
                $valid = false;
                $err_mail = "Veuillez renseigner ce champs !";
            }else{
                $req = $BDD->prepare("SELECT id
                    FROM particulier
                    WHERE mail = ?");
                    
                $req->execute(array($mail));
                $particulier = $req->fetch();
                
                if(isset($particulier['id'])){
                    $valid = false;
                    $err_mail = "Ce mail existe déjà";
                }
            }
            
            if(empty($password)){
                $valid = false;
                $err_password = "Veuillez renseigner ce champs !";
            }
                        
            if($jour <= 0 || $jour > 31){
                $valid = false;
                $err_jour = "Veuillez renseigner ce champs jour !";
            }
            
            $verif_mois = array(1, 2, 3);
                        
            if(!in_array($mois, $verif_mois)){
                $valid = false;
                $err_mois = "Veuillez renseigner ce champs mois !";
            }
            
            $verif_annee = array(1990, 2000, 3);
                        
            if(!in_array($annee, $verif_annee)){
                $valid = false;
                $err_annee = "Veuillez renseigner ce champs annee !";
            }
            
            if(!checkdate($mois, $jour, $annee)){
                $valid = false;
                $err_date = "Date fausse";
            }else{
                $date_naissance = $annee . '-' . $mois . '-' . $jour;
            }
            
            
            $req = $BDD->prepare("SELECT departement_id
                FROM departement
                WHERE departement_code = ?");
            $req->execute(array($departement));
            
            $verif_departement = $req->fetch();
                        
            if(!isset($verif_departement['departement_id'])){
                $valid = false;
                $err_departement = "Veuillez renseigner ce champs !";
            }
            
            if($valid){
                $date_inscription = date("Y-m-d h:m:s");
                
                $password = crypt($password, '$6$rounds=5000$wzxMHkmn72fgdfgdfgdfgdrttjhgndtzsfghgfjhgnvcbcgfdgtfdgfdhvcnbvhbfhgf$');
                
                $req = $BDD->prepare("INSERT INTO particulier ($prenom, $nom, mail, password, date_naissance, departement, date_inscription, date_connexion)
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
                    
                $req->execute(array($prenom, $nom, $mail, $password, $date_naissance, $departement, $date_inscription, $date_inscription));
                
                header('Location: /');
                exit;
            }
        }
    }
    
?>
<!doctype html>
<html lang="fr">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
        <link rel="stylesheet" href="dist/css/style.css">
 
        <title>Connexion</title>
    </head>
    <body>
        <?php
            require_once('menu.php');    
        ?>
        
        <h1>Inscription</h1>
        
        <form method="post">
            <section>
                <div>
                    <?php
                        if(isset($err_prenom)){
                            echo $err_prenom;
                        }    
                    ?>
                    <input type="text" name="prenom" placeholder="Prenom" value="<?php if(isset($prenom)){ echo $prenom;} ?>">
                    <?php
                        if(isset($err_nom)){
                            echo $err_nom;
                        }    
                    ?>
                    <input type="text" name="nom" placeholder="Nom" value="<?php if(isset($nom)){ echo $nom;} ?>">
                </div>                
                <div>
                    <?php
                        if(isset($err_mail)){
                            echo $err_mail;
                        }    
                    ?>
                    <input type="text" name="mail" placeholder="Mail" value="<?php if(isset($mail)){ echo $mail;} ?>">
                </div>
                <div>
                    <?php
                        if(isset($err_password)){
                            echo $err_password;
                        }    
                    ?>
                    <input type="password" name="password" placeholder="Mot de passe" value="<?php if(isset($password)){ echo $password;} ?>">
                </div>
                <div>
                    <?php
                        if(isset($err_jour)){
                            echo $err_jour;
                        }    
                        if(isset($err_mois)){
                            echo $err_mois;
                        }    
                        if(isset($err_annee)){
                            echo $err_annee;
                        }    
                        if(isset($err_date)){
                            echo $err_date;
                        }    
                    ?>
                    <select name="jour">
                        <?php
                            for($i = 1; $i <= 31; $i++){
                        ?>
                        <option value="<?= $i ?>"><?= $i ?></option>
                        <?php
                            }
                        ?>
                    </select>
                    <select name="mois">
                        <option value="1">Janvier</option>
                        <option value="2">Février</option>
                        <option value="3">Mars</option>
                        <option value="4">Avril</option>
                        <option value="5">Mai</option>
                        <option value="6">Juin</option>
                        <option value="7">Juillet</option>
                        <option value="8">Août</option>
                        <option value="9">Septembre</option>
                        <option value="10">Octobre</option>
                        <option value="11">Novembre</option>
                        <option value="12">Décembre</option>
                    </select>
                    <select name="annee">
                        <?php
                            for($i = 1940; $i <= 2020; $i++){
                        ?>
                        <option value="<?= $i ?>"><?= $i ?></option>
                        <?php
                            }
                        ?>
                    </select>
                </div>
                <div>
                    <select name="departement">
                        <option value="1">Ain</option>
                        <option value="2">Aisneption>
                        <option value="4">Allier</option>
                    </select>
                </div>
            </section>
            
            <input type="submit" name="inscription" value="S'inscrire">
        </form>
        
        <!-- Optional JavaScript -->
        <!-- jQuery first, then Popper.js, then Bootstrap JS -->
        <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rTwzxMHkmn72fgdfgdfgdfgdrttjhgndtzsfghgfjhgnvcbcgfdgtfdgfdhvcnbvhbfhgfizo" crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    </body>
</html>

mais impossible d'écrire dans la BDD...elle résiste toujours la bougre !!

Modifié par Chaandgus
Lien vers le commentaire
Partager sur d’autres sites

Non dans DSM->Web Station->paramètres PHP->Profiles

Si tu veux apprendre à programmer en php il faut commencer par des choses simples:
par exemple si tu veux savoir si un pseudo est deja ans ta base

<?php
$host = '127.0.0.1:3307'; 	//le numero de port n'est pas necessaire si il est indiqué dans les paramètres php
$base = 'base'; 			//nom de la base de données
$user = 'utilisateur';  	//utilisateur
$pass = '12345*';

$pseudo = "Toto";

$BD = new mysqli($host,$user,$pass,$base);

$sql = "SELECT * FROM particulier WHERE pseudo = '".$pseudo."';";
$result = $BD->query($sql);
$row_cnt = $result->num_rows;   
if ($row_cnt != 0) 
{
	echo "Ce pseudo existe déjà";	
}
else
{
	echo "Nouvel utilisateur";
}
?>

 

Modifié par Mike913
Lien vers le commentaire
Partager sur d’autres sites

Salut bliz,

Merci pour le coup de pouce.

avec ce code dans try.php

<html>
   <head>
      <title>Connect to MariaDB Server</title>
   </head>

   <body>
      <?php
         include 'db/config.inc.php';

         $conn = mysqli_connect($host, $user, $pass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         
         echo 'Connected successfully';
         mysql_close($conn);
      ?>
   </body>
</html>

et celui-ci dans db/config.inc.php :

<?php
	$host = 'localhost'; //nom de l'host
	$name= 'databasename'; //nom de la base de données
	$user = 'root';  //utilisateur
	$pass = 'passwordphpMyAdmin=passwordMariaDB10';
	$connexion;
?>

Il semble que j'arrive à me connecter :

image.png.7d3c0afbd218925eb9c6e7e1184d2260.png

Mon problème est pour écrire dans la base de données. Aurais-tu une idée stp ?

Merci et bonne soirée, 🙂

 

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.