Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
Hello à tous,
Tout d'abord... spéciale ovation pour le sitedudev et ses supers tuto 👍👏
C'est simple, posé, agréable et pratique !! Donc un grand MERCI et BRAVO pour la pédagogie 😍😎 !!
Ensuite... j'aurai besoin d'un gros coup de main svp 🙏😊 !!
Je suis sur Maria DB 10 sur NAS Synology mais incapable d'écrire dans ma base en PHP malgré ce super tuto propre aux NAS https://skdavis.net/viewtopic.php?t=7 en plus de ceux du sitedudev propre à PhpMyAdmin !
Voilà un peu la chronologie :
1 - 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/
)
2 - 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 j'ai créé une base de donnée "utilisateur
"
Jusque là, suis-je bon en terme de comptes, de privilèges et mots de passe, faut-il que:
Ma page de connexion à laquelle j'accède via l'URL distante : https://monsite.com/connexion.php :
Avec ce code en mysqli
ça passe :
$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 :
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) :
J'ai ouvert les ports de mon routeur (est-ce une fausse bonne idée svp ?) et de mon NAS.
Quelqu'un peut-il m'aider car je ne sais pas où je fais fausse route svp ?
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
Génial, 1000 merci flomir, ça marche ! 😀👏🍻
Génial, 1000 merci flomir, ça marche ! 😀👏🍻
Bonjour @Chaandgus 😅
Donc ta variable de connexion à la base de données c'est $DB et non pas $BDD dans ta page inscription.php.
Mentionne moi avec un arobase et mon pseudo, pour que je reçois bien ta réponse.
Cordialement.
Heellloooo
Personne pour m'aider svp ? 😔
@ +
Chaandgus
Merci Flomir, c'est sympa 👍!
Quand le boulot est bien fait... il faut le dire... et là c'est du bon boulot.
La voix est posée, les explications sont claires...Etc ! A nouveau BRAVO 👏👏👏🥳🥰
Je suis déjà en local mais sur une autre machine (NAS Synology) avec MariaDB qui normalement est un très bon produit 😉
Mon problème est que quand je valide la page "inscription, cela me retourne une page blanche sans écrire pas dans la BDD. si quelqu'un a une idée, je prends.
On m'a proposé cela https://www.php.net/manual/fr/mysqli.quickstart.connections.php
et ai donc modifié le fichier connexiondb.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 :
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; | |
} | |
} | |
} | |
<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> | |
require_once('menu.php'); | |
<h1>Inscription</h1> | |
<form method="post"> | |
<section> | |
<div> | |
if(isset($err_prenom)){ | |
echo $err_prenom; | |
} | |
<input type="text" name="prenom" placeholder="Prenom" value="if(isset($prenom)){ echo $prenom;} "> | |
if(isset($err_nom)){ | |
echo $err_nom; | |
} | |
<input type="text" name="nom" placeholder="Nom" value="if(isset($nom)){ echo $nom;} "> | |
</div> | |
<div> | |
if(isset($err_mail)){ | |
echo $err_mail; | |
} | |
<input type="text" name="mail" placeholder="Mail" value="if(isset($mail)){ echo $mail;} "> | |
</div> | |
<div> | |
if(isset($err_password)){ | |
echo $err_password; | |
} | |
<input type="password" name="password" placeholder="Mot de passe" value="if(isset($password)){ echo $password;} "> | |
</div> | |
<div> | |
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"> | |
for($i = 1; $i <= 31; $i++){ | |
<option value="$i ">$i </option> | |
} | |
</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"> | |
for($i = 1940; $i <= 2020; $i++){ | |
<option value="$i ">$i </option> | |
} | |
</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 base de données... elle résiste toujours la maline 😅
Coucou @Chaandgus 😀
Merci beaucoup pour ton message, ça fera plaisir à notre Clouder 😉
Si cela fait une page blanche c'est qu'il n'y a pas d'erreur donc que la connexion à la base de données est bonne ! En revanche, si tu changes le mot de passe, tu auras sûrement un message d'erreur au lieu de la page blanche 😁
Pour ma part j'utilise :
localhost/mapage
Je te conseille de prendre Xampp pour te faire ton propre serveur web en local.
Redis-nous si je t'aurai aidé✌️
Bon courage 😎
Je précise avoir essayé les pages d'inscriptions et connexions suivantes :
try.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); | |
et ça me rend : Succès... 127.0.0.1:3307 via TCP/IP" in my explorer. But, I can't write on with that code :
connexiondb.php
:
// Déclaration d'une nouvelle classe | |
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 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; | |
} | |
} | |
$DB = new connexionDB; | |
$BDD = $DB->connexion(); | |
et inscription.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 sportives | |
WHERE pseudo = ?"); | |
$req->execute(array($pseudo)); | |
$sportives = $req->fetch(); | |
if(isset($sportives['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 sportives | |
WHERE mail = ?"); | |
$req->execute(array($mail)); | |
$sportives = $req->fetch(); | |
if(isset($sportives['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 sportives ($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; | |
} | |
} | |
} | |
<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> | |
require_once('menu.php'); | |
<h1>Inscription</h1> | |
<form method="post"> | |
<section> | |
<div> | |
if(isset($err_prenom)){ | |
echo $err_prenom; | |
} | |
<input type="text" name="prenom" placeholder="Prenom" value="if(isset($prenom)){ echo $prenom;} "> | |
if(isset($err_nom)){ | |
echo $err_nom; | |
} | |
<input type="text" name="nom" placeholder="Nom" value="if(isset($nom)){ echo $nom;} "> | |
</div> | |
<div> | |
if(isset($err_mail)){ | |
echo $err_mail; | |
} | |
<input type="text" name="mail" placeholder="Mail" value="if(isset($mail)){ echo $mail;} "> | |
</div> | |
<div> | |
if(isset($err_password)){ | |
echo $err_password; | |
} | |
<input type="password" name="password" placeholder="Mot de passe" value="if(isset($password)){ echo $password;} "> | |
</div> | |
<div> | |
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"> | |
for($i = 1; $i <= 31; $i++){ | |
<option value="$i ">$i </option> | |
} | |
</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"> | |
for($i = 1940; $i <= 2020; $i++){ | |
<option value="$i ">$i </option> | |
} | |
</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> | |
et c'est là que ça cafouille car je ne peux écrire dans la BDD. MEric pour votre aide 😊