Bouton de deconnexion

Fermé
bloomingdals - 28 mai 2013 à 15:39
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 29 mai 2013 à 20:16
Bonjour,

J'ai un bouton log out dans ma page html qui devait permettre ces trois évènements:

- affichage d'une boite de dialog en javascript pour confirmer ou non la deconnexion
- si oui deconnexion de la base SQL
- redirrection vers une page d'accueil

j'ai réalisé le code php dans un fichier a part que j'ai appelé deconnexion.php mais le bouton ne fonctionne pas, lorsque e le clique il me reddirige vers le fichier "deconnexion".

<form action="deconnexion.php" autocomplete="on" method="post">
       <input type="submit" id="leave" value="Log Out"/>   
       </form>



contenu de deconnexion.php

if (isset($_POST["Log Out"]))
{
   ?>
 <script language="Javascript">
  if(confirm('You will disconnect.\nAre you sure you want to continue?'))
  {
    <?php
    mysql_stop();
    ?>
    document.location.href='auth.php'
  else
  history.back();
  </script>
 <?php
} 
?>


merci de bien vouloir m'aider

11 réponses

jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
28 mai 2013 à 16:15
Salut !

Met plutot ta partie js dans le form, j'entend par la l'evenement html onsubmit="return confirm('You will disconnect.\nAre you sure you want to continue?');"

Ensuite dans ton php, tu peux juste faire mysql_stop(); et header('Location:auth.php');

0
bloomingdals
28 mai 2013 à 16:37
non ca ne change rien je suis reddirigé vers l'url deconnxion.php qui est une page vide
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
28 mai 2013 à 16:40
Je n'avais pas vu, ta faute est ici :
if (isset($_POST["Log Out"]))

Alors que ton input :
<input type="submit" id="leave" value="Log Out"/>

Log Out est la value, pas le name du input. Donc tu ne rentreras jamais dans ton if
0
bloomingdals
29 mai 2013 à 10:43
Merci pour ta remarque, j'ai ajouté un name="out" au bouton et ça fonctionne mieux mais j'ai deux problèmes:

1. le code JS que j'ai intégré pour afficher une boite de confirmation n'est pas exécutée, pourant j'ai utilisée ma même technqiue dans d'autres fichiers

2. quand je suis redirrigée vers la page d'accueil après la deconnexion, je peux revenir à la page précedente en cliquant sur précedent du navigateur donc la session n'a pas été correctement détruite.

Comment faire
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
29 mai 2013 à 14:32
1. le js est coté client, c'est donc préférable de faire comme je te l'ai dit plus haut.
Mais cela devrait quand même fonctionné. Donc à voir

2. C'est normal, à aucun moment tu ne détruis ta session. Je ne vois pas de session_destroy() ou $_SESSION = array() ou autre code du genre pour détruire une session.
Il faut aussi, sur chaque page, vérifié la session pour continuer ou redirigé vers un formulaire de connexion pour rendre "utile" la session
0
bloomingdals
29 mai 2013 à 14:41
Merci pour ta réponse,
J'ai arrangé un peu le code. et maintenant mes deux problèmes sont réglé. mais j'en ai un autre.
En fait, lorsque je clique sur le bouton, je devrais avoir l'alerte et si je confirme, le navigateur attend 5s puis me reddirrige vers la page d'accueil.
cependant, le code n'ext pas exécuté dans l'ordre. Il ya l'attente de 5s puis la fenêtre d'alerte puis la redirrection. mais je ne comprend pas pourquoi!

voila le code
<?php

 if(isset($_POST["out"])) 
{
  ?>
<script language="Javascript">
 if(confirm('You will be disconnected.\nContinue?'))
  { <?php

       sleep(5);
        // On démarre la session
         session_start ();

        // On détruit les variables de notre session
            session_unset ();

        // On détruit notre session
         session_destroy ();

      ?>
      // On redirige le visiteur vers la page d'accueil
  document.location.href='auth.php'
  }
  else
  history.back();
 </script>

<?php
 }
 ?>
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
29 mai 2013 à 15:03
Je pense que le mélange php/js que tu fais ne va pas.
Essaye avec de rester dans des balises php, et pour faire du js :
echo '<script language="Javascript">';
echo 'if(confirm('You will be disconnected.\nContinue?'))';
etc ...


0
bloomingdals
29 mai 2013 à 15:44
non ça n'a pas changé le résultat.
Tu peux me dire STP comment je pourrais séparer mon code php et mon code JS.
merci
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
29 mai 2013 à 17:13
Il faut que tu fasse un fonction js, que tu appelles dans le onsubmit de ton formulaire.

La fonction doit renvoyé vrai ou faux, vrai le formulaire est validé, faux le formulaire n'est pas envoyé
0
bloomingdals
29 mai 2013 à 19:06
j'ai fais le tour du monde pour faire fonctionner mon code mais ça n'a pas marché.
J'ai fini par adopter une méthode simple la voila:
if($Password != $Re_Password)
{
?>
 <script language="Javascript">
  alert('No match between passwords.\nPlease try again.')
  document.location.href='auth.php'
  </script>
 <?php
exit;
}

le seul ennui est que la boite d'alerte s'affiche dans une autre page. J'aurais voulu qu'elle s'affiche dans la même page (tu sais en de manière à rendre mon formulaire très sombre)

ça se règle ce genre de détail ou non?
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
29 mai 2013 à 20:16
Une genre de modal box ? (google est ton ami) Ou autre chose ?
0