Bonjour cher tous, j'ai besoin de vos lumières, en php lorsqu'on veut vérifier l'identité de nos utilisateurs on utilise souvent le couple adresse mail mot de passe une fois que les vérifications sont faites avec notre bdd on créé des sessions et on redirige nos utilisateurs. sauf que mon problème est le suivant, mon client est sur la page de login, je fais un fetch avec js et j'envoi les données d'identification sur une page en php ensuite je reçois les résultats, aparès vérification, si tout est bon comment je redirige mon client vers son espace client avec les sessions et tout?? merci bien
Hello, il te faudra gérer la redirection en JS suite à la réponse de ton serveur ; tu peux utiliser une des méthodes suivantes au choix :
window.location.assign('espace-client.php')
window.location.href = 'espace-client.php'
window.location.replace("espace-client.php")
ok daccord je vois un peu mais je fais comment pour transferer les informations de mail et de mot de passe qui permettront a la page espace client de charger les informations du bon client en toute sécurité ?
En fait l'idee est d'envoyer le mot de passe et le mail via fetch uniquement pour authentifier l'utilisateur sur ton backend PHP.
Une fois que c'est fait, le PHP créé une session et redirige l'utilisateur dans l'espace client.
Les informations peuvent ensuite etre chargées grace au cookie de session.
Voilà rebonjour ici, j'ai fait excatement comme tu m'as dit, en back end j'ai fait les férifications necessaire et ooh miracle la session se créé bel et bien
$mail= htmlspecialchars($_POST['mail']);
$mot_de_passe = htmlspecialchars($_POST['password']);
$select = $pdo->prepare("SELECT * FROM informations_clients WHERE mail = ? AND confirmation_token IS NULL");
$select->execute([$mail]);
$select->setFetchMode(PDO::FETCH_ASSOC);
$tab = $select->fetch();
if($tab){
if(PASSWORD_VERIFY($mot_de_passe,$tab['password'])){
echo "<pre>";
print_r($tab);
echo "</pre>";
session_start();
$_SESSION ['authentification']='oui';
$_SESSION ['nom']=$tab['nom'];
$_SESSION ['prenoms']=$tab['prenoms'];
$erreur['situation']=0;// lorsque l'identification s'est bien passé je dois recevoir un situation en mode json, je le reçoit bel et //bien, lorsque je me redirige manuellement sur la page de connexion je vois bien que toutes mes variables de session y sont, le problème s'est la redirection avec js, j'ai utilisé le window.location.replace et j'ai une érreur qui est: Uncaught (in promise) SyntaxError: Unexpected token '<', "<pre>Array"... is not valid JSON; alors que je m'attendais a etre simplement redirigé sur la page dashboard.php en question voici mon js
async function login(log) {
log.preventDefault();
var dataConnexion = new FormData(log.target);
fetch(log.target.action,{
method: connexion.method,
body: dataConnexion,
headers: {
'Accept': 'application/json'
}
})
.then(connexionResp=>connexionResp.json())
.then(dataConnexion=>{
const verdict=dataConnexion.situation;
console.log(verdict);
if(verdict!==0){
const toast =document.createElement("li");
toast.className=`toast error`;
toast.innerHTML=`<div class="column">
<i class="fa-solid fa-circle-xmark"></i>
<span>'${verdict}'</span>
</div>
<i class="fa-solid fa-circle-xmark" onClick="removeToast(this.parentElement)"></i>`;
connexionNotification.appendChild(toast);
setTimeout(()=>removeToast(toast),5000);
}
if(verdict==0){
window.location.replace("dashboard.php")
}
})
}
connexion.addEventListener("submit", login);```