CGI de commerce illimité. Un commerce électronique clair. Sélection d'un langage de programmation

2012 : Rachat du britannique Logica

En juin 2012, le Groupe CGI a annoncé avoir signé une entente pour l'achat du plus grand intégrateur de systèmes européen Logica. Le montant de la transaction est de 2,8 milliards de dollars canadiens (2,7 milliards de dollars). Dans le cadre des ententes conclues, CGI a également accepté d'assumer l'obligation de rembourser la dette de Logica d'un montant de 515 millions de dollars canadiens.

Pour financer la transaction, CGI prévoit lever 1 milliard de dollars canadiens en émettant 46,7 millions d'actions supplémentaires, emprunter 2 milliards de dollars canadiens auprès de la Banque Canadienne Impériale de Commerce, de la Banque Nationale du Canada et de la Banque Toronto-Dominion, et environ 650 millions de dollars canadiens. dollars de plus. dollars - dans la limite de la ligne de crédit actuelle.

Le prix par action proposé était supérieur de 59,8 % au cours de clôture de Logica le 30 mai 2012. L'opération représente environ 6,6 fois le bénéfice avant intérêts, impôts et amortissements (EBITDA) de Logica pour l'exercice.

L'acquisition de Logica devrait augmenter le bénéfice par action de CGI de 25 % à 30 %, excluant les coûts d'acquisition et d'intégration. À la suite de la fusion, l'effectif et les revenus annuels de l'entreprise résultante représenteront plus du double de ceux de CGI. L'effectif de l'entreprise issue du regroupement sera d'environ 72 000 employés répartis dans des bureaux dans 43 pays, et le chiffre d'affaires annuel sera d'environ 10,4 milliards de dollars canadiens (9,6 milliards de dollars).

La nouvelle société sera la sixième plus grande société de consultants informatiques au monde. Les plus grands d'entre eux sont IBM, Accenture, Cap Gemini, Tata Consultancy et Infosys, selon les estimations de Reuters.

"Logica est une société de services d'affaires et technologiques de premier plan qui compte des professionnels dévoués et des clients de confiance à long terme", a déclaré Michael Roach, président et chef de la direction de CGI. "Nous sommes convaincus que nous faisons la bonne chose." En acquérant Logica, nous l'acquérons. au bon prix et au bon moment pour créer l'un des rares plus grands fournisseurs indépendants de services technologiques de bout en bout. »

Le conseil d'administration de CGI a approuvé la transaction à l'unanimité. Il est prévu qu'il soit achevé d'ici septembre 2012, après avoir reçu l'approbation des actionnaires et suivi les procédures standard. Le processus d'intégration de l'entreprise devrait être achevé d'ici 3 ans

Andover, Massachusetts, 19 novembre 2003

Le Groupe Commerce, Inc. (NYSE : CGI), le plus grand souscripteur d'assurance automobile privée pour passagers au Massachusetts et CGI Group Inc. (CGI) (TSX : GIB.A; NYSE : GIB;), un important fournisseur de services de technologies de l'information et de traitement d'affaires, a annoncé aujourd'hui la signature d'un renouvellement de contrat d'impartition des processus d'affaires (BPO) d'une durée de six ans évalué à 35 millions de dollars américains. CGI fournira des services complets de traitement des polices pour les lignes automobiles privées et commerciales du Massachusetts, ainsi que l'outil d'interface d'agence CollaborativeEdge de CGI, le soutien et la maintenance des applications, le soutien réglementaire, les services-conseils en matière de systèmes et les services de gestion de documents.

Gerald Fels, vice-président exécutif et directeur financier de Commerce Group, a déclaré : « En tant que principal fournisseur d'automobiles privées dans le Massachusetts, notre objectif est de fournir à nos agents et employés des services qui les aident à atteindre leur plus haut niveau. Au fil des années, nous avons entretenu une relation solide avec CGI. Leur système est robuste et précis et leur équipe connaît très bien nos systèmes de traitement internes. C'est important pour nous."

Serge LaPalme, président, services aux entreprises d'assurance chez CGI, a ajouté : « Nous sommes très heureux de poursuivre notre relation avec le Groupe Commerce, une relation qui s'étend sur plus de 30 ans. Le Groupe Commerce continue d'être l'un de nos précieux partenaires d'affaires et est stratégique pour notre succès. En aidant nos clients à se concentrer davantage sur leur activité principale, nous tirons parti des nouvelles technologies quand et où cela a du sens. Notre équipe connaît intimement le secteur de l'assurance et l'environnement réglementaire très unique de l'État et, par conséquent, est rapide d'adapter les solutions existantes à ce secteur en constante évolution."

À propos du Groupe Commerce, Inc.

The Commerce Group, Inc., une société holding d'assurance, a son siège social à Webster, dans le Massachusetts. Les filiales d'assurance de dommages de Commerce Group comprennent The Commerce Insurance Company et Citation Insurance Company dans le Massachusetts, Commerce West Insurance Company en Californie et American Commerce Insurance Company dans l'Ohio. Grâce aux activités d'assurance combinées de ses filiales, Commerce Group est classé au 22e rang. plus grand groupe d'assurance automobile personnelle au pays par A.M. Meilleur, basé sur les informations sur les primes écrites directes de 2002.

À propos de CGI
Fondée en 1976, CGI est la cinquième plus grande entreprise indépendante de services en technologies de l'information en Amérique du Nord, selon son effectif. CGI et ses sociétés affiliées emploient 20 000 professionnels. Le chiffre d'affaires annualisé de CGI s'élève actuellement à 2,8 milliards de dollars canadiens (1,9 milliard de dollars américains) et au 30 septembre 2003, le carnet de commandes de CGI s'élevait à 12,3 milliards de dollars canadiens (9,1 milliards de dollars américains). CGI fournit des services de bout en bout en matière de TI et de processus d'affaires à des clients du monde entier à partir de ses bureaux au Canada, aux États-Unis et en Europe. Les actions de CGI sont inscrites à la Bourse de Toronto (GIB.A) et au NYSE (GIB) et font partie de l'indice composé TSX 100 ainsi que de l'indice canadien des technologies de l'information S&P/TSX et de l'indice canadien des sociétés à moyenne capitalisation.

Les propriétaires de boutiques en ligne connaissent bien le concept de « commerce électronique » ; ils connaissent déjà la réponse à la question « le commerce électronique - qu'est-ce que c'est ? Mais si l’on va au fond des choses, de nombreuses nuances apparaissent et ce terme prend un sens plus large.

E-commerce : qu'est-ce que c'est ?

Le concept général est le suivant : le commerce électronique est compris comme une certaine approche de la conduite des affaires, qui implique l'inclusion d'un certain nombre d'opérations utilisant le transfert de données numériques dans la fourniture de biens ou la fourniture de services/travail, y compris l'utilisation du L'Internet.

Il s’agit donc de toute transaction commerciale réalisée à l’aide d’un moyen de communication électronique.

Le plan de travail est organisé comme suit :

  • n'importe qui peut être blogueur ou tout autre propriétaire de sa propre page Internet) s'inscrit dans ce système ;
  • obtient son propre lien ;
  • place un code spécial sur sa page Web - une publicité pour le partenaire officiel sélectionné du e-Commerce Partners Network apparaît ;
  • surveille la conversion du site Web ;
  • gagne un certain pourcentage pour chaque achat effectué par un visiteur de votre site Web qui suit un lien d'affiliation.

WP e-Commerce

Un grand nombre de personnes sont désormais passionnées par le e-commerce, principalement par envie de créer leur propre site internet, une boutique en ligne unique pour vendre leurs propres produits. Pour répondre à cette demande croissante, les développeurs se sont concentrés sur la création de modèles de commerce électronique. Voyons ce que c'est ensuite.

Un exemple de modèle est le commerce électronique WordPress. Il s'agit d'un plugin de panier d'achat pour WordPress (un des systèmes de gestion de ressources web les plus connus), destiné principalement à la création et à l'organisation de blogs). Il est fourni entièrement gratuitement et permet aux visiteurs du site d'effectuer des achats sur le site Internet.

Autrement dit, ce plugin permet de créer une boutique en ligne (basée sur WordPress). Ce plugin de commerce électronique dispose de tous les outils, paramètres et options nécessaires pour répondre aux besoins modernes.

Grâce au World Wide Web, presque tout le monde peut fournir des informations en ligne sous une forme agréable à regarder et largement diffusée. Vous avez sans aucun doute surfé sur Internet et consulté d'autres sites, et vous savez probablement maintenant que des acronymes effrayants comme "HTTP" et "HTML" sont simplement des raccourcis pour "Web" et "la manière dont les informations sont exprimées sur Internet". Vous avez peut-être déjà une certaine expérience de la présentation d'informations sur Internet.

