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 08/08/2006, 15h34   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2003
Messages : 40
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 40
Points : 11
Points : 11
Par défaut Supprimer session caddie si caddie vide

Salut à tous,

j'ai encore quelques bidouilles à régler pour mon caddie, notamment supprimer la session s'il est vide.

Citation:
<?php
elseif (($_GET['action'] == "del")) // on supprime le produit
{
foreach(
$_SESSION['panier'] as $key => $array)
{
if (
$array['prod'] == $_GET['id'])
{
unset(
$_SESSION['panier'][$key]);
$message = " effacé !! | ";
}
}
}

?>
Colorez votre code PHP sur les forums grâce à Developpez.com

Comment vérifier qu'il n'ait aucune ligne avant de faire un session_destroy(); ?

Merci
dldstyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 15h37   #2
Membre éclairé
 
Avatar de Joe Le Mort
 
Inscription : avril 2006
Messages : 392
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 392
Points : 361
Points : 361
Envoyer un message via MSN à Joe Le Mort
* bool session_unregister (string name)

description : supprime la variable name dans la session en cours : retourne true si la variable a été supprimée correctement.

Exemple
Code :
1
2
3
4
5
6
<? 
// Si la variable session existe 
if (session_is_registered("Var1")) { 
session_unregister("Var1"); 
} 
?>
tu testes si elle est supprimée, et tu fait ton session_destroy()


sinon tu supprimes toutes les variables de sessions à l'aide de la fonction session_unset().

* bool session_unset ()

Exemple : détruire la session courante :
Code :
1
2
3
4
<? 
session_unset() 
session_destroy() 
?>
Joe Le Mort est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 15h38   #3
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Aucunes lignes, tu entends quoi par là ?
Si c'est le nombre d'éléments dans ton tableau de session, tu peux juste tester la taille de celui-ci
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 17h53   #4
Candidat au titre de Membre du Club
 
Inscription : octobre 2003
Messages : 40
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 40
Points : 11
Points : 11
Citation:
Envoyé par Kerod
Aucunes lignes, tu entends quoi par là ?
Si c'est le nombre d'éléments dans ton tableau de session, tu peux juste tester la taille de celui-ci
En fait si je supprime un produit de mon panier tout se passe bien sauf si c'était le dernier produit. A ce moment, je ne peux plus en rajouter !
C'est la raison pour laquelle je voulais supprimer ma session panier et en recréer une dès le nouveau produit à y insérer.

Mon code au complet :

Citation:
<?php
if(isset($_GET['action']) && isset($_GET['id']))
{
$panieractif=1;
if(isset(
$_SESSION['panier']) && is_array($panier)) // le panier existe déjà
{
$nbprod = count($panier);
if (
$_GET['action'] == "add") // on ajoute le produit
{
$break=0; // permet de squizzer la boucle ajout d'une quantité / ligne si +ieurs produits dans le panier
foreach($_SESSION['panier'] as $key => $array)
{
if (
$array['prod'] == $_GET['id'])
{
$newQte = ($_GET['qte'] + $array['qte']);
$_SESSION['panier'][$key]['qte'] = $newQte;
$ajout = 0;
$break=1;
}
elseif (
$break==0)// n'existait pas, on le rajoute
{
$ajout = 1;
}
}
if (
$ajout == 1)
{
array_push($panier,array("prod" => $_GET['id'],"qte" => $_GET['qte']));
}
}
elseif ((
$_GET['action'] == "del")) // on supprime le produit
{
foreach(
$_SESSION['panier'] as $key => $array)
{
if (
$array['prod'] == $_GET['id'])
{
unset(
$_SESSION['panier'][$key]);
}
}
}
// fin ajout de code
elseif ($_GET['action'] == "mod") // on modifie la quantité
{
$refsup = $_GET['refsup'];
foreach(
$_GET['refsup'] as $key => $keysup)
{
// je ne sais pas encore comment faire
}
}
else
// couille dans le potage
{
$message = "Une erreur s'est produite, merci de renouveller votre action.";
}
}
else
// le panier n'existe pas
{
$_SESSION['panier'][] = array("prod" => $_GET['id'],"qte" => $_GET['qte']);
}
}

?>
Colorez votre code PHP sur les forums grâce à Developpez.com

Merci pour votre aide
dldstyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 17h56   #5
Candidat au titre de Membre du Club
 
Inscription : octobre 2003
Messages : 40
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 40
Points : 11
Points : 11
Citation:
Envoyé par Joe Le Mort
* bool session_unregister (string name)

description : supprime la variable name dans la session en cours : retourne true si la variable a été supprimée correctement.

Exemple
Code :
1
2
3
4
5
6
<? 
// Si la variable session existe 
if (session_is_registered("Var1")) { 
session_unregister("Var1"); 
} 
?>
tu testes si elle est supprimée, et tu fait ton session_destroy()


sinon tu supprimes toutes les variables de sessions à l'aide de la fonction session_unset().

* bool session_unset ()

Exemple : détruire la session courante :
Code :
1
2
3
4
<? 
session_unset() 
session_destroy() 
?>
Merci, mais comment faire pour tester s'il y a ou non des produits dans ma session avant de supprimer.

J'ai lu que session_is_registered était obsolète ou déprécié aujourd'hui ?!
dldstyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 18h13   #6
Membre éclairé
 
Avatar de Joe Le Mort
 
Inscription : avril 2006
Messages : 392
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 392
Points : 361
Points : 361
Envoyer un message via MSN à Joe Le Mort
alors utilise ceci :

Citation:
!isset($_SESSION['login'])
qui indique que la variable est non décalrée ou vide

Citation:
<?php
if ((!isset($_SESSION['login'])) )
{
// la variable 'login' de session est non déclaré ou vide
echo "login vide";
}
?>
Colorez votre code PHP sur les forums grâce à Developpez.com
Joe Le Mort est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2006, 00h51   #7
Candidat au titre de Membre du Club
 
Inscription : octobre 2003
Messages : 40
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 40
Points : 11
Points : 11
Merci pour vos répondes et désolé de ne pas m'être manifestré plus tôt mais j'étais sur un projet plus showtime

Donc j'ai testé mais ça ne marche pas en fait.
Mon code :
Citation:
<?php
elseif (($_GET['action'] == "del")) // on supprime le produit
{
foreach(
$_SESSION['panier'] as $key => $array)
{
if (
$array['prod'] == $_GET['id'])
{
unset(
$_SESSION['panier'][$key]);
}
}
if (!isset(
$_SESSION['panier']))
{
echo
"<p>IL EST VIDE CE PANIER B***** donc je peux faire session_unset() et session_destroy() </p>";
}
else
{
echo
"<p>Normalement il n'est pas vide</p>";
}
}

?>
Colorez votre code PHP sur les forums grâce à Developpez.com

En faisant print_r($_SESSION) si le panier est vide j'obtiens logiquement ceci : Array ( )
Après avoir supprimé le dernier article de mon caddie j'obtiens ceci : Array ( [panier] => Array ( ) ) et je ne peux plus ajouter de nouveaux produits ?!

Comment faire alors pour supprimer la session si je suis sûr que mon array est vide ?!

Merci beaucoup !
dldstyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 13h46   #8
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
et si tu fais unset($_SESSION['panier']) l'indice "panier" sera supprimé, après, tu pourra le redefinir $_SESSION['panier']=array(); lors de la création d'un nouvelle élément dans la panier.
Si j'ai bien compris ton soucie.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united 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 00h24.


 
 
 
 
Partenaires

Hébergement Web