Aller au contenu

Featured Replies

Posté(e)

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

Posté(e)
  • Auteur

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

Posté(e)

Bonjour,

Il faut activer l'affichage des erreurs dans les paramètres avancés de PHP

 

Posté(e)
  • Auteur

Merci Mike, cela se fait il dans ces paramètres et quelle est la finalité stp ?

image.thumb.png.9044540894c15d9a727137f8905cf033.png

Posté(e)

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

Posté(e)
  • Auteur

Ok, trouvé 👍. Merci Mike, j'essaierai ce soir après le travail 😀

image.thumb.png.846f02cdace04a470b19c4f774fc3954.png

Modifié par Chaandgus

Posté(e)
  • Auteur

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, 🙂

 

  • 1 mois après...
Posté(e)
  • Auteur

Hello Bliz, désolé je n'avais pas vu tes réponses. Oui j'ai réussi à faire tout cela désormais; Merci pour tout.

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…

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.