Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 09/11/2011, 14h15   #1
Invité régulier
 
Inscription : novembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 109
Points : 6
Points : 6
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 :
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 :
<input type="button" name="categories" value="Revenir aux articles" onclick="self.location.href='images.php'"/>
Le var_dump affiche array(0) { } et tout foire !
TRUNCKS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 14h28   #2
Membre confirmé
 
Développeur informatique
Inscription : décembre 2008
Messages : 344
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2008
Messages : 344
Points : 292
Points : 292
Le problème est manifestement dans une partie du code que tu ne nous montre pas...
comode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 14h30   #3
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
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 : 742
Points : 1 085
Points : 1 085
Dans ton images.php tu as bien un session_start() ? ou un session_destroy sur ta page actuelle ?
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 14h41   #4
Invité régulier
 
Inscription : novembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 109
Points : 6
Points : 6
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 :
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>';?>
TRUNCKS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 14h47   #5
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
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 : 742
Points : 1 085
Points : 1 085
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.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 15h09   #6
Invité régulier
 
Inscription : novembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 109
Points : 6
Points : 6
Voici la page en entier si cela peut servir:

Code :
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>
TRUNCKS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 15h54   #7
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
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 : 742
Points : 1 085
Points : 1 085
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 :
<a href="images.php?Supprimer=Supprimer&id=' . $result_image['id'] . '>
Ou en utilisant un document.location.href dans le javascript.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 16h30   #8
Invité régulier
 
Inscription : novembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 109
Points : 6
Points : 6
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.
TRUNCKS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 16h40   #9
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
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 : 742
Points : 1 085
Points : 1 085
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 ?
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 16h56   #10
Invité régulier
 
Inscription : novembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 109
Points : 6
Points : 6
Le voilà
( Merci du coup de main en tout cas )

Code :
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
}
?>
TRUNCKS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 21h49   #11
Invité régulier
 
Inscription : novembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 109
Points : 6
Points : 6
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.
TRUNCKS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 08h35   #12
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
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 : 742
Points : 1 085
Points : 1 085
Pour la base, je ne pense pas.

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

Code :
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.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 09h07   #13
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour, petite question :

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

Code :
<form action="admin.php" method="post">
et pourtant tu géres dans addimage.php :

Code :
$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 :
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 ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 10h35   #14
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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...
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 22h03   #15
Invité régulier
 
Inscription : novembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 109
Points : 6
Points : 6
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 :
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.
TRUNCKS est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h33.


 
 
 
 
Partenaires

Hébergement Web