THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

J'ai abordé ce problème dans ce sujet : http://forum.thelia.net/viewtopic.php?id=6843
Il s'agit d'un problème sérieux, mais je me permets de vous le présenter à nouveau, d'une manière plus ludique.

Aidez-moi à résoudre ce mystère, et il y aura un bon de réduction de 10% à gagner.


Les faits :

Dans le BO :

1. Ce lundi matin, j'ai découvert via le BO une commande qui ne comportait ni nom, ni prénom.
2. Cette commande avait cependant été payée par Carte Bancaire.
3. Les adresses de livraison et de facturation étaient vides.
4. Nous n'avons donc aucune donnée pour identifier le client !

Enquête dans la BDD :

5. Dans la base de données, la ligne commande indique un ID client.
6. Mais aucune ligne client ne correspond à cet ID.
7. L'ID du client suivant est bien incrémenté, ce qui prouve que l'ID du client fantôme a bien été utilisé.
8. Les lignes des adresses de facturation et de livraison existent bien, mais elle sont entièrement vides !
9. Le numéro/code de commande comporte bien les 3 premières lettres du prénom du client fantôme (à savoir REN).

Déductions :

On a donc la certitude que le compte du client avait bien existé, car :
- l'ID client a été incrémenté
- le numéro de commande comporte les 3 premières lettres du prénom du client

Il ne peut pas s'agir d'une suppression du compte client via le BO, car les adresses de livraison et de facturation seraient toujours indiquées dans la commande (j'ai fait le test), ors, ces deux adresses sont totalement vides.


Contexte technique :

Il s'agit de Thelia 1.4.2.1 qui tourne sur un serveur mutualisé de nFrance.
Ce serveur est parfois lent. C'était le cas ce lundi matin vers 10H, heure vers laquelle le client avait passé sa commande.
De plus, la non optimisation de thelia rend le chargement de certaines pages extrêmement long (parfois plus de 15 secondes).
Le client peut tout à fait s'être impatienté et avoir cliqué sur "rafraichir" ou "page précédente", une ou plusieurs fois, et à n'importe quel moment.
Le timeout php est fixé à 30 secondes.


Si vous avez une idée ou des info pouvant aider à faire avancer l'enquête, n'hésitez surtout pas à contribuer !
Il y a au moins un bon de réduction (je confirmerais le nombre max dès que possible) à gagner.

A bientot !

Last edited by VLT (10-05-2011 11:58:05)

Offline

Offline


roadster31 wrote:

Un bon de réduction sur quoi ?

Disons que c'est un BDR surprise (pour le moment) :-)

Mais même si vous n'étiez pas intéressé, ce BDR pourrait toujours devenir un cadeau pour qqun d'autre ...


Disons surtout que pour le moment, je ne voudrais pas prendre le risque d'exposer la boutique sans avoir préalablement comblé les éventuelles failles de sécurité entourant ce "dysfonctionnement" ...

... et s'il s'agit bien d'une faille de sécurité, ce pourrait être toute la communauté thélia qui pourrait bénéficier de sa correction.



PS : il s'agit bien d'un BDR sur notre boutique en ligne, et pas d'un BDR auchan ou lidl ....

Last edited by VLT (10-05-2011 14:48:51)

Offline


De plus, la non optimisation de thelia rend le chargement de certaines pages extrêmement long (parfois plus de 15 secondes).

Attention a certains plugins qui plombent très sérieusement les perfs. Quand à optimiser une 1.4.2, tu trouvera tout le nécessaire sur le forum.

Cette commande avait cependant été payée par Carte Bancaire.

Tu va dans ton back office bancaire, et grâce au numéro de transaction, tu retrouves le client.

Last edited by roadster31 (10-05-2011 15:00:09)


OpenStudio Toulouse

Offline


roadster31 wrote:

Cette commande avait cependant été payée par Carte Bancaire.

Tu va dans ton back office bancaire, et grâce au numéro de transaction, tu retrouves le client.

Merci du conseil :-)
Je n'ai pas accès à cette partie là, mais je transmets tout de même ce conseil à mes supérieurs dans le cas où ils n'auraient pas déjà eu cette idée ... sait-on jamais.

Offline


roadster31 wrote:

De plus, la non optimisation de thelia rend le chargement de certaines pages extrêmement long (parfois plus de 15 secondes).

Attention a certains plugins qui plombent très sérieusement les perfs. Quand à optimiser une 1.4.2, tu trouvera tout le nécessaire sur le forum.

Oui, j'ai vu que tu avais posté des modifs pour ajouter un cache et optimiser un peu Thélia. C'est encore en cours d'étude.

Et pour les plugins, bien que seule une poignée soit activé, il va effectivement falloir que je fasse le tri ... car mon prédécesseur en avait installé une myriade.

Offline


Pour ton histoire de nom et prénom vides: ces infos proviennent de la table venteadr. L'ID de l'adresse de facturation dans ventadr est à la colonne 'adrfact' de la table commande.

L'ID client se trouve dans la colonne 'client' de la table commande (surprise !)

Pour la commande concernée, tu ne retrouves aucune ligne dans les tables client et venteadr qui correspondent aux ID de la ligne commande, c'est bien ça ?

Last edited by roadster31 (10-05-2011 15:07:17)


OpenStudio Toulouse

Offline


roadster31 wrote:

Pour ton histoire de nom et prénom vides: ces infos proviennent de la table venteadr. L'ID de l'adresse de facturation dans ventadr est à la colonne 'adrfact' de la table commande.
L'ID client se trouve dans la colonne 'client' de la table commande (surprise !)

oui, c'est bien ça.

je suis parti de la ligne de la cmd dans la table commande.
commande(client) me donne l'id du client (client = 2198).

il n'y a pas de ligne client(id=2198)

commande(adrfact) = 5927
commande(adrlivr) = 5928

la ligne venteadre(id=5927) me donne toutes les autre colonnes vides, avec raison=0 et pays=0.

idem pour la ligne venteadr dont l'id=5928

Pour la commande concernée, tu ne retrouves aucune ligne dans les tables client et venteadr qui correspondent aux ID de la ligne commande, c'est bien ça ?

ligne commande complète.
lignes venteadre présentes, mais vides.
ligne client absente.

Offline


Poursuite de l'enquête ...


Autre hypothèse :

L'absence de la ligne client malgré l'incrémentation de la clef primaire ID pourrait être expliquée ainsi :
- il pourrait y avoir eu une erreur d'INSERT dans la table client.

Tous les SGBD que j'ai eu l'occasion d'utiliser, incrémentent les clefs primaire avant de procéder à l'insertion des données.

En cas d'erreur dans la requête d'insertion, l'ID est déjà incrémenté, mais l'insertion des données n'a pas lieu ...

L'ID est donc "perdu".

Maintenant, la question est de savoir si Thelia gère les erreurs MySQL ?
Si oui, il les gère mal.
Si non, c'est une grave lacune.

L'autre question est : mais qu'à donc pu causer l'erreur d'insertion ?
- qu'à bien pu entrer le client dans le formulaire qui ait pu corrompre la requête ??
- Thelia est-il vulnérable aux injections SQL ??
- est-ce qu'un timeout php pourrait avoir causé ça ???

Offline


c'est vrai qu'il aurait été intéressant d'utiliser les transaction pour les insertions SQL
n'as-tu pas accès au log php ?

Offline


asturyan wrote:

c'est vrai qu'il aurait été intéressant d'utiliser les transaction pour les insertions SQL
n'as-tu pas accès au log php ?

Hélas non, ni au log PHP ni au log SQL :-/