Panne sur la fonction str_replace, fonction php en panne |
Bienvenue invité ( Connexion | Inscription )
Panne sur la fonction str_replace, fonction php en panne |
3 Feb 2017, 15:10
Message
#1
|
|
Ceinture blanche+ OSC 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é.
|
|
3 Feb 2017, 23:54
Message
#2
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 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 Phoenix |
|
4 Feb 2017, 08:42
Message
#3
|
|
Ceinture blanche+ OSC 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('&', '&', $link); url par : $link = str_replace('a', 'xx', $link); 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é.
|
|
6 Feb 2017, 18:28
Message
#4
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 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 Phoenix |
|
7 Feb 2017, 18:27
Message
#5
|
|
Ceinture blanche+ OSC 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('&', '&', $parameters); Ligne 2173 $url = str_replace('&', '&', $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é.
|
|
Version bas débit | Nous sommes le : 29th March 2024 - 13:01 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |