[spip-dev] [spip-commit] r10344 - spip/ecrire/maj

Cedric a écrit :

New Revision: 10344

Log:
protection des noms des tables et champs
coquille dans maj_v019_52
un autre essai de correction de upgrade_vers 1.938

ah non ca ca marche pas car les `empechent le remplacement de spip_ par le vrai prefix.
Il ne faut donc pas proteger les nom des tables.
Cedric

heu, tu es sur de ca ?
je ne vois pas ca dans le code (traite_query ?).

Stephane a écrit :

Cedric a écrit :
  

New Revision: 10344

Log:
protection des noms des tables et champs
coquille dans maj_v019_52
un autre essai de correction de upgrade_vers 1.938

ah non ca ca marche pas car les `empechent le remplacement de spip_ par le vrai prefix.
Il ne faut donc pas proteger les nom des tables.
Cedric

heu, tu es sur de ca ?
je ne vois pas ca dans le code (traite_query ?).
  

ligne 204
    $r = preg_replace('/([,\s])spip_/', '\1'.$pref, $query) . $suite;
il faut un \s ou une , devant le prefixe.
et je crois me souvenir que il ne faut pas accepter les ` car traite_query ajoute devant le nom de la base et il me semble que la syntaxe coince
c'est par ailleurs un moyen de proteger un nom de champ ambigu qui commencerait malencontreusement par spip_ (comme c'est le cas dans spip_listes justement ...)

Cedric

Cedric a écrit :

Stephane a écrit :

Cedric a écrit :

New Revision: 10344

Log:
protection des noms des tables et champs
coquille dans maj_v019_52
un autre essai de correction de upgrade_vers 1.938

ah non ca ca marche pas car les `empechent le remplacement de spip_ par le vrai prefix.
Il ne faut donc pas proteger les nom des tables.
Cedric

heu, tu es sur de ca ?
je ne vois pas ca dans le code (traite_query ?).
  

ligne 204
   $r = preg_replace('/([,\s])spip_/', '\1'.$pref, $query) . $suite;
il faut un \s ou une , devant le prefixe.
et je crois me souvenir que il ne faut pas accepter les ` car traite_query ajoute devant le nom de la base et il me semble que la syntaxe coince
c'est par ailleurs un moyen de proteger un nom de champ ambigu qui commencerait malencontreusement par spip_ (comme c'est le cas dans spip_listes justement ...)

ben c'est fait expres que ca commence par spip_, comme pour spipcarto, sinon comment tu ferais pour mettre 2 spips avec plugin sur la meme base avec des prefixes differents ?

c'est pas bon du tout si spip_query(select * from `spip_toto`) ne gere pas le prefixe !
je commence à comprendre pourquoi on se traine encore table_prefixe dans mots_partout moi...

Stephane a écrit :

Cedric a écrit :
  

Stephane a écrit :
    

Cedric a écrit :

New Revision: 10344

Log:
protection des noms des tables et champs
coquille dans maj_v019_52
un autre essai de correction de upgrade_vers 1.938

ah non ca ca marche pas car les `empechent le remplacement de spip_ par le vrai prefix.
Il ne faut donc pas proteger les nom des tables.
Cedric

heu, tu es sur de ca ?
je ne vois pas ca dans le code (traite_query ?).
  

ligne 204
   $r = preg_replace('/([,\s])spip_/', '\1'.$pref, $query) . $suite;
il faut un \s ou une , devant le prefixe.
et je crois me souvenir que il ne faut pas accepter les ` car traite_query ajoute devant le nom de la base et il me semble que la syntaxe coince
c'est par ailleurs un moyen de proteger un nom de champ ambigu qui commencerait malencontreusement par spip_ (comme c'est le cas dans spip_listes justement ...)
    

ben c'est fait expres que ca commence par spip_,

non non, dans spip_listes, il y a un champ spip_truc, donc
SELECT spip_truc FROM spip_auteurs_elargis
se transforme (si table_prefixe est 'toto')
SELECT `base`.toto_truc FROM `base`.toto_auteurs_elargis
Le second remplacement est legitime, pas le premier
faut dire que le nom du champ est pas bien choisi, c'est vrai.

comme pour spipcarto, sinon comment tu ferais pour mettre 2 spips avec plugin sur la meme base avec des prefixes differents ?

c'est pas bon du tout si spip_query(select * from `spip_toto`) ne gere pas le prefixe !
  

oui des que tu protege le nom c'est fichu

je commence à comprendre pourquoi on se traine encore table_prefixe dans mots_partout moi...
  

moui enfin si tu ne protege pas les champs, il n'y a jamais de probleme dans la pratique.
mais c'est vrai que je me suis fait avoir qq fois au début, en voulant bien faire ...
Cedric

Cedric a écrit :

moui enfin si tu ne protege pas les champs, il n'y a jamais de probleme dans la pratique.

Donc ca pause un probleme sur le nom des tables uniquement, c'est ca ?
pas sur les champs (puisqu'au contraire, il faut les proteger si ils commencent par spip_)

mais c'est vrai que je me suis fait avoir qq fois au début, en voulant bien faire ...

ce truc n'est signalé nul part !
bouuuuuh !