SanglierD Posté(e) le 30 août 2021 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
SanglierD Posté(e) le 30 août 2021 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 30 août 2021 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
SanglierD Posté(e) le 31 août 2021 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 7 septembre 2021 Partager Posté(e) le 7 septembre 2021 Bonjour, Il faut activer l'affichage des erreurs dans les paramètres avancés de PHP 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
SanglierD Posté(e) le 7 septembre 2021 Auteur Partager Posté(e) le 7 septembre 2021 Merci Mike, cela se fait il dans ces paramètres et quelle est la finalité stp ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 7 septembre 2021 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
SanglierD Posté(e) le 7 septembre 2021 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
SanglierD Posté(e) le 14 septembre 2021 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
SanglierD Posté(e) le 18 octobre 2021 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
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.