Accueil > Forum > > > > pb panier et include
pb panier et include
mercredi 4 février 2009 à 17:45:41 |
pb panier et include

yebs
|
Bonjour, j'ai un soucis qui m'embête bien dans la réalisation d'un site internet. Un peu d'explications : tout le site est géré par un système d'include(). J'ai donc un index, et toutes les autres pages sont appelées au sein d'un <div> en fonction du clic sur les rubriques d'un menu... jusque là pas de problème. Ensuite, sur 1 des pages insérées par l'include(), j'ai des articles répertoriés dans une base de données, que j'affiche, et je propose d'ajouter chaque article dans un panier. pour le panier, je me suis référé à cette page : http://jcrozier.developpez.com/articles/web/panier/ (ma connexion à la base, le session_start et l'appel aux fichiers externes se font 1 seule fois au niveau de l'index.php) De plus, l'affichage du nombre d'articles dans mon panier est présent sur l'index, donc visible sur toutes les pages du site pour l'internaute. En local, AUCUN problème, j'ajoute, je vide mon panier, je navigue entre mes pages... les données de session de mon panier sont conservées sans aucun problème n'importe où je me trouve. Par contre, dès que je transfère tout ça sur un serveur je rencontre des problèmes : 1 - je ne peux ajouter qu'un seul article dans mon panier (si je clique sur un autre, il vient remplacer celui existant et non l'ajouter) 2 - quand j'ai donc mon seul article dans le panier et que je me rends sur un autre page du site (donc je reste sur l'index, mais j'include une autre page), ma session de panier se perd, et j'obtient un panier vide... Donc ma question : A quoi cela peut être du ? Pourquoi cette différence entre local et en ligne ? Quelqu'un a-t-il des pistes pour me sortir de cette "galère" ? Merci d'avance. A bientôt sur phpcs
|
|
jeudi 5 février 2009 à 09:27:43 |
Re : pb panier et include

faiblard
|
Bonjour,
Question idiote numéro 1 : Es tu sur d'avoir remonté tout t'es fichier sur le serveur?
As tu sur d'avoir ton session_start partout?
|
|
jeudi 5 février 2009 à 10:12:54 |
Re : pb panier et include

yebs
|
bonjour,
a priori, OUI, j'ai remonté TOUS les fichiers sur le serveur. et j'ai mon session_start() non pas sur toutes les pages, mais uniquement sur la page index.php qui "porte" en quelque sorte toutes les autres par un système d'include(). D'ailleurs si je mets session_start() sur toutes les pages, ça me crée une erreur comme quoi une session est déjà ouverte, ce qui est logique...
Voila la réponse à la "question idiote numéro 1"... Une deuxième ?
Merci
|
|
jeudi 5 février 2009 à 18:09:16 |
Re : pb panier et include

