This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

Connexion à base de donnée MariaDB impossible


Chaandgus

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, si tu as désactivé le port sur maria, essaye ce genre de config :
 

/** MySQL database username */ ---> root ou pseudo créé avec phpmyadmin

/** MySQL database password */  ------> mot de passe root lors de l'installation de maria ou du pseudo créé avec phpadmin

/** MySQL hostname */  -----------------> localhost:/run/mysqld/mysqld10.sock


 

Modifié par bliz
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

il me semble que c'est depuis 2004 que je n'ai pas topuché au php, donc ....

sinon, je te conseil le site php.net qui est très bien pour ça : https://www.php.net/manual/fr/

Tu as reussi à te connecter, mais ce que'il faut savoir, c'est ce que tu veux faire, la commande n'est pas la même en fonction du choix

As tu créé une table ?

Parceque, pour faire simple, la base est la bibliothèque et les tables sont les classeurs ou tu écrit (select * from 'nom de la table'), de tête, la * veux dire que l'on lit tout sur cette table


après, de tête, (depuis 2004 il n'en reste pas grand chose), si tu veux ajouter, il faut utiliser la commande insert, si tu veux modifier une table, on la lit avant, on modifie les variables, puis on la réécrit. ect...

si la table est créé, pour inserrer une ligne à la suite, c'est la commande :

INSERT INTO `nom de table`(`id`, `champ1`, `champ2`, `chemp ...`) VALUES ([value-1],[value-2],[value-...])

ect...

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

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.