1 Dernière modification par gilledunord (22-06-2009 18:54:26)

Sujet : Fermeture de session

Bonjour

Pouvez vous me dire si ce script de fermeture de session est bon ?
Je ne sais pas si ça marche ou pas.

<?php
session_start();

$_SESSION = array();
unset($_SESSION);
session_destroy();

echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="../accueil.htm" </SCRIPT>';
?>

Et comment faire pour que la fermeture se fasse automatiquement après un certain temps au cas ou le client n'a pas penser à la fermée ?
(toujours pour ma tit boutik ha ha ha)

Merci pour votre aide

Cordialement
Gilledunord

2

Re: Fermeture de session

Pour vérifier que ca marche, regarde donc les informations que tu as dans $_SESSION smile

Sinon, pour ton second problème, tu vas devoir utiliser une valeur de 'timeout' pour décrire le temps maximal écoulé entre 2 requêtes (que tu controlleras et mettras à jour à chaque lancement de session_start()).

Genre:

$current = time();
$diff = $current - $_SESSION['timeout']; // si timeout est stocké en session sous un format d'unix timestamp
if ($diff > (10*60)) { // 10 minutes
  // session expirée, on peut la détruire complètement ou partiellement
} else {
  // la derniere requete a eu lieu il  y a moins de 10 minutes, on accepte
  // et on met a jour la valeur de $_SESSION['timeout']
  $_SESSION['timeout'] = time();
}
lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

Re: Fermeture de session

Bonjour toad

Je suppose que la page qui contient ce code doit être ouverte pour fonctionner !

<?php
session_start();

$current = time();

// si timeout est stocké en session sous un format d'unix timestamp
$diff = $current - $_SESSION['timeout'];

// session expirée, on peut la détruire complètement ou partiellement
if ($diff > (10*60)) {   // 10 minutes

// la derniere requete a eu lieu il  y a moins de 10 minutes, on accepte
} else {   

// et on met a jour la valeur de $_SESSION['timeout']
$_SESSION['timeout'] = time();
}
?>

Donc je dois mettre le code sur toutes les pages qui s'ouvre ?

Merci pour ton aide précieuse.

Cordialement
Gilledunord

4 Dernière modification par NooD (22-06-2009 18:08:16)

Re: Fermeture de session

Bonjour,

unset($_SESSION);

est inutile car tu fais déjà :

$_SESSION = array();

Ce code suffit :

$_SESSION = array();
session_destroy();

Pour le code proposé par toad, tu peux le mettre dans un fichier session.php que tu incluras dans toutes tes pages.

>> SubTherMiX <<
>> alternux <<

Re: Fermeture de session

Bonsoir

Merci toad et NooD pour votre aide.

A bientôt je pense pour d'autre question.

Cordialement
Gilledunord

Re: Fermeture de session

J'avais mis résolu pour la fermeture de session, ce qui est vrai, mais j'ai un problème avec le code de toad.
J'ai mis un include pour chaque page comme me la dit NooD mais à toute les pages j'ai l'erreur à la ligne 7.
l'erreur : Notice: Undefined index: timeout in

<?php
session_start();

$current = time();

// si timeout est stocké en session sous un format d'unix timestamp
$diff = $current - $_SESSION['timeout'];        // erreur ligne 7 //

// session expirée, on peut la détruire complètement ou partiellement
if ($diff > (10*60)) {   // 10 minutes

// la derniere requete a eu lieu il  y a moins de 10 minutes, on accepte
} else {   

// et on met a jour la valeur de $_SESSION['timeout']
$_SESSION['timeout'] = time();
}
?>

j'ai du oublier quelque chose ?

Cordialement
Gilledunord

7

Re: Fermeture de session

Evidemment tu dois créer $_SESSION['timeout'] quand tu démarres ta session.. et fais un if (isset()) pour tester si la valeur est là.

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

Re: Fermeture de session

Bonjour toad

Evidemment tu dois créer $_SESSION['timeout'] quand tu démarres ta session.. et fais un if (isset()) pour tester si la valeur est là.

Ne sachant pas comment faire, j'ai mis ton code en include :

