Redirection si non connecté [PHP]

Fermé
emiliengbd Messages postés 70 Date d'inscription jeudi 16 février 2017 Statut Membre Dernière intervention 29 août 2018 - 1 mai 2017 à 17:31
jordane45 Messages postés 38337 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 décembre 2024 - 1 mai 2017 à 18:04
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.




A voir également:

1 réponse

jordane45 Messages postés 38337 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 décembre 2024 4 714
1 mai 2017 à 17:35
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 rediriges
 if(empty($_SESSION['id_user'])){
   //redirection
   header('location : index.php');
   exit();
}



NB : Tu n'oublieras pas, bien entendu, d'activer les sessions sur toutes tes pages
 session_start();


0
emiliengbd Messages postés 70 Date d'inscription jeudi 16 février 2017 Statut Membre Dernière intervention 29 août 2018 43
Modifié le 1 mai 2017 à 17:46
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.
0
jordane45 Messages postés 38337 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 décembre 2024 4 714 > emiliengbd Messages postés 70 Date d'inscription jeudi 16 février 2017 Statut Membre Dernière intervention 29 août 2018
1 mai 2017 à 18:00
ne connaissant pas ton code .. moi, je ne t'avais donné qu'un exemple ....il sufft de l'adapter à tes besoins....

et donc par exemple, utiliser les variables que tu as déjà créé
$_SESSION['id'] = $userinfo['id'];
0
jordane45 Messages postés 38337 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 décembre 2024 4 714 > jordane45 Messages postés 38337 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 décembre 2024
Modifié le 1 mai 2017 à 18:04
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

.
0