osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> CCGV + SEO URL = Bug, Les messages d'erreur ne s'affichent plus
polo
posté 14 Mar 2007, 14:26
Message #1


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1423
Inscrit : 24-April 03
Membre no 1102



Bonjour,


J'ai installé récemment SEO URL 1.2b(Celui ci) et j'ai un soucis de cohabitation avec CCGV, quand je désire valider un coupon de rédution, les message d'erreur de type (votre coupon est expirée, votre coupon est valide etc..) ne s'affichent plus.

Y'a t'il une version de CCGV modifié pour SEO URL ? quelqu'un à t'il le même soucis ? confused.gif

Merci d'avance pour votre aide

Ce message a été modifié par polo - 20 Mar 2007, 21:37.


--------------------
OSC 2.1.3 et MS2 (PHP Version 5.2.17)
Go to the top of the page
 
nimp0001
posté 22 Mar 2007, 09:35
Message #2


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 13-October 06
Membre no 12633



Bonjour,

J'ai le même problème.
Je ne l'ai pas encore résolu mais en fait, le problème vient d'un urlencode en trop qui est fait quelque par.
Déjà à la base, CCGV se sert d'une fonction de message d'erreur pour renvoyer les informations aux utilisateurs. Moi, dès le départ, je ne trouve pas ça très clean car même les messages "succès" (genre "votre coupon est valide") utilisent la fonction de remontée d'erreur. Donc de base, c'est le bordel, avant de comprendre que c'est la gestion d'erreur OS Comerce qui foire, il faut se dire qu'on déclenche une erreur (ce qui n'était pas mon cas car mes coupons sont valides).
Donc, quand on se penche sur la gestion d'erreur, on s'apperçoit que le serveur renvoi ses codes erreur sur HTTP via GET. Donc tout est dans l'URL.
En php, pour lire sur GET, on cherche les variables $HTTP_GET_VARS['mavariable], soit dans l'url page.php?mavariable=salut+le+monde (je fais court). Si on a 2 variables, on aura une URL genre page.php?var1=toto+toto&var2=tata+tata.

Si on regarde ce que la page checkout_payment.php essaie de lire en retour de validation de coupon, on lit un truc du genre checkout_payment.php?payment_error=ot_coupon&error=Ce+bon+de+r%E9duction+est+valide.10.00%80+on+orders+greater+than+20.00%80.

Oh, mais qu'est-ce que c'est que ce & qui correspond au caractère & codé en HTML ?

D'où vient-il, que fait-il, comment le supprimer ? Je suis dessus pour l'instant.

A bientôt,
Go to the top of the page
 
nimp0001
posté 22 Mar 2007, 09:42
Message #3


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 13-October 06
Membre no 12633



Ceci dit, en désactivant SEO url, je ne retrouve pas de comportement normal.
Go to the top of the page
 
nimp0001
posté 22 Mar 2007, 10:08
Message #4


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 13-October 06
Membre no 12633



Bonjour,

J'ai finallement trouvé la solution. D'une part, un mini fix trouvé sur le site OS Commerce pour SEO URL. Et la modification de 2 fonctions :

Dans includes/classes/seo.class.php :
Fonctions prises dans la modif de Tony Tromp, le 9 mai 2006 :

[codebox]/**
* Function to return SEO URL link SEO'd with stock generattion for error fallback
* @author Bobby Easland
* @version 1.0
* @param string $page Base script for URL
* @param string $parameters URL parameters
* @param string $connection NONSSL/SSL
* @param boolean $add_session_id Switch to add osCsid
* @return string Formed href link
*/
function href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true){
$this->start($this->timestamp);
$this->performance['NUMBER_URLS_GENERATED']++;
if ( !in_array($page, $this->attributes['SEO_PAGES']) || $this->attributes['SEO_ENABLED'] == 'false' ) {
return $this->stock_href_link($page, $parameters, $connection, $add_session_id);
}
$link = $connection == 'NONSSL' ? $this->base_url : $this->base_url_ssl;
$separator = '?';
if ($this->not_null($parameters)) {
$link .= $this->parse_parameters($page, $parameters, $separator);
} else {
$link .= $page;
}
$link = $this->add_sid($link, $add_session_id, $connection, $separator);
$this->stop($this->timestamp, $time);
$this->performance['TOTAL_TIME'] += $time;
//return htmlspecialchars(utf8_encode($link));
return utf8_encode($link);
} # end function

