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 les cours pas à pas pour créer son site, cependant je ne sais pas comment enregistrer ma clé dans ma base de donnée. Où se trouve-t-elle? Et comment l'enregistrer dans la BDD?
je remet ici l'extrait de l'énoncé:
"Avant d'insérer les informations pour notre nouvel utilisateur nous allons commencer par générer notre token. Pour cela nous allons utiliser la fonction random_bytes
et la fonction bin2hex
afin de nous donner une clé.
// bin2hex(random_bytes($length))$token = bin2hex(random_bytes(12)); // Exemples:// 39e9289a5b8328ecc4286da11076748716c41ec7fb94839a689f7dac5cdf5ba8bdc9a9acdc95b95245f80a00// On insert nos données dans la table utilisateur$DB->insert("INSERT INTO utilisateur (nom, prenom, mail, mdp, date_creation_compte, token) VALUES (?, ?, ?, ?, ?, ?)", array($nom, $prenom, $mail, $mdp, $date_creation_compte, $token));
N'oubliez pas d'enregistrer votre clé dans votre base de données."
//=====Ajout du message au format HTML
$contenu = '<p>Bonjour ' . $req['nom'] . ',</p><br>
<p>Veuillez confirmer votre compte <a href="conf.php?id=' . $req['id'] . '&token=' . $token . '">Valider</a><p>';
mail($mail_to, 'Confirmation de votre compte', $contenu, $header);
header('Location: index.php');
exit;
Ensuite j'ai une erreur: Parse error: syntax error, unexpected ' ' (T_STRING) in /opt/lampp/htdocs/projetweb/inscription.php on line 3
que je n'arrive pas à résoudre dans le code source "inscription.php
"
Je n'ai pas mis tout le code car l'erreur s'affiche dans cette partie.
C'est comme quand tu veux crypter un mot de passe lors d'une inscription, sauf qu'on ne va pas utiliser le cryptage SHA1 mais bin2hex
Voila un exemple de cryptage
<?php
// On réceptionne le password envoyé par le formulaire
$password = $_POST['password'];
// On hash le password
$password = sha1($password);
// On enregistre dans la bdd
// ...
?>
Si cela ne t'aides pas, voici le code de la page d'inscription de vidéo de formation de Sitedudev
inscription.php
<?php
session_start();
include_once('includes.php');
if(isset($_SESSION['pseudo'])){
header('Location: accueil.php');
exit;
}
if(!empty($_POST)){
extract($_POST);
$valid = true;
$Mail = htmlspecialchars(trim($Mail));
$Pseudo = htmlspecialchars(ucfirst(trim($Pseudo)));
$Password = trim($Password);
$PasswordConfirmation = trim($PasswordConfirmation);
if(empty($Pseudo)){
$valid = false;
$_SESSION['flash']['danger'] = "Veuillez mettre un pseudo !";
}
if(empty($Mail)){
$valid = false;
$_SESSION['flash']['danger'] = "Veuillez mettre un mail !";
}
$req = $DB->query('Select mail from user where mail = :mail', array('mail' => $Mail));
$req = $req->fetch();
if(!empty($Mail) && $req['mail']){
$valid = false;
$_SESSION['flash']['danger'] = "Ce mail existe déjà";
}
if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $Mail)){
$valid = false;
$_SESSION['flash']['danger'] = "Veuillez mettre un mail conforme !";
}
if(empty($Password)){
$valid = false;
$_SESSION['flash']['danger'] = "Veuillez renseigner votre mot de passe !";
}elseif($Password && empty($PasswordConfirmation)){
$valid = false;
$_SESSION['flash']['danger'] = "Veuillez confirmer votre mot de passe !";
}elseif(!empty($Password) && !empty($PasswordConfirmation)){
if($Password != $PasswordConfirmation){
$valid = false;
$_SESSION['flash']['danger'] = "La confirmation est différente !";
}
}
if($valid){
$id_public = uniqid();
$DB->insert('Insert into user (pseudo, mail, password, idpublic) values (:pseudo, :mail,:password, :idpublic)', array('pseudo' => $Pseudo, 'mail' => $Mail, 'password' => crypt($Password, '$2a$10$1qAz2wSx3eDc4rFv5tGb5t'), 'idpublic' => $id_public));
$_SESSION['flash']['success'] = "Votre inscription a bien été prise en compte, connectez-vous !";
header('Location: connexion.php');
exit;
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<header>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
<link href="bootstrap/js/bootstrap.js" rel="stylesheet" type="text/css"/>
<link href="style.css" rel="stylesheet" type="text/css" media="screen"/>
<title>Inscription</title>
</header>
<body>
<?php
if(isset($_SESSION['flash'])){
foreach($_SESSION['flash'] as $type => $message): ?>
<div id="alert" class="alert alert-<?= $type; ?> infoMessage"><a class="close">X</span></a>
<?= $message; ?>
</div>
<?php
endforeach;
unset($_SESSION['flash']);
}
?>
<div class="container-fluid">
<div class="row">
<div class="col-xs-1 col-sm-2 col-md-3"></div>
<div class="col-xs-10 col-sm-8 col-md-6">
<h1 class="index-h1">Inscription</h1>
<br/>
<form method="post" action="inscription.php">
<label>Pseudo</label>
<br/>
<?php
if(isset($error_pseudo)){
echo $error_pseudo."<br/>";
}
?>
<input class="input" type="text" name="Pseudo" placeholder="Pseudo" value="<?php if (isset($Pseudo)) echo $Pseudo; ?>" maxlength="20" required="required">
<label>Mail</label>
<input class="input" type="email" name="Mail" placeholder="Votre mail" value="<?php if (isset($Mail)) echo $Mail; ?>" required="required">
<label for="Password">Mot de passe</label>
<br/>
<?php
if(isset($error_password)){
echo $error_password."<br/>";
}
?>
<input class="input" type="password" name="Password" placeholder="Mot de passe" value="<?php if (isset($Password)) echo $Password; ?>" required="required">
<label>Confirmez votre mot de passe</label>
</br>
<?php
if(isset($error_passwordConf)){
echo $error_passwordConf."<br/>";
}
?>
<input class="input" type="password" name="PasswordConfirmation" placeholder="Confirmation du mot de passe" required="required">
<div class="row">
<div class="col-xs-0 col-sm-10 col-md-2"></div>
<div class="col-xs-12 col-sm-2 col-md-8">
<button type="submit">S'inscrire</button>
</div>
<div class="col-xs-0 col-sm-1 col-md-2"></div>
</div>
</form>
<br/>
<br/>
<a href="index.php">Retour accueil</a>
</div>
<div class="col-xs-0 col-sm-2 col-md-3"></div>
</div></div>
<script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
Vraiment très bien réalisé !!! L'intégralité de l'espace membres sur ce lien
Comment l'on procède pour crypter la fonction token?
Le reste du code est entièrement celui réaliser par sitedudev, ainsi la seule chose que je n'ai pas faite c'est cette partie de l'énoncé car je ne sais pas comment on fait:
"Avant d'insérer les informations pour notre nouvel utilisateur nous allons commencer par générer notre token. Pour cela nous allons utiliser la fonction random_bytes
et la fonction bin2hex
afin de nous donner une clé.
// bin2hex(random_bytes($length))$token = bin2hex(random_bytes(12)); // Exemples:// 39e9289a5b8328ecc4286da11076748716c41ec7fb94839a689f7dac5cdf5ba8bdc9a9acdc95b95245f80a00// On insert nos données dans la table utilisateur$DB->insert("INSERT INTO utilisateur (nom, prenom, mail, mdp, date_creation_compte, token) VALUES (?, ?, ?, ?, ?, ?)", array($nom, $prenom, $mail, $mdp, $date_creation_compte, $token));
N'oubliez pas d'enregistrer votre clé dans votre base de données."
Re @elodiep,
Apparemment, le message indique que ton problème proviens de la ligne 105 🧐
$contenu = '<p>Bonjour ' . $req['nom'] . ',</p><br>;
<p>Veuillez confirmer votre compte <a href="conf.php?id=' . $req['id'] . '&token=' . $token . '">Valider</a><p>';
Et bien😀... je ne vois aucune erreur, je ne comprend pas, essaye de redémarrer ton serveur
Je pense que si malgré le redémarrage, le problème persiste, cela provient peut-être de tes variables (ex: $contenu, etc...)
Tu a creer un colonne pour les tokens dans ta base de donnée ? 😏
As-tu bien crypter la fonction token ? 🧐
Voici mon code entier:
<?php
session_start();
include('bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD
// S'il y a une session alors on ne retourne plus sur cette page
if (isset($_SESSION['id'])){
header('Location: index.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"
if (isset($_POST['inscription'])){
$nom = htmlentities(trim($nom)); // On récupère le nom
$prenom = htmlentities(trim($prenom)); // on récupère le prénom
$mail = htmlentities(strtolower(trim($mail))); // On récupère le mail
$mdp = trim($mdp); // On récupère le mot de passe
$confmdp = trim($confmdp); // 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 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
}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érifit que le mail est disponible
$req_mail = $DB->query("SELECT mail FROM user 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 != $confmdp){
$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){
$mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$");
$date_creation_compte = date('Y-m-d H:i:s');
$token = bin2hex(random_bytes(12));
// On insert nos données dans la table utilisateur
$DB->insert("INSERT INTO user (nom, prenom, mail, mdp, date_creation_compte, token)
VALUES
(?, ?, ?, ?, ?, ?)",
array($nom, $prenom, $mail, $mdp, $date_creation_compte, $token));
$req = $DB->query("SELECT *
FROM utser
WHERE mail = ?",
array($mail));
$req = $req->fetch();
$mail_to = $req['mail'];
//=====Création du header de l'e-mail.
$header = "From: no-reply <no-reply@gmail.com>\n";
$header .= "MIME-version: 1.0\n";
$header .= "Content-type: text/html; charset=utf-8\n";
$header .= "Content-Transfer-ncoding: 8bit";
//=======
//=====Ajout du message au format HTML
$contenu = '<p>Bonjour ' . $req['nom'] . ',</p><br>;
<p>Veuillez confirmer votre compte <a href="conf.php?id=' . $req['id'] . '&token=' . $token . '">Valider</a><p>';
mail($mail_to, 'Confirmation de votre compte', $contenu, $header);
header('Location: index.php');
exit;
}
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Inscription</title>
</head>
<body>
<div>Inscription</div>
<form method="post">
<?php
// S'il y a une erreur sur le nom alors on affiche
if (isset($er_nom)){
?>
<div><?= $er_nom ?></div>
<?php
}
?>
<input type="text" placeholder="Votre nom" name="nom" value="<?php if(isset($nom)){ echo $nom; }?>" required>
<?php
if (isset($er_prenom)){
?>
<div><?= $er_prenom ?></div>
<?php
}
?>
<input type="text" placeholder="Votre prénom" name="prenom" value="<?php if(isset($prenom)){ echo $prenom; }?>" required>
<?php
if (isset($er_mail)){
?>
<div><?= $er_mail ?></div>
<?php
}
?>
<input type="email" placeholder="Adresse mail" name="mail" value="<?php if(isset($mail)){ echo $mail; }?>" required>
<?php
if (isset($er_mdp)){
?>
<div><?= $er_mdp ?></div>
<?php
}
?>
<input type="password" placeholder="Mot de passe" name="mdp" value="<?php if(isset($mdp)){ echo $mdp; }?>" required>
<input type="password" placeholder="Confirmer le mot de passe" name="confmdp" required>
<button type="submit" name="inscription">Envoyer</button>
</form>
</body>
</html>
j'ai rien dit...
Peux-tu m'envoyer le code de la ta ligne 105 de ta page d'inscription ? 😉
Ah du cout le message vient de changer🧐
Lorsque je fais:
//=====Ajout du message au format HTML
$contenu = '<p>Bonjour ' . $req['nom'] . ',</p><br>
<p>L'\utilisateur n'\a pas confirmer son compte <a href="conf.php?id=' . $req['id'] . '&token=' . $token . '">Valider</a><p>';
mail($mail_to, 'Confirmation de votre compte', $contenu, $header);
header('Location: index.php');
exit;
j'ai cette erreur la: Parse error: syntax error, unexpected '\' (T_NS_SEPARATOR) in /opt/lampp/htdocs/projetweb/inscription.php on line 105