OS COMMERCE osCommerce MS2 Mode d'emploi

Ajouter à Mes manuels
92 Des pages
OS COMMERCE osCommerce MS2 Mode d'emploi | Fixfr
OsCommerce
MS 2 ou Creload 6
Livre 1
(le 17 mai 2004)
Réalisé par GBY
Table des matières
1
DESCRIPTION............................................................................................................................................ 5
1.1
1.2
2
BOUTIQUE......................................................................................................................................... 5
ADMINISTRATION DE VOTRE BOUTIQUE................................................................................. 6
INSTALLATION.......................................................................................................................................... 7
2.1
COMMENT OUVRIR SA BOUTIQUE INSTALLEE EN LOCAL SUR LE RESEAU PUBLIC VIA UN NOM DE
DOMAINE DYNAMIQUE OU SON IP ?.................................................................................................................... 7
2.2
QUEL EST LE MOT DE PASSE ADMIN PAR DEFAUT POUR LA CRELOAD 6 FR ..................................... 8
2.3
PROBLEME D'AFFICHAGE APRES INSTALLATION DE LA MS2 ?............................................................ 8
2.4
COMMENT FINALISER L'INSTALLATION, REGLER LES CHMODS ET SECURISER OSCOMMERCE? ........ 8
2.5
COMMENT TRANSFERER MA BOUTIQUE QUI MARCHE BIEN EN LOCAL CHEZ MON HEBERGEUR SANS
PERDRE TOUTES LES INFORMATIONS DE LA BASE ? .......................................................................................... 9
2.6
COMMENT EXECUTER UN SCRIPT POUR CHANGER L'ATTRIBUT D'UN FICHIER ? ................................. 9
2.7
COMMENT INSTALLER MANUELLEMENT OSC ?................................................................................... 9
2.8
PROBLEMES DE TRANSFERT FTP ? .................................................................................................. 10
3
GENERAL ................................................................................................................................................. 10
3.1
COMMENT FAIRE POUR LANCER DIRECTEMENT LA BOUTIQUE DEPUIS L'ACCUEIL DU SITE ? ............ 10
3.2
JE NE TROUVE PAS DE PAGE INDEX.PHP DANS MON REPERTOIRE CATALOG/?................................. 11
3.3
STRUCTURE DU SITE, CONFIGURE.PHP - OU COMMENT REGLER MON CONFIGURE PHP ? OU
POURQUOI MES IMAGES NE S'AFFICHENT PAS?............................................................................................... 11
3.4
COMMENT FAIRE UNE SAUVEGARDE DE BASE DE DONNEES??......................................................... 14
3.5
COMMENT CONNAITRE/AFFICHER LE NOMBRE DE PERSONNES EN LIGNE SUR MA BOUTIQUE ?....... 14
3.6
COMMENT AJOUTE UN PREFIXE A TOUTES LES TABLES DE LA BASE DE DONNEES ? ........................ 14
3.7
A QUOI SERT LE CACHE? ................................................................................................................... 15
3.8
C'EST QUOI TOUS LES FICHIER CVS QUI SONT DANS LES REPERTOIRES ?...................................... 15
4
CATALOGUE............................................................................................................................................ 15
4.1
COMMENT NE SELECTIONNER QUE LES PRODUITS INSERES DANS LE CATALOGUE DANS LE MOIS
COURANT ?....................................................................................................................................................... 15
4.2
COMMENT AJOUTER DES NOTIFICATIONS PAR FABRIQUANT?........................................................... 16
4.3
COMMENT GERER LA DEVISE AUTOMATIQUEMENT AVEC LA LANGUE? ............................................. 17
4.4
J'AI ENTRE DES COMMENTAIRES/AVIS SUR DES ARTICLES MAIS LORSQUE JE DESIRE LES VISUALISER
COMME N'IMPORTE QUEL CLIENT ? .................................................................................................................. 17
4.5
COMMENT NE SELECTIONNER QUE LES PRODUITS INSERES DANS LE CATALOGUE DANS LES 30
DERNIERS JOURS ? .......................................................................................................................................... 17
4.6
COMMENT RECEVOIR UN MAIL D'AVERTISSEMENT QUAND LE STOCK DE PRODUIT ATTEINT LA VALEUR
DE NIVEAU D'ALERTE DEFINIE DANS L'ADMIN ? ................................................................................................ 18
4.7
COMMENT EMPECHER L'ACHAT D'UN NOMBRE D'ARTICLES PAS ENTIER?......................................... 18
4.8
COMMENT MODIFIER LES NUMEROS DE COMMANDE?....................................................................... 19
4.9
COMMENT OBLIGER LES CLIENTS A CONSULTER LES CONDITIONS GENERALES DE VENTE AVANT DE
PASSER A LA PHASE DE CONFIRMATION D'UNE COMMANDE ? ......................................................................... 19
4.10
COMMENT ETRE AVERTI PAR MAIL D'UNE NOUVELLE COMMANDE DANS LA BOUTIQUE ?.................. 20
4.11
COMMENT SUPPRIMER LE BOUTON AJOUTER ET LE PRIX SI CELUI-CI EST 0 ?.................................. 20
4.12
COMMENT INSERER UN SEPARATEUR ENTRE CERTAINS PRODUITS LORS D’AFFICHAGE DE LISTE DE
PRODUITS ? ...................................................................................................................................................... 24
4.13
COMMENT FAIRE APPARAITRE LE NOM DU PRODUIT ET LE MODELE DU PRODUIT (AU LIEU D’AVOIR
UNIQUEMENT LE MODELE DU PRODUIT) DANS LE PANIER ? ............................................................................. 24
4.14
COMMENT METTRE UN PRODUIT QUI N'A PAS D'IMAGE ET FAIRE APPARAITRE UNE IMAGE STIPULANT
QUE CE PRODUIT NE POSSEDE PAS D'IMAGE ? ................................................................................................ 25
4.15
JE SOUHAITE DANS LA DESCRIPTION DU PRODUIT RAJOUTER UN CHAMP PERMETTANT AU CLIENT DE
CHOISIR UNE CERTAINE QUANTITE ?................................................................................................................ 25
4.16
COMMENT AFFICHER LE NOM DU PRODUIT DANS LA BARRE DE NAVIGATION A LA PLACE DE LA
REFERENCE DU PRODUIT ? .............................................................................................................................. 26
4.17
LORSQUE L'ON SAISIE UN DESCRIPTIF AVEC PLUSIEURS PARAGRAPHES, COMMENT FORMATER LES
RETOUR A LA LIGNE A L'AFFICHAGE DE LA FICHE PRODUIT ?........................................................................... 27
4.18
COMMENT AVOIR UNE LISTE DES PRODUITS (CRELOAD5) ? ............................................................. 27
2
4.19
5
CONTRIBUTIONS.................................................................................................................................... 28
5.1
5.2
5.3
5.4
?
6
QUELLES SONT LES CONTRIBUTIONS LES PLUS UTILES? .................................................................. 28
COMMENT RENDRE MA CONTRIBUTION MULTILANGUAGE? ............................................................... 29
OU EST CE QUE JE PEUX TROUVER LA CONTRIBUTION XXX EN FRANÇAIS?...................................... 29
EXISTE-T-IL UNE CONTRIBUTION POUR METTRE DES PRODUITS "EN-AVANT" SUR LA PAGE D'ACCUEIL
30
DIVERS ...................................................................................................................................................... 30
6.1
6.2
7
COMMENT FAIRE POUR QUE LA TVA S'AFFICHE CORRECTEMENT?.................................................. 27
COMMENT ECRIRE LES CARACTERES SPECIAUX EN HTML ? ........................................................... 30
COMMENT REFERENCER MON SITE SUR LA TOILE ?.......................................................................... 30
ERREURS ................................................................................................................................................. 34
7.1
7.2
7.3
7.4
WARNING: UNABLE TO CONNECT TO DATABASE SERVER ? .............................................................. 34
PARSE ERROR: PARSE ERROR IN /XXX/LANGUAGES/FRENCH/XXX.PHP ON LINE 1 ........................... 34
FATAL ERROR: REGISTER_GLOBALS IS DISABLED IN PHP.INI, PLEASE ENABLE IT! ??.................. 34
1146 - TABLE 'XXXXXX' DOESN'T EXIST SELECT CONFIGURATION_KEY AS CFGKEY,
CONFIGURATION_VALUE AS CFGVALUE FROM CONFIGURATION POURQUOI CE MESSAGE D'ERREUR? ......... 35
7.5
QUELLES SONT LES ERREURS PHP COURANTES ? .......................................................................... 35
7.6
WARNING : ... HEADER ALREADY SENT ... ?...................................................................................... 36
7.7
COMMENT ENLEVER CE MESSAGE D'ERREUR A L'INSTALLATION DE MA BOUTIQUE "ATTENTION: IL
EST POSSIBLE D'ECRIRE SUR LE FICHIER DE CONFIGURATION" ?.................................................................... 37
7.8
PARSE ERROR: PARSE ERROR, UNEXPECTED $................................................................................ 37
7.9
WARNING: SETLOCALE() [FUNCTION.SETLOCALE]: PASSING LOCALE CATEGORY NAME AS STRING IS
DEPRECATED. USE THE LC_* -CONSTANTS INSTEAD. IN FRENCH.PHP ON LINE 17 ?..................................... 37
8
LANGUE .................................................................................................................................................... 38
8.1
J'AI TOUJOURS LE_TEXTE_MANQUANT QUI APPARAIT DANS MA LANGUE A LA PLACE DE "LA
JOLIE PHRASE" QUAND JE SELECTIONNE LA LANGUE "CHINOIS" ?................................................................... 38
8.2
COMMENT CHANGER UNE PHRASE/UN TEXTE?................................................................................. 38
8.3
COMMENT PEUT-ON CHANGER, MODIFIER, CORRIGER LE TEXTE D'ACCUEIL "BIENVENUE CHER
VISITEUR..." ?................................................................................................................................................... 39
8.4
J'AI TOUT BIEN CONFIGURE MA LANGUE PAR DEFAUT EN FRANÇAIS, MAIS MON NAVIGATEUR SE
CONNECTE TOUJOURS EN ANGLAIS ? .............................................................................................................. 39
8.5
J'AIMERAIS DESACTIVER CERTAINES LANGUES PAR DEFAUT ET N'EN UTILISER QUE 2 (FR/ANG). Y A
T-IL UN MOYEN DE DESACTIVER LES 2 AUTRES LANGUES ? OU FAUT-IL ABSOLUMENT LES SUPPRIMER? ..... 40
8.6
J'AI BIEN CONFIGURE LE FRANÇAIS PAR DEFAUT DANS L'ADMIN, MAIS C'EST L'ANGLAIS (OU
L'ESPAGNOL) QUI REVIENT TOUJOURS COMME LANGUE PAR DEFAUT QUAND ON CLIQUE SUR UN DES LIENS
DE LA PAGE ?.................................................................................................................................................... 40
8.7
L'AFFICHAGE DES DATES SE FAIT TOUJOURS EN ANGLAIS QUELLE QUE SOIT LA LANGE CHOISIE,
COMMENT FAIRE POUR QU'ELLE APPARAISSE DANS LA LANGUE DE L'INTERFACE ?........................................ 40
9
LOOK & FEEL .......................................................................................................................................... 41
9.1
9.2
9.3
9.4
COMMENT MODIFIER OU EFFACER LA LIGNE DU BAS : "COPYRIGHT © OSCOMMERCE" ? ................ 41
COMMENT MODIFIER OU EFFACER LA LIGNE DU BAS : "COPYRIGHT © OSCOMMERCE" ? ................ 41
COMMENT SUPPRIMER UNE PHRASE MAIS AUSSI LE TABLEAU OU ELLE APPARAIT ? ........................ 41
COMMENT FONCTIONNENT LES CSS ? POURQUOI LES NOMS DES PRODUITS NE CHANGENT DE
COULEUR QUE SI JE MODIFIE LES A:HOVER ET LE A: DE LA FEUILLE CSS?.................................................... 42
9.5
J'AIMERAI MODIFIER LES STYLES, COMMENT S'Y RETROUVER DANS TOUS CES STYLES DECLINES
DANS LE .CSS PAR RAPPORT AUX PAGES AFFICHEES ?................................................................................... 43
9.6
COMMENT FAIRE POUR MODIFIER DES CONTIBUTIONS QUI FONT APPEL AU CSS GERE LE THEMA DE
LA CRELOAD 5 ?............................................................................................................................................... 43
9.7
COMMENT METTRE UN BANIERE FLASH DANS MON EN-TETE ? ......................................................... 44
9.8
COMMENT CHANGER LES POLICES DE CARACTERE DU SITE ET LA PRESENTATION ?....................... 44
9.9
COMMENT CHANGER LE LOGO OSCOMMERCE EN HAUT A GAUCHE ? ET AUSSI LES IMAGES "MON
COMPTE, PANIER, COMMANDER" A DROITE AINSI QUE LES LIENS SUR LA DROITE : MON COMPTE | PANIER |
COMMANDER ?................................................................................................................................................. 45
9.10
COMMENT INSERER UN LOGO EN MACROMEDIA FLASH DANS MA PAGE PRINCIPALE ?.................... 45
9.11
COMMENT FAIRE POUR QUE LES IMAGES NE SOIENT PAS DEFORMEES A L'AFFICHAGE ? ................ 45
3
9.12
9.13
COMMENT PLACER LA BARRE DE RECHERCHE DANS LE BANDEAU SUPERIEUR SOUS LE LOGO ? .... 46
COMMENT CHANGER LES ELEMENTS GRAPHIQUES COMME LA FLECHE A DROITE DE LA TETIERE DE
CERTAINS BOXES COULEURS OU LES COINS DES BOXES ? ............................................................................. 48
9.14
COMMENT MODIFIER LE CONTENU DE LA BOITE "INFORMATIONS" ET LES TEXTES QUI SONT LIES
DANS CETTE BOITE ? ........................................................................................................................................ 48
9.15
COMMENT CHANGER LE HEADER DE MES BOXES ?........................................................................... 48
9.16
J'AIMERAIS CHANGER LA COULEUR BLEU QUI ENTOURE TOUT MES MODULES (BOXES), J'AI DEJA
ESSAYE DE LE CHERCHER DANS LE STYLECSS DU THEME ADEQUAT MAIS J'AI PAS TROUVE ? ....................... 49
9.17
COMMENT FAIRE POUR SUPPRIMER UN BLOC (OU BOXE) CONTENU DANS UNE DES COLONNES DE
DROITE OU DE GAUCHE OU POUR LE CHANGER DE COTE ? ............................................................................. 49
9.18
COMMENT FAIT ON POUR CHANGER LA LARGEUR DES BOX ? ........................................................... 49
9.19
POURQUOI MES MAILS APPARAISSENT SANS ACCENTS ET AVEC LA MISE EN FORME VOTRE
COMMANDE & AGRAVE; BIEN & EACUTE;T& EACUTE; ENREGISTR& EACUTE;E...??....................................... 49
9.20
OU PUIS-JE MODIFIER LE CONTENU DE MES MAILS???..................................................................... 50
9.21
JE SOUHAITERAI QUE LA BOITE PANIER N'APPARAISSE QUE LORSQUE LE PANIER CONTIENT AU
MOINS 1 ARTICLE?............................................................................................................................................ 50
9.22
COMMENT PUIS-JE AJOUTER UN BOUTON 'COMMANDER' DIRECTEMENT AU BAS DE LA BOITE
'PANIER'? .......................................................................................................................................................... 50
9.23
LORS DE L'AFFICHAGE DU PANIER EN PAGE CENTRALE, JE SOUHAITERAI AJOUTER UNE/DES
REMARQUES AU BAS DE CELUI-CI COMME PAR EX. DES INFOS SUR SON FONCTIONNEMENT ?....................... 51
10
MODULES ................................................................................................................................................. 52
10.1
10.2
POURQUOI LES MODIFICATIONS FAITES SUR MON MODULE NE SONT PAS PRISES EN COMPTE ?..... 52
COMMENT NE PAS AFFICHER LE MODULE "FRAIS AU TOTAL" (TABLE.PHP) SI LE MONTANT DE LA
METHODE DE LIVRAISON EST NUL? .................................................................................................................. 52
10.3
COMMENT CREER SON MODULE DE LIVRAISON??............................................................................. 52
10.4
LORS DE LA SIMULATION D'UNE COMMANDE J'AI CE MESSAGE AU NIVEAU DES MODES DE LIVRAISON
ALORS QU'AUCUN MODE DE LIVRAISON GRATUITE N'EST ACTIF COTE ADMIN: "LIVRAISON GRATUITE POUR LES
COMMANDES AU DESSUS DE XXEUR" ? ......................................................................................................... 54
10.5
COMMENT AJOUTER UN CONTRE-REMBOURSEMENT COMME MODE DE PAIEMENT ? ....................... 54
10.6
J'AI DES ERREURS AVEC L'INTEGRATION D'ATOS DANS OSC ? COMMENT PUIS-JE TROUVER MON
PROBLEME ET LE RESOUDRE ? ........................................................................................................................ 55
10.7
COMMENT AFFICHER LES INFORMATIONS DE PAIEMENT SPECIFIQUES A LA METHODE CHOISIE DANS
LA PAGE DE CONFIRMATION DE COMMANDE? .................................................................................................. 55
11
SESSIONS................................................................................................................................................. 55
11.1
POURQUOI LORSQUE QUE J'AJOUTE UN SECOND ARTICLE, LE PANIER SE VIDE COMPLETEMENT ? . 55
11.2
SI JE PASSE PLUSIEURS FOIS SUR LA PAGE OU JE CREE DES VARIABLES DE SESSION, ELLES
S'AJOUTENT OU SE REMPLACENT ?.................................................................................................................. 56
11.3
COMMENT FONCTIONNENT LES SESSIONS ? ..................................................................................... 56
11.4
COMMENT VERIFIER QUE LES SESSIONS FONCTIONNENT ?.............................................................. 56
11.5
OSC NE VEUT PAS FONCTIONNER CAR IL NE TROUVE PAS DE DOSSIER /TMP POUR LES SESSIONS ?
57
12
INFORMATIONS GENERALES, DOSSIERS, LICENCES, … ......................................................... 58
12.1
TRANSFERT DU LOCAL VERS VOTRE HEBERGEUR ............................................................................. 58
12.2
SECURISATION ................................................................................................................................... 59
12.3
LE SSL............................................................................................................................................... 59
12.4
INSTALLATION D'UN MODULE BANCAIRE ............................................................................................ 60
12.5
L'ART ET LA MANIERE DE CREER UNE CONTRIBUTION POUR LA CRELOAD 6 FR.............................. 62
12.6
COMMERÇANTS.................................................................................................................................. 65
12.7
INDICATIONS ET CONSEILS CONTRE LA REPUDIATION DE PAIEMENT ................................................. 66
12.8
LA SECURITE DES TRANSACTIONS REALISEES PAR CARTE BANCAIRE .............................................. 67
ALLEMAGNE............................................................................................................................................. 71
BELGIQUE................................................................................................................................................. 73
DANEMARK .............................................................................................................................................. 76
ESPAGNE.................................................................................................................................................. 80
12.9
CHARTE D'OSC.FR............................................................................................................................ 86
12.10 LICENCE OSCOMMERCE .................................................................................................................... 89
4
1 Description
Cette solution répond aux besoins des PME et TPE, commerçants et artisans qui désirent
non seulement assurer leur présence sur Internet mais aussi vendre en ligne.
Découvrez OsCommerce, le logiciel de vente en ligne le plus adapté au marché français.
Pour preuve, il est en passe de devenir le plus utilisé en France par les commerçants sur
Internet, et est reconnue par les systèmes de paiement sécurisé de toutes les grandes
banques françaises !
Petit aperçu des possibilités, qui ne peuvent être listées entièrement, car la communauté
est très active et les modules et contributions viennent s’ajouter jour après jour.
A vous de faire des recherches sur le site : http://www.oscommerce-fr.info/portail/
• Panier d’achat : affichage des prix HT ou TTC, Gestion de la TVA à l'export et Intra
Communautaire, affichage des conditions générales de vente, identification automatisée des
clients fidèles...
• Gestion des commandes : notification de commande par e-mail, gestion des clients,
commandes et détails de commandes.
• Gestion des stocks : notification par e-mail lorsqu'un produit vient à manquer, possibilité
de ne plus afficher les produits non disponibles...
• Frais de port : Gestion simplifiée des frais de ports, gestion des paiements par contre
remboursement.
• Cartes de Crédit : paiements et transactions sécurisés (SSL).
• Autres moyens de paiements : gestion des paiements par chèques, par contre
remboursement, des clients en comptes ... Trés important si vous travaillez entres
professionnels et que votre site est utilisé comme un moyen plus efficace de prendre des
commandes.
1.1
BOUTIQUE
•
•
•
•
Espace à gestion de contenu
Boutique multilingue (Français, Anglais, Allemand, Espagnol en standard) + autres
langues
Charte graphique personnalisée avec logo de votre boutique + votre email + infos de
votre société (nom, capital, siret...) etc.
Navigation facile sur la boutique
•
Gestion des comptes clients, des adresses des clients,
o Historique des commandes,
o Avertissement des commandes par e-mail,
•
•
Gestion des caddies d’achat,
Visualisation du caddie à tout moment
5
•
Présentation des produits, affichage des produits par catégorie
o Nombre de produits illimité
o Nombre de catégories de produits illimité
o Module de recherche de produits
o Gestion des promotions
o Liste des produits les plus vendus.
o Recherche de produits et de fournisseurs dans le catalogue,
•
Transaction sécurisée SSL,
•
Statistiques de ventes dans un but marketing
•
Et bien plus encore …
1.2
ADMINISTRATION DE VOTRE BOUTIQUE
•
Interface conviviale,
o La partie administration peut être installée sur un autre serveur,
o Les différents paramètres sont configurables dans la base de données,
o Vous administrez/gérez votre boutique par le biais d'une interface graphique
sécurisée ne nécessitant aucune connaissances en programmation
o Disponible en plusieurs langues dont le français, outil de sauvegarde, etc...
•
Gestion des produits
o Ajout / édition / suppression de catégories, de produits, et de fournisseurs,
o Structuration des catégories,
o Gestion Catalogue : Contenu, Fabricants
o Statistiques sur les produits et les fournisseurs,
o Gestion de caractéristiques dynamiques sur les produits,
o Gestion des bannières publicitaire
o Gestion des promotions
•
Facturation/livraison/paiement
o Gestion des différents modes de livraison (Colissimo, Coli poste)
o Gestion des frais de port (par poids, destination etc..)
o Gestion des taux de taxe,
o Gestion des devises et taux de changes (euro, dollar etc..)
o Modules de paiement et de calcul des frais de port,
o Vérification des numéros de cartes Bancaires
•
•
Fiches clients
Confirmation des commandes par e-mail
•
Edition de rapport d'activités
•
Sauvegardes quotidiennes des données et de la base de données
•
Et bien plus encore …
6
2 Installation
2.1
Comment ouvrir sa boutique installée en local sur le réseau public via un
nom de domaine dynamique ou son IP ?
Il est tout à fait possible d'ouvrir son ordinateur sur le réseau public. Attention!!! nous ne
parlons pas là de boutiques en production qui devront impérativement être hébergées
sur des serveurs protégés contre le hacking!!!
Par contre, pour "montrer" son travail réalisé en local il est tout à fait possible d'ouvrir sa
machine au réseau via son IP ou par un nom de domaine dynamique (voir dyndns par
exemple)
Il suffit pour cela de corriger son configure.php de catalogue/includes pour la boutique et
(éventuellement si l'on veut ouvrir l'admin) de admin/includes/
Code:
define('HTTP_SERVER', 'http://mon_dns.dyndns.org'); // ou l'IP
publique
define('HTTPS_SERVER', 'https://mon_dns.dyndns.org'); // ou l'IP
publique
Le problème c'est qu'alors la boutique n'est plus disponible que depuis une machine
extérieure, plus depuis le réseau local. un petit script permet de corriger l'affaire. Il faut
remplacer les define('HTTP_SERVER') par ce petit script
Code:
for ($ip=1; $ip < 250; $ip++) {
$complete_ip1 = "192.168.1.$ip"; //ou l'adresse désirée
192.168.0.$ip par exemple
$complete_ip2 = "10.0.0.$ip"; //si necessaire
$complete_ip3 = "127.0.0.$ip"; //créer d'autre$complete_ip si
necessaire
if ((getenv ("REMOTE_ADDR")== $complete_ip1) ||
(getenv ("REMOTE_ADDR")== $complete_ip2) ||
(getenv ("REMOTE_ADDR")== $complete_ip3)) {
$localcast = 1;
}
}
if ($localcast == "1") {
define('HTTP_SERVER', 'http://mon_ordi.local'); // adresse
locale
define('HTTPS_SERVER', 'https://mon_ordi.local'); // adresse
locale
} else {
define('HTTP_SERVER', 'http://mon_dns.dyndns.org'); // ou l'IP
publique
define('HTTPS_SERVER', 'https://mon_dns.dyndns.org'); // ou
l'IP publique
}
Toutes les adresses locales définies dans $complete_ipx se connecteront alors sur le
serveur mon_ordi.local et les extérieurs sur le serveur mon_dns.dyndns.org.
ATTENTION
7
Ce bricolage doit-être adapté aux besoins de chacun: adresss ip locales utilisées, nom de
serveur local... Le partage web doit évidemment être activé et un dyndns pris chez un
fournisseur. Ce ne peut-être un simple copié/collé de code
2.2
Quel est le mot de passe admin par défaut pour la CREload 6 FR
Adresse électronique : admin@localhost.com
Mot de Passe : admin
2.3
Problème d'affichage après installation de la MS2 ?
Rien de plus simple. Pour la MS2 il est impératif d'utiliser une version php 4.3.0 au minimum
2.4
Comment finaliser l'installation, régler les chmods et sécuriser
OsCommerce?
Réglez les CHMODS de vos fichiers et repertoires
Mettez les configure.php de l'admin et du catalog en lecture seule (chmod444)
N'ouvrez les droits en écriture (chmod777) QUE sur les repertoires le nécessitant (images,
backup...)
Laissez les autres fichiers (chmod644) et répertoires (chmod755) tel qu'ils se règlent
automatiquement à l'upload sur votre hébergement
Sécurisez OsCommerce
- Notions de base
Protéger votre répertoire admin avec htaccess
Ceux qui veulent en savoir un peu plus sur htaccess et htpasswd, faites un tour sur
phpdebutant.org et Le site d'Apache. L'idéal reste un accès l'Admin en HTTPS, car
le login/passwd htaccess passent en clair a travers le réseau.
Crypter un login/mot de passe pour htaccess :
Pour calculer le cryptage : www.webtpe.com par exemple
Choisir vos mots de passe :
Ne JAMAIS utiliser un mot de passe existant dans le dictionnaire : il existe des softs
permettant de tester des milliers de mots de passe. Mélangez des lettres (minuscules et
majuscules), des chiffres et des ponctuations, genre ùBn1a2!hY
- Notions spécifiques OsCommerce
Règle essentielle, personnalisez vos répertoires : n'appelez pas votre répertoire
administration " admin ". Renommez le obligatoirement et changez la ligne
define('DIR_WS_ADMIN', 'adresse-du-repertoire-admin') du fichier configure.php en
conséquence.
RAPPEL : il est possible d'héberger l'administration sur un autre serveur.
Insérer un fichier vide appelé index.html dans tous vos répertoires images. Pour ceux qui
ont un hébergeur mutualisé, genre AMEN, PROTEGEZ votre répertoire
www.nomdedomaine.com/stats par un htaccess. Il contient TOUS les accès détaillés de
toutes vos pages.
8
2.5
Comment transférer ma boutique qui marche bien en local chez mon
hébergeur sans perdre toutes les informations de la base ?
Procéder comme suit :
1 - en local :
- backup de ta BDD depuis l'admin (sans compression)
- renommer le fichier de backup en oscommerce.sql
- vérifier la présence du rep install dans catalog/ sinon le recopier depuis l'archive osc.
- remplacer le fichier oscommerce.sql du rep catalog/install/ par ton fichier créé
précédemment.
2 - FTP :
- transfert de tous les rep et leur contenu depuis ta boutique locale chez ton hébergeur (en
mode binaire)
3 - avec ton navigateur
- accès à l'installation par le chemin www. tondomaine.com/catalog/install
- renseigner le module d'installation pour :
.. 1 Les chemins (catalog, admin...)
.. 2 Les infos de connexion à la base sql chez ton hébergeur
.. 3 choisir "sauver les session en base"
.. 4 Vérifier la disponibilité d'un accès ssl pour ton domaine et le cas échéant activer le mode
SSL après avoir saisi l'adresse https://...
4 - Une fois l'installation terminée accéder à l'admin pour les petits réglages du genre nom
d'administrateur ou envoie de mail (sendmail à la place de smtp)...
5 - Vérification
- accéder au catalog et vérifier le bon fonctionnement de la partie boutique sans tenir compte
des warning de rep install et de protection config.php.
- si pb vérifier que la procédure a bien été respectée et/ou recommencer depuis l'étape 2 ou
3 selon (pour les chemins foireux reprendre à 3)
6 - FTP again
- Supprimer le rep d'install chez l'hebergeur (il n'est plus utile)
- recopier les fichiers configure.php de /admin et de catalog ainsi que le french.php dans un
rep de sauvegarde en local
- Verouiller les fichiers configure.php distants par un CHMOD comme indiqué dans la doc
(CHMOD 444 ou 555)
- modifier le setlocale() des fichiers French.php (catalog et admin) afin de faire correspondre
aux exigences du type de serveur de l'hébergeur
2.6
Comment exécuter un script pour changer l'attribut d'un fichier ?
Créer un fichier comme suit (appelé par exemple chmod.php) et placez le dans le répertoire
du fichier en question et exécuter le à partir de votre browser préféré :
Code:
<?php
chmod ("fichier.php", 644);
?>
2.7
Comment installer manuellement OSC ?
Rien de plus simple. Il suffit de suivre les étapes suivantes :
9
1. éditer le fichier includes/configure.php (dans catalog et dans admin) et changer les
variables (essentiellement, HTTP_SERVER, DIR_FS_DOCUMENT, DIR_WS_CATALOG,
DIR_WS_ADMIN et la configuration de la database DB_...),
2. Importer la base de données sql (dans la distrib à catalog/install/oscommerce.sql) avec
phpMyAdmin ou en ligne de commande.
3. Vérifier sa configuration avec son browser internet.
2.8
Problèmes de transfert FTP ?
Je rencontre de nombreux problèmes depuis que j'ai mis en place mon OSC chez mon
hébergeur alors que tout marchait parfaitement en local. Il semblerait que certain fichier on
perdu des caractères ou que des lignes vides sont apparues. D'où cela provient il ?
Cela peut souvent provenir de l'outil FTP utilisé ou de sa configuration. Il est conseillé de
transférer tous ses fichiers en mode BINAIRE. Il faut donc bannir le mode auto ou le mode
ASCII pour le transfert des scripts PHP. Les scripts PHP sont des fichiers texte. ils peuvent
donc être détectés comme tel par le mode auto et être transférés en ASCII. Or le mode
ASCII effectue une conversion des retours chariot à la volée. Ce système est prévu à
l'origine pour rendre lisibles les fichiers textes sur toutes les plateformes en sachant que
UNIX, PC ou MAC ont chacun leur standard en matière de balisage des fins de ligne.
Seul le mode BINAIRE assure un transfert intégral bit/bit (ou octet/octet) sans modification
du contenu d'un fichier.
Attention, il a été rapporté que certains outils FTP s'entêtent à tranférer les fichiers PHP en
mode ASCII malgré la désactivation du mode auto. Vérifiez donc la validité de votre
application FTP.
3 Général
3.1
Comment faire pour lancer directement la boutique depuis l'accueil du
site ?
Pour avoir sa boutique
http://www.mondomaine.com
MS2
accessible
directement
depuis
son
adresse
Il suffit de ne pas mettre de répertoire "catalog" et de déplacer tout son contenu à la racine
du site. Il faudra penser à bien modifier les configure.php pour corriger les chemins.
Il est également possible de laisser la structure de répertoires en place et de se contenter de
mettre une redirection en plaçant un fichier index.php à la racine du site contenant
Code:
<?php
header("location:catalog/index.php");
?>
à noter que la page d'accueil des boutiques antérieures à la MS2 (MS1 et avant) se nommait
default.php. Voir là pour plus de détails
10
3.2
Je ne trouve pas de page index.php dans mon répertoire catalog/?
Pour la MS1, la structure de l'arborescence d'oscommerce permet de laisser une page
d'accueil dans le répertoire de base www du site, cette page offrant la possibilité de rediriger
vers la boutique par un lien vers default.php.
A partir de la MS2 la page default.php à été supprimée et renommée index.php
Pour "booter" directement sur la page default.php à l'accès du répertoire catalog/ il suffit de
rajouter une page index.php dans ce rep dont le contenu se limite à :
Code:
<?php
header("location:default.php");
?>
ou encore :
Code:
<?php
header("location:catalog/default.php");
?>
si le fichier index.php est situé à la racine du site (www).
On peut aussi placer dans le répertoire catalog/ un index.php dont le contenu est :
Code:
<?php
require('includes/application_top.php');
tep_redirect(tep_href_link(FILENAME_DEFAULT, 'language=fr'));
?>
pour forcer l'entrée de la boutique dans une langue (ici le Français).
3.3
Structure du site, configure.php - ou Comment règler mon configure php
? ou Pourquoi mes images ne s'affichent pas?
Ces 2 fichiers permettent de configurer physiquement la boutique et le site (enregistrement
de la configuration sous forme de constantes).
Tous les chemins de fichiers sont réglés par les 2 configure.php (admin et catalog).
Normallement toutes ces données sont remplies par l'installation automatique. Cependant si
l'installation automatique n'est pas possible (ex online) ou si vous déplacez des répertoires
voire le site en entier, beaucoup de problèmes peuvent venir de là.
Voilà à quoi ils doivent ressembler. Exemple pour une installation de base, sans SSL. Sur un
serveur hébergé www.monsite.com, la boutique dans le répertoire "boutique":
http://www.monsite.com/boutique/ donne sur la boutique.
Pour le catalog/includes/configure.php
Code:
define('HTTP_SERVER', 'http://www.monsite.com');
define('HTTPS_SERVER', ''); // nécessaire seulement si le SSL est
utilisé
define('ENABLE_SSL', false); // ou true pour l'utilisation su SSL
define('HTTP_COOKIE_DOMAIN', 'www.monsite.com');
define('HTTPS_COOKIE_DOMAIN', '');
define('HTTP_COOKIE_PATH', '/boutique/catalog/'); // chemin absolu
depuis la racine du site
11
define('HTTPS_COOKIE_PATH', '');
define('DIR_WS_HTTP_CATALOG', '/boutique/catalog/'); // chemin
absolu depuis la racine du site
define('DIR_WS_HTTPS_CATALOG', '');
define('DIR_WS_IMAGES', 'images/');
define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');
define('DIR_WS_INCLUDES', 'includes/');
define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/');
define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');
define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');
define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');
define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');
define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/');
define('DIR_FS_CATALOG', '/home/user/boutique/catalog/');// chemin
physique machine vers la boutique
define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');
define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');
// define our database connection
define('DB_SERVER', 'localhost'); //adresse du serveur sql (nom ou
adresse IP)
define('DB_SERVER_USERNAME', 'username');
define('DB_SERVER_PASSWORD', 'password');
define('DB_DATABASE', 'nom_de_base');
define('USE_PCONNECT', 'false'); // ou true pour une connection
permanente
define('STORE_SESSIONS', 'mysql'); // ou vide '' voir FAQ
"sessions"
Et pour catalog/admin/includes/configure.php
Code:
define('HTTP_SERVER', 'http://www.monsite.com');
define('HTTP_CATALOG_SERVER', 'http://www.monsite.com');
define('HTTPS_CATALOG_SERVER', '');
define('ENABLE_SSL_CATALOG', false);
define('DIR_FS_DOCUMENT_ROOT', '/home/user/');// chemin physique
machine vers le site
define('DIR_WS_ADMIN', '/boutique/catalog/admin/');
define('DIR_FS_ADMIN', DIR_FS_DOCUMENT_ROOT . DIR_WS_ADMIN); //
chemin physique machine vers l'admin
define('DIR_WS_CATALOG', '/boutique/catalog/');
define('DIR_FS_CATALOG', DIR_FS_DOCUMENT_ROOT . DIR_WS_ADMIN); //
chemin physique machine vers le catalog
define('DIR_WS_IMAGES', 'images/');
define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');
define('DIR_WS_CATALOG_IMAGES', DIR_WS_CATALOG . 'images/');
define('DIR_WS_INCLUDES', 'includes/');
define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/');
define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');
define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');
define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');
define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');
define('DIR_WS_CATALOG_LANGUAGES', DIR_WS_CATALOG .
'includes/languages/');
12
define('DIR_FS_CATALOG_LANGUAGES', DIR_FS_CATALOG .
'includes/languages/');
define('DIR_FS_CATALOG_IMAGES', DIR_FS_CATALOG . 'images/');
define('DIR_FS_CATALOG_MODULES', DIR_FS_CATALOG .
'includes/modules/');
define('DIR_FS_BACKUP', DIR_FS_ADMIN . 'backups/');
// define our database connection
define('DB_SERVER', 'localhost'); //adresse du serveur sql (nom ou
adresse IP)
define('DB_SERVER_USERNAME', 'username');
define('DB_SERVER_PASSWORD', 'password');
define('DB_DATABASE', 'nom_de_base');
define('USE_PCONNECT', 'false'); // ou true pour une connection
permanente
define('STORE_SESSIONS', 'mysql'); // ou vide '' voir FAQ
"sessions"
Ce qu'il faut comprendre pour pouvoir les tripatouiller:
-Les chemins en FS sont les chemins absolus par rapport au serveur (la machine)
-Les WS, les chemins à partir de la racine web (www.monsite.com)
-les DIR_WS ne posent pas de problèmes, il suffit de respecter la structure des répertoires.
-Attention au DIR_WS_CATALOG qui doit être un chemin absolu (commencer et finir par
un /)
-Les chemins peuvent s'imbriquer en utilisant l'opérateur "." exemple :
define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/'); qui revient au même que
define('DIR_WS_ICONS', 'images/icons/'); (pour cet exemple)
-DIR_FS_DOCUMENT_ROOT de l'admin et DIR_FS_CATALOG du catalog et posent
souvent problème car il faut connaître le chemin physique du site sur la machine. Cherchez
dans la doc de votre hébergeur ou dans le phpinfo.
Pour connaître son ROOT, vous pouvez faire un script en créant un fichier realpath.php à
la racine du site, avec comme contenu:
Code:
<? echo realpath("realpath.php"); ?>
L'appel dans votre nagigateur de cette page
http://www.monsite.com/realpath.php vous donnera le chemin complet.
Pour mieux connaître les variables du serveur, vous pouvez aussi faire un script pour les
lister:
Code:
<?
print "<b><center> <font size=\"5\" face=\"arial\">Données du
serveur : http://$_SERVER[HTTP_HOST] </font></b></center><br>" ;
$noir = "<font size=\"1\" face=\"verdana\"
color=\"#000000\"><b>";
$rouge = "<font size=\"1\" face=\"verdana\"
color=\"#A60000\"><b>";
$debut = "<font size=\"1\" face=\"verdana\" color=\"#FFFFFF\">
====== </font>";
$php_ver = phpversion();
print "$noir PHP version : $rouge $php_ver <br>";
foreach ($_SERVER as $key => $info_server) print " $debut $noir
\$_SERVER[$key] = $rouge $info_server <br>";
13
print " <br>\$PHP_SELF = $PHP_SELF <br>";
print " <br>\$HTTP_HOST = $HTTP_HOST <br>";
print "</b></font>";
?>
3.4
Comment faire une sauvegarde de base de données??
La sauvegarde incluse dans l'administration d'OsCommerce (administration ->outils >sauvergarde)est fortement déconseillée d'utilisation. Elle augmente les risques
d'incompatibilité avec les hébergeurs mutualisés (safe mode, time limit...)
Il est préferable d'effectuer ses sauvegardes avec un outil dédié comme par exemple
phpmyadmin:
Onglet "exporter" et en cochant "structure" "données" et "transmettre". Cocher l'option
'Inclure des énoncés DROP TABLE' permettra de détruire les tables subsistantes au moment
d'une restauration
En cas de base particulièrement grosses (plusieurs dizaines de Mo) et surtout pour
reconstruire une base, la limitation du temps d'utilisation de mysql par votre hébergeur peu
empêcher de rétablir sa base de données en une seule fois. La solution consiste alors à
"découper" le fichier .sql en plusieurs morceaux en prenant soin de ne pas couper les
instructions sql et de mettre à jour la base en plusieurs fois.
3.5
Comment connaître/afficher le nombre de personnes en ligne sur ma
boutique ?
Pour afficher:
1. Le nombre total de personnes en ligne sur la boutique :
Code:
$whos_online_query = tep_db_query("select customer_id from " .
TABLE_WHOS_ONLINE);
echo tep_db_num_rows($whos_online_query);
2. Le nombre d'utilisateurs enregistrés en ligne sur la boutique :
Code:
$whos_online_query = tep_db_query("select customer_id from " .
TABLE_WHOS_ONLINE . " where customer_id <> 0");
echo tep_db_num_rows($whos_online_query);
3. Le nombre d'utilisateurs non identifiés en ligne sur la boutique :
Code:
$whos_online_query = tep_db_query("select customer_id from " .
TABLE_WHOS_ONLINE . " where customer_id = 0");
echo tep_db_num_rows($whos_online_query);
3.6
Comment ajouté un préfixe à toutes les tables de la base de données ?
Tu
changes
manuellement
dans
ta
base
le
nom
des
tables.
Ensuite, tu changes les "define" des tables dans les 2 fichiers application_top.php du catalog
et de l'admin.
Pour la MS2, les define du nom des tables est dans icludes/database_tables.php et (de
mémoire, à vérifier) il me semble que si tu utilises l'installation automatique, tu peux spécifier
un préfixe à tes tables.
14
Enfin, attention au fichier backup.php qui utilise bizarrement non pas les define() mais le nom
réel des tables!!!??? mais bon, la sauvegarde d'osc ne fonctionnant que moyennement, ce
sera une raison de plus de ne pas s'en servir .
3.7
A quoi sert le cache?
Le "cache" sert à sauvegarder dans des fichiers des parties de pages generées à la volée et
à utiliser ces parties plutot que de refaire les calculs à chaque fois.
Par exemple, pour la boite catégorie, pour le premier utilisateur qui va afficher ton top
category, le systeme va générer un fichier qui correspond au code HTML de cette boite.
Ensuite, pour les prochains utilisateurs, il prendra le fichier généré et l'inserera dans la page.
Quelques précisions
Au niveau d'OSC, le cache par bloc est rafraichi au besoin et non selon un temps x, les
fragments de cache sont regénérés en fonction des besoins. Par exemple, dans le cas de la
box catégories, il existe un fragment par type de combinaison de catégories selectionées. A
chaque fois qu'un visiteur arrive, la box est chargée du cache (si il existe) ou générée et
stockée dans le cache (si il n'existe pas). Lors qu'une modification est apportée au niveau
d'une catégorie (son nom, son organisation, ...) tous les fragments concernant la box
categories sont supprimées : ils seront regénérés par les futurs visiteurs. C'est un cache
propre et intelligent car les fragments ne sont mis à jour qu'au besoin (et non selon un temps
determine),
1. Mettre en place le cache est un travail qui doit intervenir tard dans le developpement :
il est fortement recommandé de desactiver le cache lorsque l'on fait des
modifications de design afin que les modifications apportées soient bien visible.
Inutile aussi de tout vouloir mettre en cache (cela prend de la place) : dans OSC ne sont
misent en cache que les parties qui sont lourdes et couteuses en terme de temps (comme la
boxe categories qui est sous-optimisée).
La gestion du cache se fait dans l'administration -> Configuration -> Cache
3.8
C'est quoi tous les fichier CVS qui sont dans les répertoires ?
Concurrent Version System
Système de contrôle de révision des fichiers, Open Source, utilise très largement pour les
développements.
Si tu ne l'utilises pas, alors tu peux supprimer tous les répertoires CVS de ton arborescence.
4 Catalogue
4.1
Comment ne sélectionner que les produits insérés dans le catalogue dans
le mois courant ?
Dans catalog/products_new.php, le code à modifier est:
Code:
$products_new_query_raw = "select p.products_id,
pd.products_name, p.products_image, p.products_price,
p.products_tax_class_id, p.products_date_added,
m.manufacturers_name from " . TABLE_PRODUCTS . " p left join " .
TABLE_MANUFACTURERS . " m on (p.manufacturers_id =
m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where
15
p.products_status = '1' and p.products_id = pd.products_id and
pd.language_id = '" . (int)$languages_id . "' order by
p.products_date_added DESC, pd.products_name";
Nouveau code:
Code:
$products_new_query_raw = "select p.products_id, pd.products_name,
p.products_image, p.products_price, p.products_tax_class_id,
p.products_date_added, m.manufacturers_name from " . TABLE_PRODUCTS
. " p left join " . TABLE_MANUFACTURERS . " m on
(p.manufacturers_id = m.manufacturers_id), " .
TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and
p.products_id = pd.products_id and pd.language_id = '" .
(int)$languages_id . "' and month(products_date_added) =
month(now()) and year(products_date_added) = year(now()) order by
p.products_date_added DESC, pd.products_name";
La requête prend en compte à la fois le mois en cours ainsi que l’année en cours. De cette
façon, on est sûr que ne sont affichés que les produits ajoutés dans le mois en cours.
A noter que pour chaque début de mois, la liste des nouveautés est remise à zéro par cette
méthode.
Il est aussi possible de ne sélectionner que les produits ajoutés dans le catalogue lors des
30 derniers jours : voir ici pour plus de détails.
4.2
Comment ajouter des notifications par fabriquant?
Je ne donne pas ZE solution, mais une ébauche de réflexion sur comment ajouter des
notifications par fabriquant.
Les notifications par produit sont modifiables dans :
1. la boite d'information correspondant a 'M'avertir des changements sur ce produit',
2. depuis le compte de l'utilisateur 'Notifications',
3. sur la page checkout_success.php pour prendre en compte les produits sur lequel
l'utilisateur veut etre notifier.
En interne, elle utilise la table 'products_notifications' et la table 'customers_info'.
La table 'products_notifications' enregistre les notifications par produits et par client.
Dans la table 'customers_info', le champ 'global_product_notifications' permet de savoir si le
client veut recevoir toutes les notifications ou pas.
Cote administration, l'envoi des notifications se fait a travers l'outil de 'newsletters'. Pour cet
outil, il existe, en standard, deux modules de newsletters definis (localise dans
admin/includes/modules/newsletters) qui sont:
1. newsletter pour l'envoi de lettre d'information,
2. product_notification pour l'envoi de notification sur les produits.
Voila pour l'architecture globale.
Maintenant, pour mettre en place un systeme de notification par fabriquant, il faut suivre la
meme structure, ce qui signifie que :
1. les pages ou le client peut choisir ces notifications, il faut ajouter la possibilite d'etre
notifier par fabriquants. La recherche des fabriquants se faisant alors par rapport a la table
'manufacturers' et 'manufacturers_info' plutot que sur 'products' et 'products_description',
16
2. partout ou les modifications sur les tables 'products_notifications' et 'customers_info' (pour
le champ global_product_notification', il faut faire la meme chose pour la notification sur
fabriquant. Tu peux dans ce cas, ajouter un champ 'global_manufacturer_notification' et
comme cela tu conserveras la notification par produit, meme si tu t'en sert pas. Pour la table
'product_notification', il faut creer une table 'manufacturers_notification' identique dans sa
structure, ayant pour champs customers_id, manufacturers_id et date_added,
3. cote administration, il suffit de copier le fichier includes/modules/product_notification.php
en includes/modules/manufaturer_notification.php et modifier ce fichier afin de recuperer les
informations
des
tables
'manufacturers_notification'
et
le
champ
'global_manufacturer_notification' de la table 'customers_info'. La creation de lettre
d'information pour ce type d'info se fera automatiquement sur l'outil 'newsletters' et il suffira
de choisir comme type de lettre 'manufacturer_notification'.
Voila une ébauche pour t'aider a mieux comprendre ou modifier et dans quelle direction tu
peux aller pour mettre en place ce système.
4.3
Comment gérer la devise automatiquement avec la langue?
On peut activer ou désactiver l'option d'automatisme de devise par rapport à la langue
dans l'admin->Configuration->Devise par défaut->true/false
Si cette valeur est sur 'true', la devise est définie par défaut par la variable
'LANGUAGE_CURRENCY'. Par exemple, pour que la devise par défaut soit l'euro lorsque
l'on est en anglais:
DANS includes/language/english.php
Code:
// if USE_DEFAULT_LANGUAGE_CURRENCY is true, use the following
currency, instead of the applications default currency (used when
changing language)
define('LANGUAGE_CURRENCY', 'USD');
REMPLACER le define par define('LANGUAGE_CURRENCY', 'EUR');
4.4
J'ai entré des commentaires/avis sur des articles mais lorsque je desire
les visualiser comme n'importe quel client ?
Dans la Creload5, pour des questions d'ethique et de censure, les commentaires sur les
produits soumis pas les clients de la boutique doivent etre "approuvés" (on non d'ailleur) et
sont donc soumis au control de l'administrateur de la boutique. Pour ce faire, dans
l'administration de la boutique, cliquer sur l'onglet "catalogue" puis sur "commentaires".
Ensuite libre a vous d'approuver les commentaires pertinents afin qu'ils apparaissent dans la
boutique.(dans la colonne "approuvé" doit apparaitre "oui")
4.5
Comment ne sélectionner que les produits insérés dans le catalogue dans
les 30 derniers jours ?
Pour sélectionner que les produits insérer dans le catalogue lors des 30 derniers jours, il faut
utiliser la fonction MySQL
Code:
date_sub
de la façon suivante
Code:
17
SELECT * FROM products WHERE products_date_added > date_sub(now(),
interval 30 day)
Bien sûr, pour les 20 derniers jours, il suffit de remplacer 30 par 20.
4.6
Comment recevoir un mail d'avertissement quand le stock de produit
atteint la valeur de niveau d'alerte définie dans l'admin ?
Ce petit bricolage envoi un mail au propriétaire de la boutique défini dans l'admin seulement
si la vérification du stock (STOCK_CHECK) est sur true.
Dans checkout_process.php, dans la boucle
Code:
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
}
par exemple vers la ligne:
Citation:
// Update products_ordered (for bestsellers list)
AJOUTER AVANT
Code:
// mails avertissement stock
if (STOCK_CHECK == 'true') {
if ($stock_left == STOCK_REORDER_LEVEL) {
$email_stock = sprintf(EMAIL_STOCK_WARNING, $order>products[$i]['id'], $order->products[$i]['name']);
tep_mail('', STORE_OWNER_EMAIL_ADDRESS, EMAIL_STOCK_SUBJECT,
$email_stock, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, '');
}
}
Et dans language/french/checkout_process.php
AJOUTER
Code:
define('EMAIL_STOCK_SUBJECT', 'Warning stock');
define('EMAIL_STOCK_WARNING', 'Attention!!! l\'article #%s
<b>%s</b> arrive sous la limite fixée à ' . STOCK_REORDER_LEVEL);
4.7
Comment empêcher l'achat d'un nombre d'articles pas entier?
• Lorsque je suis dans le panier et que je passe une commande de 1 produit il va se mettre
dans le panier 1 produit.
• Mais si un client tape une quantité de 1.5 pour un article, il va acheter l'article plus la moitié
de ce même article.
Pour corriger ceci éditer le fichier
catalog/includes/classes/shopping_cart.php et rechercher :
if ($this->in_cart($products_id)) {
$this->update_quantity($products_id, $qty, $attributes);
Et le remplacer par :
if ($this->in_cart($products_id)) {
$this->update_quantity($products_id, (int)$qty, $attributes);
18
4.8
Comment modifier les numéros de commande?
Pour augmenter artificiellement le N° de commande et éviter un "N°30" peu vendeur. Il suffit
d'exécuter cette commande sur votre base de donnée :
Code:
alter table orders auto_increment = 4000;
En remplaçant bien sur 4000 par le nombre qui vous plait.
4.9
Comment obliger les clients à consulter les conditions générales de vente
avant de passer à la phase de confirmation d'une commande ?
Dans 'catalog/includes/languages/french/checkout_payment.php' :
rajouter
Code:
define('TEXT_CONDITIONS', 'J\'ai lu et accepté les <a href=' .
FILENAME_CONDITIONS . '?origin=checkout_payment class="conditions">
Conditions générales de vente ! </a>');
Ensuite dans 'catalog/conditions.php' :
remplacer
Code:
<td align="right" class="main"><br><?php echo '<a href="' .
tep_href_link(FILENAME_DEFAULT, '', 'NONSSL') . '">' .
tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) .
'</a>'; ?></td>
par
Code:
<td align="right" class="main"><br><?php
if($HTTP_GET_VARS['origin'] == 'checkout_payment'){echo '<a href="'
. tep_href_link(FILENAME_CHECKOUT_PAYMENT,
'consult_conditions=true', 'NONSSL') . '">' .
tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) .
'</a>';}else{echo '<a href="' . tep_href_link(FILENAME_DEFAULT, '',
'NONSSL') . '">' . tep_image_button('button_continue.gif',
IMAGE_BUTTON_CONTINUE) . '</a>';} ?></td>
Puis dans 'catalog/checkout_confirmation.php' après la ligne :
Code:
require('includes/application_top.php');
Rajouter :
Code:
// Si le client n'a pas lu les conditions générales de vente.
if (!$HTTP_POST_VARS['conditions']) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT,
'error_message=' . urlencode("Vous n'avez pas pris connaissance des
conditions générales de vente."), 'SSL', false));
}
Enfin dans 'catalog/checkout_payment' :
Après cela (en fin de fichier)
Code:
19
<td class="main"><b><?php echo TITLE_CONTINUE_CHECKOUT_PROCEDURE .
'</b><br>' . TEXT_CONTINUE_CHECKOUT_PROCEDURE;?></td>
Mettez
Code:
<td class="main"><?php
if($HTTP_GET_VARS['consult_conditions']){echo '<input
name="conditions" type="checkbox" value="true" checked>';}else{echo
'<input name="conditions" type="checkbox" value="true">';} echo
'&&&' . TEXT_CONDITIONS; ?></td>
4.10 Comment être averti par mail d'une nouvelle commande dans la boutique
?
Dans l'admin configuration/ma boutique il suffit de renseigner le champ " email copie de
commande " pour recevoir un duplicata de chaque commande à l'identique de celle que
reçoit le client.
4.11 Comment supprimer le bouton ajouter et le prix si celui-ci est 0 ?
Attention, tout dépend de votre version : $product_info ou $product_info_values
solution pour les prix du haut trouver la ligne
Code:
echo $products_price;
puis remplacer
Code:
<!-- ######### Suppression du prix si =0 ############## -->
<?php
if ($product_info['products_price']>0){
echo $products_price;
}
?>
<!-- ######### End added ############## -->
solution pour le bouton trouver la ligne
Code:
echo tep_draw_hidden_field('products_id',
$product_info['products_id']) .
tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART);
Code:
<!-- ############ Suppression du bouton si prix=0 #################
-->
<?php
if ($product_info['products_price']>0){
echo tep_draw_hidden_field('products_id',
$product_info['products_id']) .
tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART);
}
?>
20
</td>
<!-- ############ End added ################# -->
ajout de JeanLuc Pour enlever la possibilité d'achat dans les produits nouveaux
Dans catalog/includes/modules/new_product.php, remplace
Code:
$info_box_contents[$row][$col] = array('align' => 'center',
'params' =>
'class="smallText" width="33%" valign="top"',
'text' => '<a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$new_products['products_id']) . '">' . tep_image(DIR_WS_IMAGES .
$new_products['products_image'], $new_products['products_name'],
SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$new_products['products_id']) . '">' .
$new_products['products_name'] . '</a><br>' . $currencies>display_price($new_products['products_price'],
tep_get_tax_rate($new_products['products_tax_class_id'])));
par:
Code:
if ($new_products['products_price'] > 0) {
$info_box_contents[$row][$col] = array('align' => 'center',
'params' =>
'class="smallText" width="33%" valign="top"',
'text' => '<a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$new_products['products_id']) . '">' . tep_image(DIR_WS_IMAGES .
$new_products['products_image'], $new_products['products_name'],
SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$new_products['products_id']) . '">' .
$new_products['products_name'] . '</a><br>' . $currencies>display_price($new_products['products_price'],
tep_get_tax_rate($new_products['products_tax_class_id'])));
} else {
$info_box_contents[$row][$col] = array('align' => 'center',
'params' =>
'class="smallText" width="33%" valign="top"',
'text' => '<a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$new_products['products_id']) . '">' . tep_image(DIR_WS_IMAGES .
$new_products['products_image'], $new_products['products_name'],
SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$new_products['products_id']) . '">' .
$new_products['products_name'] . '</a>');
}
Dans products_new.php remplace:
Code:
<td valign="top" class="main"><?php echo '<a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$products_new['products_id']) . '"><b><u>' .
21
$products_new['products_name'] . '</u></b></a><br>' .
TEXT_DATE_ADDED . ' ' .
tep_date_long($products_new['products_date_added']) . '<br>' .
TEXT_MANUFACTURER . ' ' . $products_new['manufacturers_name'] .
'<br><br>' . TEXT_PRICE . ' ' . $products_price; ?></td>
<td align="right" valign="middle" class="main"><?php echo '<a
href="' . tep_href_link(FILENAME_PRODUCTS_NEW,
tep_get_all_get_params(array('action')) .
'action=buy_now&products_id=' . $products_new['products_id']) .
'">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_IN_CART)
. '</a>'; ?></td>
par:
Code:
<?php if ($products_new['products_price'] > 0) { ?>
<td valign="top" class="main"><?php echo '<a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$products_new['products_id']) . '"><b><u>' .
$products_new['products_name'] . '</u></b></a><br>' .
TEXT_DATE_ADDED . ' ' .
tep_date_long($products_new['products_date_added']) . '<br>' .
TEXT_MANUFACTURER . ' ' . $products_new['manufacturers_name'] .
'<br><br>' . TEXT_PRICE . ' ' . $products_price; ?></td>
<td align="right" valign="middle" class="main"><?php echo '<a
href="' . tep_href_link(FILENAME_PRODUCTS_NEW,
tep_get_all_get_params(array('action')) .
'action=buy_now&products_id=' . $products_new['products_id']) .
'">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_IN_CART)
. '</a>'; ?></td>
<?php } else { ?>
<td valign="top" class="main"><?php echo '<a href="' .
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' .
$products_new['products_id']) . '"><b><u>' .
$products_new['products_name'] . '</u></b></a><br>' .
TEXT_DATE_ADDED . ' ' .
tep_date_long($products_new['products_date_added']) . '<br>' .
TEXT_MANUFACTURER . ' ' . $products_new['manufacturers_name'];
?></td>
<td align="right" valign="middle" class="main"><?php echo
' '; ?></td>
<?php } ?>
Ajout de JeanLuc pour la liste des produits dans l'index:
Dans catalog/includes/modules/product_listing.php remplacer (vers ligne 109):
Code:
case 'PRODUCT_LIST_PRICE':
$lc_align = 'right';
if (tep_not_null($listing['specials_new_products_price'])) {
$lc_text = ' <s>' . $currencies>display_price($listing['products_price'],
tep_get_tax_rate($listing['products_tax_class_id'])) .
'</s>  <span class="productSpecialPrice">' . $currencies>display_price($listing['specials_new_products_price'],
tep_get_tax_rate($listing['products_tax_class_id'])) .
'</span> ';
} else {
22
$lc_text = ' ' . $currencies>display_price($listing['products_price'],
tep_get_tax_rate($listing['products_tax_class_id'])) . ' ';
}
break;
par:
Code:
case 'PRODUCT_LIST_PRICE':
$lc_align = 'right';
if ($listing['products_price'] > 0) {
if (tep_not_null($listing['specials_new_products_price'])) {
$lc_text = ' <s>' . $currencies>display_price($listing['products_price'],
tep_get_tax_rate($listing['products_tax_class_id'])) .
'</s>  <span class="productSpecialPrice">' . $currencies>display_price($listing['specials_new_products_price'],
tep_get_tax_rate($listing['products_tax_class_id'])) .
'</span> ';
} else {
$lc_text = ' ' . $currencies>display_price($listing['products_price'],
tep_get_tax_rate($listing['products_tax_class_id'])) . ' ';
}
} else {
$lc_text = ' ';
}
break;
et remplacer (vers ligne 130):
Code:
case 'PRODUCT_LIST_BUY_NOW':
$lc_align = 'center';
$lc_text = '<a href="' . tep_href_link(basename($PHP_SELF),
tep_get_all_get_params(array('action')) .
'action=buy_now&products_id=' . $listing['products_id']) . '">' .
tep_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW) .
'</a> ';
break;
par:
Code:
case 'PRODUCT_LIST_BUY_NOW':
if ($listing['products_price'] > 0) {
$lc_align = 'center';
$lc_text = '<a href="' . tep_href_link(basename($PHP_SELF),
tep_get_all_get_params(array('action')) .
'action=buy_now&products_id=' . $listing['products_id']) . '">' .
tep_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW) .
'</a> ';
} else {
$lc_text = ' '
}
break;
23
4.12 Comment insérer un séparateur entre certains produits lors d’affichage de
liste de produits ?
Modif à faire dans catalog/includes/modules/product_listing.php (sauvegarder avant !!!, on ne
le redira jamais assez).
Chercher le pavé :
Code:
$list_box_contents[$cur_row][] =
array(
'align' => $lc_align,
'params' => 'class="productListing-data"',
'text' => $lc_text);
}
}
et remplacer par le pavé :
Code:
$list_box_contents[$cur_row][] =
array(
'align' => $lc_align,
'params' => 'class="productListing-data"',
'text' => $lc_text);
}
$list_box_contents[$cur_row+1][] =
array(
'align' => 'center',
'params' => 'colspan="'.sizeof($column_list).'"',
'text' => '<hr color=red>');
}
4.13 Comment faire apparaître le nom du produit et le modèle du produit (au
lieu d’avoir uniquement le modèle du produit) dans le panier ?
Pour récupérer la référence d'un produit au niveau de checkout_confirmation.php, il suffit de
passer par l'objet '$order' et d'appeler la variable suivante au niveau de la boucle d'affichage:
Code:
$order->products[$i]['model']
Par exemple, si on veut que le nom de chaque produit soit suivi par sa référence, on
remplace le code suivant:
Code:
for ($i=0; $i<sizeof($order->products); $i++) {
echo '
<tr>' . "\n" .
'
<td class="main" align="right" valign="top"
width="30">' . $order->products[$i]['qty'] . ' x</td>' . "\n"
.
'
<td class="main" valign="top">' . $order>products[$i]['name'];
Par le code suivant:
Code:
for ($i=0; $i<sizeof($order->products); $i++) {
echo '
<tr>' . "\n" .
'
<td class="main" align="right" valign="top"
width="30">' . $order->products[$i]['qty'] . ' x</td>' . "\n"
.
24
'
<td class="main" valign="top">' . $order>products[$i]['name'] . $order->products[$i]['model'] ;
4.14 Comment mettre un produit qui n'a pas d'image et faire apparaitre une
image stipulant que ce produit ne possède pas d'image ?
1 / Créer une image qui sera appellé noimg.jpg et la mettre dans le répertoire
catalog/images/
2/ Ouvrir /catalog/includes/functions/html_output.php
A cette ligne mettre ce qui est entre added et end added
Code:
// The HTML image wrapper function
function tep_image($src, $alt = '', $width = '', $height = '',
$parameters = '') {
// ######################### Added No Image ###########"
$img=true;
if ($src == "images/"){
$img = false;
$src = "images/noimg.jpg";
}
// ################ End Added ##############
if ( (empty($src) || ($src == DIR_WS_IMAGES)) &&
(IMAGE_REQUIRED == 'false') ) {
return false;
}
Puis remplacer :
Code:
if (tep_not_null($width) && tep_not_null($height) {
par
Code:
if (tep_not_null($width) && tep_not_null($height) && $img) {
Voila, cela s'applique à la ms2, à vérifier sur les autres versions.
4.15 Je souhaite dans la description du produit rajouter un champ permettant
au client de choisir une certaine quantité ?
Dans product_info.php
Après cette ligne :
Code:
<tr>
<td align="center" class="smallText"><br><?php echo
sprintf(TEXT_DATE_ADDED,
tep_date_long($product_info['products_date_added'])); ?></td>
</tr>
Ajouter
Code:
<!-- ############ Added Quantité ################# -->
25
<tr>
<td align="center" class="main">
<br><b><?php echo QUANTITY_WISH ?></b><input type="text"
name="quantity" value="1" maxlength="4" size="4">
</td>
</tr>
<!-- ############## End Added ############# -->
Dans application_top.php
Remplacer cette ligne
Code:
$cart>add_cart($HTTP_POST_VARS['products_id'], $cart>get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'],$HTTP_PO
ST_VARS['id']))+1, $HTTP_POST_VARS['id']);
par :
Code:
//################# Ajout d'une quantité déterminée à partir de
product info #################
$cart>add_cart($HTTP_POST_VARS['products_id'], $cart>get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'],$HTTP_PO
ST_VARS['id']))+$quantity, $HTTP_POST_VARS['id']);
// ################# End Added ###################
Dans le réperoire language/french/product_info.php rajouter cette ligne (idem pour les autres
langages.
Code:
define('QUANTITY_WISH','Quantité souhaitée ');
4.16 Comment afficher le nom du produit dans la barre de navigation à la place
de la référence du produit ?
Editer le fichier catalog/includes/application_top.php et à la ligne 510 (environ)
Trouver
Code:
if ($HTTP_GET_VARS['products_id']) {
$model_query = tep_db_query("select products_model from " .
TABLE_PRODUCTS . " where products_id = '" .
$HTTP_GET_VARS['products_id'] . "'");
$model = tep_db_fetch_array($model_query);
$breadcrumb->add($model['products_model'],
tep_href_link(FILENAME_PRODUCT_INFO, 'cPath=' . $cPath .
'&products_id=' . $HTTP_GET_VARS['products_id']));
}
Remplacer par
Code:
if ($HTTP_GET_VARS['products_id']) {
$model_query = tep_db_query("select products_name from " .
TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" .
$HTTP_GET_VARS['products_id'] . "' and language_id = '".
$languages_id . "'");
$model = tep_db_fetch_array($model_query);
26
$breadcrumb->add($model['products_name'],
tep_href_link(FILENAME_PRODUCT_INFO, 'cPath=' . $cPath .
'&products_id=' . $HTTP_GET_VARS['products_id']));
}
4.17 Lorsque l'on saisie un descriptif avec plusieurs paragraphes, comment
formater les retour à la ligne à l'affichage de la fiche produit ?
Pour cela il y a 2 solutions :
1/ Mettre en fin de ligne la balise html <br> dans le descriptif produit
2/ Modifier le script product_info.php en remplacant la ligne :
echo stripslashes($product_info['products_description']);
par
echo nl2br(stripslashes($product_info['products_description']));
Ligne 102 dans mon cas.
4.18 Comment avoir une liste des produits (creload5) ?
pour avoir une liste de produit sur la gauche et image pour chacun de mes produits, sans
que le client ai pas besoin d'aller dans les details du produit
Editer le fichier catalog\includes\application_top.php et REMPLACER
Code:
define('FILENAME_PRODUCT_LISTING', 'product_listing_col.php');
Par
Code:
define('FILENAME_PRODUCT_LISTING', 'product_listing.php');
Ensuite, dans l'admin on peux configurer ce que l’on veut qui apparaisse ou pas (prix, image,
quantité, fabricant, poids, etc....)
NOTE: Ce point n'est valable que pour la load5 !!! la notion de product_listing_col
n'apparaissant pas sous ms1 et 2.2
4.19 Comment faire pour que la TVA s'affiche correctement?
La Gestion de la TVA peut paraître complexe mais une fois compris le principe, cette gestion
"en tiroir" permet de faire ce que l'on veut (taxes différente suivant pays, taux de taxes
variables...)
Je vais donner un exemple simple, que nombreux d'entre nous utilise: deux taux de TVA
19,6 et 5,5% pour les pays de la CEE
1- Dans l'admin de la boutique, dans Lieux / Taxes, créez une nouvelle Zones de taxation
que vous nommez CEE
2- Cliquez sur cette zone CEE pour l'ouvrir et insérez les pays de la CEE pour cette
nouvelle zone
3- Dans Lieux/Taxes ->Classes de taxation créez deux nouvelles taxes que vous nommez
comme vous voulez, par exemple "TVA 19,6" et "TVA 5,5"
4- Dans Lieux/Taxes ->Taux de taxe créez deux nouveaux taux à 19.6 et 5.5 auxquels vous
affectez leur classe respective et la zone CEE
27
5- Entrez les prix de tous vos produits HT et affectez leur la Classe de taxe adéquate
6- Allez boire un coup parce que vous en avez marre (évitez le café)
7- Faites les derniers petits réglages qui s'imposent. Configuration->My Store, les deux
lignes du bas:
- réglez la précision de la taxe (2)
- choisissez si vous voulez l'affichage des produits HT (false) ou TTC (true)
8- Savourez et remerciez l'administration fiscale
5 Contributions
5.1
Quelles sont les contributions les plus utiles?
Difficile de répondre à une telle question. J'aime à répondre: «la plus utile est... celle dont
vous avez besoin»
Boutade mise à part il est vrai qu'il vaut mieux se poser la question dans l'autre sens:
«j'aimerai que ma boutique fasse ça, la contrib existe-t-elle??» et de chercher sur le
forum ou sur oscommerce.com si quelque chose s'en approche
On peut néanmoins citer celles qui ont été choisie pour être sur la creload5:
Administrator 1.2.2 (Multi administrateur)
Gift voucher (Chéques cadeaux)
Discount coupon (Coupon de réduction)
Phesis poll (Modules de sondage)
Free shipping payement (frais de livraison offert)
Monthly report (Rapport mensuel complet des ventes)
Thema (Gestion de 6 thémes different pour la boutique)
Default special (Présentation offre exeptionnel de la boutique)
Featured products (Présentation des nouveaux produits aux choix)
HTLMBar V3 (Editeur pour les descriptions des produits)
Certaines datent un peu mais peuvent exister dans des versions plus récentes
et celles qui sont à la mode sur le forum:
•
•
•
•
•
•
•
•
•
quick_update (mise à jour rapide des attributs des produits (stock, nom, catégorie,
prix...)
WYSIWYG HTMLArea (Outil d'aide à la mise en forme html dans l'administration des
pages du catalogue)
Administration Access Level Accounts (Administration multi-utilisateurs aux droits
d'accès paramétrables)
Box Image Thema (Une gestion par l’administration de 5 thèmes différents)
Colissimo, Chronopost... et tous les modules d'envoi
Define Mainpage (Definir Page d'accueil)
Menu tab (Un menu categorie dans le header)
send_order_html_email (pour remplacer le mail au format texte et avoir un mail
sympathique html (avec logo, ...).)
categories description (permet d'avoir pour les catégories la même chose que pour
les produits en lieu et place d'un simple libéllé comme dans la version de base)
...
28
5.2
Comment rendre ma contribution multilanguage?
Vous avez récupéré une contribution pas multilanguage avec tes textes directement dans les
fichiers de "ma_contrib.php":
Code:
<tr>
<td class="pageHeading">Title in english</td>
</tr>
<tr>
<td class="main">Text in english</td>
</tr>
1- Créer un fichier ma_contrib.php dans includes/language/french/ ainsi que dans les
autres répertoires de langues utilisées avec les define des textes utilisés:
Code:
<?php
define('TITRE', 'Le Titre qui va bien');
define('TEXTE', 'Le texte qui va bien');
define('ETC', 'et tout ce dont on a besoin');
?>
2- Ajouter dans includes/application_top.php la définition du nom de fichier (facultatif
mais c'est comme ça qu'est structuré OsC alors autant faire pareil)
Code:
define('FILENAME_MA_CONTRIB', 'ma_contrib.php');
3- Ajouter en début du fichier ma_contrib.php (pas celui de langue que l'on vient de créer
mais bien la contribution en question) l'appel au fichier de langue
Code:
require(DIR_WS_LANGUAGES . $language . '/' .
FILENAME_MA_CONTRIB);
4- faire des echo()en lieu et place des textes à traduire
Code:
<tr>
<td class="pageHeading"><?php echo TITRE; ?></td>
</tr>
<tr>
<td class="main"><?php echo TEXT; ?></td>
</tr>
C'est tout
5.3
Où est ce que je peux trouver la contribution xxx en français?
Tous les modules développés pour la même version d'OsC que la sienne (ms1, ms2...) sont
compatibles avec le Français. La seule chose qui risque d'arriver est d'avoir les textes
apparaissant dans la page sous la forme VARIABLE_TEXTE car la traduction n'est pas
présente.
Pour adapter un module, c'est très simple, il suffit de recréer ces
Code:
define('VARABLE_TEXTE'; 'texte in english');
et de les traduire en français.
2 cas possibles
29
1- des fichiers sont à ajouter dans includes/languages/english/ il suffit de dupliquer ces
fichiers dans includes/languages/french/ et de les traduire
Code:
define('VARABLE_TEXTE'; 'texte en français');
2- des lignes sont à ajouter dans includes/languages/english.php
Il suffit d'ajouter les mêmes lignes traduites dans includes/languages/french.php
5.4
Existe-t-il une contribution pour mettre des produits "en-avant" sur la
page d'accueil ?
La contribution la plus populaire est : Featured products que l'on trouve sur le site
oscommerce.com.
Cette contribution est déjà installée avec la version MS1 Creload5.
6 Divers
6.1
Comment écrire les caractères spéciaux en HTML ?
Certaines caractères (comme les lettres accentuées) peuvent s'écrivent d'une façon
compréhensible par tous les navigateurs.
Voici une bonne adresse pour avoir la liste des caractères et leur représentation en HTML:
http://hotwired.lycos.com/webmonkey/reference/special_characters/
6.2
Comment référencer mon site sur la toile ?
Voici un récap non exhaustif de mes navigations dans des forums dédiés qui concerne le
référencement dans les moteurs et annuaires de recherche.
Je vous propose donc ici de faire le tour de quelques bases pour le référencement.
Une règle tout à fait logique mais que nous avons tendance à oublier devant la puissance de
Google :
Ne pas oublier les autres moteurs, en effet, ceux ci sont aussi scrutés par le "Monstre" et
ainsi, vous accélèrerez votre ref chez google ...
D'autant plus que sur des annuaires basiques (petits annuaires) vous pouvez bénéficier de
liens en durs pour avoir des BL pointant chez vous et en plus de trafic...
Un lien en dur est du type, lorsqu'on fait un clic droit => propriété :
http://www.monsite.com, par contre les liens "mous" sont du type
http://www.annuaire.com/page_redirect=&id174=www.monsite.com (ou similaire), là, il
est impossible de faire le lien pour un moteur ...
Pour avoir un exemple précis, j'ai pris le moteur qui monopolise la plus grosse part de
marché (Google pour ne pas le nommer avec plus de 70%).
Rumeur Google : Les sites qui utilisent des fichiers au format ASP (ou autre type de fichier
non HTML) ne sont pas considérés pour inclusion dans l'index Google.
Réalité : À de rares exceptions près, notre mécanisme d'indexation supporte la plupart des
formats de page et de fichier, en particulier : pdf, asp, jsp, hdml, shtml, xml, cfm, doc, xls,
ppt, rtf, wks, lwp, wri.
30
De plus, j'ai vu sur un forum dédié à Google que celui ci pouvais indexer du php (ça on
savais) mais par contre qu'il ne le faisait pas lorsqu'il y à les sessions activées ... en effet,
cela créée autant de pages "différentes" que de clic sur les liens. donc il faut désactiver les
sessions .... du type :
catalog/product_info.php?products_id=127&osCsid=59e75e142448b463d997f8b0a0861c4a
Pour éviter les sessions du type &osCsid=59e75e142448b463d997f8b0a0861c4a, il suffit de
déclarer l'utilisation de force des cookies et de mettre les sessions sur false dans la partie
admin. ( admin configuration session)
Il faut que Google trouve des liens vers toutes les pages de votre site (prévoyez une
présentation par thèmes et sous thèmes).
Ne dépassez pas 2 variables passées dans l'URL.
L'idéal est d'utiliser la technique de l'URL Rewriting (je prépare un truc dessus).
Une bonne chose à faire aussi est un plan de site .... cela permet une indexation directe en
gardant un bon PR ... (en général, PR de l'index-1 (car Bl interne))
Pour augmenter encore plus, il faut faire des liens entre la home et nos pages
A - Du point de vu des redirections :
Une redirection est reconnue par les moteurs si elle est faite par header HTTP qui peut se
faire par l'une de ces techniques : la configuration du serveur Web ( voir documentation
Apache, IIS, ...)l'URL rewriting par un programme coté serveur Web ( en php, asp, jsp, ... ),
et pas coté navigateur
Les redirections suivantes ne sont pas reconnues par les moteurs: header HTML : ex :
<meta http-equiv="Refresh" content="20; URL=nouvellepage.html"/>
un langage coté navigateur ( javascript, vbscript, ...)
B - Au sujet des Keywords :
Ici, je ne parle pas des meta keywords mais des mots contenus dans nos pages .....
en tout ca, pour les mots du titre, Google fait la différence. ainsi sur "location" il ne me sort
pas mes pages avec "locationS" en titre.
Donc, attention, il y a certains mots clés que les internautes préfèrent chercher au pluriel et
d'autres au singulier.
il faut aller voir sur plusieurs "génerateurs de mots clés" (adword, abondance, espotting, etc.)
pour savoir pour chaque terme si il est plus recherché au singulier ou au pluriel.
pour blague ou blagues.... je paris sur le pluriel.....je ne cherche pas un site avec une blague
mais un site avec DES blagues. ma requête serait "site de blagues" par exemple.
par contre, je chercherais peut être "gîte Hautes-Pyrénées" si je veux une offre provenant d
un particulier (car il va écrire dans son site "notre gîte en Hautes-Pyrénées vous offre la
possibilité, etc. etc." par contre si je veux une liste de gîtes en Hautes-Pyrénées (genre, un
site de locations de vacances) alors ma requête sera "gîtes en Hautes-Pyrénées"...
31
voila pour des exemples que je connais. En conclusion :
- ça dépend des mots clés
- ça dépend du positionnement que l'on cherche
- ça dépend de ce que cherche les visiteurs
le mieux, c est les deux !!
Au sujet des mots clés (récup sur différents forum...):
L'erreur classique est de vouloir optimisé sur un seul mot clé... et ils sont des milliers à faire
la même chose sur le même mot.
Réveillez vous ! Faites marcher vos méninges ! Convoquez la famille pour une séance de
Brain Storming !
Les internautes ne cherchent pas des réponses en tapant un seul mot dans le moteur. C'est
sur des combinaisons de mots qu'il faut travailler.
Exemple : si vous faites une page sur les lapins... le mot lapin sera très imprécis et il y a de
forte chance que l'internaute fera des requêtes du genre "élevage des lapins" "manteau en
lapin" "alimentation des lapins"... ou même... "comment apprendre à mon lapin à faire pipi
dans sa caisse".
Bref... toutes ces requêtes auront de fortes chances d'aboutir sur votre page si le texte est en
langage naturel et répond aux questions simples et variées des internautes.
Et vaut mieux être 4ème, 5ème, 6ème... sur des tas de requêtes composées que premier sur
un mot simple ....
Il est IMPORTANT de mettre des mots clés "qui tourne autour" du mot clé principal.
Exemple : BATEAU
Tourisme fluvial,Permis bateaux,Monde de la mer,Vente de bateaux neufs,Location de
voiliers,Marée haute,Bateau promenade,etc.
Sur une page contenant beaucoup de texte plus le pourcentage ira vers le haut plus il fera
apparaître un nombre de mots importants... donc la densité doit être en équation avec le
nombre réels de mots clés. Sur un texte de 1000 mots 4% ferait apparaître 40 fois le mot
clé.... ce qui me semble beaucoup.
Donc Google doit prendre en compte à la fois le pourcentage et le nombre de mots.
Mais ne perdons pas de vus que :
" est-il intelligent de chercher a surfer sur la limite acceptable de densité au risque d´ennuyer
ses visiteurs par la répétition du terme visé, de passer a coté de visiteurs qui cherchent des
termes voisins, de risquer d être sanctionné par un algorithme capricieux ?"
Sinon une bonne méthode consiste aussi à bien optimiser sont site pour... L'utilisateur ! Les
gars, vous faite votre site pour les Internautes je pense, non ? Donc bon, faire un joli texte
plein de mot-clés mais au final aussi bien présenté qu'une recette de cuisine, je me demande
si c'est pas la solution..."
32
A méditer .....
C - Une fois ceci réalisé, voici des points importants à vérifier :
1- Vérifiez que votre site est indexé par Google. Pour cela utilisez la commande site: . Pour
le site XXXXX , ça donne : site:www.XXXXXX.com. Si vous êtes hébergés en sous domaine
(exemple : Free), utilisez plutôt la commande allinurl:URL. Exemple : allinurl:votresite.free.fr
2- Vérifiez que vous n'utilisez pas des liens en javascript. Préférez des liens ayant un format
standard.
3- Vérifiez que vous n'utilisez pas plus de 2 paramètres dans vos URL, et qu'aucun
paramètre ne s'appelle 'id'. Le mieux serait d'utiliser l'URL Rewriting.
4- Si votre site utilise des sessions, vérifiez que l'identifiant de session n'est pas passé dans
l'URL, sinon votre site ne sera pas indexé.
QUOTE
cf : il suffit de déclarer l'utilisation de force des cookies et de mettre les sessions sur false
dans la partie admin.
5- Vérifiez que d'autres sites font des liens vers le vôtre, avec la commande link: de Google
(attention, elle ne donne pas tous les liens, mais cela ne veut pas dire qu'ils ne sont pas pris
en compte pour le PageRank). Complétez la recherche sur AllTheWeb en tapant votre URL
dans le champ Word Filters, ligne "Must include", puis en choisissant "in the link to URL".
6- Vérifiez que GoogleBot passe sur toutes vos pages. Installez pour cela le script
RobotStats, c'est gratuit, et c'est ici
7- Soyez patient ! Comptez au moins 2 mois pour commencer à être bien référencé. Il faudra
attendre au moins 1 ou 2 Google Dance
8- Pour suivre efficacement son indexation dans google, voici la page des actions que nous
pouvons utiliser : http://www.google.com/help/operators.html
D - Pour terminer, voici une petite liste des choses à ne pas faire :
* Pas de Frame,
* Pas de PHPSESSID,
* Pas trop de variable (2 max),
* Pas de id et ID ,
* Pas de Flash ,
* Pas de Javascript,
* Pas de mauvais liens => que des liens de qualité et travaillés,
* Pas de mauvaise navigation ,
* Pas de pages en construction ,
* Pas d'impatience => apprendre à être patient,
* Les redirection meta refresh à 0 ,
* Les faux noms de domaines avec redirection javascript ou frame 100%,
* pas de 404,
* Ne pas laisser les balises Meta vides.
* Ne pas faire de liens entrant ou sortant vers des sites Blacklistés par Google.
Et n’oubliez pas le plus gros point …. LA PATIENCE !
33
7 Erreurs
7.1
Warning: Unable to connect to database server ?
Comme pour cette erreur (ici) La boutique n'arrive pas à se connecter à la base de données.
Le warning précise généralement la cause de façon plus précise ("Access denied for user"
par exemple)
Pour corriger l'erreur, vérifiez que la base de données existe bien (par phpmyadmin par
exemple) et vérifiez dans les configure.php (dans l'admin/includes/ et catalog/includes/) que
les données d'accès à la base sont correctes.
En fin de fichier:
Code:
// define our database connection
define('DB_SERVER', 'sql'); // 'sql' est le nom ou l'adresse du
serveur sql exemples ('localhost', '127.0.0.1'...)
define('DB_SERVER_USERNAME', 'user_name');// nom d'utilisateur
define('DB_SERVER_PASSWORD', 'password'); // mot de passe sql
define('DB_DATABASE', 'ma_base_osc'); // nom de la base
7.2
Parse error: parse error in /xxx/languages/french/xxx.php on line 1
Cela peut souvent provenir de l'outil FTP utilisé ou de sa configuration. Il est conseillé de
transférer tous ses fichiers en mode BINAIRE.
Les scripts PHP sont des fichiers texte. ils peuvent donc être détectés comme tel par le
mode auto et être transférés en ASCII.
Or le mode ASCII effectue une conversion des retours chariot à la volée. Ce système est
prévu à l'origine pour rendre lisibles les fichiers textes sur toutes les plateformes en sachant
que UNIX, PC ou MAC ont chacun leur standard en matière de balisage des fins de ligne.
Certains fichiers ont pu être créés avec des sauts de lignes non reconnus et être transférés
SANS saut de ligne... d'où l'erreur de parse ligne 1, le fichier ne contenant plus qu'une ligne.
Cette erreur est souvent rencontrée sur les fichiers de langue FR.
Il faut donc bannir le mode auto ou le mode ASCII pour le transfert des scripts PHP. Seul le
mode BINAIRE assure un transfert intégral bit/bit (ou octet/octet) sans modification du
contenu d'un fichier.
Attention, il a été rapporté que certains outils FTP s'entêtent à transférer les fichiers PHP en
mode ASCII malgré la désactivation du mode auto. Vérifiez donc la validité de votre
application FTP.
7.3
FATAL ERROR: register_globals is disabled in php.ini, please enable it!
??
OsCommerce jusqu'à la version MS2 n'est pas conçu pour fonctionner avec une
configuration php dont le REGISTER_GLOBALS est désactivé. La compatibilité
d'OsCommerce est prévue pour la version MS3 (voir le workboard du dévelop-pement d'osc
pour être informé de l'évolution)
Il est donc nécessaire de le mettre sur ON.
34
Pour cela 2 cas possible.
Hébergement sur un serveur distant mutualisé
Peu de chance que votre hébergeur vous laisse changer la configuration de php. Le plus
simple est de changer d'hébergeur ou d'attendre la MS3 ou enfin de chercher une adaptation
possible du code de la boutique sur oscommerce.com
Hébergement local
Il suffit d'éditer le php.ini et de modifier la ligne register_globals = off et le passer sur "on"
Pour ceux qui travaillent en local sous easyphp le php.ini se trouve dans c:\web\easyphp17\apache\ pour easyphp 1.7 (ou c:\windows pour les versions précédentes) Attention vous
trouverez 2 lignes register_globals. Il faut bien modifier la ligne active (la deuxième) et pas
celle des commentaires (erreur classique lorsque l'on ouvre un php.ini pour la première fois).
Une fois la modification faite, il est nécessaire de relancer le serveur par la ligne de
commande "sudo apachectl restart" ou par easyphp ou au pire en redémarrant votre
machine
7.4
1146 - Table 'xxxxxx' doesn't exist select configuration_key as cfgKey,
configuration_value as cfgValue from configuration pourquoi ce message
d'erreur?
La réponse est dans la question:
Citation: 1146 - Table 'xxxxxx' doesn't exist
En français dans le texte "la Table 'os.configuration' n'existe pas". L'installation a mal été
configurée et la boutique ne trouve pas la base de donnée mysql nécessaire à son
fonctionnement.
2 solutions:
- la méthode microsoft : ça marche pas je réinstalle.
En prenant soin de bien suivre le mode d'emploi :
Citation:
4. Créez votre base de données vide MySql et gardez sous le coude le nom de la base de
données, le nom d’utilisateur et le mot de passe. Vous en aurez besoin dans la section
suivante, pour l'installation d’Oscommerce.
- la méthode soft : vérifier que la base de données existe bien (par phpmyadmin par
exemple) et vérifier dans les configure.php (dans l'admin/includes/ et catalog/includes/) que
les données d'accès à la base sont correctes. En fin de fichier:
Code:
// define our database connection
define('DB_SERVER', 'sql'); // 'sql' est le nom ou l'adresse du
serveur sql exemples ('localhost', '127.0.0.1'...)
define('DB_SERVER_USERNAME', 'user_name');// nom d'utilisateur
define('DB_SERVER_PASSWORD', 'password'); // mot de passe sql
define('DB_DATABASE', 'ma_base_osc'); // nom de la base
7.5
Quelles sont les erreurs PHP courantes ?
Avant de poser votre question sur le forum, cherchez à comprendre vos erreurs de
script. Tout le monde y gagnera et vous progresserez efficacement en php. Les messages
d'erreurs sont souvent explicite, il suffit d'apprendre à les lire.
35
Voilà quelques erreurs courantes et la méthode pour les comprendre, extrait du site
phpdebutant.org. Vous pouvez vous y reporter pour approfondir tout cela.
>>> Les erreurs courantes
L'erreur la plus courante, mais aussi la facile à corriger, est la "parse error on line x". Il s'agit
d'une erreur de syntaxe. Lorsque cette erreur se produit, il se peut que vous ayez oublié un ;
a la fin d'une instruction par exemple, des mélanges entre simple quote ' et double quote " ou
bien un oubli de ) ou de }. Sachez aussi que l'erreur peut se produire à la ligne x qu'indique
php, ou bien avant, mais jamais après. Une solution pour évitez ce genre d'erreur est
d'utiliser un editeur de texte qui propose la coloration syntaxique. Bien souvent cela vous
permettra de detecter des erreurs de syntaxe.
Les erreurs dues à des requetes vers mysql sont aussi très fréquentes. Pour comprendre
d'où vient l'erreur, l'astuce primordiale est de tester ses requetes. Voici un exemple pour
tester ses requetes (merci Perrich !) :
Code:
<?
$requete = "SELECT * FROM matable WHERE champ='toto'";
$query = mysql_query($requete) or die ('ERREUR '.$requete.'
'.mysql_error());
?>
La fonction mysql_error() renvoie une description de l'erreur précisant par exemple
qu'aucune table n'a été séléctionnée. N'hésitez pas à utiliser cette astuces a CHAQUE
requete, vous gagnerez du temps par la suite a debugger.
Une autre erreur assez courante est celle-ci 'Header already sent...'. Cela signifie que du
texte a déjà été envoyé avant l'envoi des entêtes http par le serveur. Les fonction
concernées par l'envoi d'headers sont session_start(), setcookie() et bien evidemment
header(). Par conséquent, avant ces fonctions, il ne faut aucun affichage de texte, c'est à
dire aucun appel à la fonction echo par exemple.
Si vous ne trouvez toujours pas l'erreur, n'hesitez pas à vérifier le contenu de vos
variables tout au long du scripts. Pour cela, un simple echo $variable; suffit. Si la variable ne
contient pas ce que vous souhaiter, alors reverifier le code avant le echo, l'erreur est avant.
Si la variable contient ce que vous voulez, alors effacer cettte instruction et refaite un echo
un peu plus loin. Au fur et a mesure vous trouverez l'endroit qui ne va pas et vous pourrez
corriger.
Pensez aussi à tester vos structures conditionnelles. En faisant des echo à l'interieur,
selon vous saurez si oui ou non php est rentré à l'interieur d'un boucle ou si la condition est
vérifiée ou non.
7.6
Warning : ... Header Already sent ... ?
Depuis que j'ai édité certains fichiers, OSC ne fonctionne plus correctement cela semble lié à
l'enregistrement de session : "Warning: Cannot send session cache limiter - headers already
sent ... "... suivi d'un nom de fichier.
L'erreur provient de la fonction header() qui ne supporte aucun code html ou ligne vide avant
son appel.
Il faut donc vérifier que tous les fichiers qui ont été édités ne comportent pas une ligne vide
avant la première balise <?php ou après la dernière balise ?>
exemple :
36
Code:
126 define('TEXT_REQUIRED','Requis');
127 ?>
128
il faut supprimer la ligne 128.
On peut localiser le fichier fautif en cherchant dans les fichiers exécutés dans la procédure
en cours (login, checkout, products...) sans oublier les fichiers liés dans languages/...
NB Cela peut aussi provenir d'un défaut de transfert FTP des fichiers.
Normalement les fichiers PHP devraient être transférés en ASCII (mode texte) Mais une
mauvaise interprétations des caractères de fin de ligne et leur conversion par le mode ASCII
peut faire que le fichier se trouve stocké sur le serveur sur une seule ligne, d'ou la cause des
problèmes. Un nouveau tranfert des scripts PHP en Binaire est alors la solution.
7.7
Comment enlever ce message d'erreur à l'installation de ma boutique
"Attention: Il est possible d'écrire sur le fichier de configuration" ?
Ce "warning" est uniquement destiné à attirer votre attention sur le risque potentiel que cela
représente pour votre boutique. Pour pallier à ce risque il faut modifier les droits d'accès à
ces fichiers de configuration (configure.php du catalog et de l'admin) et enlever le droit
d'écriture:
-soit en local en suivant la procédure propre à votre environnement
-soit en distant en règlant le chmod sur 444.
Certains hébergeurs ne permettent pas de changer les droits d'accès sur les fichiers et
répertoires.
Dans ce cas, la meilleure solution consiste à changer d'hébergeur.
Au pire, il est possible de désactiver ces messages d'erreur dans application_top
Code:
define('WARN_CONFIG_WRITEABLE', 'false');
Attention!! ceci désactive le warning mais ne règle pas le problème
7.8
Parse error: parse error, unexpected $
Parse error: parse error, unexpected $ in .../fichier.php on line 249 Bien sur il n'y a que
248 lignes au fichier.php.!
Il y a un bloc qui est mal fermé : en gros, il manque quelque part une accolade fermante. Le
mieux est de progresser par dichotomie : tu pars du fichier original et tu intègres les modifs
petit à petit, en faisant à chaque fois des tests.
7.9
Warning: setlocale() [function.setlocale]: Passing locale category name as
string is deprecated. Use the LC_* -constants instead. in french.php on
line 17 ?
Pour la définition des locales (dans les fichiers includes/languages/french.php ou autres), les
versions récentes de PHP préfèrent que les LC soient définis comme des chaînes de
caractères et pas comme des constantes.
S'assurer de bien mettre des quotes autour des constantes LC_*
Par exemple, dans le fichier french.php, remplacé
37
Citation:
setlocale('LC_TIME', 'fr_FR.ISO_8859-1');
par
Citation:
setlocale(LC_TIME, 'fr_FR.ISO_8859-1');
8 Langue
8.1
J'ai toujours LE_TEXTE_MANQUANT qui apparaît dans ma langue à la
place de "la jolie phrase" quand je selectionne la langue "chinois" ?
Pour
toutes
les
tradutions
manquantes
apparaissant
sous
la
forme
LE_TEXTE_MANQUANT, faire une recherche avec votre éditeur préféré du texte
"define(LE_TEXTE_MANQUANT," dans tous les fichiers de la boutique, ou plus précisement
dans les fichiers includes/language. Généralement ce "define" se trouve dans le fichier
langage/la_langue/fichier_encours.php ou dans le fichier language/la_langue.php
Une fois trouvée la ligne dans le fichier correspondant, par exemple chinois/le_fichier.php, la
copier et la coller à sa place manquante avec sa traduction dans ma_langue/le_fichier.php :
Code:
define(LE_TEXTE_MANQUANT, 'et voila ma traduc');
Attention: Ne confondez pas changer UNE phrase et une parse erreur ligne 1 qui donne
TOUS les textes de la page manquants. Dans ce cas, regardez plutôt du coté du ftp qui
supprime les retours à la ligne.
8.2
Comment changer une phrase/un texte?
Pratiquement TOUS les textes sont définis dans les fichiers includes/languages/ de l'admin
et du catalog sous la forme define('LA_VARIABLE', 'la traduction'); Il suffit donc de trouver 'la
traduction' que l'on veut modifier.
La méthode rapide
Utiliser un bon éditeur de texte permettant la recherche dans plusieurs fichiers d'un
répertoire. Attention à la portion de texte recherché: les lettres accentuées étant codées en
html ou en iso8859 et les apostrophes ' étant précédées d'un antislash "\" dans les define();
préférez rechercher une portion de texte sans caractères spéciaux.
La méthode didactique de Gnidhal:
1. regarder le nom du script dans lequel apparaît le texte que l'on souhaite changer. Par
exemple, prenons le fichier dans le catalog product_info.php,
2. regarder dans le fichier de même nom qui se trouve dans le répertoire
includes/languages/french (pour la langue française),
trouver le texte qui apparaît dans le navigateur par celui souhaiter,
3. si le texte n'est pas dans ce fichier, regarder dans le fichier commun de la langue,
includes/languages/french.php (toujours pour le français),
4. si le texte n'est toujours pas, alors il se peut qu'il soit dans la base de données. Pour
bien déterminer l'origine du texte lorsque l'on arrive à cette étape, il est préférable de
jeter un oeil au source.
38
La majorité des textes localisées pour une langue sont résolus avant d'atteindre la dernière
étape.
Une fois le texte modifié bien vérifier que cela change au niveau du navigateur. Il se peut
que plusieurs définitions donnent la même traduction !!!
Enfin, si vous ne trouvez toujours pas votre texte, il se peut que celui-ci soit ajouté en base
de données (configuration de l'admin et des modules par exemple) Dans ce cas, recherchez
le texte dans votre base de données avec un outil de type phpmyadmin.
Ces textes en base sont peu nombreux.
8.3
Comment peut-on changer, modifier, corriger le texte d'accueil
"Bienvenue cher Visiteur..." ?
Ce texte est contenu dans une constante define() située dans le fichier principale de la
langue. Pour le français éditer le fichier /catalog/includes/languages/french.php et rechercher
la constante 'TEXT_GREETING_GUEST'.
8.4
J'ai tout bien configuré ma langue par défaut en français, mais mon
navigateur se connecte toujours en anglais ?
L'auto détection de la langue se fait par osc dans cet ordre:
(1) valeur du paramètre GET 'language' (passée en variable une fois la session ouverte)
(2) détection des paramètres de préférences du browser
(3) langue par défaut (paramétrée dans l'admin)
Si l'on utilise un browser réglé avec ses préférences en Anglais ou un browser ne gérant pas
cette donnée, voire un browser buggé (IE5.2 OSX), la langue choisie sera donc l'anglais. Les
préférences de langues du browser étant prioritaires par rapport à la langue "par défaut"
définie.
Deux parades pour pallier à ce problème (sans le résoudre vraiment dans l'esprit d'osc):
1- Pour la MS1 seulement faire une page index.php redirigeant sur la page default.php
contenant la variable language=fr
Code:
<?php
require('includes/application_top.php');
tep_redirect(tep_href_link(FILENAME_DEFAULT, 'language=fr'));
?>
Ce patch résoud les problèmes d'entrée dans la boutique par la page par défaut (à condition
d'avoir d'avoir encore cette page default.php (plus présente dans la MS2 ou de ne pas l'avoir
déjà renommée "index.php").
Il subsiste quelques défauts avec cette méthode, comme la perte de la langue en fin de
session ou l'absence de langage défini en arrivant dans le site par une autre page que la
page index.
2- La solution radicale: Supprimer la détection des paramètres de préférences du browser en
la dans application_top.php
Pour la MS1 la ligne:
Code:
39
include(DIR_WS_CLASSES . 'language.php');
$lng = new language($HTTP_GET_VARS['language']);
// if (!isset($HTTP_GET_VARS['language'])) $lng>get_browser_language();
$language = $lng->language['directory'];
$languages_id = $lng->language['id'];
}
Pour la MS2 les 2 lignes:
Code:
if (isset($HTTP_GET_VARS['language']) &&
tep_not_null($HTTP_GET_VARS['language'])) {
$lng->set_language($HTTP_GET_VARS['language']);
// } else {
// $lng->get_browser_language();
}
Cette solution plus radicale est plus efficace mais l'on perd alors l'ergonomie de la détection
automatique de la langue.
8.5
J'aimerais désactiver certaines langues par défaut et n'en utiliser que 2
(fr/ang). Y a t-il un moyen de désactiver les 2 autres langues ? Ou faut-il
absolument les supprimer?
Les langues se désactivent simplement depuis le panneau d'admin par la touche "effacer"
dans Localisation > Langues. L'effacement n'a lieu en fait que dans l'affichage du magasin
mais tant que les répertoires de langue n'ont pas été supprimés, il est très simple de
remettre une langue "effacée" par le bouton "Nouvelle langue".
Il suffira de remettre le chemin d'accès au dossier spécifique à la langue par exemple :
/racine_du_site/catalog/includes/languages/french.
Attention, la dernière langue déclarée dans l'admin (position la plus en bas) est toujours la
langue par défaut pour les visiteurs non enregistrés. Bien régler l'ordre optionnel donc.
8.6
J'ai bien configuré le français par défaut dans l'admin, mais c'est l'anglais
(ou l'espagnol) qui revient toujours comme langue par défaut quand on
clique sur un des liens de la page ?
Le phénomène se produit lorsque on déplace la boîte de langue qui est à la base située en
bas de la colonne de droite.
La dernière langue affichée dans ce bloc est désignée comme langue par défaut par son
positionnement dans le box.
Il suffit de modifier l'ordre des langue dans l'admin pour que tout fonctionne correctement.
La langue par défaut doit être la dernière (valeur la plus élevée dans l'ordre de tri).
8.7
L'affichage des dates se fait toujours en anglais quelle que soit la lange
choisie, comment faire pour qu'elle apparaisse dans la langue de
l'interface ?
La langue de la date est définie par la fonction setlocale(LC_TIME
appelé dans le dossier principal de la langue (catalog/includes/languages/...)
...
40
Pour le français, c'est dans le fichier french.php.
Cette fonction est un peu ombrageuse, elle exige une syntaxe liée au type de serveur et est
très à cheval sur la présence ou non des 'quotes' (essayer LC_TIME et 'LC_TIME').
Code:
setlocale('LC_TIME', 'fr_FR.ISO_8859-1'); // serveur NUX
setlocale('LC_TIME', 'fr'); // Serveur Win32
setlocale("LC_TIME", "fr"); //Solaris 8 et FreeBSD
pour plus de détails se reporter la la doc PHP.
Malgré cela il se peut que la fonction setlocale reste capricieuse, selon votre serveur
(OpenBSD par exemple).
Dans ce cas la solution de simplicité consiste à utiliser le FORMAT_SHORT pour n'avoir plus
que les dates sous la forme jj/mm/aaaa et non plus day month year du plus mauvais effet.
Code:
define('DATE_FORMAT_LONG', '%d/%m/%Y');
9 Look & Feel
9.1
Comment modifier ou effacer la ligne du bas : "Copyright © oscommerce"
?
Le contenu de cette ligne est situé dans le fichier principal de la langue
Mais avant de supprimer la totalité du contenu de cette ligne, consultez la licence d'utilisation
d'osCommerce ainsi que les textes qui régissent la licence "GNU General Public License".
La license GPL a des droits (libre ne veut pas dire hors droits). C'est vrai aussi
qu'oscommerce n'impose pas de laisser le copyright si l'aspect de la boutique a été modifié
(seul le copyright de l'admin est "intouchable")
Après, il y a le bon sens et la correction (qui eux ne sont pas régis par des lois) et cela ne
coûte rien de laisser un copyright pour utiliser un produit qui soulage de mois de boulot ou de
milliers d'euros de développement.
9.2
Comment modifier ou effacer la ligne du bas : "Copyright © oscommerce"
?
Le contenu de cette ligne est situé dans le fichier principal de la langue
Mais avant de supprimer la totalité du contenu de cette ligne, consultez la licence d'utilisation
d'osCommerce ainsi que les textes qui régissent la licence "GNU General Public License".
La license GPL a des droits (libre ne veut pas dire hors droits). C'est vrai aussi
qu'oscommerce n'impose pas de laisser le copyright si l'aspect de la boutique a été modifié
(seul le copyright de l'admin est "intouchable").
Après, il y a le bon sens et la correction (qui eux ne sont pas régis par des lois) et cela ne
coûte rien de laisser un copyright pour utiliser un produit qui soulage de mois de boulot ou de
milliers d'euros de développement.
9.3
Comment supprimer une phrase mais aussi le tableau où elle apparaît ?
Le principe d'une modification d'affichage reste toujours le même:
0- Faire une sauvegarde avant modification, comme toujours.
41
1- Repérer la variable utilisée dans les fichiers languages, définissant "Le texte à
supprimer" que l'on veut modifier,
Code:
define (LA_VARIABLE_UTILISEE, 'Le texte à supprimer');
2- Rechercher LA_VARIABLE_UTILISEE dans la page.php concernée (repérer le nom de
la page dans l'adresse du navigateur). Si cette variable n'est pas dans la page, elle peut-être
présente dans un autre fichier appelé par un include(). Il faut dans ce cas rechercher
LA_VARIABLE_UTILISEE dans tous les fichiers de la boutique. Un bon éditeur texte en a
pour 3 secondes et demi.
3- Supprimer tout le code html se rapportant à l'affichage de ce texte en faisant attention
de bien supprimer les balises ouvrantes ET fermantes, quelque chose comme
Code:
<table>
<tr>
<td> <?php echo LA_VARIABLE_UTILISEE; ?></td>
</tr>
</table>
Suivant le résultat voulu il pourra être nécessaire de supprimer tout le tableau (de <table> à
</table>) ou seulement la ligne (de <tr> à </tr>), ou seulement l'echo, ou... à chacun
d'adapter. Il faut juste être attentif de respecter que les balise html ouvertes sont toujours
bien fermées.
9.4
Comment fonctionnent les CSS ? Pourquoi les noms des produits ne
changent de couleur que si je modifie les A:hover et le A: de la feuille
CSS?
Tout simplement parce que A est la dernière balise apliquée au nom des produits.
Comme son nom l'indique les CSS sont des feuilles de style EN CASCADE!!! c'est à dire que
c'est toujours le style correspondant à la derniere balise qui est appliqué. Ce qui est bien
pratique et permet d'appliquer un style ajouté aux précédents
La difficulté arrive quand on cumule les styles.
par exemple la page html contient
Code:
<table border="0" cellpadding="0" cellspacing="0" class="rouge">
<tr class="texteBlanc">
<td class="souligne">texte et <a href="#">lien</a> mis en
forme</td>
</tr>
</table>
et le css
Code:
.rouge {
background-color: #FF0000;
}
.texteBlanc {
color: #FFFFFF;
}
42
.souligne {
text-decoration: underline;
}
On affiche donc un texte blanc, souligné sur un fond rouge. Par contre si le lien <a> est
défini dans la css
Code:
a {
color: #FF0000;
}
Le lien est invisible car rouge sur rouge.
Pour pallier au problème il suffit d'ajouter une class dans la balise <a>
Code:
<a href="#" class="lien">
Permettant de définir ce que l'on veut comme style.
il est également possible de définir un effet de rollover spécifique à ce lien. Par exemple,
pour que le lien soit barré quand on le survole, il suffit de définir le style ".lien:hover"
Code:
.lien {
color: #FFFFFF;
}
.lien:hover {
text-decoration: line-through;
}
9.5
J'aimerai modifier les styles, comment s'y retrouver dans tous ces styles
déclinés dans le .css par rapport aux pages affichées ?
On peut toujours rechercher dans le script php qui gènère la page quelles sont les classes
css implémenté, pour les boxes droite et gauche, les noms de style sont explicite comme
TR.infoBoxHeader mais ailleurs, il est vrai qu'au milieu du code on a du mal à pointer
exactement quel style est où.
Une astuce consiste à afficher la page dont on veut modifier certains styles dans le
navigateur. Puis afficher le code source html de la page (option du navigateur).
On recherche alors le texte que l'on souhaite modifier puis la balise <class=" qui précède
cette portion ...
Il n'y a plus qu'à se reporter au .css ! CQFD!
* Attention aux caractères spéciaux htlm (accentués) lors de la recherche !
** La modification d'un style peut avoir des conséquences sur d'autres parties du site
9.6
Comment faire pour modifier des contibutions qui font appel au css gère
le THEMA de la Creload 5 ?
Souvent pour pallier à ce problème, trouver
Code:
<link rel="stylesheet" type="text/css" href="stylesheet.css">
Remplacer par
Code:
43
<link rel="stylesheet" type="text/css" href="<? echo
THEMA_STYLE;?>">
9.7
Comment mettre un banière flash dans mon en-tête ?
Pour le bandeau flash dans le header, un code qui semble plus complet pour changer les
parametres par defauts:
1. creer un dossier flash dans le dossier catalog
2. dans \catalog\includes\header.php juste avant :
Citation:
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr class="header">
coller ce code :
Code:
<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR>
<TD><OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
CODEBASE="http://active.macromedia.com/flash2/cab5/swflash.cab#vers
ion=2,1,0,12" HEIGHT=189 WIDTH=100% ID="Shockwave">
<PARAM NAME="Movie" VALUE="flash/rc.swf">
<PARAM NAME="Quality" VALUE="AutoHigh">
<PARAM NAME="Loop" VALUE="0">
<PARAM NAME="Play" VALUE="1">
<PARAM NAME="Scale" VALUE="exactFit">
<PARAM NAME="SAlign" VALUE="M">
<EMBED ID="Shockwave1" SRC="flash/rc.swf"
HEIGHT=100% WIDTH=1280 PALETTE=BACKGROUND Quality=AutoHigh
Loop=FALSE Play=TRUE Scale=ShowAll SAlign=L
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/"></OBJEC
T>
</TD>
</TR>
</TABLE>
Propriété <PARAM NAME="Scale" VALUE="exactFit"> ; indique le dimensionnement
actuel de l'animation Flash sur la scène. La propriété scaleMode oblige l'animation à adopter
un mode de redimensionnement spécifique. Par défaut, l'animation utilise les paramètres
HTML définis dans la boîte de dialogue Paramètres de publication.
La propriété scaleMode peut utiliser les valeurs "exactFit", "showAll", "noBorder" et
"noScale". Toute autre valeur définit la propriété scaleMode à la valeur par défaut de
"showAll".
9.8
Comment changer les polices de caractère du site et la présentation ?
Tous ces éléments sont modifiables depuis le fichier de feuille de style stylesheet.css dans le
dossier /catalog/.
Pour la version Creload 5 comportant l'option Thema préinstallée le fichier stylesheet.css est
situé
dans
le
dossier
en
rapport
avec
le
thème
Thema
utilisé
:
/catalog/includes/classes/thema/numéro_du_style.
La StyleSheet.css définie aussi les couleurs des bandeaux de boxes et des
caractères.
44
9.9
Comment changer le logo osCommerce en haut a gauche ? et aussi les
images "mon compte, Panier, Commander" à droite ainsi que les liens sur
la droite : Mon compte | Panier | Commander ?
Tous ces éléments sont accessibles dans le script catalog/includes/header.php
Pour le logo par exemple il faut repérer la ligne :
Code:
<td valign="middle"><?php echo tep_image(DIR_WS_IMAGES .
'oscommerce.gif', 'osCommerce'); ?></td>
Les autres icones de droite apparaissent sur la ligne juste en dessous. Quant au bandeau
de liens à droite, il faut localiser la ligne :
Code:
<td align="right" class="headerNavigation"><?php if
(tep_session_is_registered('customer_id')).....
Attention à la syntaxe !
9.10 Comment insérer un logo en Macromedia Flash dans ma page principale ?
Il faut tout d'abord localiser le logo : il est situé dans le script catalog/includes/header.php.
Ensuite il faut remplacer l'image du logo par le code ci-dessous :
ciju a écrit:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/s
wflash.cab#version=VersionFlash,0,0,0" width="xxx" height="xxx">
<param name=movie value="flash/ton_anim.swf">
<param name=quality value=high>
<embed src="flash/ton_anim.swf" quality=high
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi
?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwaveflash" width="xxx" height="xxx">
</embed>
</object>
Il faut bien entendu compléter les zones repérées en rouge par les valeur qui vous sont
propre : version de Flash utilisée (4, 5...) les dimensions de l'animation (xxx) et le nom du
fichier flash.
Enfin il faut créer un répertoire /flash dans /catalog et y placer son fichier.
Précisions de PiBo
Il existe pour la plupart du temps un fichier html qui accompagne le swf (sauf exception)....
Application flash menu fichier/publier...
le fichier généré par la commande ci-dessus contient le code à inséré.
Donc copier-coller (sauf si vous posez entre des balises php, attention au guillemets)
9.11 Comment faire pour que les images ne soient pas déformées à l'affichage
?
1 - Le plus simple est de ne définir qu'une seule dimension de contrainte dans l'admin.
Dans "taille des images" on ne spécifie que la hauteur à 80 par exemple et rien pour la
largeur.
Inconvénient, si l'image d'origine est de taille L400 x H50 (comme une bannière par
exemple) la largeur n'étant pas limitée reste en homothétie à la taille d'origine ce qui fait une
image immense (affichée à 640 de large).
45
2 - Pour conserver une homothétie de l'image tout en gardant des contraintes d'affichage
hauteur
et
largeur
il
faut
ajouter
quelques
lignes
au
fichier
catalog/includes/functions/html_output.php
repérer la ligne:
Code:
if ( ($width) && ($height) ) {
puis ajouter juste en dessous le code comme dans l'exemple suivant :
Code:
if ( ($width) && ($height) ) {
///### ADD homothetie image
if ($get_size_image = @getimagesize($src)) {
$ratio_image_product =
$get_size_image[0]/$get_size_image[1];
$ratio_image_print = $width/$height;
if ($ratio_image_product > $ratio_image_print) {
$height = $width / $ratio_image_product;
}
elseif($ratio_image_product < $ratio_image_print) {
$width = $height * $ratio_image_product;
}
}
///### end ADD
Les images respecteront les contraintes et seront toujours affichées sans déformation.
NB : Dans les versions d'OSC n'utilisant qu'une seule image par produit, il faut veiller à ce
que les images d'origine ne soient pas trop grandes. En effet le redimensionnement est
effectué par le navigateur, ce qui signifie que l'image est téléchargée dans sa taille d'origine.
De trop grandes images alourdissent les pages!
9.12 Comment placer la barre de recherche dans le bandeau supérieur sous le
logo ?
Pas à Pas
1 - créer un fichier header_search.php dans catalog/includes/
Code:
<?php
/*
$Id: header_search.php,v 1.1.1.1 2003/04/06 12:15:21 wilt Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2001 osCommerce
Released under the GNU General Public License
## Patch bandeau Search dans Header : GniDhal fx@geniehalles.com ##
*/
?>
<!-- Header search //-->
<tr>
46
<td align="center" valign="top" class="BoxHeadingSearch"
height="20">
<?php
$hide = tep_hide_session_id();
echo '<form name="quick_find" method="get" action="' .
tep_href_link(FILENAME_ADVANCED_SEARCH_RESULT, '', 'NONSSL', false)
. '">' ;
echo $hide . BOX_SEARCH_TEXT . '&<input type="text" name="keywords"
size="10" maxlength="30" value="' .
htmlspecialchars(StripSlashes(@$HTTP_GET_VARS["keywords"])) . '"
style="width: ' . (BOX_WIDTH-30) . 'px; height:20px">&<input
type="submit" value="go" />&&&<a class="BoxHeadingSearch" href="' .
tep_href_link(FILENAME_ADVANCED_SEARCH) . '"><b>' .
BOX_SEARCH_ADVANCED_SEARCH . '</b></a></form>' ;
?>
</td>
</tr>
<!-- Header_search_eof //-->
2 - modifier le header.php (dans catalog/includes) en ajoutant simplement la ligne require
comme ci dessous à la fin de la première table (celle qui inclut le logo) entre le dernier </tr>
et le </table>
Code:
</tr>
<?php require(DIR_WS_INCLUDES . 'header_search.php');?>
</table>
<table border="0" width="100%" cellspacing="0" cellpadding="1"
height="20">
<tr class="headerNavigation">
<td class="headerNavigation">&&<?php echo $breadcrumb->trail(' &
'); ?></td>
<td align="right" class="headerNavigation"><?php if
(tep_session_is_registered('customer_id')) { ?><a href="<?php echo
tep_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"
class="headerNavigation"><?php echo HEADER_TITLE_LOGOFF; ?></a> &|&
<?php } ?><a href="<?php echo tep_href_link(FILENAME_ACCOUNT, '',
'SSL'); ?>" class="headerNavigation"><?php echo
HEADER_TITLE_MY_ACCOUNT; ?></a> &|& <a href="<?php echo
tep_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"
class="headerNavigation"><?php echo HEADER_TITLE_CART_CONTENTS;
?></a> &|& <a href="<?php echo
tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"
class="headerNavigation"><?php echo HEADER_TITLE_CHECKOUT; ?></a>
&&</td>
</tr>
// Pour placer la barre de recherche sous la barre de navigation,
déplacer la ligne ici
</table>
3 - créer le style BoxHeadingSearch dans la CSS du site selon votre charte graphique,
exemple :
Code:
TD.BoxHeadingSearch {
font-family: Verdana, Arial, sans-serif;
47
font-size: 10px;
font-weight: bold;
color: #FFFFFF ;
}
A.BoxHeadingSearch {
color: #000000;
}
A.BoxHeadingSearch:hover {
color: #FFFFFF;
}
Et voilà ! disent les anglosaxons.
4- supprimer le box de recherche :
require(DIR_WS_BOXES . 'search.php');dans le catalog/includes/column_left.php par un
simple comment'
// require(DIR_WS_BOXES . 'search.php');
NB : attention ! Certains caractères html sont filtrés par le système d'édition du forum. C'est
le cas des espaces insécables html : & nbsp; (ici avec un espace entre le & et nbsp; pour
l'affichage !) dont il ne reste que le &. A corriger donc dans le code ci dessus.
9.13 Comment changer les éléments graphiques comme la flèche à droite de la
têtière de certains boxes couleurs ou les coins des boxes ?
Tous ces éléments graphiques sont situés dans le dossier catalog/images/infobox suivi
éventuellement du numéro du thème Themastyle sur la version Creload5.
9.14 Comment modifier le contenu de la boîte "Informations" et les textes qui
sont liés dans cette boîte ?
Le
contenu
de
la
boîte
information
se
trouve
dans
le
script
/catalog/includes/boxes/information.php. Pour ajouter ou supprimer un des liens contenu
dans la boîte il faut ou supprimer une des lignes :
Code:
'<a href="' . tep_href_link(FILENAME_PRIVACY, '', 'NONSSL') .
'">' . BOX_INFORMATION_PRIVACY . '</a><br>'
ou
en
ajouter
une
avec
un
lien
identique
vers
le
nouveau
fichier
descriptif.
Ici pour exemple le nom de fichier FILENAME_PRIVACY est déclaré dans le script
catalog/includes/application_top.php. Ce fichier (privacy.php) est localisé dans le répertoire
de la langue. C'est lui qu'il faudra éditer pour modifier le contenu du message de la page
principale. Pour les sites multilingues, pensez à éditer/modifier tous les fichiers de même
nom dans les répertoires de langues utilisées.
9.15 Comment changer le header de mes boxes ?
Si tu veux avoir des angles arrondis pour tes box … ben faut aller jeter un oeil sur l'appel de
la class "new" dans le fichier concerner pour le box includes/boxes/lefichierdubox.php :
new infoBoxHeading($info_box_contents, true=angle arrondis, false=angle droit);
Alors tu met "true ,true" pour des angles arrondies partout, ou, "true, false" pour seulement
un coté arrondie..enfin com tu veux quoi !!!!
48
9.16 J'aimerais changer la couleur bleu qui entoure tout mes modules (boxes),
j'ai déjà essayé de le chercher dans le stylecss du thème adéquat mais j'ai
pas trouvé ?
Faut aller voir dans le stylesheet.css sur la class "infoBox" et si tu veux carrément
supprimer les lignes... faut aller dans le fichier : includes/classes/thema_boxes.php, class
infoBox extends tableBox $this->tablecellpadding = '0';
et voilà les lignes autour de la table disparaissent !!!!!
Bien sur juste en dessous tu as le nom du style pour la couleur !!!
9.17 Comment faire pour supprimer un bloc (ou boxe) contenu dans une des
colonnes de droite ou de gauche ou pour le changer de coté ?
Le contenu des colonnes droite et gauche est géré par deux fichiers :
- catalog/includes/column_left.php
- catalog/includes/column_right.php
Les blocs sont insérés par un include ou un require, exemple :
Code:
require(DIR_WS_BOXES . 'whats_new.php');
pour supprimer le bloc il suffit de "comment" la ligne :
Code:
// require(DIR_WS_BOXES . 'whats_new.php');
Pour changer le bloc de coté il suffit de couper/coller la ligne d'un fichier à l'autre. Attention,
certains blocs sont soumis à condition, pensez à déplacer la syntaxe complète de la
condition, exemple :
Code:
if ( (USE_CACHE == 'true') && !SID) {
echo tep_cache_manufacturers_box();
} else {
include(DIR_WS_BOXES . 'manufacturers.php');
}
9.18 Comment fait on pour changer la largeur des box ?
Il suffit dans le fichier /include/application_top.php de modifier la valeur suivante
Code:
// définition de la largeur des boîtes (default: 125)
define('BOX_WIDTH', 125);
9.19 Pourquoi mes mails apparaissent sans accents et avec la mise en forme
Votre Commande & agrave; bien & eacute;t& eacute; enregistr&
eacute;e...??
Les caractères du courriel sont codés en html et le message affiché en texte brut.
deux solutions pour résoudre le problème
Envoyer les mails en html
En réglant la boutique dans l'admin : configuration->E-Mail Options->Utiliser l'html pour les emails-> mettre sur "true". Cette solution simple à l'inconvénient de laisser l'affichage avec les
caractères codés pour ceux qui n'acceptent pas l'html dans leur logiciel de courrier
49
Coder les mails sans html
en recherchant tous les textes utilisés dans les mails et en remplaçant les caractères html
par leur équivalent clavier iso (Attention, sur Mac, respecter le codage windows exemple È
pour le é -& eacute;-)
Cette solution peut présenter des défauts d'affichage sur les pages web utilisant ces textes
avec certains navigateurs
9.20 Où puis-je modifier le contenu de mes mails???
Les mails sont construits dans la page appelée au moment du clic entraînant le
déclenchement d'un process. Pas nécessairement dans les pages que l'on "voit" s'afficher
(exemple checkout_process.php pour le mail de confirmation de commande,
create_account_process.php pour le mail de nouveau compte...) et ils sont envoyés par la
fonction tep_mail().
Pour trouver toutes les pages qui envoient des mails, vous pouvez rechercher cette fonction
tep_mail dans tous les fichiers .php la fonction est de la forme
Code:
tep_mail($name, $email_address, EMAIL_SUBJECT, $email_content,
STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
Le contenu du mail est construit dans les lignes précédentes, dans la variable
$email_content.
9.21 Je souhaiterai que la boite panier n'apparaisse que lorsque le panier
contient au moins 1 article?
Pour avoir l'affichage du panier uniquement s'il contient
catalog/include/column_right.php, il faut remplacer :
Code:
require(DIR_WS_BOXES . 'shopping_cart.php');
qque
chose.
Dans
par
Code:
// display shopping cart box all the time
//require(DIR_WS_BOXES . 'shopping_cart.php');
// if there is nothing in the customers cart, don't display
shopping cart box
if ($cart->count_contents() > 0) include(DIR_WS_BOXES .
'shopping_cart.php');
Ce code autorise soit un affichage fixe de cette boite panier (affichage standard), soit un
affichage 'mobile' de cette boite, c'est a dire uniquement si le panier contient au moins 1
article.
A vous d'activer l'une ou l'autre option.
9.22 Comment puis-je ajouter un bouton 'commander' directement au bas de la
boite 'panier'?
Dans catalog/include/boxes/shopping_cart.php, au bas du fichier il suffit d'ajouter:
Code:
$info_box_contents[] = array('form' => '<form
name="checkout_shipping" method="get" action="' .
tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'NONSSL', false) .
50
'">',
'align' => 'center',
'text' => $hide .
tep_image_submit('button_checkout.gif', IMAGE_BUTTON_CHECKOUT) .
'</a>'
);
et ce juste avant les lignes:
Code:
}
new infoBox($info_box_contents);
?>
</td>
</tr>
<!-- shopping_cart_eof //-->
9.23 Lors de l'affichage du panier en page centrale, je souhaiterai ajouter
une/des remarques au bas de celui-ci comme par ex. des infos sur son
fonctionnement ?
1/Editer le fichier catalog/shopping_cart.php, puis après les lignes 136 à 139:
Code:
<td align="right" class="main"><a href="<?php echo
tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><?php
echo tep_image_button('button_checkout.gif',
IMAGE_BUTTON_CHECKOUT); ?></a></td>
</tr>
</table></form></td>
</tr>
ajouter :
Code:
<tr>
<td align="left" class="main"><br><?php echo TEXT_REMARKS;
?></td>
</tr>
2/il faut ensuite définir la variable "TEXT_REMARKS", c'est à dire le texte à afficher au bas
du panier, et ce, dans les différents fichiers langues:
Dans catalog/include/language/french/shopping_cart.php, on peut par ex. définir comme
texte:
Code:
define('TEXT_REMARKS','
<b>Remarques:</b><br>
- Pour commander plusieurs fois le même article, entrez la quantité
souhaitée
dans la colonne &Qté& et cliquez sur le bouton \'Mettre à jour\'
pour
actualiser votre panier.<br>
- Pour supprimer un produit, cochez la case \'Supprimer\' et
cliquez sur le bouton
\'Mettre à jour\' pour actualiser votre panier.<br>
');
51
et donc dans catalog/include/language/english/shopping_cart.php:
Code:
define('TEXT_REMARKS','
<b>Remarks:</b><br>
- To command several times the same product, please, change the
quantity in the
column &Qty& and press on the button Update to update your shopping
cart.<br>
- To remove a product, please, mark the compartment Remove and
click the button
Update.<br>
');
Reste à faire de même pour les éventuelles autres langues utilisées par votre boutique.
10 Modules
10.1 Pourquoi les modifications faites sur mon module ne sont pas prises en
compte ?
Les modules créent automatiquement des champs dans la base de données nécessaires à
sont fonctionnement, à l'activation du module
Lors de modifications du code source, il est nécessaire de désactiver et réactiver le
module dans l'administration pour que la base de donnée soit mise à jour et les
modifications prises en compte.
10.2 Comment ne pas afficher le module "Frais au total" (table.php) si le
montant de la méthode de livraison est nul?
Il suffit d'ajouter dans le module table.php
Code:
if ($shipping == 0) return;
vers la ligne 70, juste avant
Code:
$this->quotes = array('id' => $this->code,
'module' =>
MODULE_SHIPPING_TABLE_TEXT_TITLE,
'methods' => array(array('id' => $this>code,
.../...
10.3 Comment créer son module de livraison??
Une façon simple de créer son propre module de livraison avec des tables de poids/tarifs
propres à chaque zones de livraison est d'utiliser le modules zones.php. De nombreux
modules (colissimo, chronopost...) ne sont que des adaptations de ce module.
Il suffit de l'éditer et vous aurez toute la description (en anglais) des modifications à effectuer.
En résumé, le module désactivé il faut changer dans les premières lignes de code (après
les commentaires, à la fin de la function zones()
Code:
// CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED
$this->num_zones = 1;
52
Changer le nombre de zones nécessaires, puis activer le module et remplir les tables de
pays et de poids/tarif pour chaque zone.
THAT'S ALL
Le danger de ce module est que les tables de tarifs sont uniquement en base de données
et qu'elles disparaissent en cas de désactivation du module!!! Pour éviter ce désagrément,
vous pouvez mettre en "dur" ces données en ajoutant et modifiant des lignes dans la boucle
de la function install ()
Code:
for ($i = 1; $i <= $this->num_zones; $i++) {
$default_countries = '';
if ($i == 1) {
$default_countries = 'US,CA';
}
deviendra (par exemple pour le module colissimo):
Code:
for ($i = 1; $i <= $this->num_colissimo; $i++) {
$default_countries = '';
if ($i == 1) { // France
$default_countries = 'FR';
$shipping_table = '0.500:7.20, 1:8.40, 2:8.90,
3:9.60, 5:10.70, 7:11.70, 10:13.60, 15:14.90, 30:19.50';
}
if ($i == 2) { // DOM
$default_countries = 'GP,GF,MQ,YT,RE,PM';
$shipping_table = '0.500:9.70, 1:13.70, 2:17.50,
3:21.90, 4:26.30, 5:30.70, 6:35.10, 7:39.50, 8:43.90, 9:46.30,
10:52.70';
}
if ($i == 3) { // TOM
$default_countries = 'NC,PF,TF,FX,WF';
$shipping_table = '0.500:10.30, 1:15.20, 2:24.20,
3:36.10, 5:54.40, 7:77.50, 10:105.20';
}
Si vous voulez créer plusieurs modules il est également facile de dupliquer ce module
(ainsi que les fichiers zones.php des fichiers langages) et de changer le nom des fichiers
"ma_methode.php" par exemple .
Il faut ensuite rechercher/remplacer partout le terme "zones" et le remplacer par le nom du
fichier "ma_methode" le remplacement doit être fait pour la "class zones()" devenant "class
ma_methode()", la "function zones()" devenant "function ma_methode".... Vous pouvez
remplacer TOUS les "zones" par "ma_methode" en respectant la casse (minuscule) et TOUS
les "ZONES" par "MA_METHODE" en respectant également la casse.
Et enfin adapter les define() des fichiers languages (où le remplacement ZONE
>MA_METHODE aura également été fait).
53
10.4 Lors de la simulation d'une commande j'ai ce message au niveau des
modes de livraison alors qu'aucun mode de livraison gratuite n'est actif
coté admin: "Livraison gratuite pour les commandes au dessus de
XXEUR" ?
Dans la partie admin, il suffit de se rendre ici: Admin --> Modules --> Montant total -->
Livraison puis mettre "Permettre la livraison gratuite" sur False
ou bien si vous souhaitez la gratuité de la livraison a partir d'un certain montant de
commande, mettre "Permettre la livraison gratuite" sur True et remplir correctement le champ
"Livraison gratuite pour commande au dessus" avec le montant désiré.
10.5 Comment ajouter un contre-remboursement comme mode de paiement ?
Il suffit d'utiliser (ou de dupliquer) le module "cash on delivrery" (cod.php) et de changer
les define(); des fichiers langage pour afficher un "contre remboursement" et les textes
nécessaires
Il est également possible d'ajouter des frais avec un module de total_commande comme
celui-ci.
Une autre solution proposée par Gyakutsuki :
Trouver ces lignes dans checkout_payment :
Code:
<?php
if ( ($selection[$i]['id'] == $payment) || ($n == 1) ) {
echo '
<tr id="defaultSelected"
class="moduleRowSelected" onmouseover="rowOverEffect(this)"
onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' .
$radio_buttons . ')">' . "\n";
} else {
echo '
<tr class="moduleRow"
onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)"
onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
}
?>
<td width="10"><?php echo
tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
<!-<td class="main" colspan="3"><b><?php // echo
$selection[$i]['module']; ?></b></td>
-->
AJOUTER APRES
Code:
<?php <?php // ########### Added Paiement par contre remboursement
############## ?>
<td class="main" colspan="3"><b>
<?php
echo $selection[$i]['module'];
if ($selection[$i]['cost']){
echo '&('.$currencies>format($selection[$i]['cost']).')';
}
54
?></b></td>
<?php // ############ End Added ######################### ?>
10.6 J'ai des erreurs avec l'intégration d'ATOS dans OSC ? Comment puis-je
trouver mon problème et le résoudre ?
La solution atos est de plus en plus utilisé par les commerçants. Dans le but de faciliter
l'intégration pour tous, nous avons mis en place des sujets de supports plus spécifique pour
cette solution de paiement:
•
ATOS et OSC: une aide bien pratique,
•
Intégration ATOS: pour trouver une solution éventuelle ou pour fournir une solution sur
ce système de paiement. Le but de ce fil est de pouvoir concentrer les problèmes liés
à l'installation et l'intégration de la solution ATOS dans les versions OSC 2.2 MS1 et
MS2 (ou les dérivés).
10.7 Comment afficher les informations de paiement spécifiques à la méthode
choisie dans la page de confirmation de commande?
Editer le module concerné: includes/modules/payment/monmodule.php, remplacer les lignes
Code:
function confirmation() {
return false;
}
par :
Code:
function confirmation() {
return array('title' =>
MODULE_PAYMENT_MONMODULE_TEXT_DESCRIPTION);
}
Editer les fichiers languages du module et corriger les define()
Code:
define('MODULE_PAYMENT_MONMODULE_TEXT_DESCRIPTION', 'Pour le
paiement avec MONMODULE C'est là que l'on met tous les détails à
préciser');
11 Sessions
11.1 Pourquoi lorsque que j'ajoute un second article, le panier se vide
complètement ?
Probablement une mauvaise gestion des sessions. Avant de chercher à gérér les sessions
en "dur" on peut déjà s'assurer du fonctionnement avec les sessions en base mysql:
Vérifier dans includes/configure.php de l'admin et du catalog que STORE_SESSIONS est
bien défini sur mysql:
CODE:
define('STORE_SESSIONS', 'mysql');
55
11.2 Si je passe plusieurs fois sur la page ou je crée des variables de session,
elles s'ajoutent ou se remplacent ?
Elles
Dans
une
session
ce
qui
se
fait l'unicité
d'une
variable
c'est
remplacent.
son nom.
Si la variable n’a pas été enregistrée comme devant être enregistrée dans la session, sa
valeur ne sera pas stockée dans la session : pour enregistrer une variable dans la session,
utiliser tep_session_register($name), ou $name est le nom de la variable globale.
Une fois enregistrée dans la session, elle sera initialisée et réinsérée dans la session à
chaque fois que l'utilisateur reviendra sur le site, jusqu'à ce que la session disparaisse ou
que la variable soit retirée de la session (tep_session_unregister). Entre le chargement de la
session et son enregistrement, tu peux changer autant de fois que tu veux de valeur, c'est la
dernière affectation qui sera stockée dans la session.
Une fois que la session disparaît, toutes les valeurs stockées dans la session sont perdues.
Note importante concernant les sessions lors de la prise de commande
Dans le cadre d’OSC, sont stockées dans la session les informations prises au moment de la
commande (comme l’adresse de livraison, le mode de paiement, …) : si pendant la prise de
commande, l’utilisateur est inactif pendant la durée de vie de la session, il devra
recommencé le processus de commande. Cela peut engendrer certains problèmes lorsque
le client est déporté sur un site tiers pour le paiement par carte bancaire et revient sur le site
: il ne doit pas s’écouler plus de 1480 sec (24m45s pour les valeurs par défaut d’OSC) pour
la prise de commande. Sinon, il se peut que l’utilisateur est effectivement payé mais la
commande non enregistrée dans la base (cas rare, mais possible).
11.3 Comment fonctionnent les sessions ?
La session est un ensemble de variables regroupées à travers un id. Cette id est unique et
transmis à travers un cookie (la plupart du temps).
Le tep_session_unregister permet de retirer une variable de la session (i.e. conserver sa
valeur lorsque l'utilisateur reviendra sur le site). Les sessions sont limitées dans le temps. La
durée de vie (20 mn) est une durée d'inactivité : si l'utilisateur ne revient pas sur le site
pendant 20 mn, la session et son contenu sont supprimés.
11.4 Comment vérifier que les sessions fonctionnent ?
Le problème de multiplication des sessions est provoqué par la fonction
session_set_cookie_params() qui redéfinie les paramètres des cookies du php.ini. Cette
fonction définit 4 paramétres : session_set_cookie_params ( int lifetime [, string path [, string
domain [, bool secure]]]) elle est appelée dans application_top.php (cad dans toutes les
pages d'osc) :
Code:
if (function_exists('session_set_cookie_params')) {
session_set_cookie_params(0, substr(DIR_WS_CATALOG, 0, -1));
}
Le 2éme paramètre défini le path du cookie, et c'est celui là qui pose problème. En effet si ce
paramètre n'a pas la valeur suivante : "/nomcatalogue/" la création du cookie échoue et les
sessions partent en sucette du coup...
En fait, le plus important est de bien avoir un slash avant et après le nom du catalogue...
56
CORRECT:
session_set_cookie_params (0, '/catalog/');
INCORRECT:
session_set_cookie_params (0, '/catalog');
Un simple test permets de savoir si vous créez correctement vos sessions. Car si cela
n'affecte pas réellement le fonctionnement d'osc par la gestion des id sessions dans l'URL
(qui reprends la main sur le cookie). Cela peut être génant si vous voulez gérer des
informations hors connexion ou hors panier rempli.
mettez dans application_bottom.php par ex. echo "<b>".session_id()."</b><br>";
et regardez si l'ID de session change entre les pages quand vous n'étes pas connecté et que
vous n'avez pas sélectionné d'articles.
11.5 Osc ne veut pas fonctionner car il ne trouve pas de dossier /tmp pour les
sessions ?
1 - le dossier /tmp dont il est question doit être désigné dans le php.ini sous Windows. mais
le chemin par défaut est parfois incomplet. Pour EasyPHP par exemple il est préférable de
compléter dans le php.ini : session.save_path ="c:\Program Files\EasyPHP\tmp\"
et bien sûr vérifier l'existence du répertoire désigné!
2 - Chez certains hébergeurs le répertoire des sessions est placé à la racine du site et doit
être nommé "sessions/".
3 - il est possible d'enregistrer les sessions dans la base sql plutôt que dans un dossier.
Pour cela, dans le fichier configure.php (catalog/includes/) il faut spécifier à dernière ligne :
define('STORE_SESSIONS', 'mysql'); // leave empty '' for default handler or set to 'mysql'
* Faire de même dans le configure.php de la partie admin (admin/includes/)
57
12 Informations générales, dossiers, licences, …
12.1 Transfert du local vers votre hébergeur
Ecrit par fissiaux
Plusieurs étapes pour le transfert :
1) La première des choses à faire est de se munir d'un outil de transfert de fichiers (FTP).
Notre recommandation va vers un outil vous permettant de transférer les fichiers en binaire.
Paramétrer votre outil pour forcer le transfert en binaire (certains outils offrent le format
binaire, ASCII ou automatique).
2) Sauvegarder votre base de données en local dans un fichier. Cette sauvegarde doit
inclure les structures et les données. Un outil comme phpmyadmin fera très bien l'affaire :
c'est dans l'onglet Exporter, en sélectionnant toutes les tables, cocher l'option "drop table",
cocher les structures et les données, et cocher "transmettre" pour écrire sur un fichier de
votre disque dur. Appelons le boutique.sql
3) Chez votre hébergeur, créer la base de données (vide dans un premier temps).
Générallement, votre hébergeur vous a mis à disposition un outil du type de phpmyadmin.
4) Restaurer la base de données chez votre hébergeur. Avec phpmyadmin, via l'onglet SQL,
importer votre fichier boutique.sql. A noter que selon la taille de votre base, il vous faudra
passer par un découpage en plsuieurs morceaux de votre fichier boutique.sql : cela est du
au temps maximum d'un script défini par votre hébergeur.
5) Lancer votre outil FTP (revérifier que l'option transfert en binaire est bien positionné).
Transférer l'intégralité de répertoire local /catalog vers votre hébergeur. Cette phase devrait
durer un moment.
6) La base est transférée, les scripts aussi, et déjà des petits malins essaient de se
connecter. Erreur : les 2 fichiers configure.php, celui du frontend (/catalog/includes) et celui
du backend (/catalog/admin/includes) sont paramétrés pour votre local.
Il faut adapter leur paramétrage pour votre site distant. (Petite pause : si à ce stade certains
ont encore le répertoire d'administration qui s'appelle admin, c'est qu'ils sont suicidaires et
qu'ils n'ont pas lu la FAQ sur les aspects de sécurité. Passons).
Modifier les 2 fichiers configure.php. Généralement, il faut revoir les define de :
HTTP_SERVER, HTTPS_SERVER, HTTP_CATALOG_SERVER,
HTTPS_CATALOG_SERVER, DIR_FS_CATALOG, DIR_FS_ADMIN,
DIR_FS_DOCUMENT_ROOT
et enfin, les 4 paramètres liés à la base de données, à savoir :
DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD et DB_DATABASE.
Une fois cette dernière étape faite, votre boutique devrait être opérationnelle.
Mais, il manque encore un point important, toujours lié à la sécurité : les CHMOD sur les
répertoires, et sur les 2 fichiers de configuration.
58
12.2 Sécurisation
Cette procédure de sécurisation se fait à l'aide de votre navigateur FTP préféré. Voici nos
conseils. Mettez les configure.php de l'admin et du catalog en lecture seule (chmod444).
N'ouvrez les droits en écriture (chmod777) QUE sur les répertoires le nécessitant (images,
backup...).
Laissez les autres fichiers (chmod644) et répertoires (chmod755) tel qu'ils se règlent
automatiquement à l'upload sur votre hébergement.
Notions de base
Protéger votre répertoire admin avec htaccess
Ceux qui veulent en savoir un peu plus sur htaccess et htpasswd, faites un tour sur
phpdebutant.org et Le site d'Apache.
L'idéal reste un accès l'Admin en HTTPS, car le login/passwd htaccess passent en clair à
travers le réseau.
Crypter un login/mot de passe pour htaccess :
Pour calculer le cryptage : www.webtpe.com par exemple
Choisir vos mots de passe :
Ne JAMAIS utiliser un mot de passe existant dans le dictionnaire : il existe des softs
permettant de tester des milliers de mots de passe. Mélangez des lettres (minuscules et
majuscules), des chiffres et des ponctuations, genre ùBn1a2!hY
Notions spécifiques OsCommerce
Règle essentielle, personnalisez vos répertoires :
N'appelez pas votre répertoire administration " admin ". Renommez le obligatoirement et
changez la ligne define('DIR_WS_ADMIN', 'adresse-du-repertoire-admin') du fichier
configure.php en conséquence.
RAPPEL : il est possible d'héberger l'administration sur un autre serveur.
Insérer un fichier vide appelé index.html dans tous vos répertoires images.
Pour ceux qui ont un hébergeur mutualisé, genre AMEN, PROTEGEZ votre répertoire
www.nomdedomaine.com/stats par un htaccess. Il contient TOUS les accès détaillés de
toutes vos pages. Pour aller plus loin, vous pouvez installer l'une de ces contributions en
voici quelques unes :
• Admin Access with levels
• Admin Login
htaccess, ssl admin folder
12.3 Le SSL
Ecrit par Gyakutsuki
Secure Socket Layer
Protocole permettant la transmission sécurisée de formulaires dans le Web, notamment lors
des transactions commerciales en ligne, nécessitant l'utilisation d'une carte de crédit. Défini
par Netscape, il utilise l'algorithme à clé publique RSA, et a pour objectif d'assurer
l'authentification, la confidentialité et l'intégrité des données échangées.
59
Vous souhaitez en savoir plus
http://www.commentcamarche.net/crypto/ssl.php3
Quelques liens utiles
Thawte - FAQs
Qu'est-ce qu'un certificat ? Une signature électronique ? Une clé de cryptage ?
Verisign - Guide to securing your websign for business
Guide sur la sécurisation des sites web via l'utilisation de certificats SSL
Certplus
Opérateur de services de certification français.
Glossaire :
Certificat : clé de cryptage comportant la signature électronique d'un tiers pour permettre
d'authentifier l'identité de son utilisateur et la machine qui l'émet. En SSL, le serveur envoie
au navigateur son certificat. La taille du certificat correspond en réalité à la taille de la clé
qu'il contient. [Retour]
Clé : ensemble d'informations générées par le logiciel de cryptographie pour permettre de
crypter ou décrypter des données. Il existe deux types de clés : la clé publique qui permet de
crypter les données, la clé privée qui permet de les décrypter. Une clé peut être assimilée à
un nombre. La taille de la clé est définie en bits (0 ou 1). On trouve généralement des clés
de 40, 56 ou 128 bits. Le nombre de combinaisons nécessaires pour découvrir une clé est
égale à 2 puissance la taille de la clé (pour 40 bits : 2 puissance 40).
HTTPS : Protocole identique à HTTP mais sécurisé par cryptographie via SSL. HTTPS (S
pour "secure" ou "sécurisé"). Les données sont cryptées, qu'il s'agisse de la requête ou de la
page envoyée en réponse. Les données pourront toujours être interceptées, mais pour les
exploiter, il faudra déployer des moyens plus ou moins importants, selon la taille de la clé
utilisée.
SSL : "secure sockets layer" protocole sur lequel repose la sécurisation de HTTPS. Voir liens
[9] à [14].
Textes législatifs et réglementaires - Droit
Les textes officiels français
Tous les textes se rapportant à la législation et à la réglementation française
Crypto Law Survey
Epic - Cryptography and Liberty –
Etat du droit lié à la cryptographie dans de nombreux pays
12.4 Installation d'un module bancaire
Ecrit par Péricles
Cet article présente les principales d'installation pour mettre en place un module de paiement
(et/ou de livraison) que vous télécharger sur internet rapidement et efficacement sur votre
site.
Comment installer un module de paiement ou de livraison ?
L'installation d'un module de livraison suit exactement le même guide qu'un module de
paiement.
Note: cet article concerne l'installation d'un nouveau module sur votre site. Il ne concerne
pas le développement d'un nouveau module inspîré ou non d'un module existant.
Nous allons donc nous borné à expliquer comment installer un module de paiement:
60
Vous avez déjà télécharger la contribution de paiement que vous souhaitez installer dans un
répertoire temporaire,
Dépaqueter la (la plupart du temps, WinZip convient à la majorité des modules), dans un
répertoire temporaire: évitez de dézipper directement dans votre arborescence de
développement afin de mieux contrôler votre intégration du module,
Pour la majorité des contributions, vous aurez deux répertoires importants:
includes/modules/payment: contient un fichier .php qui correspond à la logique du module,
includes/languages/[code]/modules/payment: contient un fichier .php de même nom que
celui dans le répertoire includes/modules/payment et qui contient les textes localisés pour ce
module.
Copier les deux fichiers dans les répertoires respectifs de votre site (toujours sous votre
répertoire catalog),
Si la langue que vous souhaitez n'existe pas, il vous suffit de copier le fichier dans le
répertoire includes/languages/[code]/modules/payment fournit dans la contribution dans
votre répertoire correspondant à la langue que vous souhaitez. Dans un premier temps, vous
pouvez laisser ce fichier comme il est et revenir plus tard pour traduire les textes,
Pour certains modules, il vous faudra adapter votre code. Comme cela est spécifique à
chaque module (au besoin), il vous faut vous référer à la documentation d'installation
(INSTALL.txt, README.txt, ... ou autre) contenu dans le package de la contribution. Nous ne
pouvons détailler plus que cela cette étape car elle est vraiment particulière à chaque
module,
Votre module est maintenant installé dans vos fichiers sources, mais il n'est pas encore actif.
Pour l'activé, il vous faut aller dans votre console d'administration, onglet Modules, puis
Paiement,
Dans la liste des modules affichées sur cet écran, vous devez voir apparaître ce nouveau
module comme non actif. Si vous ne voyez pas le module, reprocéder à l'installation du
module étape par étape,
Pour l'activé, il vous suffit de sélectionner le module dans la liste, puis de cliquer sur le
bouton d'édition,
Une nouvelle fenêtre apparaît avec la liste des variables de configuration nécessaire pour ce
module. Modifier les champs en fonction de vos besoin, puis validez,
Bravo ! Votre module est maintenant prêt à être testé !
Une fois les tests concluant, vous pouvez traduire les textes si langue que vous souhaitez
n'est pas incluse dans le module et que vous ne l'avez pas déjà lors d'une étape d'installation
citée auparavant.
Note: l'installation d'un module de livraison suit exactement la même procédure. Le
répertoire pour les modules de livraison est shipping à la place de payment.
Conseils:
Si vous rencontrez un problème au moment de l'installation:
Vérifiez votre version d'OSC ainsi que la version d'OSC pour laquelle la contribution est
compatible,
61
Recommencez les étapes d'installation une à une en vérifiant plutôt deux fois qu'une que
vous ne vous êtes pas tromper,
Allez voir sur le forum français si d'autres personnes ont rencontrés le même problème et
comment il a été résolu (si résolu),
Regardez sur le forum américain si ce problème n'a pas déjà été rencontré et comment il a
été résolu (si résolu),
Si votre problème persiste, faite appel à la générosité des bénévoles du forum pour vous
aider à résoudre votre problème.
12.5 L'Art et la manière de créer une contribution pour la Creload 6 FR.
Ecrit par O'Neill
Vous avez décidé d'adapter ou mieux de créer une contribution pour la Creload. Grand bien
vous fasse, la communauté Oscienne vous en sera éternellement reconnaissante. Mais
quelques règles simples sont toutefois nécessaires au bon déroulement de votre projet...
Avant toutes choses, vous devez être sûr que la contrib que vous décidez d'adapter
fonctionne déjà bien pour une MS2 de base.
Il existe quelques contributions qui n'ont pas été mises à jour ou qui ont des bugs. Ces bugs,
si vous n'y prêtez pas attention vous donneront plus de travail que l'adaptation de la contrib
elle-même.
1. Installer la contribution sur une boutique de réserve, une ms2 (c'est plus facile), de
préférence neuve, pour l'évaluer d'abord. Vous n'êtes pas vraiment obligé de faire ca, mais
pour les contributions les plus anciennes qui n'ont pas été mises à jour depuis quelque
temps, cela peut se révéler très utile pour vous éviter bien des soucis au moment de
l'adaptation.
2. Organisation des fichiers. Parfois, des programmeurs ont utilisé de mauvaises
méthodes pour écrire leur contribution.Il n'y a qu'une façon correcte pour assembler une
page de code dans la Creload, plus deux ou trois choses auxquelles vous devez faire
attention.
La Boxe des catégories en est un exemple concret. Dans cette boxe, il y a une fonction qui
crée la liste des catégories mais c'est la croix et la bannière pour y modifier quoique ce soit.
Une variable globale doit être définie avant cette fonction, la plupart des personnes
oublieront cela et, ce qu'ils ont ajouté ne fonctionnera pas.
a) Éviter les fonctions internes (ce sont des fonctions qui résident uniquement à
l'intérieur d'une page php),
b) Les fonctions doivent être dans un fichier séparé qui sera appelé par le biais d'un
include. Si son emploi n'est utile que pour un seul fichier, sa place se situera en début
de fichier et non juste à l'endroit où il servira.
Si votre fonction est exigée dans plusieurs pages, vous pourrez employer un require pour
appeler votre fichier de fonctions dans le tout début de votre fichier.
3. Où tout est-il placé pour un fichier qui serait normalement dans la racine ?
Les requêtes et les appels aux tables, les fichiers de langues, les templates et fichiers de
contenu sont dans : /catalog/nom_du_fichier.php
Pour n'importe quel Javascript vous devrez utiliser
/catalog/includes/javascript/nom_du_fichier.js.php
62
Le code et le HTML utilisés pour formater et afficher la page produite seront dans :
/catalog/templates/content/nom_du_fichier.tpl.php
Images et boutons sont dans :
/catalog/templates/(nom_du_template)/images/buttons/ Sauf pour la Théma !
Les images utilisées pour la création des bordures autour des Infoboxes du centre et des
Infoboxes de côté mais aussi les images de header et les images de tabulation. On y
ajoutera également le (Nom du template).gif qui est une image d'apercu du template et qui
est utilisée dans la gestion des templates dans la partie Admin. Tout cela est dans
/catalog/templates/(Nom_du_template)/images
Les infoboxes latérales dans : /catalog/templates/(nom_du_template)/boxes/
Le module optionnel utilisé pour l'affichage sur la mainpage, exige un formatage spécial pour
le template à cet endroit :
/catalog/templates/(nom_du_template)/mainpage_modules
Les fichiers module restent dans le répertoire des modules et ne peuvent être changés ou
déplacés comme un fichier de la racine, à moins qu'ils ne doivent être affichés seulement sur
la page principale.
Repertoire des Templates : templates/templates/content
Ce répertoire est employé pour stocker le code et l'HTML de la page produite pour votre
fichier racine. C'est là que vous pourrez ajouter du code. templates/(nom du template)/
C'est dans ce repertoire qu'est placé main_page.tpl.php : c'est le contenu de la page
d'index quand vous arrivez sur votre boutique. Il est aussi employé pour afficher d'autres
modules qui peuvent être installés à partir du contrôle du design.
boxes.tpl.php : C'est le code pour placer les images sur le pourtour des boxes latérales
Extra_html_ouput.php : c'est la où les fonctions pour l'affichage des boutons et des images
ainsi que les fonctions de formatage complémentaires sont placées pour le template.
(Nom_du_template).sql : c'est le fichier qui pré-charge un template avec des réglages par
défaut. Ca ressemble à un fichier SQL, mais il y a toutefois des différences.
modules :
fonctions :
classes :
langue :
images :
Si vous vous voulez des images spécifiques pour être différent à chaque template, utilisez :
function tep_template_image_submit
Au lieu de function tep_image_submit
Enfin, si vous vous voulez des boutons spécifiques pour être différent à chaque template,
utilisez : function tep_template_image_button
Au lieu de function tep_image_button
4. Installation si nécessaire de votre fichier racine. Dans le fichier racine vous placerez
autant d'appels à la base de données que nécessaire avec le code de prétraitement tant que
ces appels seront les mêmes pour toutes les pages devant être affichées.
-------------exemple pour newsdesk_index.php---------------require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_NEWSDESK_INDEX);
63
Note : puisque le fichier de langue exigé n'est pas placé au bon endroit, cette ligne a été
ajoutée
$content = CONTENT_NEWSDESK_INDEX;
Note : si vous placez un fichier dans le répertoire content/, vous avez besoin d'une telle
entrée avec le nom du fichier pour aller la chercher dans content/
require(DIR_WS_TEMPLATES . TEMPLATE_NAME . '/' . TEMPLATENAME_MAIN_PAGE);
Note : le module étant affiché par mainpage, cette entrée est ajoutée. Pratiquement, tous les
fichiers devant être affichés passent par la page principale des templates
require(DIR_WS_INCLUDES . 'application_bottom.php');
Note : ceci est ajouté pour fermer les pages HTML comme cela doit être affiché.
==================exemple pour tell_a_freind============================
$breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_TELL_A_FRIEND,
'products_id=' . $HTTP_GET_VARS['products_id']));
Note : Ceci lorsque vous voulez que le titre de votre page s'affiche dans la barre de
navigation (breadcrumb)
$content = CONTENT_TELL_A_FRIEND;
Note : si vous placez un fichier dans le répertoire content/, vous avez besoin d'une telle
entrée avec le nom du fichier pour aller la chercher dans content/
require(DIR_WS_TEMPLATES . TEMPLATE_NAME . '/' . TEMPLATENAME_MAIN_PAGE);
Note : le module étant affiché par mainpage, cette entrée est ajoutée.
Pratiquement tous les fichiers devant être affichés passent par la page principale des
templates
require(DIR_WS_INCLUDES . 'application_bottom.php');
Note : ceci est ajouté pour fermer les pages HTML comme cela doit être affiché.
5. includes/filename.php Ce fichier ne devrait normalement contenir que le define pour le
nom de fichier. Dans la Creload, nous y placerons aussi le define pour le fichier content/.
Essayez de grouper les define pour les fichiers content avec les contents et le define des
noms de fichier avec les autres noms de fichiers. Essayez également de les maintenir dans
le même ordre.
---------------exemple----------------define('CONTENT_ACCOUNT',
define('FILENAME_ACCOUNT',
CONTENT_ACCOUNT
------------------------------------------------------
.
'account');
'.php');
6. application.top
7. Ecrans Admin Généralement ceux-ci n'ont pas besoin de beaucoup de supplément. Mais
vous devrez ajouter un rappel de vos instructions d'installation afin de prévenir les
administrateurs le cas échéant. Sinon un administrateur ne sera peut être pas capable
d'utiliser les écrans.
64
8. Instructions d'installation
9. Essais En général peu importe de combien d'essais vous aurez besoin pour faire
fonctionner votre contribution. C'est toujours en ayant une idée précise de son
fonctionnement et une bonne connaissance du code que vous y arriverez.
Vous devrez tester votre travail sur les deux navigateurs que sont IE et Mozzila/Netscape.
Ces deux browsers semblent rattraper la plupart des erreurs de formatage, comme table, td
et autres tr tags
10. Proposez votre module à la communauté Oscommerce
12.6 Commerçants
Conseils pour les Professionnels utilisant des outils de vente en ligne
Assurez vous - Rassurez les
Pour mettre vos clients en confiance et pour vous prémunir des risques de fraude carte
bancaire, vous pouvez vous assurer. Vos clients seront sensibles à cette marque de
crédibilité et à cette garantie supplémentaire. Ce type d'assurance est proposé par:
FIA-net est le premier assureur du commerce en ligne, complémentaire des systèmes
sécurisés - son label d'assurance garantit les pertes financières des vendeurs et des
consommateurs sur internet
Déclarez vous - Rassurez les
Pour donner en un clin d'oeil aux consommateurs toutes les informations sur votre site
marchand afin d'éviter les recherches fastidieuses et la falsification de vos pages web, vous
pouvez gratuitement vous déclarer auprès de CheckFlow. CheckFlow est le premier
auditeur des sites marchands, audit indispensable à l'obtention d'un contrat d'assurance Fianet et confirme via le graticiel FlowProtector votre contrat Fia-net et votre certificat Thawte.
Législation applicable
Voici quelques points à noter (copie du site CRC-conso qui contient d'autres informations
utiles). Il est souhaitable de mettre cette information à disposition des utilisateurs (au moins
pour leur faire savoir auprès de qui et par quel moyen ils peuvent se rétracter):
Article L 121-16 du Code de la consommation : "pour toutes les opérations de vente à
distance, l'acheteur d'un produit dispose d'un délai de sept jours francs à compter de la
livraison de sa commande pour faire retour de ce produit au vendeur pour échange ou
remboursement, sans pénalité à l'exception des frais de retour. Si ce délai expire
normalement un samedi, un dimanche ou un jour férié ou chômé, il est prorogé jusqu'au
premier jour ouvrable suivant".
Article L 121-18 : "Dans toute offre de vente d'un bien ou de fourniture d'une prestation de
services qui est faite à distance à un consommateur, le professionnel est tenu d'indiquer le
nom de son entreprise, ses coordonnées téléphoniques ainsi que l'adresse de son siège et,
si elle est différente, celle de l'établissement responsable de l'offre".
Article L 114-1 : "Dans tout contrat ayant pour objet la vente d'un bien meuble ou la
fourniture d'une prestation de services à un consommateur, le professionnel doit, lorsque la
livraison du bien ou la fourniture de la prestation n'est pas immédiate et si le prix convenu
excède des seuils fixés par voie réglementaire, indiquer la date limite à laquelle il s'engage à
livrer le bien ou à exécuter la prestation."
Le consommateur peut dénoncer le contrat de vente d'un bien meuble ou de fourniture d'une
prestation de service par lettre recommandée avec demande d'avis de réception en cas de
65
dépassement de la date de livraison du bien ou d'exécution de la prestation excédant sept
jours et non dû à un cas de force majeure.
Ce contrat est, le cas échéant, considéré comme rompu à la réception, par le vendeur ou par
le prestataire de services, de la lettre par laquelle le consommateur l' informe de sa décision,
si la livraison n'est pas intervenue ou si la prestation n'a pas été exécutée entre l'envoi et la
réception de cette lettre. Le consommateur exerce ce droit dans un délai de 60 jours ouvrés
à compter de la date indiquée pour la livraison du bien ou l'exécution de la prestation. Sauf
stipulation contraire du contrat, les sommes versées d'avance sont des arrhes, ce qui a pour
effet que chacun des contractants peut revenir sur son engagement, le consommateur en
perdant les arrhes, le professionnel en les restituant au double.
ATTENTION : se pose ici le problème de la preuve de l'engagement pris par le professionnel
de livrer à une certaine date. L'on pourrait proposer au professionnel de confirmer
systématiquement par écrit les termes de l'offre qu'il fait au consommateur.
REMARQUE : le décret n° 92-1156 du 13 octobre 1992 a fixé à 3 000 F le seuil à partir
duquel il est obligatoire de mentionner dans le contrat la date limite de livraison ou
d'exécution du service.
Directive 97/7/CE : Voyez la directive européenne du 20 Mai 1997 Concernant La Protection
Des Consommateurs
En Matière De Contrats À Distance
Vérifiez que vous maîtrisez le calcul de la TVA. C'est un sujet complexe, nous vous
conseillons la lecture du dossier que Payline consacre à ce sujet.
NOTE: Bien que toutes les précautions aient été prises lors de la compilation de ces
informations, nous ne pouvons pas être tenus responsables des erreurs ou omissions; elles
ne peuvent être assimilées à du conseil juridique.
12.7 Indications et conseils contre la répudiation de paiement
Ecrit par pitstop
Je viens rarement sur le forum car je suis assez occupé et pas mal d'entres vous me
contacte directement pour des bidouillages depuis quelques années... Je suis tombé sur un
post auquel j'ai répondu et je me suis dit qu'il pourrait intérresser le plus grand nombre étant
donné que toutes les personnes passant ici sont, ou pourraient devenir, des webcommerçants.
Certains d'entre vous ont déjà du faire face à la répudiation de paiement. Cela engendre la
perte du règlement mais aussi, et surtout, celle du produit!
Bref, pour un commerçant qui débute, c'est l'ombre du cauchemar qui s'abat sur lui au
moment où il découvre que l'on peut donner de la main droite et reprendre de la main
gauche et ce... Sans aucun risque!
Pour étayer mon propos, qui se veut positif car des solutions existent, vous trouverez cidessous les chiffres de notre boutique en ligne et plus bas les solutions que nous avons
mises en place pour ne plus être des victimes...
Les répudiations de paiement:
64 fois en 2000 avec la BNP
87 fois en 2001 avec la BNP
58 fois avec la BNP et 5 fois avec BluePaid en 2002
2 fois avec BluePaid en 2003
66
Pour les stats...
Je gère une boutique Officielle Ferrari, donc produits très prisés des escrocs et fraudeurs.
25 à 30000 visiteurs par mois
1500 commandes en 2003
Moralité, on désactive dans le module Shipping tous les pays à la c.., on utilise le système
de cohérence de paiement de Blue Paid qui est très efficace et s'il y a une demande de Côte
d'Ivoire, du Maroc ou de Bratislava, on demande un réglement par virement internationnal.
Dans 100% des cas, on n'a pas de réponse après la demande de virement.
Autres stats...
100% des commandes passées chez nous depuis les pays de l'Est, le Maghreb, l'Afrique et
l'Amérique du Sud depuis 1999, date d'ouverture de notre boutique, ont été faites avec des
cartes bidons, répudiées, annulées ou refusées par le système de paiement.
1 commande sur 50 passée depuis la France est refoulée par le système BluePaid.
100% OK depuis les USA, le Canada et le Japon et de très bons clients aux Emirats Arabe
Unis, au Liban et en Chine.
Dernières stats amusantes... 50% des commandes par chèque ne sont jamais payées! et
même après relance au bout de 15 jours, le client nous assure avoir envoyé le chèque!
Ma réponse est assez longue mais il faut que vous sachiez, vous qui vous lancez dans la
fantastique aventure du commerce internet, qu'il y a de très gros risques et que les requins
et escrocs sont encore plus présents sur le web que dans votre rue...
Quelques
indices
à
vérifier
avant
d'envoyer
un
gros
colis...
1- Si possible, récupérer l'IP du client et vérifier le pays d'où il passe la commande avec un
logiciel en ligne ou type "scanner". (On voit de plus en plus de commande envoyée en
France et passée depuis la Grande Bretagne ou l'Afrique du Nord. Cela met en confiance le
commerçant...).
Méfiez vous aussi des clients passant derrière un proxy.
2- Méfiance si l'adresse e-mail est de type gratuit... Yahoo, MSN, HotMail.
3- Vérifier l'existence de l'adresse physique du client par un annuaire en ligne(Infobel par
exemple pour l'international).
4- En cas de gros doutes ou d'une grosse valeur marchande, appelez le client par téléphone
et utilisez tout votre pouvoir d'analyse pour déceler s'il vous ment ou s'il est honnête.
Voilà, j'espère que ces quelques informations pourront aider ceux qui débutent et apporter
des réponses aux autres, qui sont ou qui risquent d'être les victimes de malandrins et de
voyous...
Surtout, au moindre doute... Prenez des mesures avec votre banque ou votre système de
paiement pour recréditer la carte et n'envoyez pas les produits!
12.8 La sécurité des transactions réalisées par carte bancaire
Ecrit par Gyakutsuki
Un superbe étude réalisée par notre cher Sénat. Lisez bien car c'est très intéressant.
67
Royaume Uni - Allemagne - Espagne – Danemark
Synthèse
:
La sécurité des transactions réalisées par carte bancaire est assurée à la fois par des
dispositions juridiques et par des mesures techniques.
Ainsi, en France, plusieurs articles de la loi n ° 2001-1062 du 15 novembre 2001 relative à la
sécurité quotidienne ont introduit dans le code monétaire et financier de nouvelles
dispositions destinées à garantir la sécurité des paiements faits par carte.
La présente étude examine les principales dispositions d'ordre juridique adoptées par
plusieurs pays européens (Allemagne, Belgique, Danemark, Espagne et Royaume-Uni) pour
garantir la sécurité des transactions réalisées par carte.
NOTE DE SYNTHESE
ALLEMAGNE
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
3) Les transactions individuelles
4) Les mesures pénales
II. LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
2) Les mesures prises par les commerçants
3) Les mesures prises par la police
BELGIQUE
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
3) Les transactions individuelles
4) Les mesures pénales
II. LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
2) Les mesures prises par les autres professionnels
DANEMARK
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
3) Les transactions individuelles
4) Les mesures pénales
II. LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
2) Les directives de l'ombudsman des consommateurs
ESPAGNE
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
3) Les transactions individuelles
4) Les mesures pénales
II. LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
2) Les recommandations des associations de consommateurs
ROYAUME-UNI
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
68
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
3) Les transactions individuelles
4) Les mesures pénales
II LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
2) Les mesures prises par les autres professionnels
-------------------------------------------------------------------------------NOTE DE SYNTHESE
La sécurité des transactions réalisées par carte bancaire est assurée à la fois par des
dispositions juridiques et par des mesures techniques.
Ainsi, en France, plusieurs articles de la loi n ° 2001-1062 du 15 novembre 2001 relative à la
sécurité quotidienne ont introduit dans le code monétaire et financier de nouvelles
dispositions destinées à garantir la sécurité des paiements faits par carte.
En effet, cette loi charge expressément la Banque de France d'« assurer la sécurité des
moyens de paiement » et institue l'Observatoire de la sécurité des cartes de paiement. De
plus, elle élargit les cas où le titulaire d'une carte peut faire opposition, définit les
responsabilités respectives du titulaire et de l'établissement émetteur en cas de perte, de vol
ou d'utilisation frauduleuse d'une carte et facilite la sanction de tous les actes préparatoires à
la fraude, en les érigeant en infraction spécifique.
Indépendamment de ce dispositif juridique, la généralisation de la carte à puce, le
développement du cryptage des informations utilisées pour les paiements en ligne et
l'introduction de programmes de recoupement dans les centres d'autorisation de transaction
constituent autant de moyens techniques permettant d'améliorer la sécurité des transactions
réalisées par carte.
La présente étude examine les principales dispositions d'ordre juridique adoptées par
plusieurs pays européens (Allemagne, Belgique, Danemark, Espagne et Royaume-Uni) pour
garantir la sécurité des transactions réalisées par carte.
Elle analyse donc les mesures législatives et réglementaires prises à cet effet en les classant
en quatre catégories : les dispositions générales relatives aux établissements financiers,
celles qui encadrent les relations entre ces établissements et les titulaires de cartes
bancaires, celles qui définissent les conditions que chacune des transactions réalisées par
carte bancaire doit remplir, et les mesures pénales prises pour lutter contre la fraude.
Elle analyse également les mesures d'ordre déontologique mises en oeuvre par les
établissements financiers et par les autres professionnels. En effet, si par exemple les codes
de bonne conduite n'ont aucun caractère contraignant, ils peuvent constituer, notamment au
Royaume-Uni, un élément important de la réglementation, incluant notamment des éléments
qui relèvent de la loi dans d'autres pays.
La recherche de la sécurité maximale constitue une préoccupation commune à tous les pays
étudiés, mais les moyens mis en oeuvre pour y parvenir varient beaucoup.
L'analyse révèle en effet que la transposition de la directive 97/7 du 20 mai 1997 concernant
la protection des consommateurs en matière de contrats à distance et la prise en compte de
la recommandation de la Commission européenne 97/489 du 30 juillet 1997 concernant les
opérations effectuées au moyen d'instruments de paiement électronique ont entraîné une
relative uniformisation des règles de responsabilité des titulaires de cartes bancaires, ainsi
69
que l'introduction dans les différents droits nationaux d'un délai de rétractation, qui vise en
particulier les achats réglés par carte bancaire.
En revanche, les autres dispositions adoptées pour garantir la sécurité des transactions
réalisées par carte bancaire diffèrent, tant par leur nature, strictement juridique (lois et
règlements) ou d'ordre plutôt déontologique (codes de bonne conduite des établissements
financiers, labellisation des sites Internet garantissant la sécurité des paiements), que par
leur contenu (amélioration de l'information des titulaires de cartes, création d'infractions
pénales spécifiques...).
1) L'uniformisation entraînée par la transposition de la directive 97/7 et par la prise en
compte de la recommandation 97/489
a) Les règles de responsabilité
Tous les pays sous revue ont adopté des règles de responsabilité qui protègent les titulaires
de cartes bancaires et donc les mettent en sécurité : en règle générale, l'utilisation
frauduleuse de la carte bancaire n'a de conséquences pour les titulaires que s'ils ont fait
preuve de négligence, par exemple en notant leur numéro de code confidentiel à proximité
de la carte. Dans les autres cas, leur responsabilité n'est engagée que jusqu'à un certain
plafond, qui varie de 50 à 150 €.
b) Le délai de rétractation
La transposition de la directive 97/7 a entraîné l'introduction d'un délai de rétractation en cas
d'achat à distance. Fixé par la directive à sept jours, il est plus élevé dans deux des cinq
pays étudiés, l'Allemagne et le Danemark, qui l'ont porté à quatorze jours. Si cette mesure
ne vise pas spécifiquement la carte bancaire, elle est cependant importante pour développer
la confiance des consommateurs, dans la mesure où la carte bancaire constitue un moyen
commode de régler les achats effectués à distance.
2) L'extrême diversité des autres mesures
a) Des mesures de nature diverse
L'Allemagne, la Belgique et le Danemark s'appuient surtou t sur des mesures législatives, à
la différence de l'Espagne et du Royaume-Uni, qui insistent sur les « bonnes pratiques » des
établissements financiers.
De plus, si la Belgique et le Danemark ont récemment adopté des lois sur les moyens de
paiement électronique, qui s'appliquent en particulier aux transactions réalisées par carte
bancaire, ce n'est pas le cas de l'Allemagne, où des dispositions très générales, telles celles
du droit des contrats, sont considérées comme suffisantes.
Au Royaume-Uni, les banques adhèrent à un code de bonne conduite national, qui
comprend des mesures visant à garantir la sécurité de la carte bancaire. En revanche, en
Espagne, les établissements financiers se réfèrent au code de bonne conduite du secteur
bancaire européen 14 novembre 1990 relatif aux systèmes de paiement par carte, ainsi qu'à
la recommandation concernant les opérations effectuées au moyen de paiement
électronique émise en 1997 par la Commission européenne.
b) Des mesures de contenu divers
L'exemple du Danemark et du Royaume-Uni, qui ont retenu des approches opposées,
illustre cette diversité.
70
Le premier fait reposer l'essentiel de son dispositif de lutte contre la fraude aux cartes
bancaires sur la prévention. L'information des détenteurs de cartes bancaires est très
développée et l'ombudsman des consommateurs veille à ce que les établissements
financiers respectent les obligations que la loi leur impose, notamment en matière
d'information des clients et de sécurité des procédures de paiement.
En revanche, le Royaume-Uni, où la fraude par copie de la piste magnétique des cartes
bancaires constitue un réel fléau, concentre une partie de ses efforts sur la lutte contre la
criminalité informatique. Ainsi, une force de police spécialisée dans la lutte contre les
infractions commises grâce à Internet a été créée en 2000. Elle est notamment compétente
pour les fraudes à la carte bancaire. En 2002, l'APACS, association qui regroupe la plupart
des établissements financiers, a contribué, en collaboration avec le ministère de l'Intérieur, à
la création d'un corps de police spécialisé dans la lutte contre la fraude aux moyens de
paiement. Cette unité, financée à hauteur de 75 % par l'APACS, rassemble des officiers de
police et des experts bancaires.
Dans tous les pays étudiés, les résultats obtenus en France grâce à la technologie de la
puce sont vantés. Ces remarques convergentes permettent de conclure que, à l'intérieur
d'un cadre juridique visant à garantir la sécurité maximale des transactions réalisées par
carte bancaire, c'est aux établissements financiers qu'il appartient de prendre les mesures
techniques nécessaires, notamment préventives. C'est d'ailleurs ce que font les principaux
réseaux de cartes bancaires avec l'introduction progressive de la carte à puce dans tous les
pays de l'Union européenne d'ici le 1er janvier 2005.
ALLEMAGNE
Il existe peu de dispositions législatives et réglementaires destinées spécifiquement à
garantir la sécurité des transactions réalisées par carte bancaire. La plupart des règles
applicables sont des règles générales, qui découlent notamment du droit des contrats, car
elles sont considérées comme suffisamment souples pour couvrir les cas particuliers, y
compris celui des relations entre, d'une part, les titulaires de cartes bancaires et, d'autre part,
les commerçants ou les établissements financiers.
Cependant, avec l'entrée en vigueur le 1er juillet 2000 de la loi sur les achats à distance,
adoptée pour transposer la directive 97/7, plusieurs mesures visant particulièrement la
sécurité de la carte bancaire ont été introduites. La loi sur les achats à distance a été
formellement abrogée le 31 décembre 2001, car ses dispositions ont alors été intégrées au
code
civil.
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
Les pénalités appliquées aux établissements financiers qui ne respectent pas les
dispositions de la loi bancaire s ont considérées comme suffisamment dissuasives pour
garantir, de façon indirecte, la sécurité des transactions réalisées par carte bancaire.
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
Elles sont définies dans les « conditions générales d'affaires » du secteur bancaire. Dans un
certain nombre de secteurs, et en particulier celui de la consommation, les conditions
générales d'affaires évitent l'élaboration de contrats individuels. Ces conditions générales
doivent respecter les prescriptions du code civil, notamment en matière de responsabilité.
a) La limitation de la responsabilité des titulaires de cartes bancaires
L'article 676h du code civil, qui résulte de la codification de la loi sur les achats à distance,
71
dispose que la banque ne peut exiger le paiement des dépenses réglées à l'aide d'une carte
bancaire que si la carte n'a pas été utilisée de façon frauduleuse.
Cette disposition exclut donc toute mise en jeu de la responsabilité du titulaire en cas
d'utilisation frauduleuse de sa carte, que le code confidentiel ait ou non été utilisé, à moins
que la négligence du titulaire ne soit à l'origine de la fraude.
Les plafonds de responsabilité sont déterminés dans les conditions générales des banques.
En règle générale, en cas de vol ou de perte dûment déclaré à la banque, le titulaire est
responsable dans la limite de 50 €, tandis que, en cas de négligence, il est responsable à
hauteur de 100 % ou de 90 % selon que la négligence est ou non qualifiée de grossière.
Communiquer son code confidentiel à un tiers ou le noter sur la carte bancaire, ou à
proximité immédiate, constituent des exemples de négligence grossière.
Une décision rendue en avril 2002 par la Cour fédérale suprême fait porter sur les
établissements financiers, et non pas sur les commerçants comme auparavant, la
responsabilité en cas d'utilisation frauduleuse des seules données d'une carte, c'est-à-dire
lorsque la carte elle-même n'est pas présentée.
b) La mise en garde des titulaires de cartes bancaires
Les conditions générales des banques énoncent toutes les précautions que les titulaires de
cartes bancaires doivent respecter pour préserver la sécurité des transactions, ainsi que les
démarches à effectuer en cas de perte, de vol ou d'utilisation frauduleuse.
Le code civil précise que les conditions générales n'engagent les parties que si elles ne se
présentent pas sous une forme « inhabituelle » et si leur interprétation n'est pas équivoque.
3) Les transactions individuelles
Le délai de rétractation
Les articles 355 et 356 du code civil, qui résultent de la codification de la loi sur les achats à
distance, offrent aux consommateurs un délai de rétractation de quatorze jours et la
possibilité d'obtenir le remboursement de leurs achats. Ces dispositions visent en particulier
les achats réglés par carte bancaire.
4) Les mesures pénales
a) La falsification des cartes bancaires
D'après l'article 152a du code pénal, la falsification de cartes bancaires constitue une
infraction spécifique.
Le fait d'utiliser des fausses cartes, d'en détenir ou d'en procurer à autrui tombe sous le coup
du même article, qui prévoit une peine de prison dont la durée est comprise entre un et dix
ans.
Lorsque l'infraction est commise par un réseau, la peine minimale est de deux ans de prison.
b) L'utilisation abusive des cartes bancaires par les titulaires
Elle constitue également, aux termes de l'article 266b du code pénal, une infraction
spécifique, punissable d'une amende ou d'une peine de prison dont la durée maximale est
de trois ans.
L'infraction définie par l'article 266b du code pénal consiste, par l'utilisation de sa propre
72
carte, à créer un préjudice à l'émetteur de la carte. Elle vise les retraits d'argent liquide
depuis des distributeurs n'appartenant pas au même réseau que celui de la banque qui a
émis la carte.
Les autres utilisations abusives des cartes bancaires par les titulaires tombent sous le coup
de l'article 263a du code pénal, relatif à la fraude informatique. Ils sont punissables d'une
amende ou d'une peine de prison d'au plus cinq ans.
II. LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
L'utilisation du code à trois chiffres figurant au verso de la carte pour les achats à distance
Depuis avril 2001, les consommateurs ont l'obligation de fournir aux commerçants le numéro
à trois chiffres qui figure au verso leur carte lorsqu'ils règlent un achat en utilisant celle-ci et
qu'ils passent leur commande par téléphone, par courrier ou par Internet.
2) Les mesures prises par les commerçants
La multiplication des vérifications
Les commerçants, préoccupés par l'importance de la fraude, dont le coût pour l'économie
allemande est estimé à environ 75 millions d'euros, parmi lesquels 46 imputables aux seules
opérations réalisées en Allemagne, multiplient les contrôles : certains exigent que le client
présente une pièce d'identité, d'autres qu'il compose son code secret même s'il a signé une
facturette (et inversement).
3) Les mesures prises par la police
Le dispositif d'alerte des commerçants
Dans plusieurs Länder (en particulier ceux de Brandebourg, de Berlin, de Brême et de
Saxe), la police utilise la messagerie électronique pour communiquer aux commerçants et
aux établissements financiers les données relatives aux cartes volées, et ainsi empêcher la
réalisation de transactions frauduleuses. Ce dispositif, Kuno (Kriminalitätsbekämpfung im
unbaren Zahlungsverkehr durch Nutzung nichtpolizeilicher Organisationsstrukturen, c'est-àdire lutte contre la criminalité relative aux transferts électroniques de fonds par l'emploi de
structures non policières), a été imaginé par un commissaire de la ville de Dresde en août
2001 puis adopté par plusieurs Länder.
Kuno est considéré comme un moyen de lutte efficace lorsque la fraude repose sur
l'utilisation de cartes à piste magnétique, car les lecteurs de cartes des commerçants ne sont
pas reliés aux systèmes informatiques des banques, ce qui permet à une carte volée de
continuer à être acceptée par les commerçants.
BELGIQUE
La loi du 17 juillet 2002 relative aux opérations effectuées au moyen d'instruments de
transfert électronique de fonds s'applique notamment aux transactions réalisées par carte.
Elle se fixe comme objectif de « parvenir à une confiance totale des utilisateurs et d'assurer
un degré élevé de protection des titulaires d'instruments de paiement dans l'utilisation des
moyens de paiement électroniques ». Cette loi comporte donc plusieurs dispositions sur la
sécurité des transactions réalisées au moyen de cartes bancaires.
Il en va de même de la loi du 14 juillet 1991 sur les pratiques du commerce et sur
l'information et la protection du consommateur, depuis qu'elle a été modifiée par la loi du 25
mai 1999, laquelle transpose la directive 97/7 relative aux contrats à distance.
73
Par ailleurs, la loi du 28 novembre 2000 relative à la criminalité informatique a introduit dans
le code pénal de nouvelles infractions, dont certaines se rapportent aux cartes bancaires.
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
Aucune mesure générale ne vise spécifiquement la sécurité des cartes bancaires.
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
Elles sont essentiellement définies par la loi du 17 juillet 2002 relative aux opérations
effectuées au moyen d'instruments de transfert électronique de fonds, qui, de façon
générale, sanctionne d'une amende comprise entre 500 € et 200 000 € les infractions aux
règles qu'elle édicte, lorsque la « mauvaise foi » de l'auteur est établie.
a) La mise en garde des détenteurs de cartes bancaires
Préalablement à la conclusion d'un contrat relatif à la mise à disposition d'une carte
bancaire, l'établissement financ ier émetteur de la carte doit communiquer à l'utilisateur les
conditions contractuelles d'utilisation. Celles-ci « sont présentées de manière claire et non
équivoque, par écrit ou sur un support durable à la disposition du titulaire et auquel il a accès
». D'après l'exposé des motifs du projet de loi, par « support durable », il faut entendre un
support papier, une disquette, un CD-ROM, voire un autre dispositif permettant la
transmission d'un message électronique.
Les conditions contractuelles comprennent les obligations et responsabilités respectives de
l'émetteur de la carte et du titulaire, notamment les règles de prudence que le titulaire doit
observer et les démarches qu'il doit effectuer en cas de perte, de vol ou d'utilisation
frauduleuse.
En cas de non-respect de ces dispositions, l'émetteur est civilement responsable de toutes
les conséquences résultant de l'utilisation frauduleuse de la carte bancaire, à moins que la
fraude ne soit le fait du titulaire lui-même.
La loi oblige également les établissements financiers émetteurs de cartes bancaires à fournir
« périodiquement » aux titulaires des « conseils de prudence destinés à éviter tout usage
abusif de [la carte bancaire] et des moyens qui en permettent l'utilisation ».
b) L'obligation pour les établissements financiers émetteurs de cartes de garantir la
confidentialité des codes secrets
L'émetteur (ou l'entreprise qu'il a désignée pour distribuer les cartes bancaires) a l'obligation
de prendre toutes les mesures pour garantir la confidentialité du code secret du titulaire.
Cette disposition vise à rendre l'émetteur responsable entre le moment de l'envoi au titulaire
de la carte et du code confidentiel et celui de sa réception.
c) La limitation de la responsabilité des détenteurs de cartes bancaires
En cas d'utilisation frauduleuse de la carte bancaire, la responsabilité du titulaire ne peut être
engagée que dans deux cas : si l'instrument de paiement a été présenté physiquement ou,
en cas d'utilisation à distance, s'il y a eu identification électronique, par exemple par insertion
de la carte dans un terminal de paiement permettant de vérifier que la carte est authentique.
A contrario, en cas de paiement à distance réalisé par simple communication du numéro
apparent de la carte et de sa date d'expiration sans identification électronique, la
responsabilité du titulaire n'est pas engagée.
74
En cas de vol ou de perte, si le titulaire ne signale pas immédiatement à l'émetteur qu'il n'est
plus en possession de sa carte, il est responsable à hauteur de 150 € jusqu'au moment de la
notification des faits.
Toutefois, s'il a commis une négligence grave, par exemple en laissant son code confidentiel
à proximité de sa carte, ou s'il a agi frauduleusement, ce plafond ne s'applique pas et le
titulaire est responsable sans limites.
Aux termes de la loi, l'utilisation frauduleuse du titulaire peut notamment être constituée par
le fait :
- de donner sa carte ainsi que son code confidentiel à un tiers et d'adresser ensuite une
déclaration de perte ou de vol à l'établissement émetteur ;
- d'utiliser soi-même la carte après en avoir notifié le vol ou la perte à l'émetteur.
d) La fourniture aux titulaires de cartes bancaires d'informations relatives aux opérations
réalisées
L'émetteur doit fournir périodiquement au titulaire des informations concernant les opérations
effectuées au moyen de la carte bancaire. La périodicité est laissée à l'appréciation de
l'émetteur, mais elle doit permettre au titulaire de suivre l'état de ses dépenses.
Ces informations doivent comprendre un certain nombre d'éléments définis par l'article 5 de
la loi (date, montant, date de valeur, nom et adresse du bénéficiaire, commissions, frais...).
Les relevés des opérations effectuées au moyen d'un instrument de transfert électronique de
fonds doivent être conservés pendant cinq ans par l'émetteur.
3) Les transactions individuelles
a) Le délai de rétractation
En règle générale, les signataires des contrats à distance bénéficient d'un droit de
renonciation de sept jours ouvrables. Lorsque l'acheteur exerce son droit de renonciation,
seuls les frais de renvoi peuvent être mis à sa charge.
b) La charge de la preuve pesant sur les établissements financiers
L'article 6 de la loi du 17 juillet 2002 impose à l'établissement financier émetteur de la carte
d'apporter la preuve que toutes les opérations ont été correctement enregistrées et
comptabilisées et n'ont pas été affectées par un incident technique ou par une défaillance.
Le titulaire a la possibilité de contester les opérations dans les trois mois après la
communication des informations concernant ces dernières.
4) Les mesures pénales
La loi du 26 novembre 2000 relative à la criminalité informatique a créé deux nouvelles
infractions
:
- le faux en informatique, qui fait l'objet du nouvel article 210 bis du code pénal, consiste
notamment en la falsification ou la contrefaçon de cartes bancaires ;
- la fraude informatique, introduite par le nouvel article 504 quater du code pénal, vise par
exemple l'utilisation d'une carte bancaire volée pour retirer de l'argent dans un distributeur
automatique.
75
Les sanctions encourues pour ces infractions sont un emprisonnement de six mois à cinq
ans et/ou une amende comprise entre 130 € et 500 000 €. La tentative est punie des mêmes
peines que l'infraction elle-même.
II. LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
L'Association des banques belges a rédigé un code de bonne conduite définissant les règles
que les banques doivent respecter dans leurs relations avec leurs clients.
La sécurité et la fiabilité des services bancaires, qui constituent l'un des sept principes de
base définis par ce code, résultent, d'après ce document, de la qualité technique des
systèmes utilisés et de leur utilisation attentive par les clients. Le code de bonne conduite
reprend en effet quelques conseils de base à l'attention des clients concernant l'utilisation de
la carte bancaire, la confidentialité du code secret et les formalités à effectuer en cas de
perte ou de vol de la carte.
Par ailleurs, l'Association des Banques belges a édité plusieurs documents contenant des
conseils de sécurité à l'attention des titulaires de cartes bancaires. Il leur est notamment
recommandé de conserver les tickets de retrait et de paiement, de vérifier les relevés de
compte dès qu'ils les reçoivent, et de demander aux commerçants qu'ils s'assurent de la
concordance entre les données de la carte bancaire et celles de la carte d'identité ainsi que
de la conformité de la signature apposée sur la facturette avec celle figurant au dos de la
carte bancaire.
2) Les mesures prises par les autres professionnels
a) Le code de bonne conduite de la Fédération des entreprises de Belgique
En tant qu'organisation interprofessionnelle représentative de l'ensemble des secteurs
d'activité, la Fédération des entreprises de Belgique a élaboré un code de bonne conduite
applicable en matière de commerce électronique, qui régit à la fois les relations entre
entreprises et les relations entre entreprises et consommateurs.
Les entreprises signataires s'engagent à assurer «la fiabilité et la sécurité des transactions».
b) Le code de bonne conduite relatif au commerce électronique élaboré par la Fédération
des chambres de commerce et d'industrie de Belgique et par Test-Achats
Ce code résulte d'une initiative de diverses organisations de consommateurs européennes,
parmi lesquelles Test-Achats. Il bénéficie du soutien de la Commission européenne et du
ministère belge de l'Économie. Les entreprises adhérant à ce code se voient attribuer un
label qui garantit notamment la sécurité des paiements.
DANEMARK
La loi du 31 mai 2000 sur « certains moyens de paiement » est entrée en vigueur le 1er
juillet 2000. Elle a ab rogé la loi de 1994 sur les cartes de paiement, qui avait été amendée à
plusieurs reprises depuis son entrée en vigueur.
La loi du 31 mai 2000 s'applique non seulement aux transactions réglées par carte, mais
aussi à celles qui sont réalisées à l'aide de codes ou d'autres moyens personnels
d'identification. Elle repose sur les mêmes principes que la loi précédente et se fixe pour
objectif « de garantir que les moyens de paiement qui entrent dans son champ d'application
sont sûrs et fonctionnent bien ». Elle comporte donc plusieurs dispositions visant à garantir
la sécurité des opérations effectuées à l'aide d'une carte bancaire.
76
La loi du 23 décembre 1987 sur certains contrats de vente, modifiée plusieurs fois depuis
son adoption, notamment pour transposer la directive 97/7, comporte également des
mesures de sécurisation des transactions réglées par carte bancaire.
Par ailleurs, les professionnels, et notamment les établissements financiers, ont pris euxmêmes des dispositions destinées à améliorer la sécurité des transactions réalisées par
carte bancaire.
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
Les dispositions analysées ci-dessous figurent, d'une part, dans la loi du 31 mai 2000 et,
d'autre part, dans celle du 23 décembre 1987.
1) Le cadre général
a) L'enregistrement préalable de tous les établissements financiers émetteurs de cartes
bancaires auprès de l'ombudsman des consommateurs
Tous les établissements émetteurs de moyens de paiement, et donc tous les émetteurs de
cartes bancaires, ont l'obligation d'effectuer une déclaration préalable de leur activité auprès
de l'ombudsman des consommateurs.
La déclaration comporte le nom, l'adresse et la raison sociale. Elle précise également les
informations données aux consommateurs qui souscrivent un contrat pour la mise à
disposition d'une carte bancaire.
Le défaut de déclaration est sanctionné d'une amende.
b) Le contrôle de l'ombudsman des consommateurs
L'ombudsman des consommateurs veille à la bonne exécution de la loi du 31 mai 2000. Il
doit en particulier s'assurer que les procédures mises en place assurent la sécurité de
l'ensemble des moyens de paiement et que les pratiques des professionnels prennent en
compte les intérêts des consommateurs (1(*)).
Pour exercer sa mission, l'ombudsman peut exiger tous les renseignements qu'il juge utile. Il
peut s'entourer d'experts. S'il estime qu'une pratique ne respecte pas le cadre législatif et s'il
ne parvient pas à un accord avec le professionnel concerné, il peut lui adresser une
injonction. Si celle-ci n'est pas suivie d'effet, l'ombudsman peut entamer une procédure
judiciaire.
Les décisions que l'ombudsman prend dans le cadre de la loi du 31 mai 2000 ne sont pas
susceptibles de recours devant une autre autorité administrative.
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
a) La limitation de la responsabilité des titulaires de cartes bancaires
En cas de fraude, le principe consiste à attribuer la responsabilité aux émetteurs, sauf si le
code confidentiel est utilisé. Dans cette hypothèse, le titulaire voit donc sa responsabilité
engagée, même s'il n'a pas communiqué le code à un tiers.
Lorsqu'il n'a pas communiqué le code confidentiel à un tiers, la responsabilité du titulaire est
généralement engagée de façon limitée : jusqu'à 1 200 ou 8 000 couronnes (c'est-à-dire 160
ou 1 080 €) selon les circonstances (2(*)) :
- 1 200 couronnes, lorsque le code confidentiel du titulaire de la carte a été utilisé ;
77
- 8 000 couronnes, lorsque le code confidentiel du titulaire de la carte a été utilisé et que ce
dernier a, de surcroît, fait preuve de négligence (en omettant d'indiquer à sa banque le vol de
sa carte, en communiquant son code ou en commettant une autre négligence grossière,
permettant ainsi la fraude). C'est à la banque qu'il appartient de prouver la négligence du
titulaire pour que l a limite de responsabilité soit portée à 8 000 couronnes.
La responsabilité du titulaire est toutefois engagée sans limite lorsqu'il a communiqué son
code confidentiel à la personne qui a utilisé frauduleusement la carte bancaire et que la
fraude a eu lieu dans des circonstances où il aurait dû se rendre compte qu'il courait un
risque.
En cas d'utilisation frauduleuse de la carte bancaire sans utilisation du code confidentiel (par
exemple, lorsque la transaction a été réalisée uniquement à l'aide du numéro de la carte et
de la date de fin de validité), la responsabilité du titulaire de la carte n'est engagée que si la
signature de ce dernier a été contrefaite et si une négligence grossière du titulaire a permis
la fraude. La responsabilité du titulaire n'est engagée que si l'émetteur prouve la négligence
du titulaire. En outre, elle ne peut pas l'être pour un montant supérieur à 8 000 couronnes.
Les plafonds de responsabilité s'appliquent à l'ensemble des opérations frauduleuses
effectuées par un tiers, et non à chaque transaction.
b) La mise en garde des titulaires de cartes bancaires
Les émetteurs de carte bancaire doivent fournir aux utilisateurs des renseignements
exprimés « dans un langage simple et compréhensible », sur l'utilisation sûre et appropriée
des cartes, la loi laissant les émetteurs libres de déterminer la nature précise de ces
informations ainsi que la voie par laquelle elles sont communiquées.
Ils doivent également attirer l'attention des utilisateurs sur les démarches à effectuer lorsque
leur carte bancaire a été utilisée frauduleusement et sur l'engagement de leur responsabilité
en pareil cas.
Le non-respect de cette obligation est sanctionné d'une amende.
3) Les transactions individuelles
a) La fourniture aux titulaires de cartes bancaires d'un reçu à l'occasion de chaque
transaction
Alors que la loi précédente faisait de la fourniture d'un reçu une obligation qui ne souffrait
aucune exception, la loi de 2000 assouplit les contraintes pesant sur les fournisseurs : elle
dispose que le consommateur a droit à un reçu à l'occasion de chaque transaction, à moins
qu'il ne dispose d'un autre moyen le renseignant sur le montant et la date de l'opération.
D'après les travaux préparatoires à la loi de 2000, le reçu doit être un document écrit lorsque
la carte bancaire est utilisée de façon « classique », dans un magasin par exemple. En
revanche, dans le cas d'achats à distance par exemple, un reçu adressé par courrier
électronique peut suffire.
b) Le délai de rétractation
En règle générale, les achats sont fermes et définitifs. Cependant, la législation sur les
consommateurs prévoit plusieurs exceptions à ce précepte. La principale, qui concerne les
achats par correspondance, vise notamment les paiements réalisés par carte bancaire.
78
L'acheteur dispose d'un délai de rétractation de quatorze jours. Dans la mesure où il renvoie
la marchandise dans l'état où il l'a reçue, il n'encourt aucuns frais, sauf les frais de transport.
Il peut donc obtenir le remboursement intégral de son achat.
c) Le remboursement de tout débit injustifié
La loi de 1994 comportait un alinéa obligeant les établissements financiers à prouver que les
débits effectués sur les comptes des clients ne résultaient pas d'erreurs d'ordre technique ou
informatique. De cette disposition, l'ombudsman des consommateurs a tiré la conclusion que
tous les débits devaient être prouvés par les établissements financiers et que, par
conséquent, les consommateurs pouvaient obtenir le remboursement de tout débit injustifié :
que celui-ci dépasse le montant de l'achat prévu, ou que la marchandise ou la prestation
n'ait pas été fournie par exemple.
La loi de mai 2000 reprend exactement la même disposition que la loi précédente. Elle
donne donc lieu à la même interprétation.
4) Les mesures pénales
Actuellement l'utilisation frauduleuse de cartes bancaires ne fait pas l'objet de disposition s
pénales spécifiques et les articles du code pénal relatifs à la fausse monnaie ne leur sont
pas applicables. Ces infractions tombent donc sous le coup des articles du code pénal
relatifs à l'escroquerie et à l'escroquerie informatique. Cependant, préoccupé par le
développement de la délinquance d'ordre informatique, le ministère de la Justice a, en
octobre 1997, désigné un groupe de travail qu'il a chargé de réfléchir aux évolutions
législatives souhaitables.
À la fin de l'année 2002, le groupe de travail a rendu son rapport et, s'appuyant sur ses
recommandations, le ministère de le la Justice a préparé un avant-projet de loi. Ce dernier
prévoit notamment une modification du chapitre consacré à la fausse monnaie, dont l'intitulé
deviendrait « Infractions contre les moyens de paiement » et qui comprendrait un article
punissant explicitement la fabrication, la diffusion et l'acquisition de moyens de paiement
électroniques, parmi lesquels les cartes bancaires.
II. LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
a) L'utilisation du code à trois chiffres figurant au verso de la carte pour les achats à distance
Depuis avril 2002, PBS (qui est en quelque sorte l'équivalent du GIE français Carte bancaire)
exige que les consommateurs indiquent aux commerçants, outre le numéro et la date de fin
de validité de leur carte bancaire, le numéro à trois chiffres qui figure au verso de leur carte
lorsqu'ils règlent un achat au moyen de celle-ci et qu'ils passent leur commande par
téléphone, par correspondance ou par Internet.
Les commerçants ont ensuite l'obligation de transmettre ce code à PBS, qui vérifie la
cohérence entre les trois éléments fournis.
Le défaut de fourniture de ce code entraîne le rejet de la transaction.
b) La modernisation des cartes bancaires
Une modification de la loi de mai 2000, adoptée le 4 juin 2003 et qui entrera en vigueur le
1er janvier 2005, va permettre aux professionnels de moderniser le système de paiement par
carte.
En effet, dans sa version initiale, l'article 14 de la loi interdisait aux établissements financiers
79
de faire payer aux commerçants des droits (3(*)) lorsque les clients utilisaient leur carte de
façon « classique », c'est-à-dire lorsque la transaction se réalisait en présence du client et du
commerçant. Le prélèvement d'un droit était en revanche possible si la carte était utilisée
pour régler un achat effectué à distance.
La modification adoptée permet aux établissements financiers de prélever sur les
commerçants un droit sur toutes les opérations réalisées sur place à l'aide d'une carte à
puce. Le montant de ce droit varie en fonction de plusieurs éléments (âge du titulaire, carte
valable ou non à l'étranger...). En règle générale, il s'élève à 0,50 couronnes (soit un peu
moins de 0,07 €) par transaction. En revanche, si les paiements sont effectués à l'aide d'une
carte dotée seulement d'une piste magnétique, aucun droit ne sera exigible.
Les commerçants pourront répercuter cette somme sur les clients, dans la limite du droit
qu'ils paient eux-mêmes.
Ces règles, valables jusqu'au 31 décembre 2009, seront remplacées par de nouvelles
dispositions à partir du 1er janvier 2010.
2) Les directives de l'ombudsman des consommateurs
Élaborées conformément à la loi de 1994 sur les cartes de paiement, elles ont été abrogées
en mars 2002. Toutefois, elles continuent à être suivies par les professionnels, en attendant
que de nouvelles directives soient rédigées.
Les directives de l'ombudsman des consommateurs résultent de la collaboration entre les
représentants des établissements financiers, des consommateurs et des commerçants.
Elles ne valent que pour les achats effectués à distance et cherchent à offrir aux
consommateurs la protection maximale contre toute utilisation frauduleuse de leur carte.
L'objectif principal des directives consiste à obliger les émetteurs des cartes et les
bénéficiaires des paiements à suivre des procédures assurant aux titulaires des cartes une
protection adéquate contre toute utilisation frauduleuse. Les principales mesures qu'elles
énoncent sont les suivantes :
- aucun commerçant ne peut exécuter quelque transaction que ce soit sans l'accord exprès
du titulaire ;
- les émetteurs des cartes ne peuvent pas tenir pour responsables les titulaires qui
communiquent leur numéro de carte (lequel n'est pas secret, à la différence du code) ;
- en cas de contestation d'une transaction par le titulaire d'une carte, l'opération doit être
suspendue et le compte re crédité si la transaction a déjà été enregistrée.
ESPAGNE
Il existe peu de dispositions législatives et réglementaires destinées spécifiquement à
garantir la sécurité des transactions réalisées par carte bancaire. La plupart des règles
applicables sont des règles générales, qui résultent notamment du droit des contrats et du
droit de la consommation. Cependant, depuis qu'elle a été modifiée par la loi 47/2002 du 19
décembre 2002, adoptée pour transposer la directive 97/7 relative aux contrats à distance, la
loi 7/1996 du 15 janvier 1996 sur l'organisation du commerce de détail comporte plusieurs
mesures visant particulièrement la sécurité de la carte bancaire.
Les principales dispositions garantissant la sécurité des transactions réalisées par carte
bancaire résultent de l'application par les établissements financiers, d'une part, du code de
bonne conduite du secteur bancaire européen 14 novembre 1990 relatif aux systèmes de
80
paiement par carte (4(*)) et, d'autre part, de la recommandation 97/489 de la Commission
européenne concernant les opérations effectuées au moyen d'instruments de paiement
électronique.
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
Aucune mesure générale ne vise spécifiquement la sécurité des cartes bancaires.
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
Elles sont déterminées par les contrats de mise à disposition des cartes bancaires, lesquels
doivent notamment satisfaire aux conditions fixées par la loi de 1984 sur la défense des
consommateurs et des usagers (clarté et simplicité de la rédaction...).
3) Les transactions individuelles
a) Le délai de rétractation
Lorsqu'un client achète à distance, il dispose d'un délai de rétractation de sept jours
ouvrables, au cours desquels il peut renoncer à son achat sans pénalisation et sans avoir à
indiquer de motif. Il doit seulement supporter les frais relatifs au retour de la marchandise au
vendeur.
Cette disposition vise en particulier les achats réglés par carte bancaire.
b) Le remboursement de tout débit injustifié
En cas d'utilisation frauduleuse de la carte bancaire lors d'une opération de vente à distance,
le titulaire de la carte peut demander l'annulation immédiate de la transaction. Le
remboursement doit être effectué dans les plus brefs délais.
La preuve de l'utilisation frauduleuse d'une carte bancaire incombe à l'établissement de
crédit.
4) Les mesures pénales
a) La fabrication et la falsification des cartes bancaires
La fabrication, la distribution et l'utilisation de fausses cartes bancaires relèvent du même
article du code pénal que la falsification de la monnaie fiduciaire. Ces infractions sont donc
sanctionnées par une peine de prison dont la durée est comprise entre huit et douze ans.
Alors que, en cas de falsification de la monnaie fiduciaire, la peine de prison est assortie
d'une amende dont le montant s'élève au décuple du montant de la monnaie falsifiée,
aucune amende n'est imposée lorsque l'infraction concerne une carte bancaire, car la
détermination de la valeur de la falsification est alors impossible.
En juin 2002, le Tribunal suprême a décidé que la modification de la piste magnétique d'une
carte bancaire était assimilable à la fabrication d'une fausse carte bancaire et tombait donc
également sous le coup de l'article du code pén al punissant la falsification de la monnaie
fiduciaire.
b) La fraude informatique
La plupart des autres infractions relatives à la carte bancaire (interception d'un numéro de
carte par exemple) relèvent de l'article du code pénal sur la fraude informatique. Cet article
vise en effet tous les transferts de patrimoine réalisés par des moyens informatiques à l'insu
et au détriment d'un tiers. Les contrevenants sont passibles d'une peine de prison dont la
durée varie en fonction de l'importance de la fraude, mais qui est d'au moins six mois.
81
II. LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
a) Le code de bonne conduite
Les établissements financiers se réfèrent au code de bonne conduite du secteur bancaire
européen du 14 novembre 1990 relatif aux systèmes de paiement par carte, qui détermine
dans une large mesure les relations entre les établissements financiers et les titulaires de
cartes bancaires.
La mise en garde des titulaires de cartes bancaires
Les titulaires d'une carte bancaire ont l'obligation de prendre toutes les mesures
raisonnables pour éviter l'utilisation frauduleuse de leur carte. Ils doivent notamment éviter
de conserver par écrit leur numéro de code sur la carte ou sur un document joint à celle-ci.
La limitation de responsabilité des titulaires de cartes bancaires
En cas de perte, de vol ou de copie de la carte, la responsabilité du titulaire est engagée
jusqu'au moment de la notification à l'établissement financier émetteur, mais à hauteur de
150 € seulement, sauf s'il a agi frauduleusement ou avec une extrême négligence. De plus,
la charge de la preuve de la fraude ou de la négligence du titulaire pèse sur l'établissement
financier émetteur de la carte.
Si le détenteur de la carte n'a pas informé sa banque du vol, de la perte ou de la copie de
celle-ci, sa responsabilité est engagée. Toutefois, une limitation peut être déterminée
contractuellement, suivant les termes de la recommandation 97/489. Elle n'est appliquée que
si le titulaire de la carte n'a pas commis de négligence grave.
Dans la pratique, la plupart des établissements financiers ne respectent pas les termes de la
recommandation 97/489 et incluent dans leurs documents contractuels des clauses abusives
de limitation de leur responsabilité. La Banque d'Espagne déplore cette « mauvaise pratique
» généralisée, qui conduit les titulaires de cartes bancaires à porter certaines affaires devant
les tribunaux.
La fourniture aux titulaires de cartes bancaires d'informations relatives aux opérations
réalisées
Les titulaires de cartes bancaires doivent recevoir un relevé des opérations réalisées au
moyen de leur carte.
Ils peuvent également recevoir un relevé sommaire immédiatement après la transaction.
b) Les autres mesures prises par le secteur bancaire
L'annexe VI de la circulaire 8/1990 du 7 septembre 1990 de la Banque d'Espagne précise
qu'un relevé des transactions effectuées au moyen d'une carte de paiement doit être
adressé régulièrement au client. La périodicité de cet envoi est déterminée
contractuellement.
2) Les recommandations des associations de consommateurs
La plupart des cartes bancaires ne possédant pas de puce, il est recommandé aux
commerçants de demander aux clients leur carte d'identité, de la comparer avec la carte
bancaire, de vérifier que les deux documents sont bien ceux du titulaire et enfin contrôler la
signature du reçu, qui doit être identique à celle figurant sur la carte bancaire.
82
ROYAUME-UNI
Il existe peu de dispositions législatives et réglementaires destinées spécifiquement à
garantir la sécurité des transactions réalisées par carte bancaire : le règlement sur la
protection des consommateurs, adopté en 2000 pour transposer la directive 97/7, comprend
quelques mesures, mais elles valent seulement pour les ventes à distance.
Les principales règles applicables figurent dans le code de bonne conduite des banques de
mars 2003, dont l'un des objectifs essentiels consiste à garantir un « système bancaire et de
paiements sûr et fiable ». Bien que conclu sur une base volontaire, le code de bonne
conduite s'impose à tous les signataires, c'est-à-dire à tous les établissements financiers.
Par ailleurs, les professionnels, tant du secteur bancaire que de la vente, ont pris diverses
dispositions pour améliorer la sécurité des transactions réalisées par carte bancaire.
I. LES DISPOSITIONS LÉGISLATIVES ET RÉGLEMENTAIRES
1) Le cadre général
À la suite de l'adoption, au cours de l'année 2000, de la loi régissant les pouvoirs d'enquête
(Regulation of Investigatory Powers Act), qui a modifié les règles applicables à l'interception
des communications, une force de police spécialisée dans la lutte contre les infractions
commises grâce à Internet a été créée. Cette force de police est notamment compétente
pour prévenir et détecter les fraudes à la carte bancaire.
2) Les relations entre les établissements financiers et les titulaires de cartes bancaires
Pour l'essentiel, elles sont définies dans le code de bonne conduite, et non dans un texte
législatif ou réglementaire.
3) Les transactions individuelles
a) Le délai de rétractation
Le règlement sur la protection du consommateur en matière de vente à distance, adopté en
2000 pour transposer la directive 97/7, prévoit un délai de rétractation de sept jours.
b) Le remboursement de tout débit injustifié
Le règlement sur la protection du consommateur en matière de vente à distance dispose que
le consommateur peut demander l'annulation des transactions réalisées frauduleusement à
l'aide de sa carte. Son compte doit ensuite être recrédité du montant des achats. C'est à
l'établissement financier qu'il appartient de prouver que la transaction a été réalisée de façon
régulière lorsque le titulaire de la carte demande l'application de cette mesure.
4) Les mesures pénales
La loi de 1981 sur la contrefaçon et la falsification prévoit explicitement le cas des cartes
bancaires : le fait de détenir sciemment de fausses cartes, avec l'intention de les utiliser ou
de faire en sorte qu'un tiers les utilise, constitue une infraction, tout comme le fait de détenir
du matériel destiné à fabriquer de fausses cartes.
Cette infraction, nécessairement jugée sur acte d'accusation (5(*)), est sanctionnée d'une
peine de prison, dont la durée maximale peut atteindre dix années.
II LES AUTRES MESURES
1) Les mesures prises par le secteur bancaire
a) Le code de bonne conduite des banques
83
Il inclut plusieurs dispositions, qui, dans les autres pays, font l'objet d'une loi, en particulier
les dispositions sur la limitation de responsabilité des titulaires de cartes bancaires.
La limitation de la responsabilité des titulaires de cartes bancaires
Dans la mesure où le titulaire d'une carte respecte les règles de précaution qui lui ont été
communiquées et ne commet aucune fraude, sa responsabilité ne peut pas être engagée
pour plus de 50 £.
En effet, le code de bonne conduite limite la responsabilité des détenteurs de cartes
bancaires à 50 £ (soit environ 80 €) en cas d'utilisation du code secret par un tiers avant que
le détenteur de la carte n'ait indiqué la perte ou le vol de celle-ci à sa banque. Ce plafond
s'applique à l'ensemble des opérations effectuées par le tiers, et non pas à chacune des
transactions.
De plus, le code de bonne conduite exclut toute responsabilité du titulaire dans les deux cas
suivants :
- la carte a été utilisée avant qu'il ne l'ait reçue ;
- les données de la carte ont été utilisées pour régler un achat fait en dehors de la présence
du détenteur.
En revanche, en cas de grossière négligence, le titulaire de la carte voit sa responsabilité
engagée sans limite.
Cette limitation de la responsabilité est assortie d'une clause sur la charge de la preuve :
pour que la responsabilité du titulaire de la carte soit engag ée sans limite, il revient à
l'établissement signataire du code de bonne conduite de prouver que le titulaire n'a pas agi
avec le soin requis ou qu'il a fraudé.
La mise en garde des titulaires de cartes bancaires
Le code de bonne conduite se fixe pour objectif de fournir aux clients toutes les informations
requises dans un langage « clair ». Il attire l'attention des titulaires de cartes bancaires sur la
nécessité de prendre des précautions (ne pas communiquer son code secret à un tiers, ne
pas l'écrire, prévenir sa banque le plus vite possible en cas de vol...).
b) Les autres mesures prises par le secteur bancaire
Préoccupée par le développement de la fraude aux cartes, qu'elle estimait à 165 millions de
livres pour 1992, à 317 millions pour 2000 et à 411,4 millions pour 2001, l'APACS
(Association for Payment Clearing Services), qui regroupe la plupart des banques et des
établissements financiers, s'efforce de lutter contre ce phénomène, notamment en
collaborant avec la police, le ministère de l'Intérieur et tous les organismes chargés, à un titre
ou à un autre, de la prévention des infractions.
Elle a également développé l'information sur la fraude. Ainsi, son site Internet
www.cardwatch.org.uk comporte des renseignements pratiques destinés aux détaillants, aux
consommateurs et aux forces de police.
L'APACS a progressivement imposé la multiplication des autorisations préalables aux
règlements par carte : elles représentaient 10 % de toutes les transactions réalisées par
carte bancaire au début des années 70 et sont passées à 90 % actuellement.
84
De plus, au cours de l'année 2002, elle a pris deux mesures importantes : elle a décidé le
remplacement progressif des cartes à piste magnétique par des cartes à puce et a contribué
à la création, en collaboration avec le ministère de l'Intérieur, d'un corps de police spécialisé.
La modernisation des cartes bancaires
En février 2002, l'APACS a annoncé le remplacement progressif des quelque 100 millions de
cartes bancaires en circulation dans le pays par des cartes à puce. L'opération devrait être
achevée en 2005.
Cette mesure vise principalement à réduire la fraude consistant à recopier les pistes
magnétiques, qui s'est particulièrement développée. Son coût, estimé à 107,1 millions de
livres pour 2000 et à 160,4 millions pour 2001, a été réduit à 148,5 millions en 2002.
La création d'un corps de police spécialisé
En avril 2002, un corps de police spécialisé dans la lutte contre la fraude aux moyens de
paiement, la DCPCU (Dedicated Cheque and Plastic Crime Unit), a été créé à titre
expérimental pour deux ans.
La DCPCU n'opère que sur le territoire de l'Angleterre et du Pays de Galles. Elle est
financée à hauteur de 75 % par l'APACS. Elle rassemble des officiers de police et des
experts issus de la banque.
À l'issue de la période d'expérimentation, une évaluation sera conduite. Cette unité
spécialisée pourrait alors être créée définitivement.
2) Les mesures prises par les autres professionnels
En 1999, le gouvernement a demandé aux organismes de défense des consommateurs et
aux fournisseurs de biens et de service en ligne d'élaborer une charte répondant aux besoins
des consommateurs désireux de faire leurs achats sur Internet.
Une association sans but lucratif, TrustUK, a été créée avec l'appui du gouvernement. Elle
délivre son agrément aux sites Internet qui se conforment à ses critères, parmi lesquels la
sécurité des paiements.
-------------------------------------------------------------------------------(1) Le contrôle de l'ombudsman des consommateurs est totalement indépendant de celui qui
est pratiqué par l'autorité de surveillance des activités financières.
(2) Comme ces dispositions reprennent en grande partie celles de la loi précédente, qui
prévoyait les mêmes plafonds de responsabilité, on peut estimer que, dans la majorité des
cas, la limite de responsabilité sera de 1 200 co uronnes.
(3) À l'origine, le législateur craignait la répercussion des droits par les commerçants sur la
totalité des clients, indépendamment du mode de paiement, et donc la pénalisation des
clients payant comptant.
(4) La Fédération bancaire de la Communauté européenne, le Groupement des banques
coopératives de la Communauté européenne et le Groupement européen des Caisses
d'épargne, regroupées dans l'Association européenne du secteur du crédit (AESC), ont
adopté ce code de bonne conduite pour répondre aux exigences des institutions
communautaires.
85
(5) Par opposition aux infractions susceptibles d'être jugées selon une procédure sommaire
par des juges non professionnels, les infractions qui font l'objet d'un acte d'accusation sont
jugées par la Crown Court : la culpabilité est établie par un jury populaire et la peine est
déterminée par un magistrat professionnel.
12.9 Charte d'Osc.FR
1. Acceptation des conditions d'utilisation et modifications.
Chaque fois que vous utilisez ou accédez à ce site, vous acceptez d'être lié par ces
Conditions d'utilisation, modifiées de temps en temps que vous en soyez informé ou non. De
plus, si vous utilisez un service spécifique sur ou via ce site web, vous serez sujet à toutes
les règles ou instructions applicables à ces services qui seront incorporées par références à
ces Conditions d'utilisation. Merci de lire la Charte du respect de la vie privée, qui est incluse
à ces Conditions d'utilisation par référence.
2. Notre service.
Notre site web et nos services vous sont fournis sur ou via notre site web "en l'état". Vous
acceptez que les propriétaires de ce site se réservent le droit et puissent, à n'importe quel
moment et sans information ou responsabilité à votre égard, modifier ou mettre un terme à
ce site et ces services ou supprimer les informations que vous aurez amené, que ce soit
temporairement ou de façon permanente. Nous n'aurons aucune responsabilité pour les
interruptions, suppression, erreur dans la conservation, inexactitude, ou la livraison impropre
de toute donnée ou information.
3. Votre responsabilité et obligations d'enregistrement.
Dans le but d'utiliser ce site web, vous devez vous enregistrer et d'avoir plus de 0 ans. En
vous enregistrant, vous acceptez explicitement nos Conditions d'utilisation disponibles ici et
qu'elles puissent être modifiées par nous à n'importe quel moment.
4. Charte du respect de la vie privée.
L'enregistrement des données et autres informations personnellement identifiables que nous
pourrions collecter est sujette à notre Charte du respect de la vie privée.
5. Enregistrement et mot de passe.
Vous êtes responsable de maintenir la confidentialité de votre mot de passe et serez
responsable pour toute utilisation via votre enregistrement et/ou login, qu'il soit autorisé ou
non par vous. Vous acceptez de nous notifier tout usage non autorisé de votre
enregistrement, compte d'utilisateur ou mot de passe.
6. Votre conduite.
Vous acceptez que toute information ou donnée de toute sorte, qu'il s'agisse de texte,
logiciel, code, musique ou son, photographie ou graphisme, video ou autre materiau
("Contenu"), fourni publiquement ou en privé, puisse être de la seule responsabilité de la
personne dont le compte d'utilisateur est utilisé pour fournir le contenu. Vous acceptez que
notre site puisse vous exposer un contenu choquant ou offensant. Nous ne sommes en
aucun cas responsable envers vous du contenu qui apparait sur ce site par erreur ou
omission.
Vous acceptez explicitement, en utilisant ce site ou tout service fourni, que vous :
(a) ne fournirez aucun contenu ou n'agirez d'aucune façon illégale, menaçante, blessante,
abusive, harcelante, torturante, diffamatoire, vulgaire, obscène, offensante, choquante,
pornographique, destinée ou interférant ou déreangeant ce site ou tout service fourni,
n'infecterez avec un virus ou toute autre routine de programme destructive ou nuisible,
n'engagerez aucune responsabilité civile ou pénale, ou qui puisse violer une loi applicable à
un niveau local, national ou international ;
86
(b) ne vous ferez passer pour personne ou ne représenterez à tord votre association avec
aucune personne ou entité, ne fabriquerez ou ne chercherez à cacher ou déformerez
l'origine d'un contenu fourni par vous ;
(c) ne collecterez ou récolterez aucune donnée sur les autres utilisateurs ;
(d) ne fournirez ou n'utiliserez ce site et tout contenu ou service d'aucune façon commerciale
ou d'aucune manière qui impliquerait des E-mails indésirables, spam, lettres en chaines,
pyramides, ou aucune autre forme de publicité non autorisée sans un accord préalable écrit ;
(e) ne fournirez aucun contenu qui engagerait notre responsabilité civile ou pénale ou qui
constituerait ou serait considéré comme une violation de toute loi locale, nationale ou
internationale, incluant mais non limité aux lois relatives aux copyrights, marques déposées,
brevets, ou secrets commerciaux.
7. Soumission du contenu sur ce site web.
En fournissant un contenu sur notre site web :
(a) vous acceptez de nous accorder à une échelle mondiale un droit perpétuel, sans
royalties, non exclusif (incluant tout droit moral ou autres droits nécessaires) d'utiliser,
afficher, reproduire, modifier, adapter, publier, distribuer, représenter, promouvoir, archiver,
traduire, et de créer des travaux dérivés et des compilations, en entier ou en partie. Cette
licence s'appliquera respectivement à toute forme, média, technologie connue ou
développée dans l'avenir ;
(b) vous garantissez que vous avez tous les droits légaux, moraux, et autres qui puissent
être nécessaires pour nous fournir la licence mentionnée dans cette section 7 ;
(c) vous reconnaissez et acceptez que nous puissions avoir le droit (mais non l'obligation), à
notre seule discrétion, de refuser de publier, de retirer ou de bloquer l'accès à tout contenu
que vous aurez fourni à n'importe quel moment et pour n'importe quelle raison, avec ou sans
avertissement.
8. Services tiers.
Les biens et services de tierces parties peuvent faire l'objet de publicité ou être rendus
disponibles sur ou via ce site web. Les représentations faites concernant des produits ou
services fournis par des tiers sont gouvernées par les politiques et représentations établies
par ces tierces parties. Nous ne sommes responsables en aucune façon de vos accords ou
interactions avec ces parties.
9. Indemnisation.
Vous acceptez d'idemniser et de nous tenir à l'abri, nous, nos filiales, affiliés, apparentés,
officiers, directeurs, employés, agents, entrepreneurs indépendents, publicitaires, et
partenaires pour toute réclamation ou demande, incluant des honoraires raisonables
d'avocat, qui pourrait être demandée par n'importe quelle partie tierce, qui serait due ou
issue de votre comportement ou connexion à ce site ou service, votre fourniture de contenu,
votre violation de ces Conditions d'utilisation ou toute autre violation des droits d'une autre
personne ou tierce partie.
10. DENEGATION DE GARANTIES.
VOUS COMPRENEZ ET ACCEPTEZ QUE VOTRE UTILISATION DE CE SITE WEB ET
TOUT LES SERVICES OU CONTENUS FOURNIS (LE "SERVICE") EST REALISE ET
PRESENTE A VOUS ET A VOTRE RISQUE. IL VOUS EST PRESENTE "TEL QUE" ET
NOUS NE FOURNISSONS AUCUNE GARANTIE D'AUCUNE SORTE, IMPLICITE OU
VOLONTAIRE, INCLUANT MAIS NON LIMITE AUX GARANTIES COMMERCIALES,
APTITUDE A UN SUJET PARTICULIER, ET DE NON TRANSGRESSION.
NOUS NE FOURNISSONS AUCUNE GARANTIE, IMPLICITE OU VOLONTAIRE, QU'UNE
PARTIE DU SERVICE NE SERA PAS INTERROMPUE, SANS ERREUR, SANS VIRUS,
OPPORTUN, SECURISE, PRECIS, FIABLE, DE QUALITE, NI QU'AUCUN CONTENU
N'EST SUR A TELECHARGER. VOUS COMPRENEZ ET ACCEPTEZ QUE NI NOUS NI
AUCUN PARTICIPANT AU SERVICE NE FOURNIT DE CONSEIL PROFESSIONNEL
87
D'AUCUNE SORTE ET QUE L'UTILISATION DE CES CONSEILS OU TOUTE
INFORMATION SE FAIT A VOS RISQUES ET SANS QUE NOTRE RESPONSABILITE NE
SOIT ENGAGEE D'AUCUNE FACON.
Certaines juridictions n'acceptent pas les dénégations de garanties des garanties implicites
et la dénégation de garanties peut donc ne pas s'appliquer à vous seul en ce qui concerne
les garanties implicites.
11. LIMITATION DE RESPONSABILITÉ.
VOUS COMPRENEZ EXPRESSÉMENT ET RECONNAISSEZ QUE NOUS NE SERONS
RESPONSABLES D'AUCUN DEGAT DIRECT, INDIRECT, SPÉCIAL, ACCIDENTEL,
CONSÉCUTIF OU EXEMPLAIRE, Y COMPRIS, MAIS NON LIMITÉS À, DES DÉGÂTS
POUR PERTE DE PROFITS, BIENVEILLANCE, UTILISATION, DONNÉES OU D'AUTRE
PERTE INTANGIBLE (MÊME SI ON NOUS A INFORMÉ DE LA POSSIBILITÉ DE TELS
DÉGÂTS), RÉSULTANT OU PROVENANT DE :
(I) L'UTILISATION OU DE L'INCAPACITÉ D'EMPLOYER LE SERVICE,
(II) LE COÛT POUR OBTENIR DES MARCHANDISES DE REMPLACEMENT ET/OU
SERVICES RÉSULTANT DE N'IMPORTE QUELLE TRANSACTION EN TRÉE SUR PAR LE
SERVICE,
(III) ACCÈS NON AUTORISÉ OU À CHANGEMENT DE VOS TRANSMISSIONS DE
DONNÉES,
(IV) DÉCLARATIONS OU CONDUITE DE N'IMPORTE QUEL TIERS SUR LE SERVICE, OU
(V) UNE AUTRE QUESTION TOUCHANT AU SERVICE.
Dans quelques juridictions, on ne permet pas de limiter la responsabilité et donc telles
limitations ne peuvent pas s'appliquer à vous.
12. Réservation de droits.
Nous réservons tous nos droits, y compris, mais non limité à tous les copyrights, droits
d'auteur, des marques déposées, des brevets d'invention, des secrets de fabrication et un
autre droit de marque déposée que nous pouvons avoir dans notre site web, son contenu et
les marchandises et les services que l'on peut fournir. L'utilisation de nos droits et propriété
exige notre consentement écrit antérieur. Nous ne vous fournissons aucune licence ou droit
implicite en rendant accessible ces services et vous n'aurez aucun droit de faire n'importe
quelles utilisations commerciales de notre site Web ou service sans notre consentement écrit
antérieur.
13. Avis d'infraction du droit d'auteur.
Si vous croyez que votre propriété a été utilisée d'une façon qui pourrait être considérée
comme une infraction aux copyrights ou aux droits sur la propriété intellectuelle, notre agent
des copyrights peut être contacté à l'adresse suivante :
Cliquer ici pour entrer en contact avec le webmaster. [D'autres informations sur le contact
incluant l'adresse ou l'information pour un agent désigné]
14. Loi applicable.
Vous reconnaissez que les Conditions d'utilisation et n'importe quelle discussion provenant
de votre utilisation de ce site web ou nos produits ou services sera dirigée par et interprétée
conformément aux lois locales où le siège du propriétaire de ce site web est placé, sans
respect à son conflit de dispositions légales. En enregistrant ou employant ce site Web et
service vous faites consentir et vous soumettez à la juridiction exclusive et le rendez-vous du
comté ou la ville où le siège du propriétaire de ce site web est placé.
15. Informations diverses.
(i) Au cas où les Conditions d'utilisation seraient en conflit avec n'importe quelle loi sous
laquelle n'importe quelle disposition peut être tenue invalide par une cour de juridiction de
l'une des parties, une telle disposition sera interprétée pour refléter les intentions originales
88
des parties conformément à la loi applicable, et le reste des Conditions d'utilisation resteront
valables et intactes;
(ii) L'échec de l'une ou l'autre partie pour affirmer n'importe quel droit sous les Conditions
d'utilisation ne sera pas considéré comme une renonciation au droit d'aucune des parties et
le droit restera intact et en vigueur;
(iii) Vous reconnaissez que sans respect à n'importe quelle statue ou la loi contraire après
laquelle n'importe quelle revendication ou cause provenant de ce site Web ou ses services
doivent être classés dans un (1) an une telle revendication ou la cause ont surgi ou la
revendication sera pour toujours défendue;
(iv) Nous pouvons assigner nos droits et obligations sous les Conditions d'utilisation et nous
serons soulagés de n'importe quelle nouvelle obligation.
12.10 Licence Oscommerce
OSCOMMERCE est un logiciel "libre" distribué sous la licence GNU dont voici une traduction
(origine site www.april.org).
LICENCE PUBLIQUE GÉNÉRALE GNU
Version 2, Juin 1991
Copyright © 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA
02139, USA.
La copie et la distribution de copies verbatim de ce document est autorisée, mais aucune
modification n'est permise.
Préambule
Les licences d'utilisation de la plupart des éditeurs de logiciels sont destinées à mettre les
utilisateurs à la merci de ces éditeurs. A l'opposé, la licence publique générale GNU est
destinée à vous garantir la liberté de partager et de modifier les logiciels librement
accessibles, et ainsi de s'assurer que ces programmes sont réellement accessibles sans
frais pour tous leurs utilisateurs. Cette Licence Publique Générale s'applique à la majorité
des programmes de la Free Software Foundation et à tout autre programme pour lesquels
les auteurs ont décidé de l'utiliser (quelques autres logiciels sont couverts par la licence
publique générale pour bibliothèques GNU à la place). Vous pouvez aussi l'utiliser pour vos
propres programmes.
Lorsque nous parlons de free software , nous entendons free dans le sens de liberté, et non
pas de gratuité. Notre licence est conçue pour s'assurer que vous avez la liberté de
distribuer des copies des programmes, gratuitement ou non, et que vous recevez ou pouvez
obtenir le code source, que vous pouvez modifier les programmes ou en utiliser des parties
dans d'autres programmes libres, en sachant que vous pouvez le faire.
Afin de protéger vos droits, nous devons faire des restrictions qui interdisent à quiconque de
vous refuser ces droits ou de vous demander d'y renoncer. Ces restrictions vous imposent
par conséquent certaines responsabilités si vous distribuez des copies des programmes
protégés par la Licence Publique Générale ou si vous les modifiez.
Par exemple, si vous distribuez des copies d'un tel programme, gratuitement ou non, vous
devez transmettre aux utilisateurs tous les droits que vous possédez. Vous devez vous
assurer qu'ils reçoivent ou qu'il peuvent se procurer le code source. Vous devez leur montrer
cette licence afin qu'ils soient eux aussi au courant de leurs droits.
Nous protégeons vos droits en deux étapes: (1) par le copyright du logiciel, et (2) par la
délivrance de cette licence qui vous autorise légalement à copier, distribuer et/ou modifier le
logiciel.
De plus, pour la protection de chaque auteur et la nôtre, nous voulons nous assurer que
chacun comprend bien qu'il n'y a aucune garantie pour ce programme libre. Si le logiciel est
modifié par quelqu'un d'autre et redistribué ensuite, nous voulons que tous ceux qui le
recevront sachent qu'ils n'ont pas affaire à l'original, de façon que les problèmes introduits
par d'autres n'entachent pas la réputation de l'auteur original.
89
Enfin, tout programme libre est sans cesse menacé par des dépôts de licences. Nous
voulons à tout prix éviter que des distributeurs puissent individuellement déposer la licence
des logiciels, pour leur propre compte. Pour éviter cela, nous stipulons bien qu'un éventuel
dépôt de licence doit prévoir un usage libre pour tous.
Les termes précis et les conditions pour la copie, la distribution et la modification sont les
suivants.
LICENCE PUBLIQUE GENERALE GNU
Termes et conditions générales de copie, distribution et modification
0. Cette licence s'applique à tout programme ou autre travail contenant une notice placée par
le possesseur du copyright précisant qu'il peut être distribué selon les termes de cette
Licence Publique Générale. Le "programme", désigne soit le programme en lui-même, soit
n'importe quel travail qui en est dérivé selon la loi : c'est-à-dire, un ouvrage contenant le
programme ou une partie de celui-ci, que ce soit à l'identique ou avec des modifications,
et/ou traduit dans une autre langue (à partir de maintenant, nous considérerons donc que le
terme "modification" inclut également la "traduction"). Chaque personne à qui s'applique
cette licence sera désignée par "Vous".
Les activités comme la copie, la distribution et la modification ne sont pas couvertes par
cette licence et sortent de son cadre. Le fait d'utiliser le programme n'est pas limité, et les
données issues du programme ne sont couvertes que si leur contenu constitue un travail
basé sur le logiciel (indépendant ou réalisé en lançant le programme). Tout dépend de ce
que le programme est censé faire.
1. Vous pouvez copier et distribuer des copies conformes du code source du programme, tel
que vous l'avez reçu, sur n'importe quel support, à condition de placer sur chaque copie un
copyright approprié et une limitation de garantie, et de ne pas modifier ou omettre toutes les
stipulations se référant à cette licence et à la limitation de garantie, et de fournir avec toute
copie du programme un exemplaire de cette Licence Publique Générale GNU.
Vous pouvez demander une rétribution financière pour l'acte physique de réalisation de la
copie, et vous êtes libre de proposer une garantie assurée par vous-même moyennant
finances.
2. Vous pouvez modifier votre copie ou vos copies du programme ou toute partie de celui-ci,
ou travail basé sur ce programme, et copier et distribuer ces modifications ou ce travail selon
les termes de l'article 1, à condition que vous vous conformiez également aux conditions
suivantes:
a) Vous devez ajouter aux fichiers modifiés l'indication très claire de ces modifications, et
indiquer la date de chaque changement.
b) C'est sous les termes de la Licence Publique Générale que vous devez distribuer
l'ensemble de toute réalisation contenant tout ou partie du programme, avec ou sans
modifications.
c) Si le programme modifié lit des commandes de manière interactive lors de son exécution,
vous devez faire en sorte qu'il affiche, lorsqu'il est lancé normalement, le copyright approprié
en indiquant bien la limitation de garantie (ou bien, que vous vous engagez vous-même à
fournir une garantie), qu'il stipule que les utilisateurs peuvent librement redistribuer le
programme sous ces conditions, et qu'il montre à l'utilisateur comment lire une copie de cette
licence. (Exception : si le programme original est interactif mais n'affiche normalement pas
un tel message, tout travail dérivé du programme ne sera pas non plus obligé de l'afficher).
Ces conditions s'appliquent à l'ensemble des modifications. Si des éléments identifiables de
ce travail ne sont pas dérivés du programme, et peuvent être considérés raisonnablement
comme indépendants, alors cette licence ne s'applique pas à ces éléments lorsque vous les
distribuez seuls. Mais lorsque vous distribuez ces mêmes éléments comme partie d'un
ensemble cohérent dont le reste est fondé sur un programme soumis à cette Licence, alors
ils sont soumis également à la Licence Publique Générale, qui s'étend ainsi à l'ensemble du
produit, quel qu'en soit l'auteur.
90
Il n'est pas question dans cet article section de s'approprier ou de contester vos droits sur un
travail totalement écrit par vous, son but est plutôt de s'accorder le droit de contrôler la libre
distribution de tout travail dérivé ou tout travail collectif basé sur le programme.
De plus, toute compilation d'un autre travail avec le programme (ou avec un travail dérivé du
programme) sur un support de stockage ou de distribution, ne fait pas tomber cet autre
travail sous le contrôle de cette Licence.
3. Vous pouvez copier et distribuer le programme (ou un travail dérivé selon l'article 2) sous
forme de code objet ou exécutable, selon les termes des articles 1 et 2 ci-dessus, à condition
de respecter les clauses suivantes :
a) Que la distribution soit accompagnée du code source com plet du programme, sous une
forme lisible par un ordinateur, et cela selon les termes des articles 1 et 2 ci-dessus, sur un
support habituellement utilisé pour l'échange de données ; ou,
b) Que la distribution contienne une offre écrite, valable pendant au moins les trois
prochaines années, de donner à tout tiers qui en fera la demande, une copie sous forme
lisible par une machine du code source correspondant, pour un tarif qui ne doit pas être
supérieur à ce que vous coûte la copie, selon les termes des articles 1 et 2 ci-dessus, sur un
support courant pour l'échange de données informatiques ; ou,
c) Que la distribution soit accompagnée des informations sur l'endroit où le code source peut
être obtenu. (Cette alternative n'est autorisée que dans le cas d'une distribution non
commerciale, et uniquement si vous avez recu le programme sous forme de code objet ou
exécutable avec une telle offre, en accord avec l'alinéa b précédent.)
Le code source d'un travail désigne la forme de cet ouvrage sous laquelle les modifications
sont les plus aisées. Ceci désigne la totalité du code source de tous les modules qui
composent un programme exécutable, plus tout éventuel fichier de définition associé, ainsi
que les scripts utilisés pour effectuer la compilation et l'installation du programme
exécutable. Toutefois, il est fait exception de tout ce qui fait partie de l'environnement
standard de développement du système d'exploitation utilisé (source ou binaire) comme les
compilateurs, bibliothèques, noyau, etc. Sauf si ces éléments sont aussi diffusés avec le
programme
exécutable.
Si la distribution de l'exécutable ou du code objet consiste à offrir un accès permettant de
copier le programme depuis un endroit particulier, alors l'offre d'un accès équivalent pour se
procurer le code source au même endroit compte comme une distribution de ce code source,
même si l'utilisateur choisit de ne pas profiter de cette offre.
4. Vous ne pouvez pas copier, modifier, céder, déposer, ou distribuer le programme, d'une
autre manière que l'autorise la Licence Publique Générale. Toute tentative de copier,
modifier, céder, déposer, ou distribuer le programme différemment, annulera immédiatement
vos droits d'utilisation du programme sous cette Licence. Toutefois, les tiers ayant reçu de
vous des copies du programme ou le droit d'utiliser ces copies, continueront à bénéficier de
leur droit d'utilisation tant qu'ils respecteront pleinement les conditions de cette Licence
Publique Générale.
5. Vous n'êtes pas obligé d'accepter cette Licence, puisque vous ne l'avez pas signée.
Cependant, rien d'autre ne vous autorise à modifier ou distribuer le programme, ou des
travaux dérivés. Ces faits sont interdits par la loi, tant que vous n'acceptez pas cette Licence.
Par conséquent, en modifiant ou distribuant le programme (ou tout travail fondé sur lui), vous
indiquez implicitement votre acceptation des termes et conditions de cette Licence.
6. Chaque fois que vous redistribuez le programme (ou tout travail dérivé), le récipiendaire
reçoit une licence du détenteur original autorisant la copie, la distribution ou la modification
du programme, selon les termes et conditions de la Licence. Vous n'avez pas le droit
d'imposer de restriction supplémentaire sur les droits transmis au récipiendaire. Vous n'êtes
pas responsable du respect de cette Licence par les tiers.
7. Si, à la suite d'une décision de justice, il vous est imposé d'aller à l'encontre des conditions
de cette Licence, cela ne vous dégage pas pour autant des obligations liées à celle-ci. Si
91
vous ne pouvez pas concilier vos obligations légales ou toute autre obligation avec les
conditions requises par cette Licence, alors vous ne devez pas distribuer le programme du
tout.
Si une partie quelconque de cet article est rendue invalide ou inapplicable pour quelque
raison que ce soit, le reste de l'article continue à s'appliquer et la totalité de l'article
s'appliquera dans toute autre circ onstance.
Cet article n'a pas pour but de vous pousser à enfreindre des droits ou des dispositions
légales ou de contester leur validité, il n'est là que pour protéger l'intégrité du système de
distribution du logiciel en libre accès. De nombreuses personnes ont généreusement
contribué à la large gamme de programmes distribuée de cette façon en toute confiance ; il
appartient à chaque auteur/contributeur de décider de diffuser ses programmes selon le
système de son choix.
8. Si la distribution et/ou l'utilisation du programme est limitée, dans certains pays, soit par
des brevets ou des droits sur des interfaces, le propriétaire original des droits qui place le
programme sous la Licence Publique Générale peut ajouter explicitement une clause de
limitation géographique excluant ces pays particuliers. Dans ce cas, cette clause devient une
partie intégrante de cette Licence.
9. La Free Software Foundation peut publier périodiquement des mises à jour ou de
nouvelles versions de la Licence Publique Générale. Elles seront écrites dans le même
esprit que la présente version, mais pourront différer dans certains détails destinés à clarifier
de nouveaux problèmes pouvant survenir.
Chaque version possède un numéro bien distinct. Si le programme précise un numéro de
version de cette Licence et " toute version ultérieure ", vous avez le choix de suivre les
termes et conditions de cette version ou de toute autre version plus récente publiée par la
Free Software Foundation. Si le programme ne spécifie aucun numéro de version, vous
pouvez alors choisir d'utiliser n'importe quelle version publiée par la Free Software
Foundation.
10. Si vous désirez incorporer des parties du programme dans d'autres programmes libres
dont les conditions de distribution diffèrent, écrivez à l'auteur pour lui en demander la
permission. Pour les programmes dont le copyright est directement détenu par la Free
Software Foundation, écrivez à la Free Software Foundation ; nous faisons quelquefois des
exceptions. Notre décision sera guidée à la fois par le but de préserver la liberté de notre
programme libre ou de ses dérivés, et par celui de promouvoir le partage et la réutilisation du
logiciel en général.
LIMITATION DE GARANTIE
11. PARCE QUE LA LICENCE D'UTILISATION DE CE PROGRAMME EST LIBRE ET
GRATUITE, IL N'Y A AUCUNE GARANTIE POUR CE PROGRAMME, DANS LA MESURE
PERMISE PAR LA LOI. SAUF SI MENTIONNÉ PAR ÉCRIT, LES DÉTENTEURS DU
COPYRIGHT ET/OU LES TIERS FOURNISSENT LE PROGRAMME EN L'ÉTAT, SANS
AUCUNE SORTE DE GARANTIE, NI EXPLICITE NI IMPLICITE, Y COMPRIS LES
GARANTIES DE COMMERCIALISATION OU D'ADAPTATION DANS UN BUT
PARTICULIER. VOUS PRENEZ TOUS LES RISQUES QUANT À LA QUALITÉ ET AUX
EFFETS DU PROGRAMME. SI LE PROGRAMME EST DÉFECTUEUX, VOUS ASSUMEZ
LE COÛT DE TOUS LES SERVICES, CORRECTIONS OU RÉPARATIONS
NÉCESSAIRES.
12.EN AUCUN CAS, À MOINS QUE CE NE SOIT EXPLICITEMENT PRÉVU PAR LA LOI
OU ACCEPTÉ PAR ÉCRIT, NI LE PROPRIÉTAIRE DES DROITS, NI TOUTE AUTRE
PERSONNE AUTORISÉE À MODIFIER ET/OU REDISTRIBUER LE PROGRAMME
COMME IL EST PERMIS CI-DESSUS, NE POURRA ÊTRE TENU POUR RESPONSABLE
DE TOUT DOMMAGE DIRECT, INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS
LES DOMMAGES ENTRAINÉS PAR LA PERTE DE BÉNÉFICE, L'INTERRUPTION
D'ACTIVITÉS OU LA PERTE D'INFORMATIONS ET AUTRES DÉCOULANT DE
L'UTILISATION OU DE L'IMPOSSIBILITÉ D'UTILISER LE PROGRAMME.
92

Manuels associés