Bug de redirection (general.php > function tep_get_all_get_params)

Archive

Messagepar zmove » Jeu 07 Sep 2006, 12:07

Bonjour à tous,

Je ne poste pas ceci tout de suite dans le wiki, car j'aimerais un echo sur l'éventuel bug que j'ai trouvé.

En effet, il ne se produit que dans un cas très particulier je vous explique.

J'ai modifié osCSS pour y mettre le choix de la quantité et la possibilité de commander un produit directement dans le product_listing.php. Pour ce faire j'ai mis le code suivant :

(De plus, j'ai mis la redirection sur la panier apres l'ajout d'un produit sur false sinon, ce problème n'existe pas)

Code: Tout sélectionner
tep_draw_form('buy_now' . $row['products_id'], tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&amp;products_id=' . $listing['products_id']), 'post') . '<fieldset><label for="qty'.$row['products_id'].'">'.TEXT_LABEL_QUANTITE.'</label>'.tep_draw_input_field('list_quantity', 'qty'.$row['products_id'].'', '1', 'size="3" maxlength="3"') . tep_image_submit('cart.png', IMAGE_BUTTON_BUY_NOW, 'class="addPanier"') . '</fieldset></form>';

lorsque j'ajoute un produit dans le panier via le product_listing, il se passe alors un bug. Dans ma barre d'adresse, il y a un problème lié aux '&' remplacés pas des '&amp;'. cela n'affecte pas l'ajout de mon produit dans mon panier qui fonctionne bien, mais l'adresse s'allonge de facon très "étrange". Ainsi, en ajoutant 4 produits différents j'obtiens une url du genre :

Code: Tout sélectionner
http://127.0.0.1/Kalys_Gastronomie/particulier/index.php?cPath=33_82&amp;amp;amp;amp;sort=2a&amp;amp;amp;sort=2a&amp;amp;sort=2a&amp;sort=2a&amp;

Donc on remarque qu'il y a une redondance intempestive de &amp; dans la barre d'adresse...


A coup de echo(); j'ai réussi à identifier le problème qui est donc dans la fonction
Code: Tout sélectionner
 function tep_get_all_get_params($exclude_array = '') {

à la place de
Code: Tout sélectionner
return str_replace('&', '&amp;', $get_url);

je met :
Code: Tout sélectionner
$temp = str_replace('&amp;', '!temp', $get_url);
$temp = str_replace('&', '!temp', $temp);
    return str_replace('!temp', '&amp;', $temp);

Explication

J'ai fait ceci car apparement il y'avait une répétition du str_replace (pas reussi à identifier ou), mais étant donné que dans le '&amp;' il y a un '&' et qu'il remplace les '&' par '&amp;' il y avait un conflit quelque part.

L'idée est donc de remplacer les '&' par quelque chose qui n'en contient pas (dans mon exemple !temp) et ensuite de remplacer les !temp par des &amp;.

Peut-etre que la solution n'est pas la bonne, en effet, cela ressemble plutot à une bidouille, mais ca a le mérite de marcher.

Si après discution et/ou amélioration il s'avère que j'ai trouvé un réel bug je posterai ce fix dans le WIKI.

Voila voila, sur ce bonne journée :D
Dernière édition par zmove le Jeu 07 Sep 2006, 12:36, édité 1 fois.
OsCSS 1.1-RC1 + Mise à jour bug fix + mise à jour MC2 2.2 du 11/05/05
zmove
Membre actif
 
Messages: 30
Inscription: Ven 21 Juil 2006, 11:20

Messagepar sidarus » Lun 11 Sep 2006, 15:04

zmove a écrit:Si après discution et/ou amélioration il s'avère que j'ai trouvé un réel bug je posterai ce fix dans le WIKI.

Non... de préférence dans le bug & fix summary. En attendant de trouver mieux :P
sidarus
Membre très actif
 
Messages: 396
Inscription: Mar 03 Mai 2005, 23:34
Localisation: Geneva (CH)


Retourner vers osCSS 1.1

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

cron