Comment déconnecter une session membre

WRInaute occasionnel
Bonjour, je possède un site avec des membres. Faut-il faire un fichier spécial pour la déconnection des membres? Merci.
 
WRInaute discret
Un utilisateur doit etre en mesure de se déconnecter à tout instant, sans pour cela attendre que son temps de session se termine. Donc oui, il est important de créer ce genre de fonctionnalité.
 
WRInaute impliqué
Dans ton fichier tu mets un unset($_SESSION) ou/et unset($_COOKIE) suivant la façon dont tes sessions sont gérées.

N'oublies pas d'ouvrir ta session avant de la supprimer.
 
WRInaute occasionnel
Dans ton fichier tu mets un unset($_SESSION) ou/et unset($_COOKIE) suivant la façon dont tes sessions sont gérées.

Voilà le code du fichier de login pour rentrer dans les sessions :

Code:
<?php
        include("var.inc.php");
        $conn = @mysql_connect($dbserver,$dbuser,$dbpass);
        if (!$conn)
                {
                        die("Sorry, database not found !");
                }
        mysql_select_db($dbname,$conn);

                {

                        $ip = $email;
                        $zeit = time ();
                        $nichtmehrgueltig = $zeit-$stehenlassen;
                        $query = "DELETE FROM demo_a_iptest WHERE timefeld <= ".$nichtmehrgueltig;
                        mysql_query($query,$conn);
                        $query = "SELECT * FROM demo_a_iptest WHERE ip = '".$ip."'";
                        $result = mysql_query($query,$conn);
                        $rows = mysql_num_rows($result);
                        if ($rows >= 1)
                                {

require('./prepend.inc.php');
if($email && $password)
        loginb();

}
                        else
                                {

require('./prepend.inc.php');
if($email && $password)
        login();


$query = "INSERT INTO demo_a_iptest VALUES (\"$ip\", $zeit)";
                                        mysql_query($query,$conn);
                                }

                }


mysql_close($conn);
?>
[/quote]
 
WRInaute discret
Pour déconnecter l'utilisateur il te suffit de faire une page php qui détruit les sessions comme te le conseil petit-ourson.

Contenu du fichier deconnexion.php :
Code:
<?php

session_start();
unset($_SESSION);
unset($_COOKIE);
session_destroy();
header ('Location: /index.php');

?>

Lien sur lequel l'utilisateur doit cliquer pour se déconnecter :
Code:
<a href="deconnexion.php">Déconnexion</a>
 
WRInaute occasionnel
C'est fait. Mais dès que je clic qur deconnection, la page de déconnection apparait avec le message suivant :
Warning: session_start(): open(/var/www/42/b/o/o/boost-trafic.com/www/sessions//.sess_081a30522aa2421babf048c80efa5122, O_RDWR) failed: No such file or directory (2) in deconnection.php on line 288

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:8) in deconnection.php on line 288

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:8) in deconnection.php on line 288

Warning: session_destroy(): Session object destruction failed in deconnection.php on line 291

Warning: Cannot modify header information - headers already sent by (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:8) in deconnection.php on line 292
 
WRInaute occasionnel
J'ai enlevé le session start, ce qui me donne :
Code:
<?php 

unset($_SESSION); 
unset($_COOKIE); 
session_destroy(); 
header ('Location: /index.php'); 

?>

Mais le message suivant apparait :
Warning: session_destroy(): Trying to destroy uninitialized session in deconnection.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:6) in deconnection.php on line 11
 
WRInaute discret
J'ai merdé sur les cookies, tu peux pas effacer les cookies et rediriger tout de suite. Soit tu effaces les cookies et sur la page deconnexion.php tu places un lien vers l'accueil de ton site, soit tu n'effaces pas les cookies et tu rediriges direct sur l'accueil.

Sans effacer les cookies :
Code:
<?php

session_start();
unset($_SESSION);
session_destroy();
header ('Location: /index.php');

?>

En effaçant les cookies :
Code:
<?php

session_start();
unset($_SESSION);
unset($_COOKIE);
session_destroy();

?>
<html>
<head></head>
<body>
<a href="/">Retour à l'accueil</a>
</body>
</html>

