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.
Bonjour,
Débutante en php j'ai un projet a effectuer dans le cadre de mes études.
Alors voila, j'ai créer ma page de connexion a la base de donnée qui marche ainsi qu'une page d'acceuil qui marche également.
Malheureusement je n'arrive pas a effectuer mon inscription, la page s'affiche bien mais aucune données n'est envoyé a ma base donnée.
J'ai relue beaucoup de fois mais je ne vois pas ou se trouve l'erreur.
Peut être que vous pourrez m'aider :)
Merci d'avance, je vous met mon code :
gphymeet-inscription.php
<?php
// Permet de savoir si une session utilisatuer a été démaré et récupéré
session_start();
include('connect.php');
// Fichier PHP contenant la connexion à la BDD
// require('Connect.php');
// S'il y a une session alors on ne retourne plus sur cette page
if(isset($_SESSION['id'])){
header('Location:gphymeet-acceuil.php');
exit;
}
// Si la variable "$_Post" contient des informations alors on les traitres
if(!empty($_POST)){
extract($_POST);
$valid = true;
// On se place sur le bon formulaire grâce au "name" de la balise "input"
//trim — Supprime les espaces (ou d'autres caractères) en début et fin de chaîne
// htmlentities — Convertit tous les caractères éligibles en entités HTML
if (isset($_POST["INSCRIPTION"])){
echo '1'; exit;
$NOM = htmlentities(trim($NOM)); // On récupère le nom
$PRENOM = htmlentities(trim($PRENOM)); // on récupère le prénom
$PSEUDO = htmlentities(trim($PSEUDO)); // on récupère le pseudo
$DDN= htmlentities(trim($DDN)); // on récupère la date de naissance
$SEXE= htmlentities(trim($SEXE)); // on récupère le genre F/M
$TEL = htmlentities(trim($TEL)); // on récupère le prénom
// strtolower — Renvoie une chaîne en minuscules
$MAIL = htmlentities(strtolower(trim($MAIL))); // On récupère le mail
$MDP = trim($MDP); // On récupère le mot de passe
$MDP2 = trim($MDP2); // On récupère la confirmation du mot de passe
// Vérification du nom
if(empty($NOM)){
$valid = false;
$er_NOM= ("Le nom d utilisateur ne peut pas être vide");
}
// Vérification du prénom
if(empty($PRENOM)){
$valid = false;
$er_PRENOM = ("Le prenom d utilisateur ne peut pas être vide");
}
// Vérification du pseudo
if(empty($PSEUDO)){
$valid = false;
$er_PSEUDO = ("Le pseudo de l utilisateur ne peut pas être vide");
}else{
//Vérifie que le pseudo est disponible
$req_PSEUDO = $DB->query("SELECT PSEUDO FROM profil WHERE PSEUDO = ?",
array($PSEUDO));
$req_PSEUDO = $req_PSEUDO->fetch();
if ($req_PSEUDO['PSEUDO'] <> ""){
$valid = false;
$er_PSEUDO = ("Ce pseudo existe déjà");
}
}
//Vérification de la date de naissance
if($req_DDN['DDN']){
$valid = false;
$er_DDN = ("Vous devez rentrer une date de naissance valide");
}else{
// date d'aujourd'hui
$date = new DateTime();
// date - 18 ans
$date_18 = $date->sub(new DateInterval('P18Y'));
// si $_POST['date_naissance'] est au format date par exemple = 2001-12-25
$DDN = new DateTime($_POST['DDN']);
if(!$DDN>= $date_18){
//le visiteur a PAS encore 18 ans
$valid = false;
$er_DDN = ("Vous devez etre majeur pour vous inscrire");
}
}
//Vérification de TEL
if(empty($TEL)){
$valid = false;
$er_TEL = ("Le téléphone de l utilisateur ne peut pas être vide");
}
// Vérification du sexe
if(empty($SEXE)){
$valid = false;
$er_SEXE = ("Le sexe de l utilisateur ne peut pas être vide");
}
// Vérification du mail
if(empty($MAIL)){
$valid = false;
$er_MAIL = ("Le mail ne peut pas être vide");
// On vérifit que le mail est dans le bon format
// fonction preg_match() retourne une valeur booléenne True si la variable correspond à l’expression régulière situé en premier paramètre.
}elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $MAIL)){
$valid = false;
$er_MAIL = ("Le mail n est pas valide");
}else{
// On vérifie que le mail est disponible
$req_MAIL = $DB->query("SELECT MAIL FROM profil WHERE MAIL = ?",array($MAIL));
$req_MAIL = $req_MAIL->fetch();
if ($req_MAIL['MAIL'] <> ""){
$valid = false;
$er_MAIL = ("Ce mail existe déjà");
}
}
// Vérification du mot de passe
if(empty($MDP)) {
$valid = false;
$er_MDP = ("Le mot de passe ne peut pas être vide");
}elseif($MDP != $MDP2){
$valid = false;
$er_MDP = ("La confirmation du mot de passe ne correspond pas");
}
// Si toutes les conditions sont remplies alors on fait le traitement
if($valid){
// cript : Hachage à sens unique (indéchiffrable)
$MPD = crypt($MDP, "$6$rounds=5000$macleapersonnaliseretagardersecret$");
$date_creation_compte = date('Y-m-d H:i:s');
// On insert nos données dans la table PROFIL
$DB->insert("INSERT INTO profil (NOM, PRENOM, PSEUDO, DDN, SEXE, TEL, MAIL, MDP, MDP2, date_creation_compte) VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
array($NOM, $PRENOM, $PSEUDO, $DDN, $SEXE, $TEL, $MAIL, $MDP, $MDP2, $date_creation_compte));
header("Location: gphymeet-inscription1.php");
exit;
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href = "gphymeet-inscription1.css" media="all" rel="stylesheet" type="text/css" />
<header>
<title> GPHYMEET - Inscription1 </title>
<img src="Gmeet.png" class="imageflottante" alt="GPHYMEET" width="10%" height="20%" style="position:absolute;top:0px;left:0px;">
</header>
</head>
<body>
<h1> INSCRIPTION </h1> <h2> Gphymeet </h2>
<div class = "div2" style="width: 600px; padding-top:10px; padding-bottom:10px;border: 3px solid #A0A0A0; text-align: center;background: #C0C0C0;">
<div class="div1"> <p> Création d'un compte </p> </div>
<!-- POST: permet envoyer le formulaire d'une page à l'autre -->
<form method="post" action="gphymeet-inscription1.php">
<?php
// S'il y a une erreur sur le nom alors on affiche
if (isset($er_NOM)){
echo $er_NOM;
}
?>
<p>
<label class="label1" for="NOM"> NOM* :</label> </br>
<input class="input2" type="text" name="NOM" id="NOM" placeholder="Ex : DUBOIS" maxlength="30" value="<?php if(isset($NOM)){ echo $NOM; }?>" >
</p>
<?php
// S'il y a une erreur sur le prenom alors on affiche
if (isset($er_PRENOM)){
echo $er_PRENOM;
}
?>
<p>
<label class="label1" for="PRENOM"> PRENOM* :</label> <br/>
<input class="input2" type="text" name="PRENOM" id="PRENOM" placeholder="Ex : Lucas" maxlength="30" value="<?php if(isset($PRENOM)){ echo $PRENOM; }?>" />
</p>
<?php
// S'il y a une erreur sur le pseudo alors on affiche
if (isset($er_PSEUDO)){
echo $er_PSEUDO;
}
?>
<p>
<label class="label1" for="PSEUDO"> PSEUDO* :</label> <br/>
<input class="input2" type="text" name="PSEUDO" id="PSEUDO" maxlength="15" value="<?php if(isset($PSEUDO)){ echo $PSEUDO; }?>" />
</p>
<?php
// S'il y a une erreur sur lA DATE DE NAISSANCE alors on affiche
if (isset($er_DDN)){
echo $er_DDN;
}
?>
<p>
<label class="label1" for="DDN"> DATE DE NAISSANCE* :</label> <br/>
<input class="input2" type="DATE" name="DDN" id="DDN" value="<?php if(isset($DDN)){ echo $DDN; }?>" />
</p>
<?php
// S'il y a une erreur sur le SEXE alors on affiche
if (isset($er_SEXE)){
echo $er_SEXE;
}
?>
<p>
<label class="label1" for="SEXE"> GENRE* :</label> <br/>
<input type="radio" id="GENREF" name="SEXE" value="GENREF" /> <label for="GENREF"> Feminin</label>
<input type="radio" id="GENREM" name="SEXE" value="GENREM" /> <label for="GENREM"> Masculin</label>
</p>
<?php
// S'il y a une erreur sur le TEL alors on affiche
if (isset($er_TEL)){
echo $er_TEL;
}
?>
<p>
<label class="label1" for="TEL"> Numéro de téléphone* :</label> <br/>
<input class="input2" type="text" name="TEL" id="TEL" placeholder="Ex : 06 .. .. .. .." maxlength="30" value="<?php if(isset($TEL)){ echo $TEL; }?>" />
</p>
<?php
// S'il y a une erreur sur le MAIL alors on affiche
if (isset($er_MAIL)){
echo $er_MAIL;
}
?>
<p>
<label class="label1" for="MAIL"> MAIL* :</label> <br/>
<input class="input2" type="email" name="MAIL" id="MAIL" placeholder="Ex: Lucas.dubois@gmail.com" maxlength="60" value="<?php if(isset($MAIL)){ echo $MAIL; }?>" />
</p>
<?php
// S'il y a une erreur sur le pseudo alors on affiche
if (isset($er_MDP)){
echo $er_MDP;
}
?>
<p>
<label class="label1" for="MDP"> MOT DE PASSE* :</label> <br/>
<input class="input2" type="password" name="MDP" id="MDP" maxlength="12" title=" Le mot de passe doit contenir 12 caractères : chiffres ou lettres" value="<?php if(isset($MDP)){ echo $MDP; }?>" />
</p>
<p>
<label class="label1" for="MDP2"> CONFIRMATION MOT DE PASSE* :</label> <br/>
<input class="input2" type="password" name="MDP2" id="MDP2" maxlength="12" title=" Le mot de passe doit contenir 12 caractères : chiffres ou lettres"/>
</p>
<div class="div4" > <p> * Champs obligatoires </p> </div>
</form>
</div>
<div class="div3"> <p> <input type="checkbox" id="conditions" name="conditions" />
<label for="conditions"><em> En vous inscrivant, vous devenez membre de la famille de sites Gmeet <br/> et vous avez lu et accepté les conditions d'utilisation et la politique de confidentialité.</em> </label><br/> </p>
</div>
<Button class="bouton2" type="submit" id="button" name="INSCRIPTION">Envoyer </Button>
<!-- lien du bouton vers une autre page -->
<a href="gphymeet-acceuil.php">
<input class="bouton1" type="submit" id="button" value="RETOUR" /> </a>
</body>
</html>
Je met également ma connexion a la BDD même si je pense qu'elle est fonctionnelle, on sait jamais j'ai peut être fait des erreurs :)
connect.php
<?php
// Déclaration d'une nouvelle classe
class connect {
private $host = '127.0.0.1'; // nom de l'host
private $name = 'gphymeet'; // nom de la base de donnée
private $user = 'root'; // utilisateur
private $pass = 'rokiatou'; // mot de passe
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 UTF8',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}catch (PDOException $e){
echo 'Erreur : Impossible de se connecter à la BDD !';
die();
}
}
// query : gagner un gain de vitesse lorsque vous allez écrire une requête SQLafin d'interroger votre serveur.
public function query($sql, $data = array()){
$req = $this->connexion->prepare($sql);
$req->execute($data);
return $req;
}
// pour inserer des données, modifier ou supprimer
public function insert($sql, $data = array()){
$req = $this->connexion->prepare($sql);
$req->execute($data);
}
}
// Faire une connexion à votre fonction
$DB = new connect();
?>
Merci d'avance :)
Re:
Très bien 😉 Je te conseillerais de supprimer les fichiers inutiles dans un premier temps afin que tu sois mieux organiser dans tes fichiers 😉
Tu n'as pas de messages d'erreur qui apparaissent ? 🤔
Re @Jerem971
Alors dans mon dossier il y a des documents que je n'utilise plus, actuellement toutes les pages que j'utilisent sont en format.php 😉
Merci pour les conseil 😁
Re:
Très bien @ASTIE et bonne initiative d'utiliser XAMPP 😉
Et pour la capture : oui c'est bien cela que je demandais 😉
Alors une question : pourquoi as-tu des fichiers HTML et PHP au même nom ? 🤔
Tu n'es pas obligé de t'y prendre comme cela 😉 L'extension ".php" n'empêche pas l'interprétation du code HTML 😉 Donc je t'aurais plus conseillé de travailler avec des fichiers PHP étant donné que c'est un site web dynamique que tu souhaites faire 😉
Ah et dans ton code, pour le regex du format de l'email, il est préférable d'utiliser celui-ci : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
😉
salut @CrafterHide
J'ai déjà regarder les 2 tutos, ils m'ont d'ailleurs bien aidé pour coder mon inscription mais je ne vois pas de différences avec mon code.