/**
* Stock function, fallback use
*/
function stock_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {
global $request_type, $session_started, $SID;
if (!$this->not_null($page)) {
die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>');
}

//ojp ALT definition
if ($page == '/') $page = '';
if ($connection == 'ALT') {
$link = HTTP_ALT_SERVER . DIR_WS_HTTP_CATALOG;
} elseif ($connection == 'NONSSL') {
$link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
} elseif ($connection == 'SSL') {
if (ENABLE_SSL == true) {
$link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG;
} else {
$link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
}
} else {
die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL, SSL, ALT</b><br><br>');
}
if ($this->not_null($parameters)) {
$link .= $page . '?' . $this->output_string($parameters);
$separator = '&';
} else {
$link .= $page;
$separator = '?';
}
while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1);
if ( ($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False') ) {
if ($this->not_null($SID)) {
$_sid = $SID;
} elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == true) ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) {
if (HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) {
$_sid = $this->SessionName() . '=' . $this->SessionID();
}
}
}
if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
while (strstr($link, '&&')) $link = str_replace('&&', '&', $link);
$link = str_replace('?', '/', $link);
$link = str_replace('&', '/', $link);
$link = str_replace('=', '/', $link);
$separator = '?';
}
if (isset($_sid)) {
$link .= $separator . $_sid;
}
$this->performance['NUMBER_STANDARD_URLS_GENERATED']++;
$this->cache['STANDARD_URLS'][] = $link;
$time = 0;
$this->stop($this->timestamp, $time);
$this->performance['TOTAL_TIME'] += $time;
// return htmlspecialchars(utf8_encode($link));
return utf8_encode($link);
} # end default tep_href function[/codebox]


Et le mini fix de bchecketts du 1° janvier 2006 dans la fonction do_redirect() du même fichier, chercher la ligne :

[codebox]$url = $this->href_link($this->uri_parsed['path'], $params, 'NONSSL', false);[/codebox]

et ajouter dessous :

[codebox]# BC Redirects shouldn't have '&amp;'s in them
$url = preg_replace('/&amp;/','&',$url);[/codebox]

La seule modif mini fix de bchecketts n'a pas suffit dans mon cas. Peut être que seule la première partie est nécéssaire. Je n'en sais rien et je suis trop dégouté pour chercher plus loin et il me reste de toute façon des erreurs dans le système Voucher à régler.

Au suivant !
Go to the top of the page
 
polo
posté 22 Mar 2007, 10:24
Message #5


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1423
Inscrit : 24-April 03
Membre no 1102



CITATION(nimp0001 @ 22 Mar 2007, 09:42) [snapback]227119[/snapback]
Ceci dit, en désactivant SEO url, je ne retrouve pas de comportement normal.



Merci pour ton aide, car je me sent un peu seul nimp0001 sur ce coup la, je suis "heureux" de voir que je ne suis pas seul.

Je crois que tu as raison concernant les url, car c'est bien la que viens le soucis, actuellement j'essai de réinstaller CCGV + SEO à partir d'une ancienne sauvegarde de mon site pour installer le couple mais dans un ordre différent (car ont m'auraois dis que l'ordre est important) moi je n'y crois pas trop, car dès le début j'avais en effet remarqué que les messages d'error n'était pas en cohérance avec le fonctionnement globale de CCGV.

Et je confirme voici donc le résultat l'ors de la validation d'un coupon OK:

...checkout_payment.php?payment_error=ot_coupon&amp;error=Code+du+coupon+invalide

Et effectivement ce &amp; pourrait être la cause car il n'y est pas présent quand URL SEO est désactivé. Voici ce que cela donne quand je valide ce coupon sans SEO URL, le message lui s'affiche dans la page et aussi dans le lien shock.gif d'ailleur je ne sais pas si c'est normalem mais je suis obligé de valider 2 fois le coupon pour le valider (dans la boutique)... bref.

...checkout_payment.php?payment_error=ot_coupon&error=%2A%2A%2A+Afin+de+d%E9duire+votre+coupon+de+r%E9duction+du+montant+total+de+votre+commande%2C+merci+de+bien+vouloir+saisir+une+nouvelle+fois+votre+code%2C+ensuite%2C+cliquez+sur+le+bouton+%22valider+mon+coupon%22

Donc de mon coté aussi je fais des recherche, je vais faire d'autre teste est essayer de réinstaller SEO + CCGV sur une base de sauvegarde plus saine.

A plus et tien nous au courant rolleyes.gif


--------------------
OSC 2.1.3 et MS2 (PHP Version 5.2.17)
Go to the top of the page
 
polo
posté 22 Mar 2007, 10:45
Message #6


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1423
Inscrit : 24-April 03
Membre no 1102



J'ai effectué tes modifs sur la class seo, et çà marche !!! Merci nimp0001 !!

Par contre il est vrai que c'est usine à gaz, chez moi je suis obligé de valider 2 fois le coupon avant qu'il soit pris en compte blush.gif

Ce message a été modifié par polo - 22 Mar 2007, 11:07.


--------------------
OSC 2.1.3 et MS2 (PHP Version 5.2.17)
Go to the top of the page
 
virginie76
posté 28 Jan 2008, 01:19
Message #7


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 94
Inscrit : 17-May 07
Lieu : Normandie
Membre no 17253



Merci, merci, merci.
Moi aussi j'ai été sauvé.
J'ai effectué tes modifs sur la class seo, et ça marche, c'est super !!!


--------------------
Oscommerce juillet 2008 - cybermut - coupons de réduction -
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 19th May 2013 - 14:44
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)