Internet s’est révélé être un moyen idéal pour diffuser l’information, comme en témoigne son énorme popularité et son développement généralisé. Bien que certains aient remis en question l’utilité d’Internet et attribuent son développement et sa popularité principalement à la publicité intrusive, Internet est indéniablement un moyen important pour présenter toutes sortes d’informations. Non seulement il existe de nombreux services disponibles pour fournir des informations à jour (actualités, météo, événements sportifs en direct) et du matériel de référence par voie électronique, mais il existe également des quantités importantes d'autres types de données disponibles. L'IRS, qui a distribué tous ses formulaires de déclaration de revenus de 1995 et d'autres informations via le World Wide Web, a récemment admis avoir reçu du courrier de fans pour son site Web. Qui aurait pensé que l’IRS recevrait un jour le courrier des fans ? Ce n’était pas parce que son site était bien conçu, mais parce qu’il s’était révélé être un outil véritablement utile pour des milliers, voire des millions de personnes.

Qu’est-ce qui rend le Web unique et un service d’information si attractif ? Tout d’abord, il fournit une interface hypermédia aux données. Pensez au disque dur de votre ordinateur. En règle générale, les données sont exprimées de manière linéaire, semblable à un système de fichiers. Par exemple, vous disposez d’un certain nombre de dossiers et, à l’intérieur de chaque dossier, se trouvent soit des documents, soit d’autres dossiers. Le Web utilise un paradigme différent pour exprimer des informations appelé hypermédia. Une interface hypertexte est constituée d'un document et de liens. Les liens sont des mots sur lesquels on clique pour voir d'autres documents ou trouver d'autres types d'informations. Le Web élargit le concept d'hypertexte pour inclure d'autres types de médias, tels que les graphiques, les sons, la vidéo (d'où le nom « hypermédia »). La sélection de texte ou de graphiques sur un document vous permet de voir des informations associées sur l'élément sélectionné sous n'importe quel nombre de formulaires.

Presque tout le monde peut bénéficier de cette manière simple et unique de présenter et de diffuser des informations, des universitaires qui souhaitent utiliser immédiatement les données avec leurs collègues aux hommes d'affaires qui partagent des informations sur leur entreprise avec tout le monde. Cependant, bien que donner des informations soit extrêmement important, au cours des dernières années, nombreux sont ceux qui ont estimé que recevoir des informations était un processus tout aussi important.

Bien que le Web offre une interface hypermédia unique pour l'information, il existe de nombreux autres moyens efficaces de distribuer les données. Par exemple, les services réseau tels que le protocole de transfert de fichiers (FTP) et le groupe de discussion Gopher existaient bien avant le World Wide Web. Le courrier électronique est le principal moyen de communication et d'échange d'informations sur Internet et la plupart des autres réseaux presque depuis le tout début de ces réseaux. Pourquoi Internet est-il devenu un moyen si populaire de diffuser des informations ? L'aspect multimédia d'Internet a largement contribué à son succès sans précédent, mais pour qu'Internet soit le plus efficace possible, il doit être interactif.

Sans la capacité de recevoir les commentaires des utilisateurs et de fournir des informations, le Web serait un environnement complètement statique. Les informations ne seraient disponibles que dans le format spécifié par l'auteur. Cela porterait atteinte à l’une des capacités de l’informatique en général : l’information interactive. Par exemple, plutôt que d’obliger l’utilisateur à consulter plusieurs documents comme s’il parcourait un livre ou un dictionnaire, il serait préférable de lui permettre d’identifier des mots-clés sur un sujet qui l’intéresse. Les utilisateurs peuvent personnaliser la présentation des données plutôt que de s'appuyer sur une structure rigide définie par le fournisseur de contenu.

Le terme « serveur Web » peut être trompeur car il peut désigner à la fois la machine physique et les logiciels qu'elle utilise pour communiquer avec les navigateurs Internet. Lorsqu'un navigateur demande une adresse Web donnée, il se connecte d'abord à la machine via Internet, envoyant au logiciel serveur Web une demande pour le document. Ce logiciel fonctionne en permanence, attendant que de telles demandes arrivent et répondant en conséquence.

Bien que les serveurs puissent envoyer et recevoir des données, les serveurs eux-mêmes ont des fonctionnalités limitées. Par exemple, le serveur le plus primitif ne peut envoyer que le fichier requis au navigateur. Le serveur ne sait généralement pas quoi faire de telle ou telle entrée supplémentaire. Si le FAI n'indique pas au serveur comment gérer ces informations supplémentaires, le serveur ignorera très probablement l'entrée.

Pour que le serveur puisse effectuer d'autres opérations que la recherche et l'envoi de fichiers au navigateur Internet, vous devez savoir comment étendre les fonctionnalités du serveur. Par exemple, un serveur Web ne peut pas effectuer de recherche dans une base de données sur la base d'un mot-clé saisi par un utilisateur et renvoyer plusieurs documents correspondants à moins qu'une telle fonctionnalité n'ait été programmée dans le serveur d'une manière ou d'une autre.

Qu’est-ce que CGI ?

La Common Gateway Interface (CGI) est une interface vers le serveur qui vous permet d'étendre les fonctionnalités du serveur. Grâce à CGI, vous pouvez interagir de manière interactive avec les utilisateurs qui accèdent à votre site. À un niveau théorique, CGI permet au serveur d'analyser (interpréter) les entrées du navigateur et de renvoyer des informations en fonction des entrées de l'utilisateur. D'un point de vue pratique, CGI est une interface qui permet à un programmeur d'écrire des programmes communiquant facilement avec un serveur.

En règle générale, pour étendre les capacités du serveur, vous devrez modifier le serveur vous-même. Cette solution n'est pas souhaitable car elle nécessite de comprendre la couche inférieure de la programmation réseau du protocole Internet. Cela nécessiterait également de modifier et de recompiler le code source du serveur ou d'écrire un serveur personnalisé pour chaque tâche. Supposons que vous souhaitiez étendre les capacités du serveur afin qu'il agisse comme une passerelle Web vers courrier électronique, en récupérant les informations saisies par l'utilisateur dans le navigateur et en les envoyant par courrier électronique à un autre utilisateur. Le serveur devrait insérer du code pour analyser l'entrée du navigateur, la transmettre par courrier électronique à l'autre utilisateur et renvoyer la réponse au navigateur via la connexion réseau.

Premièrement, une telle tâche nécessite un accès au code du serveur, ce qui n'est pas toujours possible.

Deuxièmement, c’est difficile et nécessite des connaissances techniques approfondies.

Troisièmement, cela ne s'applique qu'à un serveur spécifique. Si vous devez déplacer votre serveur vers une autre plate-forme, vous devrez exécuter ou au moins passer beaucoup de temps à porter le code sur cette plate-forme.

Pourquoi CGI ?

CGI offre une solution portable et simple à ces problèmes. Le protocole CGI définit une manière standard permettant aux programmes de communiquer avec un serveur Web. Sans aucune connaissance particulière, vous pouvez écrire un programme dans n'importe quel langage machine qui s'interface et communique avec le serveur Web. Ce programme fonctionnera avec tous les serveurs Web comprenant le protocole CGI.

La communication CGI s'effectue à l'aide d'entrées et de sorties standard, ce qui signifie que si vous savez imprimer et lire des données à l'aide de votre langage de programmation, vous pouvez écrire une application serveur Web. Outre l'analyse des entrées et des sorties, la programmation d'applications CGI équivaut presque à la programmation de n'importe quelle autre application. Par exemple, pour programmer le programme "Hello, World!", vous utilisez les fonctions d'impression de votre langage et le format défini pour les programmes CGI pour imprimer le message correspondant.

Sélection d'un langage de programmation

CGI étant une interface universelle, vous n’êtes limité à aucun langage machine spécifique. Une question importante qui est souvent posée est : quels langages de programmation peuvent être utilisés pour la programmation CGI ? Vous pouvez utiliser n'importe quel langage qui vous permet d'effectuer les opérations suivantes :

  • Imprimer sur une sortie standard
  • Lire à partir de l'entrée standard
  • Lire à partir de modes variables

Presque tous les langages de programmation et de nombreux langages de script font ces trois choses, et vous pouvez utiliser n'importe lequel d'entre eux.

Les langues appartiennent à l'une des deux classes suivantes : traduites et interprétées. Un langage traduit tel que C ou C++ est généralement plus petit et plus rapide, tandis que les langages interprétés tels que Perl ou Rexx nécessitent parfois le chargement d'un gros interpréteur au démarrage. De plus, vous pouvez distribuer des codes binaires (code qui se traduit en langage machine) sans code source si votre langue est traduisible. Distribuer des scripts interprétables signifie généralement distribuer du code source.

Avant de choisir une langue, vous devez d’abord réfléchir à vos priorités. Vous devez mettre en balance les avantages de la rapidité et de l’efficacité d’un langage de programmation par rapport à la facilité de programmation d’un autre. Si vous souhaitez apprendre une autre langue, au lieu d’utiliser celle que vous connaissez déjà, pesez soigneusement les avantages et les inconvénients des deux langues.

Les deux langages les plus couramment utilisés pour la programmation CGI sont C et Perl (tous deux traités dans ce livre). Les deux présentent des avantages et des inconvénients évidents. Perl est un langage de très haut niveau, et en même temps un langage puissant, particulièrement adapté à l'analyse de texte. Bien que sa facilité d'utilisation, sa flexibilité et sa puissance en fassent un langage attrayant pour la programmation CGI, sa taille relativement grande et son fonctionnement plus lent le rendent parfois inadapté à certaines applications. Les programmes C sont plus petits, plus efficaces et fournissent un contrôle système de niveau inférieur, mais sont plus complexes à programmer, ne disposent pas de routines de traitement de texte intégrées légères et sont plus difficiles à déboguer.

Quel langage est le plus adapté à la programmation CGI ? Celui que vous considérez comme le plus pratique du point de vue de la programmation. Les deux sont tout aussi efficaces pour programmer des applications CGI et, avec les bibliothèques appropriées, ils ont tous deux des capacités similaires. Cependant, si vous disposez d'un serveur difficile à atteindre, vous pouvez utiliser des programmes C traduits plus petits. Si vous devez écrire rapidement une application qui nécessite beaucoup de travail de traitement de texte, vous pouvez utiliser Perl à la place.

Précautions

Il existe des alternatives importantes aux applications CGI. De nombreux serveurs incluent désormais la programmation API, ce qui facilite la programmation d'extensions de serveur directes par opposition aux applications CGI autonomes. Les serveurs API sont généralement plus efficaces que les programmes CGI. D'autres serveurs incluent des fonctionnalités intégrées capables de gérer des éléments spéciaux non CGI, tels que la liaison de bases de données. Enfin, certaines applications peuvent être gérées par de nouvelles technologies côté client (plutôt que côté serveur) comme Java. Avec des changements technologiques aussi rapides, CGI deviendra-t-il rapidement obsolète ?

À peine. CGI présente plusieurs avantages par rapport aux technologies plus récentes.

  • Il est polyvalent et portable. Vous pouvez écrire une application CGI en utilisant presque n'importe quel langage de programmation sur n'importe quelle plateforme. Certaines alternatives, comme l'API du serveur, vous limitent à certaines langues et sont beaucoup plus difficiles à apprendre.
  • Il est peu probable que les technologies côté client telles que Java remplacent CGI, car il existe certaines applications que les applications côté serveur sont bien mieux adaptées à exécuter.
  • La plupart des limitations de CGI sont des limitations de HTML ou HTTP. À mesure que les normes Internet évoluent dans leur ensemble, les capacités CGI évoluent également.

Résumé

La Common Gateway Interface est le protocole par lequel les programmes interagissent avec les serveurs Web. La polyvalence de CGI donne aux programmeurs la possibilité d'écrire des programmes de passerelle dans presque tous les langages, bien qu'il existe de nombreux compromis associés aux différents langages. Sans cette capacité, la création de pages Web interactives serait difficile, nécessitant au mieux des modifications du serveur, et l'interactivité ne serait pas disponible pour la plupart des utilisateurs qui ne sont pas administrateurs de site.

Chapitre 2 : Bases

Il y a plusieurs années, j'ai créé une page pour un collège de Harvard où les gens pouvaient soumettre des commentaires à leur sujet. À l’époque, Internet était jeune et la documentation était rare. Comme beaucoup d’autres, je me suis appuyé sur une courte documentation et des systèmes de programmation créés par d’autres pour m’apprendre la programmation CGI. Bien que cette méthode d’étude ait nécessité quelques recherches, de nombreuses expériences et suscité de nombreuses questions, elle s’est avérée très efficace. Ce chapitre est le résultat de mes premiers travaux avec CGI (avec quelques ajustements, bien sûr).

Bien qu'il faille un certain temps pour comprendre et maîtriser pleinement l'interface de la passerelle commune, le protocole lui-même est assez simple. Quiconque possède des compétences de base en programmation et est familier avec le Web peut rapidement apprendre à programmer des applications CGI assez complexes, tout comme moi et d'autres avons appris à le faire il y a plusieurs années.

Le but de ce chapitre est de présenter les bases de CGI de manière complète, quoique condensée. Chaque concept abordé ici est présenté en détail dans les chapitres suivants. Cependant, après avoir terminé ce chapitre, vous pouvez immédiatement commencer à programmer des applications CGI. Une fois que vous aurez atteint ce niveau, vous pourrez apprendre les subtilités de CGI, soit en lisant le reste de ce livre, soit simplement en expérimentant par vous-même.

Vous pouvez résumer la programmation CGI à deux tâches : recevoir des informations du navigateur Web et renvoyer des informations au navigateur. Cela se fait de manière assez intuitive une fois que vous êtes familiarisé avec l'utilisation normale des applications CGI. Il est souvent demandé à l'utilisateur de remplir un formulaire, par exemple d'insérer son nom. Une fois que l'utilisateur remplit le formulaire et appuie sur Entrée, ces informations sont envoyées au programme CGI. Le programme CGI doit ensuite convertir ces informations en quelque chose qu'il comprend, les traiter en conséquence, puis les renvoyer au navigateur, qu'il s'agisse d'une simple confirmation ou du résultat d'une recherche dans une base de données polyvalente.

En d’autres termes, la programmation CGI nécessite de comprendre comment recevoir les entrées du navigateur Internet et comment renvoyer les sorties. Ce qui se passe entre les étapes d'entrée et de sortie d'un programme CGI dépend de l'objectif du développeur. Vous constaterez que la principale difficulté de la programmation CGI réside dans cette étape intermédiaire ; Une fois que vous avez appris à travailler avec les entrées et les sorties, cela suffit pour devenir développeur CGI.

Dans ce chapitre, vous apprendrez les principes qui sous-tendent les entrées et sorties CGI, ainsi que d'autres compétences de base dont vous aurez besoin pour écrire et utiliser CGI, notamment la création de formulaires HTML et le nom de vos programmes CGI. Ce chapitre couvre les sujets suivants:

  • Programme traditionnel « Bonjour le monde ! » ;
  • Sortie CGI : renvoi d'informations pour affichage dans un navigateur Internet ;
  • Configuration, installation et exécution de l'application. Vous découvrirez différentes plateformes et serveurs Web ;
  • Entrée CGI : Interprétation des informations envoyées par le navigateur Web. Introduction à quelques bibliothèques de programmation utiles pour analyser de telles entrées ;
  • Un exemple simple : il couvre toutes les leçons d'un chapitre donné ;
  • Stratégie de programmation.

En raison de la nature de ce chapitre, je n’aborde que légèrement certains sujets. Ne t'inquiète pas; Tous ces sujets sont abordés de manière beaucoup plus approfondie dans d'autres chapitres.

Bonjour le monde!

Vous commencez par un problème de programmation d’introduction traditionnel. Vous écrirez un programme qui affiche « Hello, World ! » sur votre navigateur Web. Avant d'écrire ce programme, vous devez comprendre quelles informations le navigateur Web s'attend à recevoir des programmes CGI. Vous devez également savoir comment exécuter ce programme pour pouvoir le voir en action.

CGI est indépendant de la langue, vous pouvez donc implémenter ce programme dans n'importe quelle langue. Plusieurs langues différentes sont utilisées ici pour démontrer l'indépendance de chaque langue. En Perl, le programme "Hello, World!" indiqué dans le listing 2.1.

Inscription 2.1. Bonjour le monde! en Perl. #!/usr/local/bin/perl # Hello.cgi - Mon premier programme CGI affiche "Content-Type: text/html\n\n"; imprimer " \n"; imprimer " Bonjour le monde!"; imprimer "\n"; imprimer " \n"; imprimer "

Bonjour le monde!

\n"; imprimer "

\n";

Enregistrez ce programme sous hello.cgi et installez-le à l'emplacement approprié. (Si vous ne savez pas où il se trouve, ne vous inquiétez pas ; vous le découvrirez dans la section « Installation et exécution d'un programme CGI » plus loin dans ce chapitre.) Pour la plupart des serveurs, le répertoire dont vous avez besoin est cgi-bin. . Maintenant, appelez le programme depuis votre navigateur Web. Pour la plupart, cela signifie ouvrir le localisateur de ressources uniforme (URL) suivant :

http://nom d'hôte/nom-répertoire/hello.cgi

Le nom d'hôte est le nom de votre serveur Web et le nom du répertoire est le répertoire dans lequel vous placez hello.cgi (probablement cgi-bin).

Séparation de hello.cgi

Il y a quelques points à noter à propos de hello.cgi.

Tout d’abord, vous utilisez des commandes d’impression simples. Les programmes CGI ne nécessitent aucun descripteur de fichier ou descripteur de sortie spécial. Pour envoyer la sortie au navigateur, imprimez simplement sur la sortie standard.

Deuxièmement, notez que le contenu de la première instruction print (Content-Type : text/html) n'apparaît pas sur votre navigateur Web. Vous pouvez renvoyer toutes les informations souhaitées au navigateur (page HTML, graphiques ou son), mais vous devez d'abord indiquer au navigateur le type de données que vous lui envoyez. Cette ligne indique au navigateur à quel type d'informations s'attendre - dans ce cas, une page HTML.

Troisièmement, le programme s'appelle hello.cgi. Vous n'avez pas toujours besoin d'utiliser l'extension .cgi avec le nom de votre programme CGI. Bien que le code source de nombreuses langues utilise également l'extension .cgi, elle n'est pas utilisée pour indiquer le type de langue, mais constitue un moyen pour le serveur d'identifier le fichier en tant que fichier exécutable plutôt qu'en tant que fichier graphique, fichier HTML ou fichier texte. Les serveurs sont souvent configurés pour tenter d'exécuter uniquement les fichiers portant cette extension, affichant le contenu de tous les autres. Bien que l’utilisation de l’extension .cgi ne soit pas obligatoire, elle reste considérée comme une bonne pratique.

En général, hello.cgi se compose de deux parties principales :

  • indique au navigateur à quelles informations s'attendre (Content-Type : text/html)
  • indique au navigateur quoi afficher (Hello, World !)

Bonjour le monde! en C

Pour montrer l'indépendance linguistique des programmes CGI, le listing 2.2 montre l'équivalent du programme hello.cgi écrit en C.

Inscription 2.2. Bonjour le monde! en C. /* hello.cgi.c - Bonjour, World CGI */ #include int main() ( printf("Content-Type: texte/html\r\n\r\n"); printf(" \n"); printf(" Bonjour le monde!\n"); printf("\n"); printf(" \n"); printf("

Bonjour le monde!

\n"); printf("

\n"); )

Note

Notez que la version Perl de hello.cgi utilise Content-Type print ": text/html\n\n "; Alors que la version C utilise Printf("Content-Type: text/html\r\n\r\n");

Pourquoi Perl imprime-t-il l'opérateur se terminant par deux nouvelles lignes (\n) alors que C printf se termine par deux retours chariot et des nouvelles lignes (\r\n) ?

Techniquement, les en-têtes (toutes les sorties avant la ligne vide) devraient être séparés par des retours chariot et des nouvelles lignes. Malheureusement, sur les machines DOS et Windows, Perl traduit \r par une autre nouvelle ligne plutôt que par un retour chariot.

Bien que l'exception \rs de Perl soit techniquement incorrecte, elle fonctionnera sur presque tous les protocoles et est également portable sur toutes les plates-formes. Par conséquent, dans tous les exemples Perl de ce livre, j'utilise des en-têtes de séparation de nouvelle ligne plutôt que des retours chariot et des nouvelles lignes.

Une solution appropriée à ce problème est présentée au chapitre 4, Conclusion.

Ni le serveur Web ni le navigateur ne se soucient de la langue utilisée pour écrire le programme. Bien que chaque langage présente des avantages et des inconvénients en tant que langage de programmation CGI, il est préférable d'utiliser le langage avec lequel vous êtes le plus à l'aise. (Le choix du langage de programmation est abordé plus en détail dans le chapitre 1, « Common Gateway Interface (CGI) »).

Rendu CGI

Vous pouvez maintenant examiner de plus près la question de l'envoi d'informations au navigateur Web. Dans l'exemple « Hello, World ! », vous pouvez voir que les navigateurs Web attendent deux ensembles de données : un en-tête, qui contient des informations telles que les informations à afficher (par exemple, la ligne Content-Type :) et des informations réelles (ce que le navigateur Web affichages). Ces deux informations sont séparées par une ligne vierge.

L'en-tête est appelé en-tête HTTP. Il donne des informations importantes sur les informations que le navigateur va recevoir. Il existe plusieurs types d'en-têtes HTTP, et le plus courant est celui que vous avez utilisé auparavant : Content-Type : en-tête. Vous pouvez utiliser différentes combinaisons d'en-têtes HTTP, séparés par des retours chariot et des nouvelles lignes (\r\n). La ligne vide séparant l'en-tête des données comprend également un retour chariot et une nouvelle ligne (la raison pour laquelle les deux sont nécessaires est brièvement discutée dans la note précédente et détaillée au chapitre 4). Vous découvrirez d'autres en-têtes HTTP au chapitre 4 ; Actuellement, vous avez affaire à l’en-tête Content-Type:.

Content-Type : L'en-tête décrit le type de données renvoyées par le CGI. Le format approprié pour cet en-tête est :

Type de contenu : sous-type/type

Où sous-type/type est le type MIME (MultiPurpose Internet Mail Extensions) correct. Le type MIME le plus courant est le type HTML : text/html. Le tableau 2.1 répertorie quelques types MIME plus courants qui seront abordés ; Une liste et une analyse plus complètes des types MIME sont fournies au chapitre 4.

Note

MIME a été inventé à l'origine pour décrire le contenu des corps des messages électroniques. C'est devenu une manière assez courante de représenter les informations de type de contenu. Vous pouvez en savoir plus sur MIME dans la RFC1521. Les RFC sur Internet signifient Requests for Comments, qui sont des résumés de décisions prises par des groupes sur Internet essayant d'établir des normes. Vous pouvez consulter les résultats de la RFC1521 à l'adresse suivante : http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tableau 2.1. Certains types MIME courants. Type MIME Description Texte/html Hypertext Markup Language (HTML) Texte/plain Fichiers de texte brut Image/gif Fichiers graphiques GIF Image/jpeg Fichiers graphiques compressés JPEG Audio/basic Fichiers audio Sun *.au Audio/x-wav Fichiers Windows *. wav

Après l'en-tête et une ligne vide, vous imprimez simplement les données sous la forme dont vous avez besoin. Si vous envoyez du HTML, imprimez les balises HTML et les données sur la sortie standard après l'en-tête. Vous pouvez également envoyer des graphiques, des sons et d'autres fichiers binaires en imprimant simplement le contenu du fichier sur la sortie standard. Plusieurs exemples en sont donnés au chapitre 4.

Installation et exécution d'un programme CGI

Cette section s'écarte quelque peu de la programmation CGI et parle de la configuration de votre serveur Web pour utiliser CGI, de l'installation et de l'exécution de programmes. Vous serez présenté plus ou moins en détail à différents serveurs pour différentes plates-formes, mais vous devrez approfondir la documentation de votre serveur pour trouver la meilleure option.

Tous les serveurs nécessitent de l'espace pour les fichiers du serveur et de l'espace pour les documents HTML. Dans ce livre, la zone serveur est appelée ServerRoot et la zone document est appelée DocumentRoot. Sur les machines UNIX, ServerRoot se trouve généralement dans /usr/local/etc/httpd/ et DocumentRoot se trouve généralement dans /usr/local/etc/httpd/htdocs/. Cependant, cela ne fera aucune différence pour votre système, remplacez donc toutes les références à ServerRoot et DocumentRoot par vos propres ServerRoot et DocumentRoot.

Lorsque vous accédez à des fichiers à l'aide de votre navigateur Web, vous spécifiez le fichier dans l'URL relative à DocumentRoot. Par exemple, si l'adresse de votre serveur est mymachine.org, alors vous accédez à ce fichier avec l'URL suivante : http://mymachine.org/index.html

Configuration du serveur pour CGI

La plupart des serveurs Web sont préconfigurés pour permettre l'utilisation de programmes CGI. Généralement deux paramètres indiquent au serveur si le fichier est une application CGI ou non :

  • Répertoire désigné. Certains serveurs vous permettent de déterminer que tous les fichiers d'un répertoire désigné (généralement appelé cgi-bin par défaut) sont CGI.
  • Extensions de nom de fichier. De nombreux serveurs disposent de cette préconfiguration qui permet de définir tous les fichiers se terminant par .cgi comme CGI.

La méthode du répertoire désigné est en quelque sorte une relique du passé (les tout premiers serveurs l'utilisaient comme seule méthode pour déterminer quels fichiers étaient des programmes CGI), mais elle présente plusieurs avantages.

  • Il maintient les programmes CGI centralisés, évitant ainsi que les autres répertoires ne soient encombrés.
  • Vous n'êtes limité à aucune extension de nom de fichier particulière, vous pouvez donc nommer vos fichiers comme vous le souhaitez. Certains serveurs vous permettent de désigner plusieurs répertoires différents comme répertoires CGI.
  • Cela vous donne également plus de contrôle sur qui peut enregistrer CGI. Par exemple, si vous disposez d'un serveur et prenez en charge un système avec plusieurs utilisateurs et que vous ne souhaitez pas qu'ils utilisent leurs propres scripts CGI sans examiner au préalable le programme pour des raisons de sécurité, vous pouvez désigner uniquement ces fichiers dans un répertoire centralisé et limité comme CGI. . Les utilisateurs devront ensuite vous fournir des programmes CGI à installer, et vous pourrez d'abord auditer le code pour vous assurer que le programme ne présente pas de problèmes de sécurité majeurs.

La notation CGI via l'extension de nom de fichier peut être utile en raison de sa flexibilité. Vous n'êtes pas limité à un seul répertoire pour les programmes CGI. La plupart des serveurs peuvent être configurés pour reconnaître CGI via l'extension de nom de fichier, bien que tous ne soient pas configurés de cette façon par défaut.

Avertissement

N'oubliez pas l'importance des problèmes de sécurité lorsque vous configurez votre serveur pour CGI. Quelques conseils seront abordés ici, et le chapitre 9, Protéger CGI, couvre ces aspects plus en détail.

Installation de CGI sur des serveurs UNIX

Quelle que soit la configuration de votre serveur UNIX, vous devez suivre plusieurs étapes pour garantir que vos applications CGI s'exécutent comme prévu. Votre serveur Web s'exécutera généralement en tant qu'utilisateur inexistant (c'est-à-dire l'utilisateur UNIX personne - un compte qui ne dispose d'aucune autorisation de fichier et ne peut pas être connecté). Les scripts CGI (écrits en Perl, en shell Bourne ou dans un autre langage de script) doivent être exécutables et lisibles dans le monde entier.

Indice

Pour rendre vos fichiers lisibles et exécutables par tout le monde, utilisez la commande d'autorisations UNIX suivante : chmod 755 filename.

Si vous utilisez un langage de script tel que Perl ou Tcl, indiquez le chemin complet de votre interpréteur sur la première ligne de votre script. Par exemple, un script Perl utilisant Perl dans le répertoire /usr/local/bin commencerait par la ligne suivante :

#!/usr/local/bin/perl

Avertissement

Ne placez jamais l'interpréteur (perl ou binaire Tcl Wish) dans le répertoire /cgi-bin. Cela crée un risque de sécurité sur votre système. Ceci est discuté plus en détail au chapitre 9.

Certains serveurs UNIX génériques

Les serveurs NCSA et Apache ont des fichiers de configuration similaires car le serveur Apache était initialement basé sur le code NCSA. Par défaut, ils sont configurés pour que tout fichier du répertoire cgi-bin (situé par défaut dans ServerRoot) soit un programme CGI. Pour modifier l'emplacement du répertoire cgi-bin, vous pouvez éditer le fichier de configuration conf/srm.conf. Le format de configuration de ce répertoire est

ScriptAlias ​​​​fakenom de répertoire vrai nom de répertoire

où fakedirectoryname est le pseudo nom du répertoire (/cgi-bin) et realdirectoryname est le chemin complet où les programmes CGI sont réellement stockés. Vous pouvez configurer plusieurs ScriptAlias ​​​​en ajoutant plusieurs lignes ScriptAlias ​​​​.

La configuration par défaut est suffisante pour les besoins de la plupart des utilisateurs. Vous devez modifier la ligne dans le fichier srm.conf dans les deux cas pour déterminer le nom réel du répertoire correct. Si, par exemple, vos programmes CGI se trouvent dans /usr/local/etc/httpd/cgi-bin, la ligne ScriptAlias ​​​​dans votre fichier srm.conf devrait ressembler à ceci :

ScriptAlias ​​​​/cgi-bin/ /usr/local/etc/httpd/cgi-bin/

Pour accéder ou créer un lien vers les programmes CGI situés dans ce répertoire, utilisez l'URL suivante :

Http://hostname/cgi-bin/programname

Où nom d'hôte est le nom de l'hôte de votre serveur Web et nom de programme est le nom de votre CGI.

Par exemple, disons que vous copiez le programme hello.cgi dans votre répertoire cgi-bin (par exemple /usr/local/etc/httpd/cgi-bin) sur votre serveur Web appelé www.company.com. Pour accéder à votre CGI, utilisez l'URL suivante : http://www.company.com/cgi-bin/hello.cgi

Si vous souhaitez configurer votre serveur NCSA ou Apache pour reconnaître tout fichier avec une extension .cgi comme CGI, vous devez modifier deux fichiers de configuration. Tout d’abord, dans le fichier srm.conf, décommentez la ligne suivante :

Application AddType/x-httpd-cgi .cgi

Cela associera le type MIME CGI à l'extension .cgi. Maintenant, nous devons modifier le fichier access.conf afin de pouvoir exécuter CGI dans n'importe quel répertoire. Pour ce faire, ajoutez l'option ExecCGI à la ligne Option. Cela ressemblera à la ligne suivante :

Index d'options FollowSymLinks ExecCGI

Désormais, tout fichier portant une extension .cgi est considéré comme CGI ; accédez-y comme vous le feriez avec n’importe quel fichier sur votre serveur.

Le serveur CERN est configuré de la même manière que les serveurs Apache et NCSA. Au lieu de ScriptAlias, le serveur CERN utilise la commande Exec. Par exemple, dans le fichier httpd.conf, vous verrez la ligne suivante :

Exécuter /cgi-bin/* /usr/local/etc/httpd/cgi-bin/*

D'autres serveurs UNIX peuvent être configurés de la même manière ; Ceci est décrit plus en détail dans la documentation du serveur.

Installer CGI sous Windows

La plupart des serveurs disponibles pour Windows 3.1, Windows 95 et Windows NT sont configurés à l'aide de la méthode « extension de nom de fichier » pour la reconnaissance CGI. En général, modifier la configuration d'un serveur Windows nécessite simplement d'exécuter le programme de configuration du serveur et d'apporter les modifications appropriées.

Parfois, configurer un serveur pour exécuter correctement un script (tel que Perl) peut s'avérer difficile. Sous DOS ou Windows, vous ne pourrez pas spécifier l'interpréteur sur la première ligne du script, comme c'est le cas sous UNIX. Certains serveurs ont une configuration prédéfinie pour associer certaines extensions de nom de fichier à l'interpréteur. Par exemple, de nombreux serveurs Web Windows supposent que les fichiers se terminant par .pl sont des scripts Perl.

Si le serveur n'effectue pas ce type d'association de fichiers, vous pouvez définir un fichier batch du packager qui appelle à la fois l'interpréteur et le script. Comme pour le serveur UNIX, n'installez pas l'interpréteur dans le répertoire cgi-bin ou dans tout répertoire accessible par le Web.

Installation de CGI sur Macintosh

Les deux options de serveur les plus connues pour Macintosh sont WebStar StarNine et son prédécesseur MacHTTP. Les deux reconnaissent CGI par son extension de nom de fichier.

MacHTTP comprend deux extensions différentes : .cgi et .acgi, qui signifie CGI asynchrone. Les programmes CGI classiques installés sur un Macintosh (avec une extension .cgi) maintiendront le serveur Web dans un état occupé jusqu'à ce que le CGI ait fini de s'exécuter, ce qui obligera le serveur à suspendre toutes les autres requêtes. Le CGI asynchrone, en revanche, permet au serveur d'accepter des requêtes même lorsqu'il est en cours d'exécution.

Un développeur Macintosh CGI utilisant l'un de ces serveurs Web doit, si possible, utiliser uniquement l'extension .acgi plutôt que l'extension .cgi. Il devrait fonctionner avec la plupart des programmes CGI ; si cela ne fonctionne pas, renommez le programme en .cgi.

Exécution de CGI

Une fois que vous avez installé CGI, il existe plusieurs façons de l'exécuter. Si votre programme CGI est un programme de sortie uniquement, tel que le programme Hello,World !, vous pouvez l'exécuter simplement en accédant à son URL.

La plupart des programmes s'exécutent comme une application serveur sur un formulaire HTML. Avant d'apprendre comment obtenir des informations à partir de ces formulaires, lisez d'abord une brève introduction sur la création de tels formulaires.

Un tutoriel rapide sur les formulaires HTML

Les deux balises les plus importantes dans un formulaire HTML sont les

Et . Vous pouvez créer la plupart des formulaires HTML en utilisant uniquement ces deux balises. Dans ce chapitre, vous explorerez ces balises et un petit sous-ensemble de types ou d'attributs possibles. . Un guide complet et un lien vers les formulaires HTML se trouvent au chapitre 3, HTML et formulaires.

Étiqueter

Étiqueter utilisé pour déterminer quelle partie du fichier HTML doit être utilisée pour les informations saisies par l'utilisateur. Cela fait référence à la façon dont la plupart des pages HTML appellent un programme CGI. Les attributs de balise spécifient le nom et l'emplacement du programme - soit localement, soit sous forme d'URL complète, le type d'encodage utilisé et la méthode de déplacement des données utilisée par le programme.

La ligne suivante montre les spécifications de la balise :

< ACTION FORM = "url" METHOD = ENCTYPE = "..." >

L'attribut ENCTYPE ne joue pas de rôle particulier et n'est généralement pas inclus avec la balise . Des informations détaillées concernant la balise ENCTYPE sont fournies au chapitre 3. Une façon d'utiliser ENCTYPE est présentée au chapitre 14, « Extensions de marque ».

L'attribut ACTION fait référence à l'URL du programme CGI. Une fois que l'utilisateur a rempli le formulaire et fourni des informations, toutes les informations sont codées et transférées au programme CGI. Le programme CGI lui-même résout le problème du décodage et du traitement des informations ; Cet aspect est abordé dans « Acceptation des entrées du navigateur », plus loin dans ce chapitre.

Enfin, l'attribut METHOD décrit comment le programme CGI doit recevoir les entrées. Les deux méthodes, GET et POST, diffèrent dans la manière dont elles transmettent les informations au programme CGI. Les deux sont abordés dans « Acceptation des entrées du navigateur ».

Pour que le navigateur autorise la saisie de l'utilisateur, toutes les balises et informations du formulaire doivent être entourées par la balise . N'oubliez pas la balise de fermeture

pour indiquer la fin du formulaire. Vous ne pouvez pas avoir de formulaire dans un formulaire, bien que vous puissiez configurer un formulaire qui vous permet de présenter des informations à différents endroits ; cet aspect est discuté en détail au chapitre 3.

Étiqueter

Vous pouvez créer des barres de saisie de texte, des boutons radio, des cases à cocher et d'autres moyens d'accepter la saisie à l'aide de la balise . Cette section couvre uniquement les champs de saisie de texte. Pour implémenter ce champ, utilisez la balise avec les attributs suivants :

< INPUT TYPE=text NAME = "... " VALUE = "... " SIZE = MAXLENGTH = >

NAME est le nom symbolique de la variable qui contient la valeur saisie par l'utilisateur. Si vous incluez du texte dans l'attribut VALEUR, ce texte sera placé par défaut dans le champ de saisie de texte. L'attribut SIZE vous permet de spécifier la longueur horizontale du champ de saisie tel qu'il apparaîtra dans la fenêtre du navigateur. Enfin, MAXLENGTH spécifie le nombre maximum de caractères que l'utilisateur peut saisir dans le champ. Veuillez noter que les attributs VALUE, SIZE, MAXLENGTH sont facultatifs.

Soumission du formulaire

Si vous n'avez qu'un seul champ de texte dans un formulaire, l'utilisateur peut soumettre le formulaire en tapant simplement les informations sur le clavier et en appuyant sur Entrée. Sinon, l'utilisateur doit pouvoir disposer d'un autre moyen pour présenter les informations. L'utilisateur soumet des informations à l'aide d'un bouton de soumission avec la balise suivante :

< Input type=submit >

Cette balise crée un bouton Soumettre dans votre formulaire. Lorsque l'utilisateur a fini de remplir le formulaire, il peut soumettre son contenu à l'URL spécifiée par l'attribut ACTION du formulaire en cliquant sur le bouton Soumettre.

Accepter les entrées du navigateur

Ci-dessus se trouvaient des exemples d'enregistrement d'un programme CGI qui envoie des informations du serveur au navigateur. En réalité, un programme CGI qui génère uniquement des données n'a pas beaucoup d'applications (quelques exemples sont donnés au chapitre 4). La capacité la plus importante de CGI est de recevoir des informations du navigateur – la fonctionnalité qui donne au Web son caractère interactif.

Le programme CGI reçoit deux types d'informations du navigateur.

  • Tout d'abord, il obtient diverses informations sur le navigateur (son type, ce qu'il peut afficher, l'hôte hôte, etc.), le serveur (son nom et sa version, son port d'exécution, etc.) et le programme CGI. lui-même (nom du programme et où il se trouve). Le serveur donne toutes ces informations au programme CGI via des variables d'environnement.
  • Deuxièmement, le programme CGI peut recevoir les entrées de l'utilisateur. Ces informations, après avoir été encodées par le navigateur, sont envoyées soit via une variable d'environnement (méthode GET), soit via une entrée standard (méthode stdin - POST).

Variables d'environnement

Il est utile de savoir quelles variables d'environnement sont disponibles pour un programme CGI, à la fois pendant la formation et pour le débogage. Le tableau 2.2 répertorie certaines des variables d'environnement CGI disponibles. Vous pouvez également écrire un programme CGI qui génère des variables d'environnement et leurs valeurs vers un navigateur Web.

Tableau 2.2. Quelques variables d'environnement CGI importantes Variable d'environnement Objectif REMOTE_ADDR Adresse IP de la machine client. REMOTE_HOST L'hôte de la machine client. HTTP _ACCEPT Répertorie les types de données MIME que le navigateur peut interpréter. HTTP _USER_AGENT Informations sur le navigateur (type de navigateur, numéro de version, système d'exploitation, etc.). REQUEST_METHOD GET ou POST. CONTENT_LENGTH La taille de l'entrée si elle est envoyée via POST. S'il n'y a pas d'entrée ou si la méthode GET est utilisée, ce paramètre n'est pas défini. QUERY_STRING Contient les informations d'entrée lorsqu'elles sont transmises à l'aide de la méthode GET. PATH_INFO Permet à l'utilisateur de spécifier un chemin à partir de la ligne de commande CGI (par exemple, http://hostname/cgi-bin/programname/path). PATH_TRANSLATED Traduit le chemin relatif dans PATH_INFO en chemin réel sur le système.

Pour écrire une application CGI qui affiche des variables d'environnement, vous devez savoir comment faire deux choses :

  • Définissez toutes les variables d'environnement et leurs valeurs correspondantes.
  • Imprimez les résultats dans le navigateur.

Vous savez déjà comment effectuer la dernière opération. En Perl, les variables d'environnement sont stockées dans le tableau associatif %ENV, qui est introduit par le nom de la variable d'environnement. Le listing 2.3 contient env.cgi, un programme Perl qui atteint notre objectif.

Inscription 2.3. Un programme Perl, env.cgi, qui imprime toutes les variables d'environnement CGI.

#!/usr/local/bin/perl print "Type de contenu : texte/html\n\n" ; imprimer " \n"; imprimer " Environnement CGI\n"; imprimer "\n"; imprimer " \n"; imprimer "

Environnement CGI

\n"; foreach $env_var (clés %ENV) ( print " $env_var= $ENV($env_var)
\n"; ) imprimer "

\n";

Un programme similaire pourrait être écrit en C ; le code complet se trouve dans le listing 2.4.

Inscription 2.4. Env.cgi.c en C. /* env.cgi.c */ #include char externe **environ; int main() ( char **p = environ; printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" Environnement CGI\n"); printf("\n"); printf(" \n"); printf("

Environnement CGI

\n"); while(*p != NULL) printf("%s
\n",*p++); printf("

\n"); )

OBTENIR ou POST ?

Quelle est la différence entre les méthodes GET et POST ? GET transmet la chaîne d'entrée codée via la variable d'environnement QUERY_STRING, tandis que POST la transmet via stdin. POST est la méthode préférée, en particulier pour les formulaires contenant beaucoup de données, car il n'y a aucune restriction sur la quantité d'informations envoyées, tandis qu'avec la méthode GET, la quantité d'espace multimédia est limitée. GET possède cependant une certaine propriété utile ; ceci est couvert en détail au chapitre 5, Entrée.

Pour déterminer quelle méthode est utilisée, le programme CGI vérifie la variable d'environnement REQUEST_METHOD, qui sera définie sur GET ou POST. S'il est défini sur POST, la longueur des informations codées est stockée dans la variable d'environnement CONTENT_LENGTH.

Entrée codée

Lorsqu'un utilisateur soumet un formulaire, le navigateur encode d'abord les informations avant de les envoyer au serveur puis à l'application CGI. Lorsque vous utilisez la balise , chaque champ reçoit un nom symbolique. La valeur saisie par l'utilisateur est représentée comme la valeur de la variable.

Pour le déterminer, le navigateur utilise une spécification de codage d'URL, qui peut être décrite comme suit :

  • Sépare les différents champs par une esperluette (&).
  • Sépare le nom et les valeurs par des signes égal (=), avec le nom à gauche et la valeur à droite.
  • Remplace les espaces par des signes plus (+).
  • Remplace tous les caractères « anormaux » par un signe de pourcentage (%) suivi d'un code hexadécimal à deux chiffres pour le caractère.

Votre chaîne codée finale ressemblera à ce qui suit :

Nom1=valeur1&nom2=valeur2&nom3=valeur3 ...

Remarque : Les spécifications relatives au codage d'URL se trouvent dans la RFC1738.

Par exemple, disons que vous disposez d'un formulaire qui demande le nom et l'âge. Le code HTML utilisé pour afficher ce formulaire est présenté dans le listing 2.5.

Inscription 2.5. Code HTML pour afficher le nom et l'âge.

Nom et âge

Entrez votre nom:

Entrez votre âge:



Supposons que l'utilisateur saisisse Joe Schmoe dans le champ Nom et 20 dans le champ Âge. L'entrée sera codée dans la chaîne d'entrée.

Nom=Joe+Schmoe&âge=20

Analyse de l'entrée

Pour que ces informations soient utiles, vous devez utiliser les informations sur quelque chose qui peut être utilisé par vos programmes CGI. Les stratégies d'analyse des entrées sont abordées au chapitre 5. En pratique, vous n'aurez jamais à réfléchir à la manière d'analyser les entrées, car plusieurs experts ont déjà écrit des bibliothèques qui effectuent l'analyse, accessibles à tous. Deux de ces bibliothèques sont présentées dans ce chapitre dans les sections suivantes : cgi -lib.pl pour Perl (écrit par Steve Brenner) et cgihtml pour C (écrit par moi).

L'objectif général de la plupart des bibliothèques écrites dans différents langages est d'analyser une chaîne codée et de placer des paires nom et valeur dans une structure de données. Il y a un avantage évident à utiliser un langage doté de structures de données intégrées comme Perl ; cependant, la plupart des bibliothèques pour les langages de bas niveau tels que C et C++ incluent une structure de données et l'exécution de sous-programmes.

Il n’est pas nécessaire d’avoir une compréhension complète des bibliothèques ; il est plus important d'apprendre à les utiliser comme outils pour faciliter le travail du programmeur CGI.

Cgi-lib.pl

Cgi-lib.pl utilise des tableaux associatifs Perl. La fonction &ReadParse analyse la chaîne d'entrée et saisit chaque paire nom/valeur par son nom. Par exemple, les chaînes Perl correspondantes nécessaires pour décoder la chaîne d'entrée "nom/âge" qui vient d'être présentée seraient

&ReadParse(*entrée);

Maintenant, pour voir la valeur saisie pour "name", vous pouvez accéder au tableau associatif $input("name"). De même, pour accéder à la valeur de « age », vous devez regarder la variable $input (« age »).

Cgihtml

C n'a pas de structures de données intégrées, cgihtml implémente donc sa propre liste de liens à utiliser avec ses routines d'analyse CGI. Ceci définit la structure du type d'entrée comme suit :

Typedef struct ( Char *nom; Char *valeur; ) Type d'entrée ;

Pour analyser la chaîne d'entrée "nom/âge" en C à l'aide de cgihtml, ce qui suit est utilisé :

/* déclare une liste chaînée appelée input */ Llist input; /* analyser l'entrée et l'emplacement dans la liste chaînée */ read_cgi_input(&input);

Pour accéder aux informations sur l'âge, vous pouvez soit analyser la liste manuellement, soit utiliser la fonction cgi _val() disponible.

#inclure #inclure Char *age = malloc(sizeof(char)*strlen(cgi_val(input, "age")) + 1); Strcpy(age, cgi_val(input, "age"));

La valeur « age » est désormais stockée dans la chaîne age.

Remarque : au lieu d'utiliser un simple tableau (comme char age ;), j'alloue dynamiquement de l'espace mémoire pour l'âge de la chaîne. Même si cela rend la programmation plus difficile, cela reste néanmoins important du point de vue de la sécurité. Ceci est abordé plus en détail au chapitre 9.

Un simple programme CGI

Vous allez écrire un programme CGI appelé nameage.cgi qui gère la forme nom/âge. Le traitement des données (ce que j'appelle habituellement des « trucs ») est minime. Nameage.cgi décode simplement l'entrée et affiche le nom et l'âge de l'utilisateur. Bien qu'un tel outil ne soit pas très utile, il démontre l'aspect le plus critique de la programmation CGI : les entrées et les sorties.

Vous utilisez le même formulaire que ci-dessus en appelant les champs "nom et âge". Ne vous inquiétez pas encore de la robustesse et de l’efficacité ; résoudre le problème existant de la manière la plus simple. Les solutions Perl et C sont présentées respectivement dans les listings 2.6 et 2.7.

Inscription 2.6. Nameage.cgi en Perl

#!/usr/local/bin/perl # nameage.cgi nécessite "cgi-lib.pl" &ReadParse(*input); print "Content-Type : text/html\r\n\r\n" ; imprimer " \n"; imprimer " Nom et âge\n"; imprimer "\n"; imprimer " \n"; print "Bonjour, " . $input("name") . ". Vous avez\n"; print $input("age") . " ans.

\n"; imprimer "

\n";

Inscription 2.7. nameage.cgi en C

/* nomage.cgi.c */ #include #include "cgi-lib.h" int main() ( llist input; read_cgi_input(&input); printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" Nom et âge\n"); printf("\n"); printf(" \n"); printf("Bonjour, %s. Vous avez\n",cgi_val(input,"name")); printf("%s ans.

\n",cgi_val(input,"age")); printf("

\n"); )

Attention, ces deux programmes sont presque équivalents. Ils contiennent tous deux des routines d'analyse qui n'occupent qu'une seule ligne et traitent l'intégralité de l'entrée (grâce aux routines de bibliothèque correspondantes). Le résultat est essentiellement une version modifiée de votre programme principal Hello, World !.

Essayez d'exécuter le programme en remplissant le formulaire et en cliquant sur le bouton Soumettre.

Stratégie générale de programmation

Vous connaissez désormais tous les principes de base requis pour la programmation CGI. Une fois que vous avez compris comment CGI reçoit les informations et comment il les renvoie au navigateur, la qualité réelle de votre produit final dépend de vos capacités générales de programmation. À savoir, lorsque vous programmez du CGI (ou quoi que ce soit d'ailleurs), gardez les qualités suivantes à l'esprit :

  • Simplicité
  • Efficacité
  • Polyvalence

Les deux premières qualités sont assez courantes : essayez de rendre votre code aussi lisible et efficace que possible. La polyvalence s'applique davantage aux programmes CGI qu'aux autres applications. Lorsque vous commencerez à développer vos propres programmes CGI, vous apprendrez qu'il existe plusieurs applications de base que tout le monde veut créer. Par exemple, l'une des tâches les plus courantes et les plus évidentes d'un programme CGI consiste à traiter un formulaire et à envoyer les résultats par courrier électronique à un destinataire spécifique. Vous pouvez traiter plusieurs formulaires distincts, chacun avec un destinataire différent. Au lieu d'écrire un programme CGI pour chaque formulaire individuel, vous pouvez gagner du temps en écrivant un programme CGI plus général qui s'applique à tous les formulaires.

En couvrant tous les aspects de base de CGI, je vous ai fourni suffisamment d'informations pour démarrer avec la programmation CGI. Cependant, pour devenir un développeur CGI efficace, vous devez mieux comprendre la façon dont CGI communique avec le serveur et le navigateur. Le reste de ce livre couvre en détail les problèmes brièvement mentionnés dans ce chapitre, ainsi que la stratégie de développement d'applications et les avantages et limites du protocole.

Résumé

Ce chapitre a brièvement présenté les bases de la programmation CGI. Vous créez une sortie en formatant correctement vos données et en les imprimant sur la sortie standard. La réception d'une entrée CGI est un peu plus complexe car elle doit être analysée avant de pouvoir être utilisée. Heureusement, il existe déjà plusieurs bibliothèques qui effectuent l'analyse.

À présent, vous devriez être assez à l'aise avec la programmation d'applications CGI. Le reste de ce livre aborde plus en détail les spécifications, les conseils et les stratégies de programmation pour les applications plus avancées et complexes.

E-commerce en russe clair. Comment fonctionne le commerce en ligne ?

Dernièrement, de plus en plus de projets liés au trading en ligne ont vu le jour. En étudiant ce domaine, je n'ai pas pu trouver de description générale et compréhensible du processus. Par conséquent, j'ai décidé de créer quelque chose comme un aide-mémoire auquel vous pouvez toujours vous référer afin de comprendre la procédure dans un domaine tel que le commerce électronique.

Je ferai immédiatement une réserve sur le fait que je me suis concentré sur les processus et les canaux qui contribuent à attirer des clients.

E-commerce : de quoi s'agit-il ?

Les définitions provenant de diverses sources en disent long sur la vente de biens ou de services via Internet. En termes simples, le commerce électronique désigne toute activité en ligne dans laquelle de l’argent apparaît.

Shopping, vente, assurance, banque, monnaie électronique, tout est ici. Prenez-le et signez-le.

De la cible

Afin de comprendre l’enjeu, je suggère de commencer le chemin par la toute fin. Quel est le but de toute entreprise ? C'est vrai, gagnez de l'argent. Alors, imaginez n'importe quel produit, par exemple des chaussettes en silicone. Pourquoi pas!

J'ai pris la première chose qui m'est venue à l'esprit, il s'est avéré qu'il y avait quelque chose comme ça...

Notre tâche est de gagner de l'argent avec ces chaussettes. Nous pensons à Internet. Hmm... pourquoi ne pas créer un site Web et c'est comme ça que les ventes se dérouleront, gardez-moi les Maldives ! Mais ce n'est pas si simple.

J'aime vraiment dessiner. Cela permet de comprendre les différents processus. Dessinons?!

Jusqu'à présent, notre modèle ressemble à ceci. Nous prenons des chaussettes, les mettons sur Internet et gagnons de l'argent. C'est tout simplement génial ! Vos yeux brûlent, vos paumes transpirent et vous avez déjà envie de vous mettre au travail. Mais faut-il réaliser un site internet ou une plateforme de vente ?

Site ou plateforme de vente

Il existe différentes solutions pour placer votre produit sur le World Wide Web. Vous pouvez créer votre propre site Internet ou utiliser des plateformes tierces (groupes, pages sur les réseaux sociaux, forums de discussion, etc.). Arrêtons-nous sur le site.

Vous avez commandé un site Web, pris un modèle prêt à l'emploi ou l'avez créé vous-même à l'aide d'un créateur de site Web (vous pouvez rechercher un CMS sur Google), cela n'a pas d'importance. Ensuite, ils ont placé un tas de chaussettes en silicone de différents types et étaient heureux.

Désolé d'interrompre la lecture. Rejoignez ma chaîne de télégramme. Nouvelles annonces d’articles, développement de produits digitaux et Growth Hack, tout y est. Dans votre attente! Nous allons continuer...

Systèmes de paiement

Mais pour qu'une personne achète chez vous ici et maintenant, il faudra peaufiner les systèmes de paiement. Il s'agit d'une sorte de service qui vous permet d'effectuer des achats en ligne via : des cartes bancaires, de l'argent Internet, des téléphones portables et bien d'autres choses. Pour cela, vous devrez partager un pourcentage des transactions, mais de cette façon vous vous faciliterez grandement la vie.

Choisissez le service qui vous convient. Quelque part, le pourcentage sera plus élevé, et quelque part il y aura un abonnement ou autre chose. Faites juste une petite recherche. Mettez le code requis sur votre site Internet, associez toutes les transactions à votre compte carte et le tour est joué !

Il semblerait que ce soit tout. Il y a un site internet, des fiches produits aussi, et même le bouton « acheter » fonctionne, mais il manque quelque chose... Il n'y a pas de flux de clients qui achèteront.

Flux clients

Où : CAC = Coût d'acquisition d'un nouveau client. MCC (marketingcampaign cost) = Le coût total des dépenses marketing visant à attirer les clients (mais pas à les fidéliser). W (salaire) = Salaire des spécialistes du marketing et des directeurs commerciaux. S (logiciel) = Le coût des logiciels utilisés dans la publicité et les ventes (par exemple, la plateforme de vente utilisée, l'automatisation du marketing, les tests A/B, les services d'analyse, etc.). PS (professionalservices) = Coût des services professionnels fournis aux services marketing et commerciaux (conception, conseil, etc.). O (autres) = Autres frais généraux liés aux services marketing et commerciaux. CA (clients acquis) = Nombre total de clients attirés.

Mais il ne faut pas oublier la qualité du client, LTV nous aidera ici.

Indicateurs importants : LTV

La Live Time Value, le cycle de vie du client, est un autre indicateur du e-commerce à prendre en compte. Il montre le revenu moyen qu’un client rapporte. Il existe différentes approches de calcul, j'ai choisi celle actuelle basée sur le profit, comme l'une des plus précises.

Il s'agit simplement de la somme des revenus totaux sur l'ensemble de l'historique d'achat pour chaque client individuel. Ajoutez la somme de tous les achats (transactions) des clients à la transaction N, où la transaction N est le dernier achat effectué par le client avec votre entreprise. Si vous avez accès à toutes les données de transactions clients, vous pouvez facilement les calculer à l'aide d'Excel.

LTV = (transaction 1 + transaction 2 + transaction 3... + transaction N) x part des bénéfices dans le chiffre d'affaires.

Le calcul du LTV basé sur le bénéfice net montre en fin de compte le bénéfice réel qu'un client apporte à votre entreprise. Celui-ci prend en compte le coût du service client, le coût de fidélisation, le coût d’attraction, etc. Le résultat est tout un complexe de calculs basés sur des données individuelles. Le bénéfice total généré par client au fil du temps vous donnera une compréhension précise de la rentabilité de vos clients à ce jour.

D'autres approches peuvent être trouvées sur .

Indicateurs importants : CAC et ratio LTV

Pour comprendre la viabilité d’une entreprise, il est très important d’examiner le ratio des deux ratios CAC:LTV mentionnés.

  • Moins de 1:1 - Vous vous précipitez à toute vitesse vers la faillite.
  • 1:1 – Vous perdez de l’argent sur chaque client attiré.
  • 1:2 – Cela semble bien, mais il semble que vous n’investissez pas suffisamment d’argent et que vous pourriez vous développer plus rapidement. Lancez des campagnes d'acquisition de clients plus agressives et atteignez des taux proches de 1:3.
  • 1:3 – Rapport idéal. Vous avez une entreprise prospère et un modèle économique solide.

Indicateurs importants : le ROI ne pas oublier

Comme nous l'avons évoqué ci-dessus, dans le commerce électronique, vous devez clairement comprendre s'il est rentable ou non d'utiliser un canal d'acquisition. En plus du LTV et du CAC, il existe un autre indicateur important : le ROI. Il montre si votre investissement, dans notre cas en publicité, a porté ses fruits. C'est-à-dire. combien 1 rouble investi nous a finalement apporté.

Une formule très simple est utilisée pour le calcul :

Où « Revenus de la campagne » est la différence entre les revenus de la chaîne et le coût de votre produit. Et pour calculer le profit, soustrayez les frais de publicité.

Ainsi, une formule plus détaillée ressemblerait à ceci :

ROI = (Revenus de la chaîne – Coût) – Dépenses de publicité / Dépenses de publicité x 100 %

Lisez un exemple plus détaillé avec calcul. En fait, cette formule simple est placée dans le même tableau Excel, où tout est calculé automatiquement.

Les trois indicateurs dont nous avons discuté sont importants dans le commerce électronique. Chacun d’eux vous permet de trouver les goulots d’étranglement dans vos flux et de travailler avec eux. C’est là que réside le potentiel de croissance des entreprises. J'ai ajouté un peu plus à notre modèle avec des chaussettes.

Il est impossible de tout regrouper dans un seul document, et qui le lira pendant si longtemps ? Plus tard, je ferai un guide séparé sur les nuances du commerce électronique qui peuvent interférer avec les ventes.

Total

Dans l’ensemble, vous avez désormais une compréhension générale du commerce en ligne ou du commerce électronique. De plus, comme on dit : « Le diable est dans les détails ». Étudiez chaque canal séparément, calculez des indicateurs de performance et recherchez de nouvelles informations dans les petites choses. La vente sur Internet pour vous, et bien plus encore ! Et j'ai encore un matériel.

Oui, j'oubliais presque, bonne année, chers lecteurs ! Je vous souhaite de belles victoires et réalisations l'année prochaine !