SanglierD Posté(e) le 30 août 2021 Posté(e) le 30 août 2021 (modifié) 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* Création de la base de données : utilisateur Création d'un utilisateur : utilisateur **mot de passe :** 12345* J'ai indiqué tous les privilèges et ai créé une base de donnée "utilisateur" 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 : 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) : 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 Modifié le 30 août 2021 par Chaandgus 0 Citer
SanglierD Posté(e) le 30 août 2021 Auteur Posté(e) le 30 août 2021 Le tuto est en cours de mise à jour grâce à Steve https://skdavis.net/viewtopic.php?f=5&t=7 J'espère aboutir. Si quelqu'un d'autre à une idée je suis preneur 😀 0 Citer
Mike913 Posté(e) le 30 août 2021 Posté(e) le 30 août 2021 Bonjour Va voir ce lien: https://www.php.net/manual/fr/mysqli.quickstart.connections.php c'est la méthode que j'utilise 0 Citer
SanglierD Posté(e) le 31 août 2021 Auteur Posté(e) le 31 août 2021 (modifié) 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é le 31 août 2021 par Chaandgus 0 Citer
Mike913 Posté(e) le 7 septembre 2021 Posté(e) le 7 septembre 2021 Bonjour, Il faut activer l'affichage des erreurs dans les paramètres avancés de PHP 0 Citer
SanglierD Posté(e) le 7 septembre 2021 Auteur Posté(e) le 7 septembre 2021 Merci Mike, cela se fait il dans ces paramètres et quelle est la finalité stp ? 0 Citer
Mike913 Posté(e) le 7 septembre 2021 Posté(e) le 7 septembre 2021 (modifié) 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é le 7 septembre 2021 par Mike913 1 Citer
SanglierD Posté(e) le 7 septembre 2021 Auteur Posté(e) le 7 septembre 2021 (modifié) Ok, trouvé 👍. Merci Mike, j'essaierai ce soir après le travail 😀 Modifié le 7 septembre 2021 par Chaandgus 0 Citer
SanglierD Posté(e) le 14 septembre 2021 Auteur Posté(e) le 14 septembre 2021 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 : Mon problème est pour écrire dans la base de données. Aurais-tu une idée stp ? Merci et bonne soirée, 🙂 0 Citer
SanglierD Posté(e) le 18 octobre 2021 Auteur Posté(e) le 18 octobre 2021 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. 0 Citer
Messages recommandé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.