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 @Clouder
J'ai suivi ton super tuto : https://www.youtube.com/watch?v=ZpviDQeljRU&t=2s
Question 1 : Le premier 🍪 comail fonctionne mais pas le second. Aurais-tu une idée du pourquoi stp ? Voici mon code :
<?php
session_start();
include('bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD
//ESSAYER DEVOIR LE DETAIL DE CHACUNE DES LIGNES CI-DESSOUS//
include('function/domaine.php'); //
include('function/guid.phpp'); //
include('function/password.php'); //
//$domain=new Domain;
$crypt_password = new Password;
//define("URL", $domain->domain());
// 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);
//si toutes mes conditions sont ok on exécute
$valid = true;
//on se positionne dans le 1er formulaire (ici on en a qu'un
if (isset($_POST['signin'])){
$s_mail = htmlentities(strtolower(trim($mail)));
$s_psw = htmlentities(trim($psw));
if(empty($s_mail)){ // Vérification qu'il y est bien un mail de renseigne
$valid = false;
$er_s_mail = "Il faut saisir un mail s'il vous plaît.";
}
if(empty($s_psw)){ // Vérification qu'il y est bien un mot de passe de renseigne
$valid = false;
$er_s_mail = "Il faut saisir un mot de passe s'il vous plaît.";
}
// On fait une requete pour savoir si le couple mail / mot de passe existe bien car le mail est unique !
$verif_combi = $DB->query("SELECT *
FROM utilisateur
WHERE mail = ? AND password = ?",
// array($s_mail, $crypt_password->password($s_password)));
array($s_mail, $crypt_password->password($s_psw)));
//le fetch recherche uniquement un argument - des qu'on a une ligne cela
//la combinaison sera unique puisque les mails sont uniques
$verif_combi = $verif_combi->fetch();
// Si on a pas de resultat alors c'est qu'il n'y a pas de particulier correspondant au couple mail / mot de passe
if(!isset($verif_combi['id'])){
$valid = false;
//La combinaison mail + mot de passe n'existe pas car on évite de dire que ce soit le mail qui est erronné
$er_s_mail = "Le mail ou le mot de passe est incorrect.";
}
// S'il y a un resultat alors on va charger la SESSION du particulier unique les variables $_SESSION
if ($valid){
//Dans notre BDD on a l'id donc on le charge dans la session
$_SESSION['id'] = $verif_combi['id']; // id du particulier unique pour les requetes futures
$_SESSION['nom'] = $verif_combi['nom'];
$_SESSION['prenom'] = $verif_combi['prenom'];
$_SESSION['mail'] = $verif_combi['mail'];
$_SESSION['pseudo'] = $verif_combi['pseudo'];
if(isset($remember)){
/*On créer les cookies et on l'encode avec l'urlencode et on utilise un timer pour dire pendant combine de temps*/
setcookie("comail", urlencode($_SESSION['mail']), time()+60*60*24*100, "/");
/*ici on utilise la focntion */
setcookie("copassword", $crypt_password->encrypt($s_psw), time()+60*60*24*100, "/");
}else{
//on met -1 au niveau du temps, sinon cela veut dire qu'on ne le garde pas
setcookie("comail", NULL, -1, "/");
setcookie("copassword", NULL, -1, "/");
}
// echo "vous êtes bien connectés";
header('Location: index.php');
exit;
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<base href="<?= URL ?>"/>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<!--https://getbootstrap.com/docs/5.1/getting-started/introduction/ -->
<link href="../../css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="css/style.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="css/jquery-ui.theme.min.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="css/jquery-ui.structure.min.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="css/jquery-ui.min.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="css/style.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="css/bluetheme.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="css/darktheme.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<div class="container">
<h2 style="margin-botton: 15px">Se connecter</h2>
<div class="ins_cadre">
<form method="post">
<div class="container-fluid">
<label><b>Mail</b></label>
<!--si on a bien qqchose dans les cookies alors cela affiche mon mail dans urldecode -->
<input type="email" placeholder="Entrez votre mail" name="mail" value="<?php if(isset($s_mail) && !isset($_COOKIE['comail'])){echo $s_mail; }
if(isset($_COOKIE['comail'])){ echo urldecode($_COOKIE['comail']); }?>" required>
<?php if(isset($er_s_mail)){echo "<div>$er_s_mail</div>"; } ?>
<label><b>Mot de passe</b></label>
<input type="password" placeholder="Entrez votre mot de passe" name="psw" value="<?php if(isset($_COOKIE['copassword'])){ echo $crypt_password->decrypt($_COOKIE['copassword']); }?>" required>
<div style="text-align: center">
<button type="submit" name="signin" class="logbtn">Connexion</button>
</div>
<label class="switch">
<input type="checkbox" name="remember" <?php if(isset($_COOKIE['copassword']) && ($_COOKIE['copassword']!="")) {echo "checked";}?>>
<div class="slider round"></div>
<span style="position: absolute; left: 70px; top:7px; width:100px">Se souvenir</span>
</label></div>
<div style="padding: 10px;position: relative"><span style="position: absolute; right: 10px;top: 0"><a href="">Mot de passe oublié ?</a></span></div>
</form>
</div></div>
<!-- premier lien de https://developers.google.com/speed/libraries -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>-->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="<?= URL ?>js/bootstrap.min.js"></script>
<script type="text/javascript">
function myFunction(x) {
x.classList.toggle("change");
}
</script>
<!-- Footer -->
</body>
</html>
Voici la fonction password :
<?php
/**
* Crypt password
*/
class Password {
public function __construct(){
}
/*il s'agit ici de la fonction crypt */
/*vérifier ici c'est la clé est bien différente de celle de l'inscription https://www.youtube.com/watch?v=ZpviDQeljRU&t=2s et regarder la vidéo du formulaire d'inscription*/
/*la remodifier lorsque l'on met en ligne*/
public function password($p_chaine){
$p_chaine = crypt($p_chaine, "$6$rounds=5000$vTZET");
return $p_chaine;
}
//public function age($date_naissance){
// $arr1 = explode('-', $date_naissance);
// $arr2 = explode('-', date('Y-m-d'));
// if(($arr1[1] < $arr2[1]) || (($arr1[1] == $arr2[1]) && ($arr1[2] <= $arr2[2])))
// return $arr2[0] - $arr1[0];
// return $arr2[0] - $arr1[0] - 1;
//}
function encrypt($data) {
$key = "az@tyu78"; //clé de 8 caractères max - ok je l'ai modifié
$data = serialize($data); //
$td = mcrypt_module_open(MCRYPT_DES,"",MCRYPT_MODE_ECB,""); //
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td,$key,$iv);
$data = mbase64_encode(mcrypt_generic($td, '!'.$data));
mcrypt_generic_deinit($td);
return $data;
}
function decrypt($data) {
$key = "az@tyu78"; //clé de 8 caractères max - ok je l'ai modifié
$td = mcrypt_module_open(MCRYPT_DES,"",MCRYPT_MODE_ECB,""); //
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td,$key,$iv);
$data = mdecrypt_generic($td, base64_decode($data));
mcrypt_generic_deinit($td);
if(substr($data,0,1) != "!")
return false;
$data = substr($data,1,strlen($data)-1);
return unserialize($data);
}
}
?>
Aurais-tu une idée stp ?
Question 2 : La chaîne de code "$6$rounds=...." dans la focntion apssword doit-elle bien être la même que dans celle de l'inscription ou faut-il la changer stp ?
public function password($p_chaine){
$p_chaine = crypt($p_chaine, "$6$rounds=5000$CP&^b6g9GSScb$eR6T^EZwYZM2kWP^bkDyk&C3fBfo$eeqpi3cCntg#bbsA&yhyiSPjM$e!p2mVUZaw3VTnc2BimQZfh28YdfGGu$H!NKwQZSdH%7Ye5");
return $p_chaine;
Un grand merci pour ton aide 🍺