kohntark
|
Salut,
Il faudrait voir un peu ton code (la gestion d'ajout, de suppression etc ...)
... et la question idiote n°2 est : Ton hébergeur supporte t il les sessions ?
Cordialement,
Kohntark -
|
|
vendredi 6 février 2009 à 09:51:29 |
Re : pb panier et include

yebs
|
salut, je viens de vérifier que l'hébergeur supporte bien les sessions, et OUI, c'est bien le cas. Le système de panier est identique à ce que l'on peut trouver sur http://jcrozier.developpez.com/articles/web/panier/ à savoir (pour la création et l'ajout) : ///////////////////////////////////////////////////////////////////////////////// /* PAGE fonctions-panier.php */
function creationPanier(){
$ret=false;
if (isset( $_SESSION['panier'])) $ret=true;
else
{
$_SESSION['panier']=array(); $_SESSION['panier']['libelleProduit']=array(); $_SESSION['panier']['qteProduit']=array(); $_SESSION['panier']['prixProduit']=array(); $ret=true;
}
return$ret;
}
function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){
if (creationPanier())
{
$positionProduit=array_search($libelleProduit,$_SESSION['panier']['libelleProduit']);
if ($positionProduit!==false) { $_SESSION['panier']['qteProduit'][$positionProduit]+=$qteProduit; } else { array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit); array_push( $_SESSION['panier']['qteProduit'],$qteProduit); array_push( $_SESSION['panier']['prixProduit'],$prixProduit); }
}
else echo"Unproblèmeestsurvenuveuillezcontacterl'administrateurdusite.";
}
///////////////////////////////////////////////////////////////////////////////////////
/* PAGE commande.php */
et ensuite, j'ajoute de cette manière :
if (isset($_POST['libelle']) && isset($_POST['qte']) && isset($_POST['prix'])) { $libelleProduit=intval($_POST['libelle']); $qteProduit=intval($_POST['qte']); $prixProduit=floatval($_POST['prix']);
ajouterArticle($libelleProduit,$qteProduit,$prixProduit); } $req=mysql_query("SELECT * FROM commande"); while ($res=mysql_fetch_array($req)) { $id=$res['id']; $txt=$res['texte']; $px=$res['prix'];
echo $txt." - ".$px." <form action=\"\" method=\"post\"> <input name=\"libelle\" type=\"hidden\" value=\"".$id."\" /> <input name=\"qte\" type=\"hidden\" value=1 /> <input name=\"prix\" type=\"hidden\" value=\"".$px."\" /> <input type=\"submit\" value=\"Ajouter au panier\" /></form><br>"; } ////////////////////////////////////////////////////////////////////////////////////
Voila ! ce code fait donc parti de la page 'commande' qui est appelée dans un <div> au sein de la page index.php géré par un système d'include().
//////////////////////////////////////////////////////////////////////////////////////
/* PAGE index.php */ et voici comment commence le fichier index.php :
<?php session_start(); $filename = "param.php"; if (file_exists($filename)) include($filename); $connect = mysql_connect($mysql,$login,$pass); mysql_select_db($base, $connect); require_once "link.inc.php"; include_once "fonctions-panier.php"; ?> ////////////////////////////////////////////////////////////////////////////////////////////// session_start en premier, param.php est le fichier de connexion à la base de données link.inc.php est le fichier permettant de gérer l'include() fonctions-panier.php contient les fonctions du panier
Ces 1ères lignes de code sont inscrites UNIQUEMENT sur l'index.php.
Voila pour mon code... Tout cela n'explique pas pourquoi tout ceci marche très bien en local avec easyphp 1.8 et pas en ligne !
Quelqu'un a-t-il déja géré un système de panier en plus d'un système d'include de page ?
Merci.
A bientôt
|
|
vendredi 6 février 2009 à 18:17:57 |
Re : pb panier et include

