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 :

Problème $_SESSION qui lache


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut Problème $_SESSION qui lache
    Bonjour à vous,

    J'ai une variable que je stocke dans une session et qui me sert sur toutes mes autres pages.

    Mon seul soucis, c'est que sur une page en particulier, ma session lache quand je retourne sur la page précédante.

    Je m'explique: j'ai une page où je me sers de la variable pour afficher mes images:

    array(1) { ["type_base"]=> string(1) "1" }

    J'ai bien ça qui correspond bien à l'id.
    Je m'en sert sur une page pour afficher des images grâce à une requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $type = $_SESSION['type_base'];
     
     //Images
     
    $sql_image = "SELECT * FROM images_simple WHERE categorie_id = '$type'";
    Mais quand je veux revenir sur la page précédante, avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" name="categories" value="Revenir aux articles" onclick="self.location.href='images.php'"/>
    Le var_dump affiche array(0) { } et tout foire !

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Le problème est manifestement dans une partie du code que tu ne nous montre pas...

  3. #3
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Dans ton images.php tu as bien un session_start() ? ou un session_destroy sur ta page actuelle ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Oui j'ai bien tout ça.

    Je viens de fouiller un petit peu, et si, par exemple, il n'y a pas d'image à afficher, la session ne foire pas.

    J'ai l'impression que cela vient de ma boucle qui affiche les images:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql_image = "SELECT * FROM images_simple WHERE categorie_id = '".mysql_real_escape_string($_SESSION['type_base'])."'";
    $requete_image = mysql_query($sql_image) or die( mysql_error());
     
    echo '<table align="center" border="1">'; //tableau
    echo '<tr><th>&nbsp;Images&nbsp;</th></tr>'; 
    	while ($result_image = mysql_fetch_array($requete_image)){
    	$image = $result_image['url_image_mini'];
    		echo '<tr>'; //ligne
    		echo '<td align="center" valign="middle"><img src="../../'.$image.'"</img></td>';?>

  5. #5
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    et l'url de ton image est bonne ? Tu peux peut être essayé en mettant une url en absolue et non en relatif.

    et si tu remets un var_dump a la fin de la page ou tu t'en sers pour l'image.

    Un peu de code de cette page pourrait également être utile pour comprendre.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Voici la page en entier si cela peut servir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    <?php session_start(); ?> 
    <?php require_once('../../connexion/localhost.php');
     
    $conn = mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR);
     
    mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error()); 
     
    mysql_select_db($database_localhost, $conn); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Liste des articles</title>
     
    <link href="../../style.css" rel="stylesheet" type="text/css"/>
     
    </head>
     
    <body>
     
    <script type="text/javascript">
     
    function supprimer(id)
     
       {
          if(confirm('Voulez vous vraiment supprimer ?'))
          {
            window.open("?Supprimer=Supprimer&id="+id,"_self");
          }
       }
     
    </script>
     
    <center>
     
    <?php
     
    var_dump($_SESSION);
     
    if(isset($_GET['id'])){ 
     
    $id = $_GET['id'];
     
    $requete_supp = "SELECT *
            		 FROM images_simple
    				 WHERE ID_image = '$id'";
     
    //exécution de la requête:
    $requete_query_supp = mysql_query($requete_supp) or die( mysql_error());
    $result_supp_array = mysql_fetch_array ($requete_query_supp);
    $supp_image = $result_supp_array['url_image'];
    $supp_image_mini = $result_supp_array['url_image_mini'];
     
    //nom de ton fichier ici.
    $filename = "../../$supp_image";
    $filename2 = "../../$supp_image_mini";
     
    unlink($filename);
    unlink($filename2);
     
     
    mysql_query("DELETE FROM images_simple WHERE ID_image='$id'")or die(mysql_error()); 
     
    echo '<br/><br/>'.'<p style="color:#ff0000;font-weight:bold;">Image correctement supprimée</p>'."<br/><br/><a href=\"addimage.php\">Ajouter une nouvelle image</a>"."<br/><br/><a href=\"images.php\">Revenir à l'accueil</a>";
     
    } 
     
    else{ 
    ?>
     
    <br />
     
    <p style="text-align: center;"><input type="button" name="nouveau" value="Nouvelle image" onclick="self.location.href='addimage.php'"/>&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" name="categories" value="Revenir aux articles" onclick="self.location.href='images.php'"/>&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" name="utilisateurs" value="Gestion des utilisateurs" onclick="self.location.href='../../utilisateurs.php'"/>&nbsp;&nbsp;&nbsp;&nbsp;
     
    <a href="../../index.php">Se déconnecter</a>
     
    <?php
     
    echo '<br/><br/>';
     
    //Images
    $sql_image = "SELECT * FROM images_simple WHERE categorie_id = '".mysql_real_escape_string($_SESSION['type_base'])."'";
    $requete_image = mysql_query($sql_image) or die( mysql_error());
     
    echo '<table align="center" border="1">'; //tableau
    echo '<tr><th>&nbsp;Images&nbsp;</th></tr>'; 
    	while ($result_image = mysql_fetch_array($requete_image)){
    	$image = $result_image['url_image_mini'];
    		echo '<tr>'; //ligne
    		echo '<td align="center" valign="middle"><img src="../../'.$image.'"</img></td>';?>
    		      <td align="center" valign="middle">&nbsp;<input type="button" name="Supprimer" value="Supprimer" onclick="supprimer(<?php echo $result_image['ID_image']; ?>)"/>&nbsp;</td> 
        <td align="center" valign="middle">
     
    <?php 
     
    echo '</tr>'; //fin ligne
    	}
    echo '</table>';
    }
    ?>
     
    </center>
    </body>
    </html>

  7. #7
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Rien dans le code ne semble supprimer le contenu de la session.

    Au lieu de faire un window.open sur _self, tu peux tester en mettant directement un lien en dur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="images.php?Supprimer=Supprimer&id=' . $result_image['id'] . '>
    Ou en utilisant un document.location.href dans le javascript.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    En fait le problème ne vient pas de la suppression des images, puisque, a peine entré sur la page, dès que l'on veut faire soit un retour avec le navigateur, que l'on clique sur nouvelle image ou retour catégorie, on perd la session.

    Je viens encore de cibler un peu plus le problème lol, ce bug ne se produit que si jamais les champs de la table son vide.

    Dans le cas où il y a un champ sans image dans la table.

  9. #9
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Pour moi le problème aurait pu venir du window.open.

    Après avec le code montré je ne vois pas le problème.

    C'est quoi le code de la page addimage.php ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Le voilà
    ( Merci du coup de main en tout cas )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?php 
     
    if(isset($_POST['action'])){
     
    $id = mysql_real_escape_string($_POST['categories']);
     
    $requete_type = "SELECT ID_categorie, type
            		 FROM categories
    				 WHERE ID_categorie = '$id'";
     
    //exécution de la requête:
    $query_type = mysql_query($requete_type) or die( mysql_error());
    $result_type = mysql_fetch_array ($query_type);
    $result_categorie = $result_type['ID_categorie'];
     
    if ($result_type['type'] == 'Classique'){
    $type = "simple/images.php";
    }
     
    if ($result_type['type'] == "Expert"){
    $type = "images.php";
    }
     
    $_SESSION['type_base'] = $result_categorie;
     
    header ("Location: $type");
    }
     
    else{
     
     //requête SQL:
    $sql = "SELECT *
            FROM categories
    		ORDER BY nom_categorie";
     
    //exécution de la requête:
    $requete = mysql_query($sql) or die( mysql_error());?>
     
    <p style="text-align: center;"><input type="button" name="categories" value="Revenir aux catégories" onclick="self.location.href='../categories/admin.php'"/>&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" name="utilisateurs" value="Gestion des utilisateurs" onclick="self.location.href='../utilisateurs.php'"/>&nbsp;&nbsp;&nbsp;&nbsp;
     
    <a href="../index.php">Se déconnecter</a> 
     
    </p>
     
    <br />
     
    <p><b>Consulter les articles:</b></p>  
    <form action="admin.php" method="post">
    <input type="hidden" name="action" value="add">  
    <select name="categories">  
    <?php
    while ($result = mysql_fetch_array($requete)) {
    echo '<option value="'.$result['ID_categorie'].'">'.$result['nom_categorie'].'</option>';
    }
    ?>
    </select> 
     
    <input name="valider" type="submit" value="Valider">
     
    </form>
     
    <?php
    }
    ?>

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Cela ne peut pas venir de ma base de donnée ?

    Mon champ url_mini où je stocke le chemin vers l'image que j'affiche est un varchar(200), la base est en innodb.

  12. #12
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Pour la base, je ne pense pas.

    L'erreur ne pourrait pas venir de ce bout de code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $query_type = mysql_query($requete_type) or die( mysql_error());
    $result_type = mysql_fetch_array ($query_type);
    $result_categorie = $result_type['ID_categorie'];
     
    if ($result_type['type'] == 'Classique'){
    $type = "simple/images.php";
    }
     
    if ($result_type['type'] == "Expert"){
    $type = "images.php";
    }
     
    $_SESSION['type_base'] = $result_categorie;
    si tu ne récupère rien, $result_categorie sera vide.
    Peux tu en faire un var_dump pour vérifier.

  13. #13
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Bonjour, petite question :

    Pourquoi tu as dans ton fichier addimage.php ton formulaire qui pointe vers admin.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="admin.php" method="post">
    et pourtant tu géres dans addimage.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = mysql_real_escape_string($_POST['categories']);
    ton $_POST['categories'] doit être récupéré dans le fichier admin.php théoriquement non ?

    si tu fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
     
    exit;
     
    $id = mysql_real_escape_string($_POST['categories']);
    ça te donne quoi ?

  14. #14
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    Moi, il m'est déjà arrivé d'avoir un problème de transmission de donnée avec les sessions, et alors je les remplace par une table mysql...

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    En fait, à la création d'une nouvelle donnée, on doit choisir le type de catégorie, donc cela ne peux pas être vide, on ne peut pas rien récupérer.

    En fait, je récupère le post sur la même page, je vérifie le type, et j'envoie sur une page différente en fonction du type, avec l'id de la catégorie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header ("Location: $type?ID_image=$result_categorie");
    J'ai déplacé le dossier image à la racine des scripts, et là ça marche
    C'est vraiment le ../.. qui pose un problème j'ai l'impression.

Discussions similaires

  1. problème, War qui se déploie en 2 répertoires
    Par elitost dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 21/02/2007, 15h29
  2. Problème: calque qui disparait quand on en affiche un autre.
    Par barracuda83 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/06/2006, 19h59
  3. [ Problème ] .htaccess qui ne marche pas "partout"
    Par nnet_mathieu dans le forum Apache
    Réponses: 8
    Dernier message: 22/11/2005, 19h34
  4. Problème XOR qui réagit comme un OR
    Par Pymm dans le forum ASP
    Réponses: 10
    Dernier message: 13/10/2005, 09h56
  5. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 10h07

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