Vous n'êtes pas identifié(e).
Bon bah je suis le dernier rescapé...
Je fais mes boucles produits avec l'id du produit en paramètre et je remarque que si l'id n'existe pas, ça me retourne tous les produits de ma boutique.
Alors que si j'utilise la ref produit bah ma condition <T_PROD> fonctionne bien...
C'est normal ?
Aide les autres, ils t'aideront en retour.
Hors ligne
ta boucle produit est en une conditionnelle ? Et si tu boucles sur un ID en paramètre (id=#PRODUIT_ID) qui n'existe pas la condition est quand même remplie : elle affiche tous les produits du catalogue ?
tu peux me montrer la boucle ?
Hors ligne
rien de très compliqué ^^
<T_PROD>
<THELIA_PROD type="PRODUIT" id="#PRODUIT_ID">
Il existe!
</THELIA_PROD>
</T_PROD>
Il existe pas!
<//T_PROD>Aide les autres, ils t'aideront en retour.
Hors ligne
Ah ah ah !
La bonne blague!
En fait pour la référence, j'ai fais un test en dur donc ça doit donner la même chose qu'avec l'id...
Fichier substitproduits.php
if($ref)
$tproduit->charger($ref);
else if($id_produit)
$tproduit->charger_id($id_produit);
if( $ref || $id_produit)
$tproduitdesc->charger($tproduit->id, $_SESSION['navig']->lang);là ça me sort rien donc les replace se font par du vide et donc ma boucle va tout chercher...
Aide les autres, ils t'aideront en retour.
Hors ligne
Exemple : http://www.distillerie-girardot.fr/prod … =04LIFRMIC
ça charge tout
(et ça rame au passage je vais lui dire ^^)
Aide les autres, ils t'aideront en retour.
Hors ligne
Bon vite quelqu'un ! qu'on donne un bug à manger à elyos sinon il se met à en créer lui-même...
J'en crée pas! Ils existent ! Fais des tests tu verras!!
(va jeter un œil à l'autre post aussi ^^)
Aide les autres, ils t'aideront en retour.
Hors ligne
En fait j'ai bien peur que c'est pareil partout, dès lors que tu spécifies une ref produit, un id produit, un id rubrique, un id contenu, un id dossier,... erroné, ça te charge tout ce que la boucle peut te sortir ![]()
Aide les autres, ils t'aideront en retour.
Hors ligne
'tin...
La distillerie Girardot à fait planter firefox.... ![]()
OK je confirme. Mais alors il suffirait de modifier cette ligne là (j'en profite que yoan et manu dorment) ->
if( $ref || $id_produit)non ?
Dernière modification par ottoroots (15-05-2009 01:43:00)
Hors ligne
Oui, moi aussi ça a failli faire plante Firefox ^^.
Sinon, non!
Car $ref ou $id_produit eux ils existent! (tout comme $id_rubrique etc)
Je dirais plutôt que dans les classes qui vont chercher les informations si aucun résultat n'est retourné alors on renvoie soit sur l'index soit sur une page erreur.php.
Dernière modification par Elyos (15-05-2009 01:47:26)
Aide les autres, ils t'aideront en retour.
Hors ligne
les classes surchargent la méthode charger() de Requete(), classe abstraite pour la connexion à la base. Mais toutes font appel à getvars() de la classe BaseObj.
getvar() retourne 0 (pas de résultat) ou 1. Peut-être par là ?
Bon je profite que tu t'ennuies pour poser des questions de bleu
Hors ligne
vas y je t'en prie ![]()
en gros faudrait faire
- soit dans la fonction getVars à la place de
return 0mettre
header("Location: index.php");exit;ou
header("Location: erreur.php");exit;- soit dans les classes qui font appel à getVars à la place de
return $this->getVars("select * from $this->table where ref=\"$ref\"");mettre
$result = $this->getVars("select * from $this->table where ref=\"$ref\"");
if(!$result || $result==0){
header("Location: index.php");exit; //ou erreur.php
}else{
return $result;
}Dernière modification par Elyos (15-05-2009 02:20:32)
Aide les autres, ils t'aideront en retour.
Hors ligne
on est d'accord. La 2nde solution serait quand même moins risquée. Pas sûr qu'une obscure arrière fonction ne se serve pas de ce retour 0 de getvar()....
Bon là j'en connais qui vont avoir le poil qui se hérisse demain en lisant ces horreurs.
je testerais demain juste pour rigoler.
Hors ligne
Oui car la première solution est utilisé à d'autres endroits.
Quoiqu'en fait, ce serait peut être même mieux de faire la vérification dans les substitutions globales avant de faire partir les boucles...
Yoan et Manu décideront, même si je vois déjà leur réponse : "Mais y'a pas d'intérêt à saisir une url fausse!"
(nan ils sont pas comme ça
)
Aide les autres, ils t'aideront en retour.
Hors ligne
Salut la compagnie,
Vous m'avez fait peur
, le cas de figure que vous décrivez n'existe pas en ligne, puisque je n'affiche jamais un produit seul, seul un internaute qui connait THELIA peut creer ce genre de dysfonctionnement.
C'est normal que cette page rame ou plante, vous chargez 196 produits avec une image de 40k, soit 8M au total ![]()
Alfouine,
Au royaume des aveugles, les borgnes sont mal vus.
Hors ligne
Salut!
Oui oui en accès direct c'est pas possible... mais via un lien erroné c'est possible...et moi perso ça me gêne ![]()
Aide les autres, ils t'aideront en retour.
Hors ligne
une solution qui me vient vite fait comme ca, passer un paramètre num à vos boucles produits ![]()
Vous mettez une règle disant qu'au maximum sur votre on pourra pas afficher au maximum c produits sur une même page (sinon vous aurez le problème crée sur le site d'alfouine ce qui est tout à fait normal il l'a expliqué
)
http://thelia.net/wiki/ => ton meilleur ami
http://thelia.net/Plugins.html => Les contributions de la communauté
http://www.mon-bovin.fr
http://www.manuel-raynaud.com
Hors ligne
Oui, c'est à ça qu'il sert le param num ![]()
Aide les autres, ils t'aideront en retour.
Hors ligne
Pour la boucle produit, j'ai choisi d'afficher le dernier produit en ligne rentré dans la bdd,
j'ai donc mis :
<THELIA_PROD type="PRODUIT" id="#PRODUIT_ID" num="1" ligne="1" classement="inverse">
</THELIA_PROD>Dernière modification par Elyos (16-05-2009 22:16:06)
Aide les autres, ils t'aideront en retour.
Hors ligne
Bon je reviens sur ce post après une petite idée ^^
Si vous voulez empêcher l'accès en cas de produit/rubrique/contenu inexistant
Boucle produit sur l'id :
<?php
$id_produit=#PRODUIT_ID;
if($id_produit==""){
header("Location: index.php");exit;
}
?>Boucle produit sur la référence:
<?php
$ref=#PRODUIT_REF;
if($ref==""{
header("Location: index.php");exit;
}
?>et ainsi de suite sur les rubriques et contenus.
Dernière modification par Elyos (19-05-2009 23:16:51)
Aide les autres, ils t'aideront en retour.
Hors ligne
En fait ça peut pas marcher car avant d'exécuter le php, des informations sont déjà envoyées à la page ce qui nous donne
Warning: Cannot modify header information - headers already sent by (output started at [...]/htdocs/fonctions/moteur.php(276) : eval()'d code:4) in [...]/htdocs/fonctions/moteur.php(276) : eval()'d code on line 263
Aide les autres, ils t'aideront en retour.
Hors ligne
Bon bah je suis passé par du javascript...
En fait, je récupère des infos pour générer le titre de chaque page.
Quand l'id produit n'existe pas (pareil pour les rubriques, les contenus etc...) la variable "titrepage" est vide et donc je remplace le contenu de ma page centrale par ce que je désire par du javascript.
Par contre, je ne fais des vérifications que sur les ids retournés que j'utilise.
Je ne fais aucune vérification sur les textes et les autres ids dans les urls mais ça c'est autre histoire ![]()
Dernière modification par Elyos (25-05-2009 18:40:54)
Aide les autres, ils t'aideront en retour.
Hors ligne
Bonsoir,
Je déterre ce post, car j'ai perdu 30 minutes sur le debug de mon plugin wordpress thelia, j'avais mis id_produit=1 et tous sortais, jusqu'à ce que j'aille voir en base qu'il n'y avait plus de produit avec un tel ID, ne pourrait-on pas avoir un message "Produit inexistant" ou même une erreur 404?
NUM st une modeste parade mais ce serait bien de pouvoir avoir le message pour tous les types de contenus:
Sans parler de la mise en page qui sautent:
http://demo.thelia.net/?fond=produit&id … rubrique=4
EDIT: Sur les rubriques, même le menu dans la partie gauche trinque:
http://demo.thelia.net/?fond=rubrique&id_rubrique=444
Bonne soirée.
Dernière modification par boyquotes (06-06-2012 21:40:53)
Linux-live-cd.org
Serveur Linux / Thélia 1.5.x.x
PHP 5.3.x / Mysql 5.1.x
Hors ligne
Je re-déterre le post, puisque j'ai exactement le même problème.
J'avais énormément de référence en doublons suite à une insertion par fichier CSV, des produits dans la BDD.
J'ai supprimé les doublons, malheureusement Google a référencé toutes les pages avant que je fasse le nettoyage.
Ce qui fait qu'une personne via Google peut tomber sur une page où l'ID du produit n'existe plus, ce qui fait que l'ensemble des produits existant dans la base de donnée est affiché.
Et j'ai remarqué , comme le message précédent, que sur le site démo il y a le même problème :
http://demo.thelia.net/?fond=produit&id … rubrique=3
Merci !
Yoann.
Nouveau sur Thélia.
Hors ligne
ajouter num="1" a la boucle produit règle ce problème.
Idem pour la boucle contenu.
Hors ligne
Réalisation Octolys