kohntark
|
Salut, ... ben je ne vois pas trop non plus. Tu ne tournes pas avec une version de php < 4.2.0 par hasard ? Pour déboguer je mettrai des print_r($_SESSION); un peu partout; après session_start dans index.php et sur toutes les pages include concernées, ça peut permettre d'identifier le pb. Je remplacerai aussi tous les include (et include_once) par des require .... on ne sait jamais Tu as bien l'affichage des erreurs activé ? Il ressemble à quoi le link.inc.php ? Au passage ton panier semble très peu sécurisé (mais je n'ai pas vu tout ton code ). Par exemple ça : <form action=\"\" method=\"post\"> <input name=\"libelle\" type=\"hidden\" value=\"".$id."\" /> <input name=\"qte\" type=\"hidden\" value=1 /> <input name=\"prix\" type=\"hidden\" value=\"".$px."\" /> <input type=\"submit\" value=\"Ajouter au panier\" /></form>
C'est très dangereux si tu n'as pas de contrôle par la suite, rien n'empêche d'envoyer un prix à 1 centimes alors qu'il en vaut 10000 fois plus. En tout état de cause, même si c'est contrôlé par la suite, seuls les champs libelle et qte devraient être posté, c'est ensuite au script côté serveur de faire le calcul du prix à partir de la DB. Cordialement, Kohntark -
|
|
mardi 10 février 2009 à 15:56:30 |
Re : pb panier et include

yebs
|
salut Kohntark !
un grand merci pour le conseil de sécurité vis à vis du panier ! je vais faire en sorte de sécuriser tout ça.
Sinon, pour mon problème de départ, j'arrête de chercher, ça m'a trop saoulé et j'ai surtout perdu trop de temps là-dessus. La solution un peu crade => j'ai sorti la page commande de l'include et j'ai repris le CSS de l'index pour que l'internaute de base ne se rende compte de rien. Ça ne me satisfait pas, mais bon... on va faire comme ça, ça sera plus simple !
Encore merci beaucoup d'avoir essayé avec moi de chercher une solution au problème.
A bientôt sur phpcs.
|
|
mardi 10 février 2009 à 16:07:44 |
Re : pb panier et include

yebs
|
...petite précision : j'avais déjà fait des <pre> var_dump($_SESSION) </pre> pour voir comment se comportait le panier, et c'est bien comme cela que j'avais vu qu'au lieu d'ajouter un article au panier, ça remplacé l'article qu'on avait déja mis dans le panier.
De plus, la version de PHP est supérieure à 4.2.0.
Et enfin, le link.inc.php ressemble à ça : /*-----------------------------------------------------------------------------------*/ $numlien = @$_GET["numlien"]; switch ($numlien) { case 1 : $page = "index.php"; break; case 2 : $page = "commande.php"; break;
default : $page = "index.php"; break; } /*-----------------------------------------------------------------------------------*/ et l'index.php donne ça : <div id="menu"> echo "<a href=\"index.php?numlien=1\">Accueil</a><br />"; echo "<a href=\"index.php?numlien=2\">Commande</a><br />"; </div> ...et plus loin <div id="general"> <?php include $page; ?> </div> /*-----------------------------------------------------------------------------------*/
Voila pour les renseignements que tu demandais ! Si ça te donne des idées dans la résolution du problème, je suis toujours preneur !
Cordialement.
Yebs
|
|
Cette discussion est classée dans : site, pages, include, index, panier
Répondre à ce message
Sujets en rapport avec ce message
Contrôler et Protéger les pages d'un site et obliger le visiteur à venir depuis la page index du site [ par rem78 ]
Bonjour, Je cherche un script en php qui permetterais de protéger les pages d'un site et qui obligerais le visiteur à rentrer sur le site depuis la p
Problème Tableau [ par VivoBaggio ]
Salut tout le monde. Voilà, je sais que cette question ne devrait pas se trouver dans cette partie du forum, mais je n'ai pas su la mettre autre part.
"analyse" de site [ par Evangun ]
Bonjour à tous,ce n'est pas du php mais je me demandais s'il y avait un logiciel qui par exemple pouvait parcourir un site (en local chez moi ce sera
incorporé une page. (include) [ par damien174 ]
bonjour, j'ai un soucis je veux faire mon site et dans mon site il y aura un menu pour aller sur divers page et forum, je problème c'est actuellement
header [ par kyript ]
Bonjour a tousvoila j'ai un index qui en fonction d'une variable d'url fait un include d'une page (test.php)Dans test.php j'ai un include d'un script
Liens sur pages comme sur ce site.... [ par LaTatadu91 ]
Salut, voila il y a quelque temps j'ai poser une question pr savoir comment faire pour afficher correctement les liens sur les pages générées apres ue
Gestion des pages et des champs [ par KoRG19 ]
Bonjour,Je suis sur le point de concevoir un site web pour l'entreprise ou je travail et je me demandais de quel façon gérer les pages et les champs d
developpement d un site [ par adess00 ]
Salut je suis en train de faire mon site et j ai plusieurs question1-comment fait on en php pour que si une condition est vrai , on lance une page (pa
Gestion d'un site et de son contenu, je souhaite créer une pages dans une bd, et la faire affiché en ordre de position [ par euhreux ]
un page dans l'arborescense de mon site au premier niveau, je fais affiché sous ce niveau les pages sous le précédent niveau, mais j'aimerais qu'elle
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
SYSTEME D'AMISYSTEME D'AMI par moza2409
Cliquez pour lire la suite par moza2409
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|