Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2008, 14h59   #1
Invité de passage
 
Inscription : juin 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3
Points : 1
Points : 1
Par défaut [Cookies] Cookie non récupérable depuis un autre dossier

Bonjour, je vous expose mon problème.

J'ai un site en php/mysql à faire pour une entreprise qui restera en intranet. Pour que tout soit propre, je mets les pages correspondant aux diverses tables de ma base de données dans des dossiers différents. Tout se complique lorsque je veux fixer un cookie dans une page et le récupérer dans la page suivante : ce cookie est vide dans le second dossier alors que j'ai fait les tests et qu'il est bien présent dans le premier.

Voici mes codes :

La première page qui reçoit le formulaire. Elle dirige vers une autre page si action est non-nul. Cette page fonctionne.
Code :
1
2
3
4
5
6
7
8
9
<?php 
 setCookie('action', $_POST['action'], "", "../"); 
?>
<?php
 $connexion = mysql_connect($_COOKIE['hote'],$_COOKIE['utilisateur'],$_COOKIE['password']);
 mysql_select_db('maintenance' ,$connexion);
 if ($_POST['action'] != NULL){
 echo '<meta HTTP-EQUIV="REFRESH" content="0; url=../client/buff_inst_client.php">';
(...)
la page de "tampon" entre la page qui traite le formulaire et la page de destination. A ce moment déjà le cookie n'est plus setté.
Code :
<meta HTTP-EQUIV="REFRESH" content="0; url=ajout_client.php">
enfin la page qui doit agir différemment selon le cookie et qui fait toujours son action de base
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
(...)
   <form method = "post" 
   <?php 
   echo $_COOKIE['action'];
    if ($_COOKIE['action'] == "Ajouter un client") {
     echo 'action = ../installation/ajout_installation.php';
	}else{
     echo 'action = clients.php';
	}
   ?>
   >
   <input type="submit" value="Annuler">
  </form>
J'espère que mon code est assez clair mais je vous explique tout de même le but : que le bouton "annuler" ramène sur une page différente selon la page de provenance.

Si vous savez pourquoi mon cookie ne fonctionne pas, ou si vous avez une autre solution pour qu'annuler soit différent, j'attends vos réponses.

Merci.
Darien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 15h32   #2
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Pourquoi utiliser un cookie pour "action"?

$_SESSION['action'] ne sera pas plus approprié?
__________________
Solutions pour concessions et garages automobiles =>
http://www.fastback.be
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 15h35   #3
Invité de passage
 
Inscription : juin 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3
Points : 1
Points : 1
j'avais pensé à la session mais ça me paraissait sortir la grosse artillerie pour pas grand chose, mon cookie ne va servir que le temps d'une action. Je vais tenter quand même. Si quelqu'un a autre chose en attendant...
Darien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 15h38   #4
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Les sessions sont beaucoup plus fiables et simples d'utilisation que les cookies... Niveau sécurité, c'est plus dangereux les cookies etant donné que si il y a faille XSS, il peut y avoir vol de compte utilisateur...

ou comme dans ton exemple de code, pire, une injection SQL... (ne pas oublier mysql_real_escape_string() )

Franchement utilise $_SESSION['action']

une fois cette variable obsolète, tu fais un unset($_SESSION['action'])
__________________
Solutions pour concessions et garages automobiles =>
http://www.fastback.be
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 15h52   #5
Invité de passage
 
Inscription : juin 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3
Points : 1
Points : 1
Ok j'essaierai de faire moins usage de cookies pour l'instant même si ça ne me dérangeait pas de m'en servir étant donné que je n'ai pas le même cahier des charges de sécurité que pour de l'internet.

Et avec la session ça marche bien, donc je garde, merci
Darien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 11h38   #6
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
Bonjour

T'as trouvé une autre solution, mais au cas où : je pense que ton problème viens du paramètre path :

Citation:
path

Le chemin sur le serveur sur lequel le cookie sera disponible. Si la valeur est '/', le cookie sera disponible sur l'ensemble du domaine domain . Si la valeur est '/foo/', le cookie sera uniquement disponible dans le répertoire /foo/ ainsi que tous ces sous-répertoires comme /foo/bar/ du domaine domain . La valeur par défaut est le répertoire courant où le cookie a été défini.
J'aurais plutôt mis "/" que "../".
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h59.


 
 
 
 
Partenaires

Hébergement Web