Et moi sur mon site j'ai un session_start(); sur ma page de deconnexion...
 
WRInaute occasionnel
le session_start() est obligatoire, deconnexion ou pas.

Code:
open(/var/www/42/b/o/o/boost-trafic.com/www/sessions//.sess_081a30522aa2421babf048c80efa5122, O_RDWR) failed: No such file or directory (2) in deconnection.php on line 288
^^ on line 288 ??? peux tu nous montrer le contenu exact de ce fichier ?

il y a en fait une seule erreur dans ton code, mais celle ci provoque des messages en chaine, c'est normal lorsque l'on tente d'envoyer des headers.
 
WRInaute occasionnel
Je ne sais pas si ça change quelquechose mais lorsque le membre veut se déconnecter, il est dans -http://www.monsite.com/membre. Et la page de déconnection est dans -http://www.monsite.com/deconnection.php (pas dans le répertoire membre).
 
WRInaute occasionnel
Au début j'avais mit le CODE au milieu de ma page, ce qui me donnait les lignes 286 à 294 :
Code:
<?php 

session_start(); 
unset($_SESSION); 
unset($_COOKIE); 
session_destroy(); 
header ('Location: /index.php'); 

?>

Mais il est maintenant juste après <head>, ce qui me donne les lignes 6 à 13 :
Code:
<?php 

unset($_SESSION); 
unset($_COOKIE); 
session_destroy(); 
header ('Location: /index.php'); 

?>
 
WRInaute accro
>> Mais il est maintenant juste après <head>

tu essayes de detruire une session apres avoir envoyé le header html au naviagteur ? ton code n'est pas en ligne 1 de ta page ?
 
WRInaute discret
C'est ça, en fait tu effaces la session en haut de ton fichier et tu veux acceder à une variable de session ligne 288, c'est pas bon ça.

Tu peux essayer de faire un nouveau fichier php qui contient seulement :

Code:
<?php
session_start();
unset($_SESSION);
unset($_COOKIE);
session_destroy();
?>
<html>
<head></head>
<body>
<a href="/">Retour à l'accueil</a>
</body>
</html>
 
WRInaute accro
si il fait une redirection 301 après le session destroy(), ca ne poses pas de problème. mais déjà qu'il le fasse avant tout envoi html ^^
 
WRInaute occasionnel
J'ai créé un deconnection.php avec seulement :

Code:
<?php 
session_start(); 
unset($_SESSION); 
unset($_COOKIE); 
session_destroy(); 
?> 
<html> 
<head></head> 
<body> 
<a href="/">Retour à l'accueil</a> 
</body> 
</html>

Mais ce message apparait :

Warning: session_start(): open(/var/www/42/b/o/o/boost-trafic.com/www/sessions//.sess_fbb03d3da4857a9e3edef9edcc4b08bb, O_RDWR) failed: No such file or directory (2) in deconnection.php on line 2

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:2) in deconnection.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:2) in deconnection.php on line 2

Warning: session_destroy(): Session object destruction failed in deconnection.php on line 5
Retour à l'accueil
 
WRInaute occasionnel
Je n'ai pas bien compris... Je doit enlever le <head>? Je met ça :
<?php
session_start();
unset($_SESSION);
unset($_COOKIE);
session_destroy();
?>
<html>
</head>
<body>
<a href="/">Retour à l'accueil</a>
</body>
</html>
 
WRInaute occasionnel
J'ai fait exactement comme reglysse me l'a dit... Mais ce message persiste :

Warning: session_start(): open(/var/www/42/b/o/o/boost-trafic.com/www/sessions//.sess_e431df01f1eea6aa8f9375f6b5a5e74a, O_RDWR) failed: No such file or directory (2) in deconnection.php on line 2

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:2) in deconnection.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:2) in deconnection.php on line 2

Warning: session_destroy(): Session object destruction failed in deconnection.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/42/b/o/o/boost-trafic.com/www/deconnection.php:2) in deconnection.php on line 5

Quelqu'un saurait m'expliquer d'où vient le problème? Merci.
 
WRInaute occasionnel
attention, un simple espace blanc ou retour à la ligne peut suffir à poser probleme.

