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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Panne sur la fonction str_replace, fonction php en panne
bertrand144
posté 3 Feb 2017, 15:10
Message #1


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 35
Inscrit : 19-November 06
Lieu : ile de france
Membre no 13349



Bonjour,

J'ai un petit problème de fonctionnement de la reécriture des URL avec La fonction str_replace.

Cette fonction est présente dans 3 fichiers :

/fonction/general.php
/fonction/html_outpout.php
/classes/seo_class.php avec quelques variante.


Malgret ça l'url à toujours avec le bug : &

URL: www.xxxxxxx...-c-21_144.html?filter_id=115&sort=2a

Bout de code php dans :
general.php :

Code
if  ( strpos($url, '&') !== false ) {
$url = str_replace('&', '&', $url);
}  
header('Location: ' . $url);



seo_class.php :
Code
$url = str_replace('&','&',$url);


Impossible de remplacer '&' par '&' ....

Quelqu'un a t'il déjà eu ce problème ?

Merci encore une fois pour votre aide.


OSCOMMERCE Vers Oscommerce 2.3 + rewriting url
hebergement ovh PHP versIon 5.5


--------------------
Bertrand oscommerce 2.2-MS2 php5.3 migrat php 5.5 ovh mutua. sql privé.
Go to the top of the page
 
Bonbec
posté 3 Feb 2017, 23:54
Message #2


Ceinture bleue OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1280
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonsoir,

Logiquement str_replace fonctionne parfaitement avec PHP 4, PHP 5 et PHP 7, donc je ne pense pas que ce soit cela qui cloche.

Lors de l'installation du seo, la fonction tep_href_link dans catalog/includes/functions/html_output.php a-t-elle été modifiée ?
Car on trouve dans la fonction d'origine ceci :
Code
    if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
      $link = str_replace('?', '/', $link);
      $link = str_replace('&', '/', $link);
      $link = str_replace('=', '/', $link);
    } else {
      $link = str_replace('&', '&', $link);
    }

Sinon, il y a peut-être une ligne dans le htaccess qui joue dans le mauvais sens ?


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
bertrand144
posté 4 Feb 2017, 08:42
Message #3


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 35
Inscrit : 19-November 06
Lieu : ile de france
Membre no 13349



Merci pour cette réponse,

Dans ma version de site dans mon catalog/includes/functions/html_output.php je n'ai pas ce bout de code,

je l'ai rajouté avec la petite modification sur l'erreur du code d'origine
inversion "ici piège" entre : str_replace('&', '&', $link);


ma version dans catalog/includes/functions/html_output.php

Code
if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {

       $link = str_replace('?', '/', $link);
      $link = str_replace('=', '/', $link);
     $link = str_replace('&', '/', $link);    
     $link = str_replace('&', '&', $link);
    } else {
      $link = str_replace('&', '&', $link);
    }


Mon htaccess :

Code
Options +FollowSymLinks
RewriteEngine On
RewriteBase /nom du sous repertoire du domaine/
RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html$ default.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-(.*).html$ default.php?manufacturers_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-go-(.*).html$ go.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pi-(.*).html$ popup_image.php?pID=$2&%{QUERY_STRING}
RewriteRule ^(.*)-by-(.*).html$ all-products.php?fl=$2&%{QUERY_STRING}
RewriteRule ^(.*)-t-(.*).html$ articles.php?tPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-a-(.*).html$ article_info.php?articles_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-au-(.*).html$ articles.php?authors_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pr-(.*).html$ product_reviews.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pi-([0-9]+).html$ popup_image.php?pID=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pri-(.*).html$ product_reviews_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-f-(.*).html$ faqdesk_info.php?faqdesk_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-fc-(.*).html$ faqdesk_index.php?faqPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-fri-(.*).html$ faqdesk_reviews_info.php?faqdesk_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-fra-(.*).html$ faqdesk_reviews_article.php?faqdesk_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-i-(.*).html$ information.php?info_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-links-(.*).html$ links.php?lPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pm-([0-9]+).html$ info_pages.php?pages_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-n-(.*).html$ newsdesk_info.php?newsdesk_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-nc-(.*).html$ newsdesk_index.php?newsPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-nri-(.*).html$ newsdesk_reviews_info.php?newsdesk_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-nra-(.*).html$ newsdesk_reviews_article.php?newsdesk_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-po-([0-9]+).html$ pollbooth.php?pollid=$2&%{QUERY_STRING}


<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary Accept-Encoding
  </FilesMatch>
</IfModule>

<FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css|swf)$">
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 30 days"
</IfModule>
Header unset ETag
FileETag None
</FilesMatch>

# compression textes, html, javascript, css, xml - LL - 30 Juillet 2014 :
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Compression par extension - LL - 30 Juillet 2014:
<files *.html>
SetOutputFilter DEFLATE
</files>

Dans le catalog/includes/functions/html_output.php
je remplace cette ligne

Code
// $link = str_replace('&amp;', '&', $link);
par :      $link = str_replace('a', 'xx', $link);
url

avant et après identique, les a ne sont pas devenu des xx.

2em test avec pour le test j'ai forcé $search_engine_safe = true ;
et dans la base SEARCH_ENGINE_FRIENDLY_URLS est sur true.

(SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
toujours aucun changement ....


Une idée sur ce problème.

Ce message a été modifié par bertrand144 - 4 Feb 2017, 11:29.


--------------------
Bertrand oscommerce 2.2-MS2 php5.3 migrat php 5.5 ovh mutua. sql privé.
Go to the top of the page
 
Bonbec
posté 6 Feb 2017, 18:28
Message #4


Ceinture bleue OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1280
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Pour voir si c'est vraiment str_replace qui ne fonctionne pas, essaye de créer ce fichier et lance le :
Code
<?php
$url = 'c-21_144.html?filter_id=115xxxsort=2a';
echo 'url origine: '.$url;
if  ( strpos($url, 'xxx') !== false ) {
$url2 = str_replace('xxx', 'aaa', $url);
echo '<br>url transformée:'.$url2;
} else {
$url3 = $url;
echo '<br>url non transformée:'.$url3;
}
?>

Si cela change les xxx en aaa, alors çà fonctionne.

Si cela fonctionne, et cela vaut mieux, car une bonne quarantaine de fichiers d'OsCommerce utilisent str_replace.

Je n'ai rien vu d'anormal dans le htaccess.

Les caches (site et navigateur) sont bien vidés avant chaque essai ?
Il n'y a pas de conflit d'encodage des fichiers, style utf_8 sans BOM et ansi ?

PS : C'est quelle addon qui a le fichier seo.php ?


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
bertrand144
posté 7 Feb 2017, 18:27
Message #5


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 35
Inscrit : 19-November 06
Lieu : ile de france
Membre no 13349



Votre petit bout de code fonctionne normalement donc
après quelques recherche sur le fichier includes/classes/seo.class.php
il me manque justement dans mon fichier seo.class.php aux lignes :

Ligne 651 $parameters = str_replace('&amp;', '&', $parameters);

Ligne 2173 $url = str_replace('&amp;', '&', $url);

je les est rajoutées et la ça marche normalement merci pour ce coup de main ....



--------------------
Bertrand oscommerce 2.2-MS2 php5.3 migrat php 5.5 ovh mutua. sql privé.
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 : 18th August 2017 - 09:53
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)