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 :
<?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) :
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
<?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 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
:
<?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
:
<?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
:
<?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;
}
}
}
?>
<!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>
et c'est là que ça cafouille car je ne peux écrire dans la BDD. MEric pour votre aide 😊