Redirection si non connecté [PHP]
emiliengbd
Messages postés
94
Statut
Membre
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je cherche un moyen de rediriger mon utilisateur vers ma page : "connexion.php" s'il essaye de se rendre sur une page qui a besoin d'une connexion, ex: (monprofil.php).
Actuellement ce qui se passe quand il rejoint "monprofil.php" (quand non connecter) c'est qu'une page blanche apparait puis, plus rien.
De la même manière, si mon utilisateur est connecté et qu'il essaye de rejoindre la page "connexion.php" j'aimerai qu'il soit redirigé vers la page "monprofil.php"
En gros j'essaye de trouver un moyen pour vérifier si mon utilisateur est bien connecter à mon site web.
Merci d'avance.
je cherche un moyen de rediriger mon utilisateur vers ma page : "connexion.php" s'il essaye de se rendre sur une page qui a besoin d'une connexion, ex: (monprofil.php).
Actuellement ce qui se passe quand il rejoint "monprofil.php" (quand non connecter) c'est qu'une page blanche apparait puis, plus rien.
De la même manière, si mon utilisateur est connecté et qu'il essaye de rejoindre la page "connexion.php" j'aimerai qu'il soit redirigé vers la page "monprofil.php"
En gros j'essaye de trouver un moyen pour vérifier si mon utilisateur est bien connecter à mon site web.
Merci d'avance.
1 réponse
-
Bonjour,
Il te faut utiliser les SESSION
Lorsque l'utilisateur se connecte .. tu créés une variable de session,
par exemple$_SESSION['id_user'] = $id_du_membre;
puis dans tes différentes pages.. tu vérifies que cette variable existe
sinon tu redirigesif(empty($_SESSION['id_user'])){ //redirection header('location : index.php'); exit(); }
NB : Tu n'oublieras pas, bien entendu, d'activer les sessions sur toutes tes pagessession_start();
-
Pour le session_start() c'est bon. Mais, la variable ID_USER est stocké sur ma base de donnée non ?
Voici le code de "connexion.php", peut tu me donner ton code adapté à celui de ma page s'il-te-plait ?
<?php session_start(); $bdd = new PDO('mysql:dbname=MaBaseDeDonne;host=MonHost', monNomUtilisateur', 'MonMotdePasse'); if(isset($_POST['formconnexion'])) { $mailconnect = htmlspecialchars($_POST['mailconnect']); $mdpconnect = sha1($_POST['mdpconnect']); if(!empty($mailconnect) AND !empty($mdpconnect)) { $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?"); $requser->execute(array($mailconnect, $mdpconnect)); $userexist = $requser->rowCount(); if($userexist == 1) { $userinfo = $requser->fetch(); $_SESSION['id'] = $userinfo['id']; $_SESSION['pseudo'] = $userinfo['pseudo']; $_SESSION['mail'] = $userinfo['mail']; header("Location: profil.php?id=".$_SESSION['id']); } else { $erreur = "Mauvais mail ou mot de passe !"; } } else { $erreur = "Tous les champs doivent être complétés !"; } } ?> <html> <head> <title>Se connecter</title> <meta charset="utf-8"> </head> <body> <div align="center"> <h2>Connexion</h2> <br /><br /> <form method="POST" action=""> <input type="email" name="mailconnect" placeholder="Mail" /> <input type="password" name="mdpconnect" placeholder="Mot de passe" /> <br /><br /> <input type="submit" name="formconnexion" value="Se connecter !" /> </form> <?php if(isset($erreur)) { echo '<font color="red">'.$erreur."</font>"; } ?> <p>Vous n'avez pas de compte ? Cliquez <a href="register.php" rel="nofollow noopener noreferrer" target="_blank">ici</a></p> </div> </body> </html>
Merci
Je débute en PHP.- Au passage... vu que tu utilises PDO, penses à y activer la gestion des erreurs
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et ne plus utiliser le rowcount mais plutôt faire un fetchAll du résultat de la requête puis un COUNT dessus.
$sql = "SELECT * FROM membres WHERE mail = ? AND motdepasse = ?"; $datas = array($mailconnect, $mdpconnect); try{ $requser = $bdd->prepare($sql); $requser->execute($datas); }catch(Exception $e){ echo "erreur : ".$e->getMessage(); } //on stocke le resultat de la requete dans un array $resultats = $requser->fetchAll(); //on compte le combre de résultats si $resultat n'est pas vide $userexist = !empty($resultats) ? count($resultats) : 0;
Tu peux jeter un oeil ici pour comprendre comment je fait pour "compter"
http://www.manuelphp.com/php/language.operators.comparison.ternary.php
.
-