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,
je suis actuellement les vidéos du sitedudev version 2. Je suis exposé a un soucis que je ne trouve pas par rapport à la class inscription.
En effet il y a deux jours je pouvais inscrire sans aucuns soucis. Tout fonctionné bien mais, depuis, ça ne s'ajoute plus du tout à la BDD (mais il y a quand même la redirection à la page connexion qui s'effectue). J'ai surement du toucher à quelque chose mais je ne vois pas quoi.
class inscription :
<?php
class Inscription
{
private $valid;
private $err_pseudo;
private $err_mail;
private $err_password;
public function verification_inscription($pseudo, $mail, $confmail, $password, $confpassword)
{
////////////////////////////////////////////////////////////////////////////////////////////////////VARIABLE GLOBAL DB
global $DB;
///////////////////////////////////////////////////////////////////////////////////////////////////VARIABLES D'ENTREES
$pseudo = (string) ucfirst(trim($pseudo));
$mail = (string) trim($mail);
$confmail = (string) trim($confmail);
$password = (string) trim($password);
$confpassword = (string) trim($confpassword);
///////////////////////////////////////////////////////////////////////////////////////////////////VARIABLES DECLAREES
$this->err_pseudo = (string) '';
$this->err_mail = (string) '';
$this->err_password = (string) '';
$this->valid = (boolean) true;
//////////////////////////////////////////////////////////////////////APPEL D'UNE FONCTION A lINTERIEUR D'UNE FONCTION
$this->verification_pseudo($pseudo);
$this->verification_mail($mail, $confmail);
$this->verification_password($password, $confpassword);
if ($this->valid)
{
/////////////////////////////////////////////////////////////////////////////////////////INSERTION DANS LA BDD
$crypt_password = password_hash($password, PASSWORD_ARGON2ID);
$date_creation = date('Y-m-d H:i:s');
$req = $DB->prepare("INSERT INTO utilisateur(pseudo, mail, mdp, date_creation, date_connexion)
VALUES (?, ?, ?, ?, ?)");
$req->execute(array($pseudo, $mail, $crypt_password, $date_creation, $date_creation));
header('Location: connexion.php');
exit;
}
///////////////////////////////////////////////////C'EST UNE CLASSE , ON RETOURNE DONC LES ERREURS DANS UN TABLEAU
return [$this->err_pseudo, $this->err_mail, $this->err_password];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////FONCTION POUR VERIFIER LE PSEUDO
private function verification_pseudo($pseudo){
global $DB;
/*si le pseudo est vide*/
if (empty($pseudo))
{
$this->valid = false;
$this->err_pseudo = "Renseigner votre pseudo";
/*limitation du nombre de characteres grapheme_strlen*/
}elseif(strlen($pseudo) < 2){
$this->valid = false;
$this->err_pseudo = "Votre pseudo doit avoir plus de 2. actuellement :" . strlen($pseudo);
}elseif(strlen($pseudo) > 25){
$this->valid = false;
$this->err_pseudo = "Votre pseudo ne doit pas avoir plus de 25 characteres. " . " (" .strlen($pseudo) . ")/25";
}else{
/*requete pour le nom unique*/
$req = $DB->prepare("
SELECT id
FROM utilisateur
WHERE pseudo = ?");
/*execution de la requete*/
$req->execute(array($pseudo));
/*on reccupere les données avec fetch*/
$req = $req->fetch();
/*si on a quelque chose qui correspond a un ID*/
if (isset($req['id']))
{
/*on bloque l'etape pour dire que le pseudo existe*/
$this->valid = false;
$this->err_pseudo = "Ce pseudo est déjà pris.";
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////FONCTION POUR VERIFIER LE MAIL
private function verification_mail($mail,$confmail){
global $DB;
/*si le mail est vide*/
if (empty($mail))
{
$this->valid = false;
$this->err_mail = "Renseigner votre mail";
/*si le mail est different de la confirmation du mail*/
}elseif(!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
$this->valid = false;
$this->err_mail = "format mail : invalide";
}elseif($mail <> $confmail){
$this->valid = false;
$this->err_mail = "la confirmation du mail est différent du mail";
}else{
/*requete pour le nom unique*/
$req = $DB->prepare("
SELECT id
FROM utilisateur
WHERE mail = ?");
/*execution de la requete*/
$req->execute(array($mail));
/*on reccupere les données avec fetch*/
$req = $req->fetch();
/*si on a quelque chose qui correspond a un ID*/
if (isset($req['id']))
{
/*on bloque l'etape pour dire que le mail existe*/
$this->valid = false;
$this->err_mail = "Ce mail est déjà pris.";
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////FONCTION POUR VERIFIER LE MOT DE PASSE
private function verification_password($password, $confpassword)
{
global $DB;
if (empty($password))
{
$this->valid = false;
$this->err_password = "Votre mot de passe est vide";
}elseif($password <> $confpassword){
$this->valid = false;
$this->err_password = "Le mot de passe et la confirmation du mot de passe sont différents.";
}
}
}
?>
la page html :
<?php
/////////////////////////////////////////////////////////////////////////////////////////////////////////////CONNEXION A LA DB
require_once('include.php');
///////////////////////////////////////////////////////////////////////////////////////////////////////////VARIABLE DE SESSION
if (isset($_SESSION['id']))
{
header('Location: index.php');
exit;
}
//si on a des données
if (!empty($_POST))
{
//on extrait les informations du post
extract($_POST);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (isset($_POST['inscription']))
{
//////////////////////////////////////////////////APPEL DE LA CLASSE INSCRIPTION ET UTILISATION DE LA CLASSE VERIFICATION
[$err_pseudo, $err_mail, $err_password] = $_Inscription->verification_inscription($pseudo, $mail, $confmail, $password, $confpassword);
/*ucfirst() = première lettre en majuscule*/
}
}
?>
<!doctype html>
<html lang="fr">
<head>
<title>INSCRIPTION</title>
<!--META--et--LINK-------------------------------------------------------------------------------------------------------->
<?php
require_once('_head/meta.php');
require_once('_head/link.php');
require_once('_head/script.php');
?>
<!------------------------------------------------------------------------------------------------------------------------>
</head>
<body>
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!--MENU---------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<?php
require_once('_menu/menu.php');
?>
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!-- -------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<div class="container">
<h1>INSCRIPTION</h1>
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!--FORMULAIRE D'INSCRIPTION-------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------------------------------------->
<form method="post" >
<div class="mb-3">
<label class="form-label">pseudo</label>
<input class="form-control" type="text" name="pseudo" value="<?php if(isset($pseudo)){ echo $pseudo ;} ?>" placeholder="Renseigner votre pseudo">
<?php if(isset($err_pseudo)){ echo "<div>" .$err_pseudo. "</div>" ;} ?>
</div>
<!-------------------------------------------------------------------------------------------------------------------->
<div class="mb-3">
<label class="form-label">mail</label>
<input class="form-control" type="email" name="mail" value="<?php if(isset($mail)){ echo $mail ;} ?>" placeholder="Renseigner votre mail">
<?php if(isset($err_mail)){ echo "<div>" .$err_mail. "</div>" ;} ?>
</div>
<!-------------------------------------------------------------------------------------------------------------------->
<div class="mb-3">
<label class="form-label">Confirmer le mail</label>
<input class="form-control" type="email" name="confmail" value="<?php if(isset($confmail)){ echo $confmail ;} ?>" placeholder="confirmer l'email">
</div>
<!-------------------------------------------------------------------------------------------------------------------->
<div class="mb-3">
<label class="form-label">mot de pass</label>
<input class="form-control" type="password" name="password" value="<?php if(isset($password)){ echo $password ;} ?>" placeholder="Renseigner votre mot de pass">
<?php if(isset($err_password)){ echo "<div>" .$err_password. "</div>" ;} ?>
</div>
<!-------------------------------------------------------------------------------------------------------------------->
<div class="mb-3">
<label class="form-label">confirmer le mot de pass</label>
<input class="form-control" type="password" name="confpassword" value="" placeholder="confirmer votre mot de pass">
</div>
<!-------------------------------------------------------------------------------------------------------------------->
<div class="mb-3">
<button type="submit" name="inscription" class="btn btn-info">m'inscrire</button>
</div>
</form>
</div>
<?php
require_once('_footer/footer.php');
?>
</body>
</html>
J'espère avoir un retour constructif de votre part en ésperant que j'ai fais ce qu'il fallait dans le sujet de ce post affin que l'on puisse vite m'aider.
Cordialement,
Jad.
Bonjour @Clouder ,
J'ai en effet une erreur :
Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: 1364 Field 'avatar' doesn't have a default value in C:\MAMP\htdocs\site2\_class\inscription.class.php on line 39
ok
J'avais en effet coché " privilège" au lieu de cocher " Null" dans la colone "avatar".
Maintenant tout fonctionne bien ! j'attend donc ton prochain tuto @Clouder .
Merci beaucoup :D
Super ! 😁
Je termine mes vacances et ensuite je reprends les vidéos sur YouTube ✌️
Bonjour @Clouder ,
J'ai en effet une erreur :
Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: 1364 Field 'avatar' doesn't have a default value in C:\MAMP\htdocs\site2\_class\inscription.class.php on line 39
ok
J'avais en effet coché " privilège" au lieu de cocher " Null" dans la colone "avatar".
Maintenant tout fonctionne bien ! j'attend donc ton prochain tuto @Clouder .
Merci beaucoup :D
Salut @JAD ,
Si tu n'as pas d’entrées dans ta BDD mais que tu as bien la redirection alors fait ceci (du déboggage)
<?php
// ...
$crypt_password = password_hash($password, PASSWORD_ARGON2ID);
$date_creation = date('Y-m-d H:i:s');
$req = $DB->prepare("INSERT INTO utilisateur(pseudo, mail, mdp, date_creation, date_connexion)
VALUES (?, ?, ?, ?, ?)");
$req->execute(array($pseudo, $mail, $crypt_password, $date_creation, $date_creation));
// Tu commentes la ligne ci-dessous pour ne plus être redirigé et donc ne pas voir l'erreur .. :)
//header('Location: connexion.php');
// Tu ajoutes un petit echo 'ok'; pour être sur que ton code va jusque là
echo 'ok';
// Toujours laisser le 'exit' pour stopper le code
exit;
?>
Avec ça tu devrais obtenir une erreur. Ci ce n'est pas le cas alors il faut jouer avec le echo
et le exit
plus au dans le code.
Salut @Space001 ,
je retape manuellement ce qu’il y a d’écrit sur la vidéo . ( en changeant parfois les noms des classes ou des choses comme ça mais sinon , je met pose , je recopie et j’appuie de nouveau sur play.)
Je voulais vérifier aussi au niveau du code à télécharger, mais je n’ai pas trouvé ici ou il se trouve.
Salut @JAD,
As-tu télécharger le code depuis l'espace tutoriel du site ? As-tu fais un simple copier-coller ou as-tu réécris manuellement le code d'après la vidéo ? 🤔