Warning: session_start(): open(/var/www/42/b/o/o/boost-trafic.com/www/sessions//.sess_e431df01f1eea6aa8f9375f6b5a5e74a, O_RDWR) failed: No such file or directory (2) in deconnection.php on line 2

Ce message persiste, et je commence à me demander si ce n'est pas tout simplement un probleme de répertoire de stockage des sessions...? lorsque tu stocke des variables en session dans une page, tu arrives à les récupérer dans une autre page au moins ??
 
WRInaute discret
Bien vu ça Toutou-Fr !!!

gcvoiron est-ce que tu peux tester ce fichier php et nous dire ce que ça affiche ?

test.php :
Code:
<?php
session_start();
$_SESSION["test"] = "test session";

echo $_SESSION["test"];
?>
 
WRInaute occasionnel
Ca afiche ceci :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, php4-2@invalid and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
 
WRInaute occasionnel
et tes pages qui n'utilisent pas de sessions fonctionnent correctement ? elles sont dans le meme repertoire que cette page ?

Je vois deux possibilités : soit tu as fait un .htaccess défaillant, soit ton hebergeur devrait changer de métier ;-)
 
WRInaute occasionnel
et tes pages qui n'utilisent pas de sessions fonctionnent correctement ?
-> Oui mon site marche parfaitement bien, aucun problème!

elles sont dans le meme repertoire que cette page ?
-> Jai à la racine du site toutes mes pages et les répertoires suivants :
-admin pour l'espace Administrateur
-member pour l'espace membre
-images avec les images...

soit tu as fait un .htaccess défaillant
-> Voici la seule ligne de mon htaccess
Code:
ErrorDocument 404 http://www.boost-trafic.com/404.php

soit ton hebergeur devrait changer de métier
-> C'est Online et j'ai déjà eu quelques problèmes avec eux (mon site ne marchait plus pendant 10 jours!).
 
WRInaute occasionnel
Important : Pour que vos sessions 'fichiers' (mode par défaut) fonctionnent, vous devez créer un répertoire "sessions" (en minuscules sans les guillemets) à la racine de votre site Web (ou du cas échéant, de votre site Web secondaire). Sinon un message d'erreur vous signalant l'impossibilite de sauvegarder les sessions apparaitra.


...un forum c'est bien, une doc c'est pas mal non plus.



Désolé pour les croisements successifs depuis le début du topic reglysse ;-)
 
WRInaute occasionnel
WRInaute discret
oui mais lequel parce qu'on t'en a fait faire pas mal depuis le début !!!

Tu peux me montrer le contenu, please ?


Désolé pour les croisements successifs depuis le début du topic reglysse
Pas de probleme c'est fait pour ça un forum.
 
WRInaute occasionnel
Voici le contenu :

Code:
<?php 
session_start(); 
session_unset(); 
session_destroy(); 
header('Location: http://www.boost-trafic.com/index.php'); 
exit(); 
?>
 
WRInaute discret
et tu as fait quoi pour que ça marche exactement ? Tu as créé un repertoire "sessions" à la racine c'est ça ?
 
WRInaute occasionnel
J'ai créé un repertoire session avec les fichiers :
-start.php avec ceci dedans :
Code:
<?
session_start();
session_register ("count");
$count = 42;
?>
On enregistre <? echo $count; ?> >BR>
Pour aller a la page suivante, <A HREF="nextpage.php">cliquez ici</A>
-nextpage.php avec ceci dedans :
Code:
<?
session_start();
session_register("count");
echo "La valeur précédente de count etait " . $count ."<br>";
?>
 
WRInaute occasionnel
normal que ca ne marche pas.

session_register ne s'utilise qu'au moment de l'affectation de la valeur.


et apres il faut appeler la variable en faisant $_SESSION['count']
 
WRInaute discret
Tes fichiers ne doivent pas être dans le repertoire "sessions", ce repertoire sert uniquement au serveur pour stocker les variables de sessions des utilisateurs. A chaque nouvelle session le serveur va créer un fichier identifiant_session avec à l'interieur les variables de la session.
 
Discussions similaires
Haut