include("session.php");
$_SESSION['timeout']
require("../member/prise.php");

mais il me donne les erreurs pour les includes (ou require) suivant.

Donc que dois je mettre et où ?
Pareil pour le IF (isset())  je le mets où ?
Si je ne me trompe pas après un IF il a des "else" et "echo" mais mettre quoi ?

Cordialement
Gilledunord

9

Re: Fermeture de session

session.php

    <?php
    session_start();

    if(isset($_SESSION['timeout'])
    {
         $current = time();

         // si timeout est stocké en session sous un format d'unix timestamp
         $diff = $current - $_SESSION['timeout'];

         // session expirée, on peut la détruire complètement ou partiellement
         if ($diff > (10*60)) {   // 10 minutes
         // session expirée

         }
    }

    // session ok et on met a jour la valeur de $_SESSION['timeout']
    $_SESSION['timeout'] = time();
    ?>
>> SubTherMiX <<
>> alternux <<

Re: Fermeture de session

Bonjour NooD

Ca ne marché pas, erreur à la ligne 5

<?php
    session_start();

    if(isset($_SESSION['timeout'])
    {                        /// erreur ligne 5 ///
         $current = time();

         // si timeout est stocké en session sous un format d'unix timestamp
         $diff = $current - $_SESSION['timeout'];

         // session expirée, on peut la détruire complètement ou partiellement
         if ($diff > (10*60)) {   // 10 minutes
         // session expirée

         }
    }

    // session ok et on met a jour la valeur de $_SESSION['timeout']
    $_SESSION['timeout'] = time();
    ?>

Il manqué le " ) " en fin de      if(isset($_SESSION['timeout'])

En fait j'ai regardé le 1er code de toad et le tient.
Déduction j'ai fait ceci et apparemment ça marche,

<?php
    session_start();

    if(isset($_SESSION['timeout']))
    {
         $current = time();

         // si timeout est stocké en session sous un format d'unix timestamp
         $diff = $current - $_SESSION['timeout'];

         // session expirée, on peut la détruire complètement ou partiellement
         if ($diff > (10*60)) {   // 10 minutes
         // session expirée
         }
    }
else {

    // session ok et on met a jour la valeur de $_SESSION['timeout']
    $_SESSION['timeout'] = time();
}
?>

en fait j'ai ajouté le " else"
apparamment ça marche mais pourrez tu me dire si mon ajout de " else " est bon. Bref si tout mon code est bon ?

Merci à vous deux pour votre aide

Cordialement
Gilledunord

Re: Fermeture de session

Bonjour
Le code fonctionne sans donner d'erreur en local mais sur l'hébergeur ça donne l'erreur suivante :

Warning: session_start()[function.session-start]:Cannot send session cache limiter – headers already sent (output started at/var……………. ajoutarticle.php:2) in/var…………….session.php on line 2

Fichier ajoutarticle contient au début :

<?php
include("../member/session.php");
require("../member/prise.php");
   $sql = "select idclient from client where nom = '".$_SESSION['nom']."'";

Fichier session.php contient au début  :

<?php
    session_start();     /// erreur ligne 2 ////
    if(isset($_SESSION['timeout']))

Pouvez vous m'expliquer ou me dire ce que je dois faire ?
Merci pour votre aide.

Cordialement
Gilledunord

Re: Fermeture de session

headers already sent
le code n'est pas à la bonne place, il y a déjà un post qui traite de ce problème

Re: Fermeture de session

merci pour la redirection !

Cordialement
Gilledunord

Re: Fermeture de session

Je reviends après avoir vue ce que je pense "la solution"

vous m'avez bien aider et d'un coup s'est "vas voir ailleurs"
le code je le retire puisque l'on donne des codes qui ne marche pas.

en pur vieux ch'ti ;
a m'nache eu m'fér cha ! bin ché pa bin ! tisote là, té jeune, mis avec eu m'cul sul chésse, invalite, japrin douchemin et vla qui minvoi déja à lospice.

bonjour chez vous

Cordialement
Gilledunord

15

Re: Fermeture de session

Heu on te dit d aller voir ailleurs parce que peut être que tu n'as pas cherché suffisament ? Nous ne sommes pas tes assistants personnels pour ton code, si tu n'es pas content... va voir ailleurs effectivement.

Le message d'erreur est d'ailleurs assez clair, si tu ne comprends pas l'anglais et bien sur internet il ya des traducteurs (cherche google translate).

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

Re: Fermeture de session

je comprends assez bien le ch'ti, don cméfiance wink .
le message te dit que le header est déjà envoyé (en gros).
si je t'ais envoyé sur un autre post, c'est simplement pour ne pas faire doublon et que la solution avait été donné par Toad en plus.

on veut bien t'aiguiller si tu as des problèmes, mais on ne va pas te pondre de A à Z ton code.
C'est pas chacun pour soit, mais il faut chercher un minimum, sinon tu ne sauras jamais programmer et tu demanderas à chaque fois si ton code est bon.
Tu dois travailler sous wamp je présume, active le mode debug dessus, ca aide pas trop mal.
sinon une bonne solution, montes toi un server apache sous linux, tu verras tout de suite les erreurs a ne pas commettre, puisque 95% des hébergeurs sont sous linux.
bonne soirée quand même

Re: Fermeture de session

Bonjour

Je fais mes essais en local avec :
Easyphp 2.0b1 et si ça ne marche pas j'essaye avec WampServer2

Je n'ai pas Linux je suis sous Windows xp familiale
navigateur ; IE 8 - Mozilla Firefox - Safari, différents navigateurs en local pour une meilleur compatibilité pour la présentation des pages.

Je ne viens poster qu'après des dizaines d'essais et d'avoir visité plusieurs forums en programmation.

Ce que je trouve dommage c'est qu'une personne qui ai des connaissances (exemple en informatique) se prend pour plus haut que ses épaules en égard de ceux qui ne savent pas.

Je passe mon temps à aider sur Excel -Word - Publisher - Power point - en généalogie etc etc. bref je suis un touche à tout, et mes aides dépassent largement les vôtres sur la toile et jamais je ne provoque, j'explique si je sais, si je ne sais pas je reste DIPLOMATE et je fais des redirections.

Question de donner les scripts clé en main, je suis parfaitement d'accord à ce sujet mais quand on vous donne un code pas finit et que l'on ne vous dit pas qu'il "n'est pas fini" que fait le novice ?

Qaund on dit "le sujet à déjà été traité" la moindre des choses c'est de faire une redirection car souvent les titres ne correspondent pas au besoin de l'instant.

é pi jé rin di d'mo in ch'ti donc c méfiance aussi...

Cordialement
Gilledunord

Re: Fermeture de session

le problème est que lorsque l'on fait des test sous easyphp ou wamp server (que je préfère largement), cela ne reflète en rien la réaction d'un server sous linux.
combien de fois j'ai eu des scripts qui fonctionnaient dessus mais pas sous linux.
pour la redirection ou les renseignements, nous faisons le maximum pour répondre au plus vite pour aiguiller les gens.
on ne prend personne de haut, chose qui est souvent reprochée sur les forums informatique (il y a pire).
on t'aiguille pour te dire qu'un post a déjà traité du sujet, cherhce dans problèmes ou programmation, tu vas le trouver en 2mn.
bonne journée

Re: Fermeture de session

Bonjour

Merci, ce dernier message est plus sympathique et je l'apprécie.

Je vais voir pour Linux si je peux l'installer et si c'est compatible avec Windows.
A mon avis je devrais faire un choix, soit windows soit Linux.

Pour l'ordinateur ! J'ai connu les tous premiers sous MSDOS sans windows, avec disquettes souples, puis windows 3.1 etc. Comme on dit j'ai appris sur le tas.
Mais côté script php là je galère, et le php5 qui débarque n'arrange pas mes pauvres connaissances.

Je vais chercher aussi pour la solution de la session.
A bientôt je pense.

Cordialement
Gilledunord

Re: Fermeture de session

tu peux très bien avoir xp et linux sur le même pc.
soit tu as plusieurs partitions et tu installes linux sur une partition à part avec un lanceur grub qui te donne le choix entre linux et xp au demarrage
soit tu tourne en virtuel sous xp avec virtualbox (attention à la ram)

Re: Fermeture de session

Bonjour à tout le monde

J'ai regardé l'explication sur le problème que j'avais, mais mes scripts n'ont pas de header, ils sont en tête de fichier et en php, j'ai vérifié les espaces etc bref comme expliqué et ne vois pas ce qui géne ou ce qui ne vas pas.

J'ai changé d'hébergeur pour ma tit "boutik" qui est toujours en essai et je n'ai plus aucun message d'erreur.

J'ai téléchargé le Linux Ubuntu et au moment de l'installer je me suis retrouvé sur des pages genre MSDOS de l'époque, la j'ai eu peur, malgré que je sais faire les partitions je n'ai pas envie de me compliquer plus la vie. De plus mon pc est vieux avec 512 de ram, écran 14pouce. ha ha ha. Donc je suis bien comme je suis.

Je voulais changer l'adresse de mon site sur un topic résolu mais je ne peux pas donc je met ici  http://www.fur4x-hebergement.net/geneal … ole/boutik

je pense avoir résolu le problème de mélange des commandes en changeant mes tables :

CREATE TABLE `client` (
  `idclient` int(11) NOT NULL auto_increment,
  `nom` varchar(20) NOT NULL,
  `prenom` varchar(20) NOT NULL,
  `nom_prenom` varchar(40) NOT NULL,
  `adresse` longtext NOT NULL,
  `cp` varchar(10) NOT NULL,
  `ville` varchar(30) NOT NULL,
  `pays` varchar(20) NOT NULL,
  `mail` varchar(30) NOT NULL,
  `tl` varchar(15) NOT NULL,
  `password` varchar(25) NOT NULL,
  PRIMARY KEY  (`idclient`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

CREATE TABLE `com` (
  `id` int(11) NOT NULL auto_increment,
  `idclient` varchar(20) NOT NULL,
  `date_verif` varchar(20) NOT NULL,
  `date` varchar(20) NOT NULL,
  `nom_prenom` varchar(40) NOT NULL,
  `ref` varchar(20) NOT NULL,
  `type` varchar(40) NOT NULL,
  `titre` varchar(40) NOT NULL,
  `prix` varchar(10) default NULL,
  `qte` varchar(5) default NULL,
  `total` varchar(10) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=49 ;

en fait je me sers de nom_prenom pour ne pas avoir le risque d'avoir 2 même noms qui commande, avec le prenom plus de risque.

Voila pour moi s'est resolu mais j'aimerais savoir, si cela est possible, s'il y a encore une faille qui modifierais encore les commandes.

Merci de m'avoir aidé.

Cordialement
Gilledunord

22 Dernière modification par NooD (26-06-2009 09:52:19)

Re: Fermeture de session

Bonjour,

Si le header est déjà envoyé, tu ne peux pas l'envoyer une seconde fois donc même si tu n'as pas le message d'erreur chez ton second hébergeur, le problème n'est pas résolu pour autant. Cela n'affecte pas le résultat de ton script puisque le second header que tu envoies ne contient pas d'informations importantes mais c'est incorrect. En réalité ton second header est tout simplement ignoré et aucun avertissement n'est affiché chez ton second hébergeur ce qui n'est pas une très bonne idée de sa a part...

Concernant tes reproches vis à vis des gens qui t'ont répondu, quand je lis ton dernier message et que je vois tes tables, je ne peux que penser que tu ne lis pas les messages donc difficile pour nous de prendre encore le temps de te répondre. Ton schéma est incorrect.

Enfin pour la sécurité, si tu montrais tes scripts php cela irait bien plus vite pour vérifier.

Bonne journée.

>> SubTherMiX <<
>> alternux <<

Re: Fermeture de session

Comme le dit Nood, c'est pas intelligent de la part de l'autre hébergeur, est il sous windows server?
Ta table com n'est ni bonne ni mauvaise, mais tu ne lis pas les indications effectivement.
il y a des champs en trop.
le jour ou tu rechangeras d'hébergeur, tu auras les même problèmes et tu poseras les même questions "pourquoi ca marche pas".

bonne journée

Re: Fermeture de session

Oups encore un bug j'avais répondu mais "paff" partis
Bonjour
Mes excuses pous les fautes d'ortographes, à 14 ans c'été direct l'usine.
Je souligne que vous êtes quand même des gars super pour continuer à m'expliquer et me faire comprendre...
Pour mon hébergeur fur4x, (jeune encore en étude, des zécoles come ki di lotte) il est sous "serveur linux sous debian"

En réponse à TooD :
J'ai vérifié mes "head" j'en ai trouvé un écris à l'envers "haed", après rectification il semble que tous marche sans erreur.

pour les tables :
Je ne comprend pas pourquoi elles ne sont pas bonne car elles me donnent ce que je veux ?

Pour la sécurité :
il ni en as pas du fait que la commande doit être imprimer" ce que je voulais dire c'est qu'en faisant une commande il y aurait quelquechose qui ne marcherais pas !

En réponse à Infobarquee :
on reviend sur mes tables, pourquoi des champ en trop ?

j'essaye d'expliquer :
le client doit impérativement s'inscrire et ensuite se connecter pour arriver à la page des commandes.

inscription :
<?php

include("session.php");

include("prise.php");

$nom_prenom = ''.$_POST['nom'].','.$_POST['prenom'].'';

if(isset($_POST) && !empty($nom_prenom) && !empty($_POST['password'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select password from client where nom_prenom='".$nom_prenom."'";
  $req = mysql_query($sql) or die ("erreur de connexion");

  $data = mysql_fetch_assoc($req);

  if($data['password'] != $password) {
        echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="inscription.php" </SCRIPT>';
    exit;
  }
  else {
    $_SESSION['nom_prenom'] = $nom_prenom;
       
    echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="../boutik_cd_com.php" </SCRIPT>';
  }   
}
else {
   echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="inscription.php" </SCRIPT>';
   exit;
}

?>

Dans l'inscription je récupère nom_prenom)
que je mets dans la table "com".
Donc en session je ne retiens plus simplement le "nom" mais le "nom_prenom".
le nom_prenom est récupéré comme ceci (pendant l'inscription)

$nom_prenom = (''.$_POST['nom'].','.$_POST['prenom'].'');

ensuite pour les commandes tous est lié avec le id_client (id nom_prenom table client) et le id_client (id nom_prenom table com)
toujours table com j'ai tous les descriptifs de l'article grace aux "hidden"

Il est évident que suivant vos connaissances je pourrais faire mieux et plus simple (si vous voyez mes scripts vous serais à terre pour rire) mais ça marche.

avec plus d'explications de ce que vous voulez me faire comprendre, je pourrais comprendre sans avoir à me donner les scripts tout fait.

je ne comprend pas le fait de devoirs séparer les articles et le cacul des prix puis des ajouts du fait que j'y arrive dans la même table.

J'ai énormément de patience et j'aime comprendre, si je ne vous suis pas en tout et ne fais pas tout ce que vous dites c'est simplement que j'arrive a faire ce que je veux sans complication (ché cha les vieux hein ! ha ha ha)

maintenant j'aimerais savoir les tables réelles que vous dites et que "normalement"  je devrais faire et une petite explication du "comment" relier le tout" (comme dans mon principe)

Ah ses jeun'ss ha ha ha.
Aller je le dis, mes excuses pour ma petite provocation.

Cordialement
Gilledunord

25

Re: Fermeture de session

J'ai regardé l'explication sur le problème que j'avais, mais mes scripts n'ont pas de header, ils sont en tête de fichier et en php, j'ai vérifié les espaces etc bref comme expliqué et ne vois pas ce qui géne ou ce qui ne vas pas.

C'est la goute d'eau qui fait déborder le vase, tu n'as pas lu les explications déjà présentes sur ce forum, donc tu peux te débrouiller sans mon aide, je me consacrerais bien plus volontiers à d'autres personnes.

Bon courage.

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."