Supprimer les anti slashes avant la majuscule


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Supprimer les anti slashes avant la majuscule

Message le Lun Fév 21, 2011 17:44

Bonjour,

J'ai un problème bizarre depuis un sauvegarde de la db en latin plutôt qu'en UTF-8. Quand je m'en suis aperçu, immédiatement en fait, j'ai réinjecté une sauvegarde en utf-8. Le forum s'en est bien sorti les caractères sont redevenus OK mais sur l'annuaire ça ne va pas.
Par exemple ce site :
-http://www.micro-astuce.com/annuaire/site-2524.html
n\'hésitez pas à vous inscrire


Si je corrige la faute via le panneau d'admin de catégorizator elle disparait. C'est pourtant la même table de db qui gère les caractères de l'admin et ceux des personnes qui s'inscrivent sur l'annuaire.

1) Comment réparer bien sûr ?
2) Comment récupérer le coup pour tous les sites déjà inscris ?

Merci de votre lecture.


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Supprimer les anti slashes avant la majuscule

Message le Mar Fév 22, 2011 17:52

Pour m'aider dans mes recherches pensez-vous que je doive essayer de trouver ce dysfonctionnement du côté de la DB ou du côté du script php.
Ce qui est déroutant c'est que quand un site s'inscrit s'il y a une apostrophe dans sa description elle sera convertie en l\'apostrophe dans la base de donnée, mais, en revanche, si depuis l'admin du site je modifie ce caractère via la page modify_site.php le caractère génant disparait, comme je l'explique au dessus.
Peux-t'on en déduire à 100% que c'est le script d'inscription qui bug ?
On pourrait penser que modify_site.php fonctionne alors que submit_site.php débloque quelque part.

NB : Pour ce qui est des anti-slaches déjà présent dans la db, j'ai essayé ce que l'on peut lire ici http://www.asp-php.net/tutorial/asp-php/glossaire.php?glossid=57 , et bien d'autres script js ou php mais rien n'y fait. Les anti-slashe présent s'accrochent à leur apostrophe comme la misère sur le pauvre monde.
Existe t-il une requête sql pour les virer dirctement depuis la base de donnée ?


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Supprimer les anti slashes avant la majuscule

Message le Mar Fév 22, 2011 20:19

Je suis désolé de me répondre à moi même mais la fonction "Editer" n'existe pas sur ce site.
En fait c'est bon, j'ai désactivé magic_quote via le htaccess pour le répertoire concerné, je pensais pourtant que le problème venait de la db.
Donc de ce côté là c'est réglé.
Entre paranthése il est sympa ce script pour savoir si magic_quote est activé ou pas :
Code: Tout sélectionner
<?php
if(get_magic_quotes_gpc())
  echo "Magic quotes est activé";
else
  echo "Magic quotes est désactivé";
?>

Source : http://www.phpsources.org/tutoriel-magicquotes.htm

Il ne me reste plus qu'à réparer la base de donnée afin d'enlever les \ devant les '.
Et là je n'utiliserai pas de requête "delete" sans l'avis de quelqu'un de bon conseil.
Merci


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Supprimer les anti slashes avant la majuscule

Message le Mar Fév 22, 2011 21:00

Tu as désactivé les magic quotes => c'est bien (magic quotes are evil).

Dans ta base de donnée, les \ devant les ', c'est normal il en faut au moins un.
Le problème c'est si tu en as plus: \\'

n\'hésitez pas à vous inscrire

C'est surement un double antislash.
Si tu veux faire une requête SQL pr corriger tout ça, tu n'a pas de delete à faire, juste un update.


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Supprimer les anti slashes avant la majuscule

Message le Mar Fév 22, 2011 21:19

Bonsoir Spout,
tu n'a pas de delete à faire, juste un update

Je fais comment ?


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Supprimer les anti slashes avant la majuscule

Message le Mar Fév 22, 2011 21:25

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
Si t'es pas sûr, tu créés un autre champ temporaire pour faire le test.


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Supprimer les anti slashes avant la majuscule

Message le Mar Fév 22, 2011 21:43

Ah ben là je suis pas sûr du tout. :lol:
T'as pas plus simple, ou juste un exemple de requête pour mon cas de moi. :wink:


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Supprimer les anti slashes avant la majuscule

Message le Mar Fév 22, 2011 21:50

Non je n'ai pas ça sous la main, et pas envie de te donner du code à l'aveuglette / pas testé :mrgreen:


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Supprimer les anti slashes avant la majuscule

Message le Mar Fév 22, 2011 22:22

Non, mais je me suis mal exprimé, je veux dire une requête qui s'adresse seulment et uniquement aux anti slaches en règle générale, après j'adapterai.
Parce que y'a de tout là dedans : http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace


HawkEye
WRInaute accro
WRInaute accro
 
Messages: 17013
Inscription: 23 Fév 2004

Re: Supprimer les anti slashes avant la majuscule

Message le Mer Fév 23, 2011 1:51

Combien d'enregistrements seraient concernés par ce double-antislash ?
Une petite boucle php pourrait te régler ça en quelques minutes à peine...


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12003
Inscription: 1 Mar 2005

Re: Supprimer les anti slashes avant la majuscule

Message le Mer Fév 23, 2011 2:18

Comme tu sais pas combien ont merdouillé et avec quelle ampleur (des triple slashe ...), moi je la jouerai 'bucheron' :

tu boucles sur toute la table concerné et pour les champs concernés sans pitié :

1 - un stripslashes
2 - suivi d'un addslashes

Comme ca t'es sur que le ménage est bien fait et que les caractères qui doivent avoir un \ l'ont bien. :wink: (zecat alias zebourrin) :mrgreen:

PS : Vi vi Denis, je me suis mis a Mysql :roll: depuis 1 mois ... Tout arrive, il va même peut être neiger à Marrakech :mrgreen:


HawkEye
WRInaute accro
WRInaute accro
 
Messages: 17013
Inscription: 23 Fév 2004

Re: Supprimer les anti slashes avant la majuscule

Message le Mer Fév 23, 2011 2:48

S'il neige à Marrakech, je m'invite chez toi.

Pour continuer sur la lancée, une petite boucle qui va chercher les entrées contenant "//" (donc les doubles, triples, et autres uples slashes), un petit while(eregi("[/]{2,}", $string))*, un petit replace(), et un petit UPDATE... et le tour est joué ;)



* syntaxe à vérifier


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12003
Inscription: 1 Mar 2005

Re: Supprimer les anti slashes avant la majuscule

Message le Mer Fév 23, 2011 2:56

HawkEye a écrit:S'il neige à Marrakech, je m'invite chez toi.

Bon la on a encore un peu de marge (on doit etre a 26/27 à l'ombre l apres midi) :roll:

Question de PHPrank1 : pourquoi tu t'embarrase d'un while alors que le strip le fait d'un seul coup (je sais, j'ai testé par force vu le boxon que j'avais semé dans mes champs :mrgreen: :mrgreen: ) ? je pige pas ?


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Re: Supprimer les anti slashes avant la majuscule

Message le Mer Fév 23, 2011 7:57

un while parcequ'il y a plusieurs enregistrements :)


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Supprimer les anti slashes avant la majuscule

Message le Mer Fév 23, 2011 8:24

Bonjour,

Il ya 2505 enregistrements, ils ne sont pas tous concernés car les premiers s'enregistraient normalement. Mais il y a 2505 enregistrement en tout.

Supprimer les anti slashes avant la majuscule

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

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