IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Cookies] Cookie non récupérable depuis un autre dossier


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Pourquoi utiliser un cookie pour "action"?

    $_SESSION['action'] ne sera pas plus approprié?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    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...

  4. #4
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    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'])

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    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

  6. #6
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

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

    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 "../".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage d'image et download de fichier depuis un autre dossier
    Par yasen77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 31/07/2013, 23h24
  2. Réponses: 7
    Dernier message: 11/10/2011, 21h08
  3. DTPicker non accessible depuis un autre onglet
    Par Julien01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/05/2008, 08h27
  4. Port 8080 non accessible depuis une autre machine
    Par olof dans le forum Réseau
    Réponses: 2
    Dernier message: 03/04/2008, 08h08
  5. [BPW]Dialogues non modaux exécutés depuis un autre dialogue
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 07/12/2003, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo