Cgi de comercio ilimitado. Comercio electrónico: ¿qué es? E-Commerce Partners Network es un programa de afiliados de las tiendas online más grandes. Instalación de CGI en Macintosh

Comercio electrónico en ruso claro. ¿Cómo funcionan los negocios en línea?

Últimamente, ha habido cada vez más proyectos relacionados con el comercio en línea. Mientras estudiaba esta área, no pude encontrar una descripción general y comprensible del proceso. Por lo tanto, decidí hacer algo así como una hoja de trucos a la que siempre pueda consultar para comprender el procedimiento en un área como el comercio electrónico.

Inmediatamente haré una reserva de que me centré en los procesos y canales que ayudan a atraer clientes.

Comercio electrónico: ¿de qué se trata?

Las definiciones de diversas fuentes dicen algo sobre la venta de bienes o servicios a través de Internet. En palabras simples, el comercio electrónico es cualquier actividad online donde aparece dinero.

Compras, ventas, seguros, banca, dinero electrónico, todo está aquí. Tómalo y fírmalo.

Del objetivo

Para comprender el problema, sugiero comenzar el camino desde el final. ¿Cuál es el objetivo de cualquier negocio? Así es, gana dinero. Entonces, imagina cualquier producto, por ejemplo, calcetines de silicona. ¡Por qué no!

Tomé lo primero que me vino a la mente, resultó que había algo como esto...

Nuestra tarea es ganar dinero con estos calcetines. Estamos pensando en Internet. Hmm... ¿por qué no crear un sitio web y así serán las ventas? ¡Manténganme en Maldivas! Pero no es tan simple.

Realmente me gusta dibujar. Esto ayuda a comprender los distintos procesos. ¡¿Dibujemos?!

Hasta ahora nuestro modelo se ve así. Cogemos calcetines, los ponemos en Internet y conseguimos dinero. ¡Esto es simplemente genial! Te arden los ojos, te sudan las palmas y ya quieres ponerte manos a la obra. ¿Pero necesitas crear un sitio web o una plataforma de ventas?

Sitio web o plataforma en venta

Existen varias soluciones para colocar su producto en la World Wide Web. Puedes crear tu propio sitio web o utilizar plataformas de terceros (grupos, páginas en redes sociales, foros de mensajes, etc.). Detengámonos en el sitio.

Usted ordenó un sitio web, tomó una plantilla ya preparada o lo creó usted mismo usando un creador de sitios web (puede buscar en Google CMS), no importa. Luego colocaron un montón de calcetines de silicona de diferentes tipos y quedaron felices.

Perdón por interrumpir la lectura. Únete a mi canal de Telegram. Nuevos anuncios de artículos, desarrollo de productos digitales y growth hack, todo está ahí. ¡Esperando por ti! Continuemos...

Sistemas de pago

Pero para que una persona pueda comprarle aquí y ahora, será necesario modificar los sistemas de pago. Este es un tipo de servicio que te permite realizar compras online a través de: tarjetas bancarias, dinero de Internet, teléfonos móviles y un montón de cosas más. Para ello tendrás que compartir un porcentaje de las transacciones, pero así te harás la vida mucho más fácil.

Elija el servicio que más le convenga. En algún lugar el porcentaje será mayor y en algún lugar habrá una suscripción o algo más. Sólo investiga un poco. Coloque el código requerido en su sitio web, vincule todas las transacciones a la cuenta de su tarjeta y ¡listo!

Eso parece ser todo. Hay sitio web, fichas de productos también y hasta el botón de “comprar” funciona, pero falta algo... No hay flujo de clientes que vayan a comprar.

Flujos de clientes

Donde: CAC = Costo de adquisición de un nuevo cliente. MCC (costos de campaña de marketing) = El costo total de los gastos de marketing destinados a atraer clientes (pero no retenerlos). W (salarios) = Salario de especialistas en marketing y gerentes de ventas. S (software) = El costo del software utilizado en publicidad y ventas (por ejemplo, la plataforma de ventas utilizada, automatización de marketing, pruebas A/B, servicios de análisis, etc.). PS (professionalservices) = Costo de los servicios profesionales prestados a los departamentos de marketing y ventas (diseño, consultoría, etc.). O (otros) = Otros costos generales relacionados con los departamentos de marketing y ventas. CA (clientes adquiridos) = Número total de clientes atraídos.

Pero no debemos olvidarnos de la calidad del cliente, LTV ayudará aquí.

Métricas importantes: LTV

Live Time Value, el ciclo de vida del cliente, es otro indicador del comercio electrónico que debe tenerse en cuenta. Muestra cuántos ingresos genera un cliente en promedio. Existen diferentes métodos de cálculo, elegí el actual basado en el beneficio, como uno de los más precisos.

Esto es simplemente la suma de los ingresos totales durante todo el historial de compras de cada cliente individual. Sume la suma de todas las compras (transacciones) de los clientes a la transacción N, donde la transacción N es la última compra que el cliente realizó con su empresa. Si tiene acceso a todos los datos de las transacciones de los clientes, puede calcularlos fácilmente utilizando Excel.

LTV = (transacción 1 + transacción 2 + transacción 3... + transacción N) x participación en las ganancias en los ingresos.

Calcular el LTV en función del beneficio neto muestra en última instancia el beneficio real que un cliente aporta a su empresa. Esto tiene en cuenta el coste del servicio al cliente, el coste de retención, el coste de atracción, etc. El resultado es todo un complejo de cálculos basados ​​en datos individuales. El beneficio total generado por cliente a lo largo del tiempo le dará una comprensión precisa de la rentabilidad de sus clientes hasta la fecha.

Se pueden encontrar otros enfoques en.

Indicadores importantes: ratio CAC y LTV

Para comprender la viabilidad de un negocio, es muy importante observar la relación entre las dos relaciones CAC:LTV mencionadas.

  • Menos de 1:1 - Usted corre a toda velocidad hacia la quiebra.
  • 1:1 – Pierdes dinero con cada cliente atraído.
  • 1:2 – Parece bueno, pero parece que no estás invirtiendo suficiente dinero y podrías desarrollarte más rápido. Lanza campañas de captación de clientes más agresivas y consigue tasas cercanas a 1:3.
  • 1:3 – Proporción ideal. Tiene un negocio próspero y un modelo de negocio sólido.

Indicadores importantes: ROI no lo olvides

Como comentamos anteriormente, en el comercio electrónico es necesario tener claro si es rentable utilizar un canal de adquisición o no. Además de LTV y CAC, existe otro indicador importante: el ROI. Muestra si su inversión, en nuestro caso en publicidad, ha dado sus frutos. Eso es. cuánto nos aportó al final 1 rublo invertido.

Para el cálculo se utiliza una fórmula muy sencilla:

Donde “Ingresos de la campaña” es la diferencia entre los ingresos del canal y el costo de su producto. Y para calcular las ganancias, reste los costos de publicidad.

Por tanto, una fórmula más detallada quedaría así:

ROI = (Ingresos del canal – Costo) – Gastos de publicidad / Gastos de publicidad x 100%

Lea un ejemplo más detallado con cálculo. De hecho, esta sencilla fórmula se coloca en la misma tabla de Excel, donde todo se calcula automáticamente.

Los tres indicadores que hemos comentado son importantes en el comercio electrónico. Cada uno de ellos le permite encontrar cuellos de botella en sus flujos y trabajar con ellos. Aquí es donde reside el potencial de crecimiento para las empresas. Agregué un poco más a nuestro modelo con calcetines.

Es imposible encajar todo en un solo material, ¿y quién lo leerá durante tanto tiempo? Más adelante haré una guía aparte sobre los matices del comercio electrónico que pueden interferir con las ventas.

Total

En general, ahora tiene una comprensión general del comercio en línea o del comercio electrónico. Además, como suele decirse: “El diablo está en los detalles”. Estudie cada canal por separado, calcule indicadores de rendimiento y busque nuevos conocimientos en los pequeños detalles. ¡Ventas por Internet para ti y más! Y tengo un material más.

Sí, casi lo olvido, ¡Feliz año nuevo, queridos lectores! ¡Les deseo grandes victorias y logros el próximo año!

Andover, Massachusetts, 19 de noviembre de 2003

El grupo de comercio, Inc. (NYSE: CGI), el mayor emisor de seguros privados para automóviles de pasajeros en Massachusetts y CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), un proveedor líder de tecnología de la información y servicios de procesamiento de negocios, anunció hoy la firma de una renovación de contrato de subcontratación de procesos de negocios (BPO) por seis años valorado en US$35 millones. CGI proporcionará servicios completos de procesamiento de pólizas para líneas de automóviles comerciales y de pasajeros privados de Massachusetts, además de proporcionar la herramienta de interfaz de agencia CollaborativeEdge de CGI, soporte y mantenimiento de aplicaciones, soporte regulatorio, consultoría de sistemas y servicios de gestión de documentos.

Gerald Fels, vicepresidente ejecutivo y director financiero de Commerce Group, afirmó: "Como proveedor líder de automóviles privados de pasajeros en Massachusetts, nuestro objetivo es brindar a nuestros agentes y empleados servicios que les ayuden a desempeñarse al más alto nivel. A lo largo de los años, hemos fomentado una sólida relación con CGI. Su sistema es robusto y preciso y su equipo está muy familiarizado con nuestros sistemas de procesamiento interno. Eso es importante para nosotros".

Serge LaPalme, presidente de servicios comerciales de seguros de CGI, agregó: "Estamos muy contentos de continuar nuestra relación con Commerce Group, que abarca más de 30 años. Commerce Group continúa siendo uno de nuestros valiosos socios comerciales y es estratégico para nuestro éxito. Para ayudar a nuestro cliente a centrarse aún más en su negocio principal, estamos aprovechando las nuevas tecnologías cuando y donde tiene sentido. Nuestro equipo conoce íntimamente la industria de seguros y el entorno regulatorio único del Estado y, como resultado, es rápido adaptar las soluciones existentes a este sector en constante evolución".

Acerca del grupo de comercio, Inc.

The Commerce Group, Inc., una sociedad holding de seguros, tiene su sede en Webster, Massachusetts. Las subsidiarias de seguros de propiedad y accidentes de Commerce Group incluyen The Commerce Insurance Company y Citation Insurance Company en Massachusetts, Commerce West Insurance Company en California y American Commerce Insurance Company en Ohio. A través de las actividades de seguros combinadas de sus subsidiarias, Commerce Group ocupa el puesto 22. grupo de seguros de automóviles personales más grande del país por A.M. Mejor, basado en información directa sobre primas emitidas en 2002.

Acerca de CGI
Fundada en 1976, CGI es la quinta empresa independiente de servicios de tecnología de la información más grande de América del Norte, según su plantilla. CGI y sus empresas afiliadas emplean a 20.000 profesionales. La tasa de ejecución de ingresos anualizada de CGI es actualmente de 2.800 millones de dólares canadienses (1.900 millones de dólares estadounidenses) y al 30 de septiembre de 2003, la cartera de pedidos de CGI era de 12.300 millones de dólares canadienses (9.100 millones de dólares estadounidenses). CGI brinda servicios integrales de TI y procesos comerciales a clientes de todo el mundo desde oficinas en Canadá, Estados Unidos y Europa. Las acciones de CGI cotizan en la TSX (GIB.A) y la NYSE (GIB) y están incluidas en el índice compuesto TSX 100, así como en los índices S&P/TSX Canadian Information Technology y Canadian MidCap.

2012: Compra de la lógica británica

En junio de 2012, CGI Group anunció que había firmado un acuerdo para comprar el mayor integrador de sistemas europeo, Logica. El monto de la transacción es de 2.800 millones de dólares canadienses (2.700 millones de dólares). Como parte de los acuerdos alcanzados, CGI también acordó asumir obligaciones para pagar la deuda de Logica por un monto de 515 millones de dólares canadienses.

Para financiar la transacción, CGI planea recaudar mil millones de dólares canadienses mediante la emisión de 46,7 millones de acciones adicionales, tomar prestados 2 mil millones de dólares canadienses del Canadian Imperial Bank of Commerce, el National Bank of Canada y el Toronto-Dominion Bank, y alrededor de 650 millones de dólares canadienses. dólares más dólares - dentro de la línea de crédito actual.

El precio por acción propuesto fue un 59,8% superior al precio de cierre de Logica el 30 de mayo de 2012. El acuerdo representa aproximadamente 6,6 veces las ganancias de Logica antes de intereses, impuestos, depreciación y amortización (EBITDA) para el año. Período de 12 meses finalizado el 31 de diciembre de 2011

Se espera que la adquisición de Logica aumente las ganancias por acción de CGI entre un 25% y un 30%, excluyendo los costos de adquisición e integración. Como resultado de la fusión, la fuerza laboral y los ingresos anuales de la empresa resultante serán más del doble que los de CGI. El tamaño de la plantilla de la empresa combinada será de unos 72 mil empleados ubicados en oficinas en 43 países, y los ingresos anuales serán de unos 10,4 mil millones de dólares canadienses (9,6 mil millones de dólares).

La nueva empresa será la sexta mayor entre las consultoras de TI del mundo. Las más grandes son IBM, Accenture, Cap Gemini, Tata Consultancy e Infosys, según estimaciones de Reuters.

"Logica es una empresa líder en servicios empresariales y tecnológicos con profesionales dedicados y clientes confiables a largo plazo", dijo el presidente y director ejecutivo de CGI, Michael Roach. "Estamos seguros de que estamos haciendo lo correcto". al precio correcto y en el momento adecuado para crear uno de los pocos proveedores independientes más grandes de servicios de tecnología de extremo a extremo".

El consejo de administración de CGI aprobó por unanimidad la transacción. Está previsto que esté terminado en septiembre de 2012, después de recibir la aprobación de los accionistas y completar procedimientos estándar. Está previsto que el proceso de integración de la empresa concluya en un plazo de 3 años

Gracias a la World Wide Web, casi cualquier persona puede proporcionar información en línea en un formato agradable a la vista y que pueda difundirse ampliamente. Sin duda, ha navegado por Internet y visto otros sitios, y ahora probablemente sepa que acrónimos aterradores como "HTTP" y "HTML" son simplemente una abreviatura de "Web" y "la forma en que se expresa la información en Internet". Es posible que ya tenga cierta experiencia presentando información en Internet.

Internet ha demostrado ser un medio ideal para distribuir información, como lo demuestra su enorme popularidad y su amplio desarrollo. Aunque algunos han cuestionado la utilidad de Internet y atribuyen su amplio desarrollo y popularidad principalmente a la publicidad intrusiva, es innegable que Internet es un medio importante para presentar todo tipo de información. No sólo hay muchos servicios disponibles para proporcionar información actualizada (noticias, clima, eventos deportivos en vivo) y material de referencia electrónicamente, sino que también hay cantidades significativas de otros tipos de datos disponibles. El IRS, que distribuyó todos sus formularios de declaración de impuestos de 1995 y otra información a través de la World Wide Web, admitió recientemente haber recibido correo de admiradores de su sitio Web. ¿Quién hubiera pensado que el IRS recibiría alguna vez cartas de fans? Esto no se debió a que su sitio estuviera bien diseñado, sino a que había demostrado ser una herramienta verdaderamente útil para miles, tal vez millones, de personas.

¿Qué hace que la Web sea un servicio de información único y tan atractivo? En primer lugar, proporciona una interfaz hipermedia para los datos. Piense en el disco duro de su computadora. Normalmente, los datos se expresan de forma lineal, similar a un sistema de archivos. Por ejemplo, tiene varias carpetas y dentro de cada carpeta hay documentos u otras carpetas. La web utiliza un paradigma diferente para expresar información llamado hipermedia. Una interfaz de hipertexto consta de un documento y enlaces. Los enlaces son palabras en las que se hace clic para ver otros documentos o encontrar otro tipo de información. La Web amplía el concepto de hipertexto para incluir otros tipos de medios, como gráficos, sonidos y vídeos (de ahí el nombre "hipermedios"). Seleccionar texto o gráficos en un documento le permite ver información relacionada sobre el elemento seleccionado en cualquier cantidad de formas.

Casi todo el mundo puede beneficiarse de esta forma sencilla y única de presentar y distribuir información, desde académicos que desean utilizar datos inmediatamente con sus colegas hasta empresarios que comparten información sobre su empresa con todos. Sin embargo, aunque dar información es extremadamente importante, en los últimos años muchos han sentido que recibir información es un proceso igualmente importante.

Aunque la Web proporciona una interfaz hipermedia única para la información, existen muchas otras formas efectivas de distribuir datos. Por ejemplo, los servicios de red como el Protocolo de transferencia de archivos (FTP) y el grupo de noticias Gopher existieron mucho antes que la World Wide Web. El correo electrónico ha sido el principal medio de comunicación e intercambio de información en Internet y en la mayoría de las demás redes casi desde el comienzo de estas redes. ¿Por qué Internet se ha convertido en una forma tan popular de distribuir información? El aspecto multimedia de Internet ha contribuido significativamente a su éxito sin precedentes, pero para que Internet sea más eficaz debe ser interactivo.

Sin la capacidad de recibir comentarios de los usuarios y proporcionar información, la Web sería un entorno completamente estático. La información sólo estaría disponible en el formato especificado por el autor. Esto socavaría una de las capacidades de la informática en general: la información interactiva. Por ejemplo, en lugar de obligar al usuario a ver varios documentos como si estuviera mirando un libro o un diccionario, sería mejor permitirle identificar palabras clave sobre un tema de interés. Los usuarios pueden personalizar la presentación de los datos en lugar de depender de una estructura rígida definida por el proveedor de contenido.

El término "servidor web" puede resultar engañoso porque puede referirse tanto a la máquina física como al software que utiliza para comunicarse con los navegadores de Internet. Cuando un navegador solicita una dirección web determinada, primero se conecta a la máquina a través de Internet y envía al software del servidor web una solicitud del documento. Este software se ejecuta continuamente, esperando que lleguen dichas solicitudes y respondiendo en consecuencia.

Aunque los servidores pueden enviar y recibir datos, el servidor en sí tiene una funcionalidad limitada. Por ejemplo, el servidor más primitivo sólo puede enviar el archivo requerido al navegador. El servidor normalmente no sabe qué hacer con tal o cual entrada adicional. Si el ISP no le dice al servidor cómo manejar esta información adicional, lo más probable es que el servidor ignore la entrada.

Para que el servidor pueda realizar otras operaciones además de buscar y enviar archivos al navegador de Internet, necesita saber cómo ampliar la funcionalidad del servidor. Por ejemplo, un servidor web no puede buscar en una base de datos basándose en una palabra clave ingresada por un usuario y devolver múltiples documentos coincidentes a menos que dicha capacidad haya sido programada en el servidor de alguna manera.

¿Qué es el CGI?

La interfaz de puerta de enlace común (CGI) es una interfaz para el servidor que le permite ampliar la funcionalidad del servidor. Usando CGI, puede interactuar interactivamente con los usuarios que acceden a su sitio. A nivel teórico, CGI permite que el servidor pueda analizar (interpretar) la entrada del navegador y devolver información basada en la entrada del usuario. En nivel practico CGI es una interfaz que permite al programador escribir programas que se comunican fácilmente con el servidor.

Normalmente, para ampliar las capacidades del servidor, deberá modificarlo usted mismo. Esta solución no es deseable porque requiere comprender la capa inferior de la programación de la red del Protocolo de Internet. Esto también requeriría editar y recompilar el código fuente del servidor o escribir un servidor personalizado para cada tarea. Supongamos que desea ampliar las capacidades del servidor para que actúe como una puerta de enlace de Web a correo electrónico, tomando la información ingresada por el usuario desde el navegador y enviándola correo electrónico a otro usuario. El servidor tendría que insertar un código para analizar la entrada del navegador, reenviarla por correo electrónico al otro usuario y reenviar la respuesta al navegador a través de la conexión de red.

En primer lugar, dicha tarea requiere acceso al código del servidor, lo que no siempre es posible.

En segundo lugar, es difícil y requiere amplios conocimientos técnicos.

En tercer lugar, esto sólo se aplica a un servidor específico. Si necesita mover su servidor a otra plataforma, tendrá que ejecutar o al menos dedicar mucho tiempo a transferir el código a esa plataforma.

¿Por qué CGI?

CGI ofrece una solución portátil y sencilla a estos problemas. El protocolo CGI define manera estándar para que los programas se pongan en contacto con el servidor web. Sin ningún conocimiento especial, puede escribir un programa en cualquier lenguaje de máquina que interactúe y se comunique con el servidor web. Este programa funcionará con todos los servidores web que comprendan el protocolo CGI.

La comunicación CGI se realiza mediante entrada y salida estándar, lo que significa que si sabe cómo imprimir y leer datos utilizando su lenguaje de programación, puede escribir una aplicación de servidor web. Además de analizar la entrada y la salida, programar aplicaciones CGI es casi equivalente a programar cualquier otra aplicación. Por ejemplo, para programar el programa "¡Hola, mundo!", utiliza las funciones de impresión de su idioma y el formato definido para los programas CGI para imprimir el mensaje apropiado.

Seleccionar un lenguaje de programación

Debido a que CGI es una interfaz universal, no está limitado a ningún lenguaje de máquina específico. Una pregunta importante que se hace a menudo es: ¿qué lenguajes de programación se pueden utilizar para la programación CGI? Puede utilizar cualquier idioma que le permita hacer lo siguiente:

  • Imprimir en salida estándar
  • Leer desde la entrada estándar
  • Leer desde modos variables

Casi todos los lenguajes de programación y muchos lenguajes de scripting hacen estas tres cosas y puedes usar cualquiera de ellas.

Los idiomas se clasifican en una de las dos clases siguientes: traducidos e interpretados. Un lenguaje traducido como C o C++ suele ser más pequeño y más rápido, mientras que los lenguajes interpretados como Perl o Rexx a veces requieren que se cargue un intérprete grande al inicio. Además, puede distribuir códigos binarios (código que se traduce al lenguaje de máquina) sin código fuente si su idioma es traducible. Distribuir scripts interpretables normalmente significa distribuir código fuente.

Antes de elegir un idioma, primero debes considerar tus prioridades. Es necesario sopesar los beneficios de la velocidad y la eficiencia de un lenguaje de programación frente a la facilidad de programación de otro. Si desea aprender otro idioma, en lugar de utilizar el que ya conoce, sopese cuidadosamente las ventajas y desventajas de ambos idiomas.

Los dos lenguajes más utilizados para la programación CGI son C y Perl (ambos tratados en este libro). Ambos tienen claras ventajas y desventajas. Perl es un lenguaje de muy alto nivel y, al mismo tiempo, un lenguaje potente, especialmente adecuado para analizar texto. Aunque su facilidad de uso, flexibilidad y potencia lo convierten en un lenguaje atractivo para la programación CGI, su tamaño relativamente grande y su funcionamiento más lento a veces lo hacen inadecuado para algunas aplicaciones. Los programas C son más pequeños, más eficientes y proporcionan control del sistema de nivel inferior, pero son más complejos de programar, no tienen rutinas de procesamiento de texto integradas livianas y son más difíciles de depurar.

¿Qué lenguaje es el más adecuado para la programación CGI? El que consideres más conveniente desde el punto de vista de la programación. Ambos son igualmente efectivos para programar aplicaciones CGI y, con las bibliotecas adecuadas, ambos tienen capacidades similares. Sin embargo, si tiene un servidor de difícil acceso, puede utilizar programas más pequeños traducidos en C. Si necesita escribir rápidamente una aplicación que requiera mucho trabajo de procesamiento de texto, puede utilizar Perl en su lugar.

Precauciones

Existen algunas alternativas importantes a las aplicaciones CGI. Muchos servidores ahora incluyen programación API, lo que facilita la programación de extensiones directas de servidor en lugar de aplicaciones CGI independientes. Los servidores API son generalmente más eficientes que los programas CGI. Otros servidores incluyen funciones integradas que pueden manejar elementos especiales que no son CGI, como enlaces de bases de datos. Finalmente, algunas aplicaciones pueden manejarse mediante nuevas tecnologías del lado del cliente (en lugar de del lado del servidor), como Java. Con cambios tecnológicos tan rápidos, ¿el CGI se volverá obsoleto rápidamente?

Difícilmente. CGI tiene varias ventajas sobre las tecnologías más nuevas.

  • Es versátil y portátil. Puede escribir una aplicación CGI utilizando casi cualquier lenguaje de programación en cualquier plataforma. Algunas de las alternativas, como la API del servidor, te limitan a ciertos idiomas y son mucho más difíciles de aprender.
  • Es poco probable que las tecnologías del lado del cliente, como Java, reemplacen a CGI, porque hay algunas aplicaciones para las que las aplicaciones del lado del servidor son mucho más adecuadas para ejecutar.
  • Muchas de las limitaciones de CGI son limitaciones de HTML o HTTP. A medida que evolucionan los estándares de Internet en su conjunto, también lo hacen las capacidades CGI.

Resumen

La interfaz de puerta de enlace común es el protocolo mediante el cual los programas interactúan con los servidores web. La versatilidad de CGI brinda a los programadores la capacidad de escribir programas de entrada en casi cualquier idioma, aunque existen muchas compensaciones asociadas con los diferentes idiomas. Sin esta capacidad, la creación de páginas web interactivas sería difícil; en el mejor de los casos requeriría modificaciones en el servidor, y la interactividad no estaría disponible para la mayoría de los usuarios que no sean administradores de sitios.

Capítulo 2: Conceptos básicos

Hace varios años, creé una página para una universidad de Harvard donde la gente podía enviar comentarios sobre ellos. En aquel momento, Internet era joven y la documentación escasa. Yo, como muchos otros, dependí de documentación breve y sistemas de programación creados por otros para aprender a programar CGI. Aunque este método de estudio requirió algunas búsquedas, muchos experimentos y generó muchas preguntas, fue muy efectivo. Este capítulo es el resultado de mis primeros trabajos con CGI (con algunos ajustes, por supuesto).

Aunque lleva algún tiempo comprender y dominar completamente la interfaz de puerta de enlace común, el protocolo en sí es bastante simple. Cualquiera que tenga algunas habilidades básicas de programación y esté familiarizado con la Web puede aprender rápidamente a programar aplicaciones CGI bastante complejas tal como yo y otros aprendimos a hacer hace varios años.

El propósito de este capítulo es presentar los conceptos básicos de CGI de una manera integral, aunque condensada. Cada concepto discutido aquí se presenta en detalle en los capítulos siguientes. Sin embargo, después de completar este capítulo, podrá comenzar inmediatamente a programar aplicaciones CGI. Una vez que alcance este nivel, podrá aprender las complejidades de CGI, ya sea leyendo el resto de este libro o simplemente experimentando por su cuenta.

Puede reducir la programación CGI a dos tareas: recibir información desde el navegador web y enviar información de regreso al navegador. Esto se hace de forma bastante intuitiva una vez que se familiariza con el uso normal de las aplicaciones CGI. A menudo se le pide al usuario que complete algún formulario, por ejemplo, que inserte su nombre. Una vez que el usuario completa el formulario y presiona Enter, esta información se envía al programa CGI. Luego, el programa CGI debe convertir esta información en algo que comprenda, procesarla en consecuencia y luego enviarla de regreso al navegador, ya sea una simple confirmación o el resultado de una búsqueda en una base de datos multipropósito.

En otras palabras, programar CGI requiere comprender cómo recibir información del navegador de Internet y cómo enviar la salida. Lo que sucede entre las etapas de entrada y salida de un programa CGI depende del objetivo del desarrollador. Descubrirá que la principal dificultad en la programación CGI reside en esta etapa intermedia; Una vez que aprenda a trabajar con entrada y salida, será suficiente para convertirse en desarrollador CGI.

En este capítulo, aprenderá los principios detrás de la entrada y salida CGI, así como otras habilidades básicas que necesitará para escribir y usar CGI, incluidas cosas como crear formularios HTML y nombrar sus programas CGI. Este capitulo cubre los siguientes topicos:

  • Programa tradicional "¡Hola Mundo!";
  • Salida CGI: envío de información para mostrarla en un navegador de Internet;
  • Configurar, instalar y ejecutar la aplicación. Aprenderás sobre diferentes plataformas y servidores Web;
  • Entrada CGI: Interpretación de la información enviada por el navegador web. Introducción a algunas bibliotecas de programación útiles para analizar dicha entrada;
  • Un ejemplo sencillo: cubre todas las lecciones de un capítulo determinado;
  • Estrategia de programación.

Debido a la naturaleza de este capítulo, sólo toco ligeramente algunos temas. No te preocupes; Todos estos temas se tratan con mucha más profundidad en otros capítulos.

¡Hola Mundo!

Comienzas con un problema de programación introductorio tradicional. Escribirás un programa que muestre "¡Hola, mundo!" en su navegador web. Antes de escribir este programa, debe comprender qué información espera recibir el navegador web de los programas CGI. También necesita saber cómo ejecutar este programa para poder verlo en acción.

CGI es independiente del idioma, por lo que puedes implementar este programa en cualquier idioma. Aquí se utilizan varios idiomas diferentes para demostrar la independencia de cada idioma. En Perl, el programa "¡Hola mundo!" se muestra en el Listado 2.1.

Listado 2.1. ¡Hola Mundo! en Perl. #!/usr/local/bin/perl # Hola.cgi - Mi primer programa CGI imprime "Tipo de contenido: texto/html\n\n"; imprimir " \n"; imprimir " ¡Hola Mundo!"; imprimir "\n"; imprimir " \n"; imprimir "

¡Hola Mundo!

\n"; imprimir "

\norte";

Guarde este programa como hello.cgi e instálelo en la ubicación adecuada. (Si no está seguro de dónde está, no se preocupe; lo descubrirá en la sección "Instalación y ejecución de un programa CGI" más adelante en este capítulo). Para la mayoría de los servidores, el directorio que necesita es cgi-bin . Ahora, llame al programa desde su navegador web. Para la mayoría, esto significa abrir el siguiente localizador uniforme de recursos (URL):

http://nombre de host/nombre de directorio/hola.cgi

Nombre de host es el nombre de su servidor web y nombre de directorio es el directorio donde coloca hello.cgi (probablemente cgi-bin).

Dividiendo hola.cgi

Hay algunas cosas a tener en cuenta sobre hello.cgi.

Primero, utiliza comandos de impresión simples. Los programas CGI no requieren descriptores de archivos ni descriptores de salida especiales. Para enviar resultados al navegador, simplemente imprima en stdout.

En segundo lugar, tenga en cuenta que el contenido de la primera declaración impresa (Tipo de contenido: texto/html) no aparece en su navegador web. Puede enviar cualquier información que desee al navegador (página HTML, gráficos o sonido), pero primero debe decirle al navegador qué tipo de datos le está enviando. Esta línea le dice al navegador qué tipo de información esperar; en este caso, una página HTML.

En tercer lugar, el programa se llama hello.cgi. No siempre es necesario utilizar la extensión .cgi con el nombre de su programa CGI. A pesar de fuente para muchos idiomas también se usa la extensión .cgi, esta no se usa para indicar el tipo de idioma, pero es una forma para que el servidor identifique el archivo como Archivo ejecutable, no un archivo gráfico, un archivo HTML o Archivo de texto. Los servidores a menudo están configurados para intentar ejecutar solo aquellos archivos que tienen esta extensión, mostrando el contenido de todos los demás. Aunque no es necesario utilizar la extensión .cgi, se considera una buena práctica.

En general, hello.cgi consta de dos partes principales:

  • le dice al navegador qué información esperar (Tipo de contenido: texto/html)
  • le dice al navegador qué mostrar (¡Hola, mundo!)

¡Hola Mundo! Cª

Para mostrar la independencia del lenguaje de los programas CGI, el Listado 2.2 muestra el equivalente del programa hello.cgi escrito en C.

Listado 2.2. ¡Hola Mundo! en C. /* hello.cgi.c - Hola, mundo CGI */ #include int main() ( printf("Tipo de contenido: texto/html\r\n\r\n"); printf(" \n"); printf(" ¡Hola Mundo!\n"); printf("\n"); printf(" \n"); printf("

¡Hola Mundo!

\n"); printf("

\n"); )

Nota

Tenga en cuenta que la versión Perl de hello.cgi utiliza el tipo de contenido print ": text/html\n\n "; Mientras que la versión C usa Printf("Content-Type: text/html\r\n\r\n");

¿Por qué Perl imprime el operador y termina con dos nuevas líneas (\n) mientras que C printf termina con dos retornos de carro y nuevas líneas (\r\n)?

Técnicamente, se espera que los encabezados (todos los resultados antes de la línea en blanco) estén separados por retornos de carro y nuevas líneas. Desafortunadamente, en máquinas DOS y Windows, Perl traduce \r como otra nueva línea en lugar de como un retorno de carro.

Aunque la excepción \rs de Perl es técnicamente incorrecta, funcionará en casi todos los protocolos y es igualmente portátil en todas las plataformas. Por lo tanto, en todos los ejemplos de Perl en este libro, utilizo encabezados de separación de nueva línea en lugar de retornos de carro y nuevas líneas.

Una solución adecuada a este problema se presenta en el Capítulo 4, Conclusión.

Ni al servidor web ni al navegador les importa qué idioma se utiliza para escribir el programa. Aunque cada lenguaje tiene ventajas y desventajas como lenguaje de programación CGI, es mejor utilizar el lenguaje con el que se sienta más cómodo trabajando. (La elección del lenguaje de programación se analiza con más detalle en el Capítulo 1, “Interfaz de puerta de enlace común (CGI)”).

renderizado CGI

Ahora puede examinar más de cerca la cuestión del envío de información al navegador web. En el ejemplo "¡Hola, mundo!", puede ver que los navegadores web esperan dos conjuntos de datos: un encabezado, que contiene información como qué información mostrar (por ejemplo, tipo de contenido: línea) e información real (lo que el navegador web desea mostrar). pantallas). Estos dos datos están separados por una línea en blanco.

El encabezado se llama encabezado HTTP. Da información importante sobre la información que va a recibir el navegador. Hay varios varios tipos Encabezados HTTP, y el más universal es el que usaste antes: Content-Type: encabezado. Puede utilizar diferentes combinaciones de encabezados HTTP, separados por retornos de carro y nuevas líneas (\r\n). La línea en blanco que separa el encabezado de los datos también consta de un retorno de carro y una nueva línea (el motivo por el que ambos son necesarios se analiza brevemente en la nota anterior y se detalla en el Capítulo 4). Aprenderá sobre otros encabezados HTTP en el Capítulo 4; Actualmente estás tratando con el tipo de contenido: encabezado.

Tipo de contenido: el encabezado describe el tipo de datos que devuelve el CGI. El formato apropiado para este encabezado es:

Tipo de contenido: subtipo/tipo

Donde subtipo/tipo es el tipo correcto de Extensiones multipropósito de correo de Internet (MIME). El tipo MIME más común es el tipo HTML: texto/html. La Tabla 2.1 enumera algunos tipos MIME más comunes que se analizarán; En el Capítulo 4 se proporciona una lista y un análisis más completos de los tipos MIME.

Nota

MIME se inventó originalmente para describir el contenido de los cuerpos de los mensajes de correo. Se ha convertido en una forma bastante común de representar información de tipo de contenido. Puede leer más sobre MIME en RFC1521. Los RFC en Internet significan Solicitudes de comentarios, que son resúmenes de decisiones tomadas por grupos en Internet que intentan establecer estándares. Puede ver los resultados del RFC1521 en la siguiente dirección: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tabla 2.1. Algunos tipos MIME comunes. Tipo MIME Descripción Texto/html Lenguaje de marcado de hipertexto (HTML) Texto/sin formato Archivos de texto sin formato Imagen/gif Archivos gráficos Imagen GIF/jpeg Comprimido archivos gráficos Audio JPEG/Audio básico - Archivos Sun *.au Audio/x-wav Archivos Windows *.wav

Después del encabezado y una línea vacía, simplemente imprime los datos en el formulario que necesita. Si envía HTML, imprima etiquetas HTML y datos a la salida estándar después del encabezado. También puede enviar gráficos, sonido y otros archivos binarios simplemente imprimiendo el contenido del archivo en la salida estándar. En el Capítulo 4 se dan varios ejemplos de esto.

Instalación y ejecución de un programa CGI

Esta sección se desvía un poco de la programación CGI y habla sobre cómo configurar su servidor web para usar CGI, instalar y ejecutar programas. Se le presentarán diferentes servidores para diferentes plataformas con más o menos detalle, pero tendrá que profundizar en la documentación de su servidor para encontrar la mejor opción.

Todos los servidores requieren espacio para los archivos del servidor y espacio para documentos HTML. En este libro, el área del servidor se llama ServerRoot y el área de documentos se llama DocumentRoot. En máquinas UNIX, ServerRoot suele estar en /usr/local/etc/httpd/ y DocumentRoot suele estar en /usr/local/etc/httpd/htdocs/. Sin embargo, esto no hará ninguna diferencia en su sistema, así que reemplace todas las referencias a ServerRoot y DocumentRoot con sus propios ServerRoot y DocumentRoot.

Cuando accede a archivos utilizando su navegador web, especifica el archivo en la URL relativa a DocumentRoot. Por ejemplo, si la dirección de su servidor es mimáquina.org, acceda a este archivo con la siguiente URL: http://mimáquina.org/index.html

Configurando el servidor para CGI

La mayoría de los servidores web están preconfigurados para permitir el uso de programas CGI. Normalmente, dos parámetros indican al servidor si el archivo es una aplicación CGI o no:

  • Directorio designado. Algunos servidores le permiten determinar que todos los archivos en un directorio designado (generalmente llamado cgi-bin de forma predeterminada) son CGI.
  • Extensiones de nombre de archivo. Muchos servidores tienen esta preconfiguración que permite definir como CGI todos los archivos que terminan en .cgi.

El método del directorio designado es una especie de reliquia del pasado (los primeros servidores lo utilizaron como único método para determinar qué archivos eran programas CGI), pero tiene varias ventajas.

  • Mantiene centralizados los programas CGI, evitando que otros directorios se saturan.
  • No está limitado a ninguna extensión de nombre de archivo en particular, por lo que puede nombrar sus archivos como desee. Algunos servidores le permiten designar varios directorios diferentes como directorios CGI.
  • También te da más control sobre quién puede grabar CGI. Por ejemplo, si tiene un servidor y admite un sistema con múltiples usuarios y no desea que utilicen sus propios scripts CGI sin auditar primero el programa por razones de seguridad, puede designar solo esos archivos en un directorio centralizado limitado como CGI. . Luego, los usuarios tendrán que proporcionarle programas CGI para instalar y usted primero podrá auditar el código para asegurarse de que el programa no tenga problemas de seguridad importantes.

La notación CGI mediante extensión de nombre de archivo puede resultar útil debido a su flexibilidad. No está limitado a un único directorio para programas CGI. La mayoría de los servidores se pueden configurar para reconocer CGI a través de la extensión del nombre de archivo, aunque no todos están configurados de esta manera de forma predeterminada.

Advertencia

Recuerde la importancia de los problemas de seguridad cuando configure su servidor para CGI. Aquí se cubrirán algunos consejos y el Capítulo 9, Protección de CGI, cubre estos aspectos con más detalle.

Instalación de CGI en servidores UNIX

Independientemente de cómo esté configurado su servidor UNIX, hay varios pasos que debe seguir para asegurarse de que sus aplicaciones CGI se ejecuten como se espera. Su servidor web normalmente se ejecutará como un usuario inexistente (es decir, el usuario de UNIX nadie - Cuenta, que no tiene derechos de acceso al fichero y no puede registrarse). Los scripts CGI (escritos en Perl, Bourne Shell u otro lenguaje de scripting) deben ser ejecutables y legibles en todo el mundo.

Clave

Para que sus archivos sean legibles y ejecutables en todo el mundo, utilice el siguiente comando de permisos UNIX: chmod 755 filename.

Si está utilizando un lenguaje de secuencias de comandos como Perl o Tcl, proporcione la ruta completa de su intérprete en la primera línea de su secuencia de comandos. Por ejemplo, un script Perl que utilice perl en el directorio /usr/local/bin comenzaría con la siguiente línea:

#!/usr/local/bin/perl

Advertencia

Nunca coloque el intérprete (Perl o el binario Tcl Wish) en el directorio /cgi-bin. Esto crea un riesgo de seguridad en su sistema. Esto se analiza con más detalle en el Capítulo 9.

Algunos servidores UNIX genéricos

Los servidores NCSA y Apache tienen archivos de configuración similares porque el servidor Apache se basó originalmente en el código NCSA. De forma predeterminada, están configurados para que cualquier archivo en el directorio cgi-bin (ubicado de manera predeterminada en ServerRoot) sea un programa CGI. Para cambiar la ubicación del directorio cgi-bin, puede editar el archivo de configuración conf/srm.conf. El formato para configurar este directorio es

ScriptAlias ​​nombredirectoriofalso nombredirectorioreal

donde fakedirectoryname es el nombre del pseudodirectorio (/cgi-bin) y realdirectoryname es la ruta completa donde realmente se almacenan los programas CGI. Puede configurar más de un ScriptAlias ​​agregando más líneas de ScriptAlias.

La configuración predeterminada es suficiente para las necesidades de la mayoría de los usuarios. Debe editar la línea en el archivo srm.conf en cualquier caso para determinar el nombre del directorio real correcto. Si, por ejemplo, sus programas CGI están ubicados en /usr/local/etc/httpd/cgi-bin, la línea ScriptAlias ​​​​en su archivo srm.conf debería ser algo como esto:

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

Para acceder o vincular programas CGI ubicados en este directorio, utilice la siguiente URL:

Http://nombredehost/cgi-bin/nombredeprograma

Donde nombre de host es el nombre del host de su servidor web y nombre de programa es el nombre de su CGI.

Por ejemplo, digamos que copia el programa hello.cgi a su directorio cgi-bin (por ejemplo, /usr/local/etc/httpd/cgi-bin) en su servidor web llamado www.company.com. Para acceder a su CGI, utilice la siguiente URL: http://www.company.com/cgi-bin/hello.cgi

Si desea configurar su servidor NCSA o Apache para reconocer cualquier archivo con extensión .cgi como CGI, debe editar dos archivos de configuración. Primero, en el archivo srm.conf, descomente la siguiente línea:

Aplicación AddType/x-httpd-cgi .cgi

Esto asociará el tipo MIME CGI con la extensión .cgi. Ahora, necesitamos cambiar el archivo access.conf para poder ejecutar CGI en cualquier directorio. Para hacer esto, agregue la opción ExecCGI a la línea Opción. Se verá algo así como la siguiente línea:

Índices de opciones FollowSymLinks ExecCGI

Ahora, cualquier archivo con extensión .cgi se considera CGI; acceda a él como lo haría con cualquier archivo en su servidor.

El servidor CERN está configurado de la misma manera que los servidores Apache y NCSA. En lugar de ScriptAlias, el servidor CERN utiliza el comando Exec. Por ejemplo, en el archivo httpd.conf, verá la siguiente línea:

Ejecutivo /cgi-bin/* /usr/local/etc/httpd/cgi-bin/*

Otros servidores UNIX se pueden configurar de la misma manera; Esto se describe con más detalle en la documentación del servidor.

Instalación de CGI en Windows

La mayoría de los servidores disponibles para Windows 3.1, Windows 95 y Windows NT están configurados utilizando el método de "extensión de nombre de archivo" para el reconocimiento CGI. En general, cambiar la configuración de un servidor basado en Windows simplemente requiere ejecutar el programa de configuración del servidor y realizar los cambios apropiados.

A veces, configurar un servidor para ejecutar un script (como Perl) correctamente puede resultar complicado. En DOS o Windows, no podrá especificar el intérprete en la primera línea del script, como es el caso de UNIX. Algunos servidores tienen una configuración predefinida para asociar ciertas extensiones de nombre de archivo con el intérprete. Por ejemplo, muchos servidores web de Windows suponen que los archivos que terminan en .pl son secuencias de comandos Perl.

Si el servidor no realiza este tipo de asociación de archivos, puede definir un archivo por lotes del empaquetador que llame tanto al intérprete como al script. Al igual que con el servidor UNIX, no instale el intérprete ni en el directorio cgi-bin ni en ningún directorio accesible desde la Web.

Instalación de CGI en Macintosh

Las dos opciones de servidor más conocidas para Macintosh son WebStar StarNine y su predecesor MacHTTP. Ambos reconocen CGI por su extensión de nombre de archivo.

MacHTTP comprende dos extensiones diferentes: .cgi y .acgi, que significa CGI asíncrono. Los programas CGI normales instalados en un Macintosh (con una extensión .cgi) mantendrán el servidor web ocupado hasta que el CGI termine de ejecutarse, lo que provocará que el servidor suspenda todas las demás solicitudes. CGI asíncrono, por otro lado, permite que el servidor acepte solicitudes incluso mientras se está ejecutando.

Un desarrollador CGI Macintosh que utilice cualquiera de estos servidores web debería, si es posible, utilizar sólo la extensión .acgi en lugar de la extensión .cgi. Debería funcionar con la mayoría de los programas CGI; Si no funciona, cambie el nombre del programa a .cgi.

Ejecutando CGI

Una vez que haya instalado CGI, hay varias formas de ejecutarlo. Si su programa CGI es un programa de sólo salida, como el programa Hello,World!, entonces puede ejecutarlo simplemente accediendo a su URL.

La mayoría de los programas se ejecutan como una aplicación de servidor en un formulario HTML. Antes de aprender cómo obtener información de estos formularios, primero lea una breve introducción sobre cómo crear dichos formularios.

Un tutorial rápido sobre formularios HTML

Las dos etiquetas más importantes en un formulario HTML son las

Y . Puede crear la mayoría de los formularios HTML utilizando sólo estas dos etiquetas. En este capítulo, explorará estas etiquetas y un pequeño subconjunto de posibles tipos o atributos. . Guía completa y enlace a formularios HTML se encuentran en el Capítulo 3, HTML y Formularios.

Etiqueta

Etiqueta se utiliza para determinar qué parte del archivo HTML debe usarse para la información ingresada por el usuario. Esto se refiere a cómo la mayoría de las páginas HTML llaman a un programa CGI. Los atributos de etiqueta especifican el nombre y la ubicación del programa, ya sea localmente o como una URL completa, el tipo de codificación utilizada y el método de movimiento de datos utilizado por el programa.

La siguiente línea muestra las especificaciones de la etiqueta. :

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

El atributo ENCTYPE no juega un papel especial y normalmente no se incluye con la etiqueta. . En el Capítulo 3 se proporciona información detallada sobre la etiqueta ENCTYPE. En el Capítulo 14, "Extensiones de marca", se muestra una forma de utilizar ENCTYPE.

El atributo ACCIÓN se refiere a la URL del programa CGI. Una vez que el usuario completa el formulario y proporciona información, toda la información se codifica y se transfiere al programa CGI. El propio programa CGI resuelve el problema de decodificar y procesar información; Este aspecto se analiza en "Aceptar entradas del navegador", más adelante en este capítulo.

Finalmente, el atributo MÉTODO describe cómo el programa CGI debe recibir información. Los dos métodos, GET y POST, difieren en cómo pasan información al programa CGI. Ambos se analizan en "Aceptar entradas del navegador".

Para que el navegador permita la entrada del usuario, todas las etiquetas y la información del formulario deben estar rodeadas por la etiqueta . No olvides la etiqueta de cierre.

para indicar el final del formulario. No puedes tener un formulario dentro de un formulario, aunque puedes configurar un formulario que te permita presentar información en diferentes lugares; Este aspecto se analiza ampliamente en el Capítulo 3.

Etiqueta

Puede crear barras de entrada de texto, botones de opción, casillas de verificación y otros medios para aceptar entradas utilizando la etiqueta . Esta sección cubre sólo los campos de entrada de texto. Para implementar este campo, use la etiqueta con los siguientes atributos:

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

NOMBRE es el nombre simbólico de la variable que contiene el valor ingresado por el usuario. Si incluye texto en el atributo VALOR, ese texto se colocará de forma predeterminada en el campo de entrada de texto. El atributo TAMAÑO le permite especificar la longitud horizontal del campo de entrada tal como aparecerá en la ventana del navegador. Finalmente, MAXLENGTH especifica la cantidad máxima de caracteres que el usuario puede ingresar en el campo. Tenga en cuenta que los atributos VALOR, TAMAÑO y MAXLENGTH son opcionales.

Envío de formulario

Si solo tiene un campo de texto dentro de un formulario, el usuario puede enviar el formulario simplemente escribiendo información en el teclado y presionando Enter. De lo contrario, debe existir alguna otra forma para que el usuario presente la información. El usuario envía información mediante un botón de envío con la siguiente etiqueta:

< Input type=submit >

Esta etiqueta crea un botón Enviar dentro de su formulario. Cuando el usuario termina de completar el formulario, puede enviar su contenido a la URL especificada por el atributo ACCIÓN del formulario haciendo clic en el botón Enviar.

Aceptar entradas del navegador

Arriba se muestran ejemplos de grabación de un programa CGI que envía información desde el servidor al navegador. En realidad, un programa CGI que sólo genera datos no tiene muchas aplicaciones (algunos ejemplos se dan en el Capítulo 4). La capacidad más importante de CGI es recibir información del navegador, la característica que le da a la Web su carácter interactivo.

El programa CGI recibe dos tipos de información del navegador.

  • Primero, obtiene varios datos sobre el navegador (su tipo, lo que puede ver, el host, etc.), el servidor (su nombre y versión, su puerto de ejecución, etc.) y el programa CGI. sí mismo (nombre del programa y dónde se encuentra). El servidor proporciona toda esta información al programa CGI a través de variables de entorno.
  • En segundo lugar, el programa CGI puede recibir información del usuario. Esta información, después de ser codificada por el navegador, se envía a través de una variable de entorno (método GET) o mediante una entrada estándar (stdin - método POST).

Variables de entorno

Es útil saber qué variables de entorno están disponibles para un programa CGI, tanto durante el entrenamiento como para la depuración. La Tabla 2.2 enumera algunas de las variables de entorno CGI disponibles. También puede escribir un programa CGI que envíe variables de entorno y sus valores a un navegador web.

Tabla 2.2. Algunas variables de entorno CGI importantes Variable de entorno Propósito REMOTE_ADDR Dirección IP de la máquina cliente. REMOTE_HOST El host de la máquina cliente. HTTP _ACCEPT Enumera los tipos de datos MIME que el navegador puede interpretar. HTTP _USER_AGENT Información del navegador (tipo de navegador, número de versión, sistema operativo, etc.). REQUEST_METHOD OBTENER o PUBLICAR. CONTENT_LENGTH El tamaño de la entrada si se envía mediante POST. Si no hay entrada o si se utiliza el método GET, este parámetro no está definido. QUERY_STRING Contiene la información de entrada cuando se pasa mediante el método GET. PATH_INFO Permite al usuario especificar la ruta desde línea de comando CGI (por ejemplo, http://nombre de host/cgi-bin/nombre de programa/ruta). PATH_TRANSLATED Traduce la ruta relativa en PATH_INFO a una ruta real en el sistema.

Para escribir una aplicación CGI que muestre variables de entorno, necesita saber cómo hacer dos cosas:

  • Defina todas las variables de entorno y sus valores correspondientes.
  • Imprime los resultados en el navegador.

Ya sabes cómo realizar la última operación. En Perl, las variables de entorno se almacenan en la matriz asociativa %ENV, que se introduce con el nombre Variable ambiental. El Listado 2.3 contiene env.cgi, un programa Perl que logra nuestro objetivo.

Listado 2.3. Un programa Perl, env.cgi, que imprime todas las variables de entorno CGI.

#!/usr/local/bin/perl print "Tipo de contenido: texto/html\n\n"; imprimir " \n"; imprimir " Entorno CGI\n"; imprimir "\n"; imprimir " \n"; imprimir "

Entorno CGI

\n"; foreach $env_var (claves %ENV) ( imprimir " $env_var= $ENV($env_var)
\n"; ) imprimir "

\norte";

Se podría escribir un programa similar en C; el código completo está en el Listado 2.4.

Listado 2.4. env.cgi.c en C. /* env.cgi.c */ #include carácter externo **entorno; int main() ( char **p = entorno; printf("Tipo de contenido: texto/html\r\n\r\n"); printf(" \n"); printf(" Entorno CGI\n"); printf("\n"); printf(" \n"); printf("

Entorno CGI

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

\n"); )

OBTENER o PUBLICAR?

¿Cuál es la diferencia entre los métodos GET y POST? GET pasa la cadena de entrada codificada a través de la variable de entorno QUERY_STRING, mientras que POST la pasa a través de stdin. POST es el método preferido, especialmente para formularios con muchos datos, porque no hay restricciones en la cantidad de información enviada, mientras que con el método GET la cantidad de espacio multimedia es limitada. Sin embargo, GET tiene una cierta propiedad útil; esto se trata en detalle en el Capítulo 5, Entrada.

Para determinar qué método se utiliza, el programa CGI verifica la variable de entorno REQUEST_METHOD, que se establecerá en GET o POST. Si se establece en POST, la longitud de la información codificada se almacena en la variable de entorno CONTENT_LENGTH.

Entrada codificada

Cuando un usuario envía un formulario, el navegador primero codifica la información antes de enviarla al servidor y luego a la aplicación CGI. Cuando usas la etiqueta , cada campo recibe un nombre simbólico. El valor ingresado por el usuario se representa como el valor de la variable.

Para determinar esto, el navegador utiliza una especificación de codificación de URL, que se puede describir de la siguiente manera:

  • Separa diferentes campos con un signo comercial (&).
  • Separa el nombre y los valores con signos iguales (=), con el nombre a la izquierda y el valor a la derecha.
  • Reemplaza espacios con signos más (+).
  • Reemplaza todos los caracteres "anormales" con un signo de porcentaje (%) seguido de un código hexadecimal de dos dígitos para el carácter.

Su cadena codificada final será similar a la siguiente:

Nombre1=valor1&nombre2=valor2&nombre3=valor3...

Nota: Las especificaciones para la codificación de URL se encuentran en RFC1738.

Por ejemplo, digamos que tiene un formulario que solicita nombre y edad. El código HTML que se utilizó para mostrar este formulario se muestra en el Listado 2.5.

Listado 2.5. Código HTML para mostrar el formulario de nombre y edad.

Nombre y edad

Introduzca su nombre:

Introduzca su edad:



Digamos que el usuario ingresa Joe Schmoe en el campo de nombre y 20 en el campo de edad. La entrada se codificará en la cadena de entrada.

Nombre=Joe+Schmoe&edad=20

Analizando la entrada

Para que esta información sea útil, necesita usar la información en algo que pueda ser usado por sus programas CGI. Las estrategias para analizar la entrada se tratan en el Capítulo 5. En la práctica, nunca tendrá que pensar en cómo analizar la entrada, porque varios expertos ya han escrito bibliotecas que realizan el análisis, accesibles para todos. Dos de estas bibliotecas se presentan en este capítulo en las siguientes secciones: cgi -lib.pl para Perl (escrito por Steve Brenner) y cgihtml para C (escrito por mí).

El objetivo general de la mayoría de las bibliotecas escritas en varios idiomas es analizar una cadena codificada y colocar pares de nombre y valor en una estructura de datos. Existe una ventaja obvia al utilizar un lenguaje que tiene estructuras de datos integradas como Perl; sin embargo, la mayoría de las bibliotecas para lenguajes de bajo nivel como C y C++ incluyen estructura de datos y ejecución de subrutinas.

No es necesario alcanzar una comprensión completa de las bibliotecas; es más importante aprender a utilizarlos como herramientas para facilitar el trabajo del programador CGI.

Cgi-lib.pl

Cgi-lib.pl utiliza matrices asociativas de Perl. La función &ReadParse analiza la cadena de entrada e ingresa cada par de nombre/valor por nombre. Por ejemplo, las cadenas Perl correspondientes necesarias para decodificar la cadena de entrada "nombre/edad" que se acaba de presentar serían

&ReadParse(*entrada);

Ahora, para ver el valor ingresado para "nombre", puede acceder a la matriz asociativa $input("nombre"). De manera similar, para acceder al valor de "edad", es necesario mirar la variable $input ("edad").

cgihtml

C no tiene estructuras de datos integradas, por lo que cgihtml implementa su propia lista de enlaces para usar con sus rutinas de análisis CGI. Esto define la estructura del tipo de entrada de la siguiente manera:

Estructura Typedef ( Char *nombre; Char *valor; ) Tipo de entrada;

Para analizar la cadena de entrada "nombre/edad" en C usando cgihtml, se utiliza lo siguiente:

/* declarar lista enlazada, llamado entrada */ Llist entrada; /* analiza la entrada y la ubicación en la lista vinculada */ read_cgi_input(&input);

Para acceder a la información de edad, puede analizar la lista manualmente o utilizar la función cgi _val() disponible.

#incluir #incluir Char *edad = malloc(sizeof(char)*strlen(cgi_val(input, "edad")) + 1); Strcpy(edad, cgi_val(entrada, "edad"));

El valor de "edad" ahora está almacenado en la cadena de edad.

Nota: En lugar de utilizar una matriz simple (como char age;), estoy asignando dinámicamente espacio de memoria para la cadena age. Aunque esto dificulta la programación, es importante desde el punto de vista de la seguridad. Esto se analiza con más detalle en el Capítulo 9.

Un programa CGI sencillo

Vas a escribir un programa CGI llamado nameage.cgi que maneja el formulario nombre/edad. El procesamiento de datos (lo que suelo llamar "cosas") es mínimo. Nameage.cgi simplemente decodifica la entrada y muestra el nombre y la edad del usuario. Si bien esta herramienta no tiene mucha utilidad, demuestra el aspecto más crítico de la programación CGI: entrada y salida.

Utilice el mismo formulario que el anterior, llamando a los campos "nombre y edad". No se preocupe todavía por la solidez y la eficiencia; resolver el problema existente de la forma más sencilla. Las soluciones de Perl y C se muestran en los Listados 2.6 y 2.7, respectivamente.

Listado 2.6. Nombre.cgi en Perl

#!/usr/local/bin/perl # nameage.cgi requiere "cgi-lib.pl" &ReadParse(*input); print "Tipo de contenido: texto/html\r\n\r\n"; imprimir " \n"; imprimir " Nombre y edad\n"; imprimir "\n"; imprimir " \n"; print "Hola, " . $entrada("nombre") . ". Tienes\n"; print $input("edad") . " años.

\n"; imprimir "

\norte";

Listado 2.7. nombreage.cgi en C

/* nombreage.cgi.c */ #include #include "cgi-lib.h" int main() ( lista de entrada; read_cgi_input(&input); printf("Tipo de contenido: texto/html\r\n\r\n"); printf(" \n"); printf(" Nombre y edad\n"); printf("\n"); printf(" \n"); printf("Hola, %s. Eres\n",cgi_val(input,"nombre")); printf("%s años.

\n",cgi_val(entrada,"edad")); printf("

\n"); )

Tenga en cuenta que estos dos programas son casi equivalentes. Ambos contienen rutinas de análisis que ocupan solo una línea y procesan toda la entrada (gracias a las rutinas de biblioteca correspondientes). El resultado es esencialmente una versión modificada de su programa principal Hello, World!.

Intente ejecutar el programa completando el formulario y haciendo clic en el botón Enviar.

Estrategia general de programación

Ahora conoce todos los principios básicos necesarios para la programación CGI. Una vez que comprenda cómo CGI recibe información y cómo la envía de regreso al navegador, la calidad real de su producto final depende de sus habilidades generales de programación. Es decir, cuando programes CGI (o cualquier cosa, de hecho), ten en cuenta las siguientes cualidades:

  • Sencillez
  • Eficiencia
  • Versatilidad

Las dos primeras cualidades son bastante comunes: intenta que tu código sea lo más legible y eficiente posible. La versatilidad se aplica más a los programas CGI que a otras aplicaciones. Cuando empiece a desarrollar sus propios programas CGI, aprenderá que existen varias aplicaciones básicas que todo el mundo quiere crear. Por ejemplo, una de las tareas más comunes y obvias de un programa CGI es procesar un formulario y enviar los resultados por correo electrónico a un destinatario específico. Podría procesar varios formularios separados, cada uno con un destinatario diferente. En lugar de escribir un programa CGI para cada formulario individual, puede ahorrar tiempo escribiendo más programa general CGI que funciona para todas las formas.

Al cubrir todos los aspectos básicos de CGI, le proporcioné suficiente información para comenzar con la programación CGI. Sin embargo, para convertirse en un desarrollador CGI eficaz, es necesario tener un conocimiento más profundo de cómo se comunica CGI con el servidor y el navegador. El resto de este libro cubre en detalle los temas que se mencionaron brevemente en este capítulo, así como la estrategia de desarrollo de aplicaciones y las ventajas y limitaciones del protocolo.

Resumen

Este capítulo presentó brevemente los conceptos básicos de la programación CGI. Usted crea resultados formateando sus datos correctamente e imprimiendo en stdout. Recibir entrada CGI es un poco más complejo porque debe analizarse antes de poder usarse. Afortunadamente, ya existen varias bibliotecas que realizan análisis.

A en este momento Debería poder dominar la programación de aplicaciones CGI con bastante facilidad. El resto de este libro profundiza en especificaciones, consejos y estrategias de programación para aplicaciones más avanzadas y complejas.

Los propietarios de tiendas en línea conocen de primera mano el concepto de "comercio electrónico", ya conocen la respuesta a la pregunta "comercio electrónico: ¿qué es?". Pero si se llega al fondo, surgen muchos matices y este término adquiere un significado más amplio.

Comercio electrónico: ¿qué es?

El concepto general es el siguiente: el comercio electrónico se entiende como un determinado enfoque para hacer negocios, que implica la inclusión de una serie de operaciones que utilizan la transferencia de datos digitales en la provisión de bienes o la prestación de servicios/trabajo, incluido el uso de Internet.

Así, es cualquier transacción comercial que se realice utilizando un medio de comunicación electrónico.

El esquema de trabajo se organiza de la siguiente manera:

  • cualquiera puede ser blogger o cualquier otro propietario de su propia página de Internet) se registra en este sistema;
  • obtiene su propio enlace;
  • lugares código especial en su página web: aparece un anuncio del socio oficial seleccionado de la Red de Socios de Comercio Electrónico;
  • monitorea la conversión del sitio web;
  • gana un cierto porcentaje por cada compra realizada por un visitante de su sitio web que sigue un enlace de afiliado.

Comercio electrónico de WP

Hoy en día un gran número de personas se apasionan por el comercio electrónico, principalmente por el deseo de crear su propio sitio web, una tienda online única para vender sus propios productos. Para satisfacer esta creciente demanda, los desarrolladores se han centrado en la creación de plantillas de comercio electrónico. Veamos qué es esto a continuación.

Un ejemplo de plantilla es el comercio electrónico de WordPress. Es un complemento de carrito de compras para WordPress (uno de los sistemas de gestión de recursos web más famosos), destinado principalmente a crear y organizar blogs). Se proporciona de forma totalmente gratuita y permite a los visitantes del sitio realizar compras en el sitio web.

En otras palabras, este complemento te permite crear una tienda en línea (basada en WordPress). Este complemento de comercio electrónico tiene todas las herramientas, configuraciones y opciones necesarias para satisfacer las necesidades modernas.




Arriba