El diseño y desarrollo de la web de información de segunda mano del campus

El diseño y desarrollo de la web de información de segunda mano del campus

 

Resumen

El sitio web de información de segunda mano proporciona una plataforma en línea para transacciones de bienes de segunda mano. Hoy en día, con el desarrollo y la mejora continuos del comercio electrónico, el campus universitario también necesita un sitio web especial que pueda proporcionar a los estudiantes transacciones de bienes de segunda mano para publicar información diversa sobre productos básicos.

Este diseño tiene la función de comercio electrónico general y refleja el estilo del campus. Las funciones que proporciona el sistema incluyen registro, consulta de información, publicación de información, recuperación de contraseñas, etc. La característica de este sistema radica en la aplicación de la tecnología PHP. Es un lenguaje de secuencias de comandos dinámico simple con código fuente abierto y velocidad de ejecución rápida. Esta tecnología también admite una amplia gama de conexiones de bases de datos, tiene una gran cantidad de bibliotecas extendidas, tiene un alto rendimiento de seguridad y es fácil de aprender y usar.

Este documento primero presenta la viabilidad y las herramientas de aplicación del sistema, y ​​expone los requisitos del sistema y las ventajas de PHP; luego analiza el sistema y diseña la estructura de la tabla de datos basada en la base de datos MY SQL utilizada en el sistema; y luego Se diseñan detalladamente los módulos funcionales del sistema, finalmente se realiza un resumen de las deficiencias del sistema en cuanto a optimización de código y encriptación.

Palabras clave: información de segunda mano; PHP; MySQL; APACHE; MD5; SESSION

1 Introducción

1.1 Antecedentes del tema

Con el desarrollo explosivo de Internet, desde la adhesión de China a la OMC, el comercio electrónico también se ha desarrollado rápidamente en el país, y ahora varios sitios web de comercio electrónico en Internet están creciendo rápidamente. También me afectó profundamente cuando todavía estaba en el campus, y desarrollé un sitio web adecuado para los estudiantes de la escuela, con la esperanza de brindar servicios convenientes para todos.

Como estudiante universitario, tengo un profundo entendimiento de que desde la ropa del cuerpo hasta los libros, artículos de papelería y otras necesidades diarias que todos usan, se eliminarán después de un período de uso. Algunos estudiantes simplemente los tiran, lo cual es muy derrocha y contamina el medio ambiente. Algunos estudiantes también pensaron en venderlo, pero era difícil encontrar un comprador, así que lo vendieron a un producto de pago. Esto da como resultado cosas que no se pueden utilizar en todo su potencial.

Para solucionar este despilfarro de recursos se ha desarrollado una web de información de segunda mano del campus, apoyándose en Internet con bajos costes de transacción. Proporcionarle una plataforma de divulgación de información de bajo costo, rápida y eficiente. Durante el desarrollo del nuevo sistema, siga estrictamente los pasos de desarrollo del sistema y luche por su cientificidad y racionalidad en todo el proceso, desde la investigación del sistema, el análisis, el diseño hasta la implementación del sistema.

1.2 Análisis de factibilidad

La tarea del análisis de factibilidad es analizar si existe una solución factible al problema a resolver técnica, económica, social y legalmente.

1.2.1 Viabilidad técnica

El sistema adopta el diseño del modelo BS y se ejecuta en la red de campus de colegios y universidades. Los alumnos pueden acceder a webs de información de segunda mano a través de ordenadores conectados a la red del campus. Este sistema es un sistema de publicación de información en modo BS relativamente común, que es técnicamente factible.

1.2.2 Viabilidad económica

Ahora, el precio de la computadora ha sido muy bajo, pero el rendimiento ha progresado mucho. El desarrollo de este sistema ha ahorrado muchos recursos para todos, lo que se manifiesta principalmente en los siguientes aspectos:

  • El funcionamiento de este sistema puede reemplazar las pegatinas de venta y compra de residuos, evitando algunos problemas innecesarios;
  • El funcionamiento de este sistema puede ahorrar muchos recursos;
  • El funcionamiento de este sistema puede mejorar mucho la reutilización de residuos;
  • El presente sistema puede hacer que los documentos confidenciales sean más seguros, entre otras cosas.

Por lo tanto, el sistema es económicamente factible.

1.2.3 Factibilidad de Operación

El sistema es un pequeño sistema de gestión de información, que consume muy pocos recursos, y la computadora general puede cumplir con los requisitos ya sea hardware o software, por lo tanto, el sistema es factible en operación.

1.2.4 Factibilidad Jurídica

El sistema está diseñado puramente para uso privado, y no hay contrato, responsabilidad y otros aspectos que entren en conflicto con la ley durante el proceso de desarrollo. Por lo tanto, este sistema es legalmente factible.

2 Introducción a los Fundamentos Teóricos

2.1 Tecnología PHP

2.1.1 Introducción  a PHP

PHP es un lenguaje de secuencias de comandos dinámico simple, orientado a objetos, interpretado, seguro, de muy alto rendimiento, independiente de la arquitectura y portátil. PHP tiene una palabra clave Clase similar a Java. Debido a que no se requiere una máquina virtual, la velocidad es 5 veces más rápida que Java. PHP se está convirtiendo rápidamente en un lenguaje de secuencias de comandos estándar, de propósito general y orientado a objetos. PHP se puede usar no solo para desarrollar aplicaciones web, sino también para desarrollar aplicaciones ordinarias.

PHP es la abreviatura de Hypertex tPre-Processor (Preprocesador de hipertexto), que es un lenguaje de secuencias de comandos HTML del lado del servidor. PHP es sintácticamente similar a C y puede ejecutarse en servidores web Apache, Netscape/iPlanet y Microsoft IIS. PHP es una herramienta que te permite crear páginas web dinámicas. Las páginas web que usan PHP no son diferentes de las páginas HTML normales, y puede crearlas y editarlas de la misma manera. PHP le permite escribir scripts simples directamente en archivos HTML, que es muy similar a JavaScript. La diferencia es que PHP no depende del navegador y es un lenguaje del lado del servidor, mientras que JavaScript es un lenguaje del lado del cliente incrustado en HTML. Conceptualmente, PHP es similar al producto LiveWirePro de Netscape, ASP de Microsoft y JSP de Sun Microsystem.

1. La fuerza de PHP radica en:

PHP es una tecnología de punta. Otras tecnologías, como PERL, Python, VB Script y ASP, son relativamente antiguas e inferiores. Incluso Java/JSP está bajo PHP. Sus características son las siguientes:

  • Compatibilidad: el programa PHP5.0 es compatible con la versión anterior;
  • Fácil de aprender y usar: la sintaxis de PHP es similar a C y Per, por lo que aquellos que tienen experiencia en programación pueden comenzar rápidamente;
  • Código abierto: el código fuente de PHP y los archivos compilados se pueden descargar de forma gratuita;
  • Expandible: los usuarios pueden agregar módulos para expandir las funciones del motor PHP;
  • Multiplataforma: los programas PHP se pueden ejecutar en varias de las principales plataformas operativas y servidores web.
  • Admite múltiples bases de datos: PHP admite más de diez bases de datos y es bastante fácil escribir programas para acceder a los datos de la base de datos.

PHP es el mejor porque está orientado a objetos y absorbe la esencia de C/C++/Java/PERL. PHP puede reemplazar a PERL, Python, Java, C, C++, AWK, Unix Shell Script, Visual Basic y otros lenguajes. PHP se ejecuta directamente y está escrito en C. PHP puede ejecutarse en varios servidores web como Apache y Microsoft IIS. PHP es tan fácil de usar que puede usarlo para desarrollar Web muy compleja muy rápidamente en muy poco tiempo.

La mayor ventaja de PHP es que PHP está completamente escrito en lenguaje C, por lo que puede ejecutarse en varias plataformas, como BeOS, UNIX, MS Windows, Apple Macintosh, IBMOS/2 y otros sistemas operativos. El código PHP desarrollado bajo Windows también se puede usar en UNIX/Linux sin cambios.

2. Proceso de ejecución de la página web PHP

PHP es diferente de las páginas web tradicionales, cuando se carga una página web HTML general, transferirá directamente todas las páginas web a la computadora del usuario, pero ejecutará el programa en la computadora del usuario para mostrar el contenido, PHP es todo lo contrario. El objetivo principal es Es el desarrollo de páginas web en el lado del servidor del sitio web. Los programadores pueden permitir que el sitio web interactúe con los visitantes a través del control del programa y luego diseñar páginas web atractivas y dinámicas. Por ejemplo: inicio de sesión de miembro, página web de autenticación de datos, etc. Como se muestra abajo:

2.1.2 Instalación de PHP

1. Descargue el programa de instalación de PHP http://www.php.net/downloads.php. La última versión es PHP5.1. Hay dos formas de instalar PHP en Windows, una es la instalación del código fuente y la otra es EXE. modo de instalación, haga doble clic para instalar. Este artículo habla principalmente sobre el proceso de instalación del código fuente.

Descarga "PHP-5.0.3-Win32.rar". Luego descomprima el archivo RAR descargado en c:\php

2. Copie c:\php\php5ts.dll en c:\windows\system32. (A veces, por comodidad, haga clic en Buscar *.dll en la carpeta PHP para copiar todas las carpetas buscadas en system32) Copie c:\php\php.ini-recommended (o php.ini-dist) para c:\windows\php. ini y luego abra c:\windows\php.ini para modificar los siguientes lugares:

Si está en un servidor de producción, no necesita modificar las siguientes dos líneas

error_reporting=E_ALL & ~E_NOTICE

display_errors = On (aquí es para modificar el aviso de error de PHP, OFF significa que no hay aviso, alguna información de enlace de base de datos que no sea de error también se mostrará como información de error de PHP, ¡se recomienda que se use para cerrar el servidor web!)

Indica la carpeta donde se encuentra la biblioteca de extensiones de PHP.

extension_dir="c:\php\ext

Los dos siguientes son tiempos de espera: generalmente 60-120.

max_execution_time=90

max_input_time=90

post_max_size=8M (6-10M es lo mejor)

upload_max_filesize=8M (tamaño máximo de carga de archivos adjuntos)

default_socket_timeout=90 (hora del puerto 60-120)

session.gc_maxlifetime=3600 (tiempo de supervivencia predeterminado de la sesión, segundos)

session.save_path="c:\php\sessiondata" (directorio de almacenamiento de sesión)

extension=php_mysql.dll (compatible con la base de datos MySQL)

extension=php_gd2.dll (admite la generación de imágenes en color verdadero)

3. Verificar la instalación

Escriba algunas líneas de código en el Bloc de notas:

<?

phpinfo();

?>

Guárdelo como un archivo phpinfo.php en el directorio raíz del sitio web. Luego inicie el navegador, visite http://localhost/phpinfo.php , si ve la siguiente pantalla, ¡prueba que la instalación de PHP fue exitosa!

Figura 2 Página de información de PHP

2.2 Introducción a MySQL

MySQL es una base de datos semicomercial muy apreciada por la gente de la comunidad Linux. MySQL se ejecuta en la mayoría de las plataformas Linux (i386, Sparc, etc.) y en algunas plataformas que no son Linux o incluso que no son Unix.

2.2.1 Introducción a MySQL

1. Instalación

La mayoría de los principales formatos de paquetes (RPM, DBE, TGZ, RAR) están disponibles en el sitio de MySQL. La instalación en formato RAR no es mucha molestia, y no requiere configuración inicial, descomprima y ejecute directamente el archivo de instalación para instalar. El demonio MySQL (mysqld) consume muy poca memoria y se carga en el procesador solo cuando se realizan consultas reales, lo que significa que para bases de datos pequeñas, MySQL se puede usar con bastante facilidad sin comprometer otras funciones del sistema.

2. Tipo de datos

Es bueno que los campos admitan una gran cantidad de tipos de datos. Los números enteros comunes, los números de coma flotante, las cadenas y los números se expresan en varias longitudes y admiten tipos BLOB (objetos binarios grandes) de longitud variable. Los campos enteros están representados por la opción de incremento automático y los campos de fecha y hora también están bien representados.

3. Compatibilidad SQL

También carece de algunas características comunes de SQL, sin subselecciones (consultas dentro de consultas). Ver (Ver) también se ha ido. Por supuesto, la mayoría de las subconsultas se pueden reescribir con cláusulas de unión simples, pero a veces es más fácil pensar las cosas con dos consultas anidadas que con una gran unión. Una vez más, las vistas simplemente ocultan la cláusula where del programador, pero esta es otra comodidad que esperan los programadores.

4. Procedimientos almacenados y disparadores

MySQL no tiene un lenguaje de procedimiento almacenado, que es la mayor limitación para los programadores acostumbrados a las bases de datos empresariales. Los comandos SQL de múltiples declaraciones deben coordinarse a través del código del lado del cliente, que en este caso está habilitado por un lenguaje de consulta bastante robusto y la capacidad de bloquear y desbloquear tablas en el lado del cliente para permitir la ejecución de múltiples declaraciones.

5. Integridad referencial

Una de las principales deficiencias de MySQL es la falta de un mecanismo de RI estándar; sin embargo, los creadores de MySQL no son indiferentes a los deseos de sus usuarios y han proporcionado algunas soluciones. Uno de ellos es el soporte para índices únicos. La falta de restricciones de regla (un límite de rango fijo en un campo determinado) se compensa con una gran cantidad de tipos de datos. No proporcione simplemente restricciones de verificación (restricciones en el valor de un campo en relación con otro campo en la misma fila), claves externas y la funcionalidad de "eliminación en cascada" a menudo asociada con RI. Curiosamente, el analizador de SQL tolera la sintaxis de estas declaraciones cuando estas funciones no son compatibles. El propósito de hacer esto es portar fácilmente la base de datos a MySQL. Es un buen toque y deja la puerta abierta para soporte futuro para esta función; sin embargo, aquellos que no hayan leído la documentación detenidamente pueden confundirse con el hecho de que estas funciones realmente existen.

6. Seguridad

Mi mayor queja con MySQL es su sistema de seguridad, su único inconveniente es que es más complejo que estándar, y solo cambia cuando se llama a mysqladmin para volver a leer los privilegios de los usuarios. Las declaraciones habituales de SQL GRANT/REVOKE no se admitían hasta versiones recientes, pero al menos ahora lo son. Los escritores de MySQL han documentado extensamente su sistema de seguridad específico, pero requiere un proceso de aprendizaje que puede o no ser posible de otra manera.

7. Copia de seguridad y restauración, importación/exportación de datos

La falta de consistencia referencial forzada simplifica significativamente el respaldo y la recuperación, y la importación/exportación de datos por sí sola puede replicar perfectamente esta funcionalidad. El comando LOAD DATA INFILE brinda una gran flexibilidad en la importación de datos. El comando Select INTO realiza la función equivalente a la exportación de datos. Además, dado que MySQL no usa particiones sin procesar, todos los datos de la base de datos se pueden guardar con una copia de seguridad del sistema de archivos. La actividad de la base de datos se puede registrar. A diferencia de los registros de bases de datos habituales (que almacenan cambios en los registros o imágenes de registros antes/después), MySQL registra declaraciones SQL reales. Esto permite que la base de datos se restaure al punto anterior al error, pero no permite las operaciones de confirmación y reversión.

8. Conectividad

La biblioteca cliente MySQL es una biblioteca en lenguaje C con una estructura cliente/servidor, lo que significa que un cliente puede consultar una base de datos que reside en otra máquina. Sin embargo, la verdadera fuerza de MySQL radica en los "envoltorios" de lenguaje en la biblioteca, de los cuales Perl, Pathon y PHP son solo algunos. El servidor web de Apache también tiene muchos módulos, como archivos de acceso a directorios, etc., que permiten utilizar MySQL con diversa información de configuración de Apache (como archivos de acceso a directorios), y la API es simple, consistente y completa.

2.2.2 Motor de base de datos

MyISAM enfatiza las operaciones de lectura rápida, que es la razón principal por la que MySQL es tan favorecido por el desarrollo web: una gran cantidad de operaciones de datos en el desarrollo web son operaciones de lectura. Por lo tanto, la mayoría de los proveedores de alojamiento web y proveedores de plataformas de Internet (Internet Presence Provider, IPP) solo permiten el uso del formato MyISAM.

El formato de almacenamiento MyISAM ha sido el tipo predeterminado en MySQL desde la versión 3.23 y tiene las siguientes características:

  • Si el propio sistema operativo permite archivos más grandes, entonces el archivo es más grande que el método de almacenamiento ISAM.
  • Los datos se almacenan en un formato independiente de la máquina little-endian-first. Esto significa que las tablas se pueden copiar de una máquina a otra incluso si tienen arquitecturas diferentes.
  • Los valores de índice numérico ocupan menos espacio de almacenamiento porque primero se almacenan en byte grande. Los valores de índice cambian rápidamente en el byte de orden inferior, por lo que el byte de orden superior es más fácil de comparar.
  • AUTO_INCREMENT maneja las tablas mejor que ISAM.
  • Reducción de varios límites de índice. Por ejemplo, puede indexar columnas que contengan valores NULL y también puede indexar columnas de tipo BLOB y TEXT.

Para mejorar la verificación de la integridad de la tabla, cada tabla tiene un indicador que se establece después de que myisamchk haya verificado la tabla. La verificación de las tablas que no se han modificado desde la verificación anterior se puede omitir con myisamchk-fast, lo que hace que esta tarea administrativa sea más rápida. También hay una bandera en la tabla que indica si la mesa se cerró normalmente. Si el servidor se apaga incorrectamente o si la máquina falla, este indicador se puede usar para detectar qué tablas deben verificarse cuando se inicia el servidor.

2.3 Introducción a Apache

Apache es el servidor web número uno utilizado en el mundo y puede ejecutarse en casi todas las plataformas informáticas más utilizadas.

Apache se deriva del servidor NCSA httpd. Después de varias revisiones, se convirtió en uno de los software de servidor web más populares del mundo. Apache se toma de la pronunciación de "un servidor parcheado", lo que significa un servidor lleno de parches. Debido a que es software libre, la gente continúa desarrollando nuevas funciones, nuevas características y modificando los defectos originales. Apache se caracteriza por su simplicidad, alta velocidad y rendimiento estable, y se puede utilizar como servidor proxy.

Originalmente, solo se usaba para redes de Internet pequeñas o experimentales, y luego se expandió gradualmente a varios sistemas Unix, especialmente el soporte para Linux es bastante perfecto. Apache tiene una variedad de productos que pueden admitir la tecnología SSL y admitir múltiples hosts virtuales. Apache es una estructura basada en procesos. Los procesos consumen más sobrecarga del sistema que los subprocesos y no son adecuados para entornos de múltiples procesadores. Por lo tanto, cuando un sitio web de Apache se expande, generalmente es para aumentar el servidor o expandir los nodos del clúster en lugar de agregar procesador. Hasta el momento, Apache sigue siendo el servidor web más utilizado en el mundo, con una cuota de mercado de alrededor del 60%. Muchos sitios web famosos en el mundo como Amazon.com, Yahoo!, W3 Consortium, Financial Times, etc., son todos productos de Apache. Su éxito radica en su código fuente abierto, un equipo de desarrollo abierto y soporte para aplicaciones multiplataforma. (puede ejecutarse en casi todas las plataformas de sistema Unix, Windows, Linux) y su portabilidad.

El servidor Apache tiene las siguientes características:

  • Admite el último protocolo de comunicación HTTP/1.1;
  • Tiene un proceso de configuración basado en archivos simple pero poderoso;
  • Admite interfaz de puerta de enlace común;
  • Admite hosts virtuales basados ​​en IP y nombres de dominio;
  • Admite múltiples formas de autenticación HTTP;
  • Módulo de procesamiento Perl integrado;
  • Módulo de servidor proxy integrado;
  • Admite la supervisión en tiempo real del estado del servidor y los registros personalizados del servidor;
  • Soporte para el lado del servidor incluye (SSI);
  • Admite capa de socket segura (SSL);
  • Proporcionar seguimiento de las sesiones de los usuarios;
  • Admite CGI rápido;
  • Los servlets de Java son compatibles con módulos de terceros.

3 Análisis de sistemas y diseño de bases de datos

3.1 Análisis de los Requerimientos Funcionales del Sistema

Según el análisis funcional del sistema general de comercio electrónico, el sistema se divide en dos módulos: administrador y usuario. El módulo de administrador del sistema incluye: gestión de configuración del sistema, gestión de información de miembros, gestión de noticias del sitio web, gestión de información de elementos, gestión de administrador, gestión de registro de inicio de sesión. El módulo de usuario incluye: inicio de sesión seguro, recuperación de contraseña, consulta de información, liberación de información, registro de miembros, categoría de artículos, gestión de información de artículos y modificación de información de miembros. Los no miembros que acaban de ingresar al sitio web pueden navegar y buscar información en este sitio web, no solo información de segunda mano sino también información popular. Después de registrarse como miembro, puede publicar información. Este sistema también tiene en cuenta que los usuarios utilizan el método exhaustivo para descifrar contraseñas y configura especialmente registros de inicio de sesión de usuario y administrador para una comprensión y prevención oportunas.

3.2 Diagrama de relaciones entre módulos del sistema

El diagrama de relación de módulos establecido según los requisitos funcionales del sistema es el siguiente:

Figura 3 Diagrama de relaciones entre módulos del sistema

3.3 Diagrama ER del sistema

Las entidades planificadas en este ejemplo basadas en el diagrama de relaciones del módulo anterior incluyen administradores, máquinas de información de segunda mano y noticias, usuarios, entidades miembro y los diagramas ER de cada entidad y sus descripciones de relaciones son las siguientes (la clave principal está subrayada) :

El diagrama ER de la entidad remota de supergestión es similar al diagrama ER de la entidad administradora, sin el atributo de permiso (omitido).

El diagrama ER de relación de cada entidad se describe a continuación:

Figura 8 Diagrama ER de la relación entre entidades y entidades

3.4 Diseño de base de datos

3.4.1 Relación entre las tablas de la base de datos

Tabla 1 Tabla de base de datos

número de serie

Tabla de base de datos

Contenido de almacenamiento de base de datos

1

ershou_adminstage

Almacenar registros de inicio de sesión para administradores y miembros

2

clase_ershou

Información de categoría para almacenar información de segunda mano

3

ershou_pinglun

Almacenar los comentarios de los miembros sobre la información del artículo

4

ershou_noticias

noticias de almacenamiento

5

usuario_ershou

Almacenar información relevante de los miembros

6

ershou_wupin

Información del artículo almacenada para su publicación

7

gerente_ershou

Información del administrador de la tienda

El diagrama de relación de la tabla de datos es el siguiente:

3.4.2 Diseño detallado de la estructura de la tabla de datos

Tabla 2 Tabla de perfil de usuario (ershou_user)

número de serie

nombre del campo

categoría de campo

ilustrar

Observación

1

nombre de usuario

varchar(20)

Nombre de la cuenta del usuario

Clave primaria

2

contraseña de usuario

varchar(20)

Contraseña de la cuenta del usuario

3

usuario_pregunta

varchar(50)

Recuperar pregunta de contraseña

4

usuario_angser

varchar(50)

Recuperar respuesta de contraseña

5

usuario _mphone

varchar(12)

teléfono móvil

6

usuario _teléfono

varchar(12)

Fijo

7

usuario _escuela

varchar(60)

colegio actual

8

usuario _correo electrónico

Várchar(80)

Correo electrónico

9

usuario _fecha

fecha y hora

tiempo de registro

10

usuario _qq

En t

número QQ

11

usuario _kt

En t

la señal

El valor predeterminado es 0

Tabla 3 Tabla de información de clase (ershou_class)

número de serie

nombre del campo

categoría de campo

ilustrar

Observación

1

nombre de la clase

varchar(20)

nombre de clasificación

Clave primaria

2

orden_de_clase

En t

El orden de las categorías principales marca las categorías secundarias como el 0 predeterminado

El valor predeterminado es 0

3

clase_cid

En t

El orden de clase pequeña marca la clase principal como el 0 predeterminado

El valor predeterminado es 0

Tabla 4 Tabla de información de registro de inicio de sesión de usuario y administrador (ershou_ adminstage)

número de serie

nombre del campo

categoría de campo

ilustrar

Observación

1

nombre del gerente

varchar(20)

nombre de inicio de sesión

Clave primaria

2

manager_action

varchar(50)

acción de inicio de sesión

3

administrador_ip

varchar(30)

IP de inicio de sesión

4

manager_time

fecha y hora

Hora de inicio de sesión

5

administrador_estado

En t

Estado de inicio de sesión

El valor predeterminado es 0

6

administrador_si

En t

Determinar si es un administrador o un usuario

El valor predeterminado es 0

Tabla 5 Tabla de comentarios (ershou_pinglun)

número de serie

nombre del campo

categoría de campo

ilustrar

Observación

1

pid

En t

Identificación

Clave primaria

2

pinglun_wid

En t

Identificación del artículo

El valor predeterminado es 0

3

nombre de usuario

varchar(20)

nombre de miembro

4

pinglun_nr

varchar(200)

contenido

5

Hora_de_pinglun

fecha y hora

tiempo

Tabla 6 Tabla de noticias del sitio web (ershou_news)

número de serie

nombre del campo

categoría de campo

ilustrar

Observación

1

no

diminuto(6)

Establecer ID de noticias

2

título_noticias

varchar(100)

establecer el título de la noticia

3

clase_de_noticias

varchar(20)

establecer categoría de noticias

4

noticias_ly

varchar(30)

fuente de noticias

5

news_jishu

int

浏览次数

默认值为0

6

news_nr

text

新闻内容

7

news_time

datetime

设置添加时间

8

news_guoqi

Char(2)

设置是否过期

默认值为1

9

news_name

varchar(20)

发表新闻的管理员帐号

主键

表7  物品信息表(ershou_wupin)

序号

字段名

字段类别

说明

备注

1

wid

int

物品id

主键

2

bclass_name

varchar(20)

所属大类别

3

class_name

varchar(20)

所属小类别

4

wuping_name

varchar(40)

物品名称

5

wuping_jishu

int

浏览次数

默认设置为0

6

wuping_nr

text

物品介绍

7

user_name

varchar(20)

用户帐号

8

wuping_time

datetime

发表时间

9

wuping_guoqi

int

交易状态

默认设置为1

表8:管理员信息表(ershou_manager)

序号

字段名

字段类别

说明

备注

2

manager_name

varchar(20)

管理员名称

主键

3

manager_pass

varchar(20)

管理员密码

4

manager_sup

int

标志为管理员权限

默认值为0

3.5系统安全

MD5是在Web应用程序中最常用的密码加密算法。由于MD5是不可逆的,因而经过MD5计算得到后的密文,不能通过逆向算法得到原文。

所谓MD5,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于——这种"压缩"是不可逆的。

在Web应用程序中使用MD5加密文本密码的初衷,就是为了防止数据库中保存的密码不幸泄露后被直接获得。但攻击者不但拥有数据量巨大的密码字典,而且建立了很多MD5原文/密文对照数据库,能快速地找到常用密码的MD5密文,是破译MD5密文的高效途径。然而,MD5密文数据库所使用的是最常规的MD5加密算法:原文-->MD5-->密文。因此,使用字符串次序干涉MD5算法,使现成的MD5密文数据库无所作为。此函数是把MD5运算后的密文字符串的顺序调转后,再进行一次MD5运算。函数代码如下:

function md5_5($psw)

{   //得到数据的密文

    $ psw = md5($psw);

    //再把密文字符串的字符顺序调转

    $ psw = strrev($psw);

    //最后再进行一次MD5运算并返回

    return md5($psw);

}

4系统的实现

4.1系统的主要功能

归纳起来,系统的功能大约有以下几点:用户注册,信息查询,发布信息,找回密码等。

4.1.1注册

为了实现不同地域的学生通过网络、不择时间地自主填写并上传自己的基本档案(不合要求的档案可以由管理员及时清除),需要录入基本的个人信息。

1.步骤:

(1)开始注册;

(2)填写个人信息;

(3)提交(如失败返回填写页面重填写;如果重名错误,显示提示信息);

(4)进入登录界面;

(3)登录成功,进入主界面。

2.主要验证代码:

//值存在则继续执行

if(($_GET["ac"]=="in")and(isset($_POST["user_name"])))

{ //判断验证码是否正确

 if($_POST["ac_uthnum"]==$_SESSION["user_authnum"])

 {

$user_name=$_POST["user_name"];

$user_name=trim($user_name);

   $user_pass1=$_POST["user_pass"];

   $user_pass1=trim($user_pass1);

   $user_pass=md5_5($user_pass1);//密码进行MD5加密

   $user_question=$_POST["user_question"];

   $user_angser1=$_POST["user_angser"];

   $user_angser1=trim($user_angser1);

   $user_angser=md5_5($user_angser1);//密码进行MD5加密

   $user_school=$_POST["user_school"];

   $user_phone=$_POST["user_phone"];

   $user_mphone=$_POST["user_mphone"];

   $user_qq=$_POST["user_qq"];

   $user_email=$_POST["user_email"];

   $user_kt="1";

//查询是否存在当前注册用户名

 $query="select count(*) count from ershou_user where user_name='$user_name'";

 $result=mysql_query($query);

 while($info=mysql_fetch_array($result))

       { $count=$info["count"]; }

      if($count==0){//不存在才执行注册    

   $sqladd = "INSERT INTO ershou_user SET user_name='$user_name',

   user_pass='$user_pass',

   user_question='$user_question',

   user_angser='$user_angser',

   user_school='$user_school',

   user_phone='$user_phone',

   user_mphone='$user_mphone',

   user_qq='$user_qq',

   user_email='$user_email',

   user_kt='$user_kt',

   user_date=NOW()";

 else{//存在相同用户名则重新填写

 echo '<table width="100%" border="0" cellPadding="0" cellSpacing="0">

          <tr>

<td height="300" align="center"><img src="images/warning.gif" border="0" /> 该会员已存在  <a href="javascript:history.back()">返回</a>重新填写

  </td>

          </tr>

         </table>';}  

  }

3.主要窗口如下图:

图10 用户注册窗口

4.1.2搜索信息

为了实现快速浏览网站信息,各用户可以根据所须信息类别并填写查询关键字,很快的找出需要的信息。

1.步骤:

(1)填写信息类别;

(2)修改或删除信息类别;

(3)浏览信息类别。

2.主要代码:

$sql ="select count(*) count from ershou_wupin where bclass_name='$bclass_name' and wupin_name like '%$searchcontent%'";  

  $result=mysql_query($sql)  or  die(mysql_errno().":  ".mysql_error()."\n");  

  $rs=mysql_fetch_object($result);  

  $recountCount=$rs->count;  

  $show=20;  

  $totalPage=ceil($recountCount/$show);  

  $page = (isset($_GET['page']) && $_GET['page']>=0)? $_GET['page']: 0;  

  $isLast  =  ($page==($totalPage-1))?  true:  false;  

  $hasNoPre  =  ($page==0)?  true:  false;  

  $hasNoNext  =  ($page==$totalPage-1)?  true:  false;  

  $isFirst  =  ($page==0)?  true:false;  

  $start  =  $page*$show;

  if($recountCount==0){  //搜索结果不为0则显示未找到

echo '<tr><td  height="25" align="center">未找到!</td></tr>';}

else{  

 $sqlwupin="select * from ershou_wupin where bclass_name='$bclass_name' and wupin_name like '%$searchcontent%' ORDER BY wupin_time desc limit $start,20";  

  $resultwupin  =  mysql_query($sqlwupin)  or  die(mysql_errno().":  ".mysql_error()."\n");

   while($rswupin=mysql_fetch_object($resultwupin)){

         $wupin_name=$rswupin->wupin_name;

     $wupin_time=$rswupin->wupin_time;  

 $date_format=date("m/d",strtotime($wupin_time));

 $wid=$rswupin->wid;

echo '<tr><td height="25">  
<font color="#333333">['.$rswupin->class_name.']</font>
 <a href="wupin.php?wid='.$wid.'" target="_blank">
<font color="#333333">'.TrimChinese($wupin_name,"80").'</font></a>
 <font color="#666666"> ('.$date_format.') </font></td></tr>';}}

3.主要窗口如下图:

4.1.3发布信息

实现用户发布二手信息,建立一个简单易操作的信息发布平台。

1.步骤:

(1)输入标题;

(2)选择类别;

(3)输入内容;

(4)选择有效标志。

2.主要代码:

<?

//处理内容提交

if(($_GET["ac"]=="in")&&(isset($_POST["wupin_name"]))){

   $wupin_name=$_POST["wupin_name"];

 $class_name=$_POST["class_name"];

 $wupin_nr=$_POST["wupin_nr"];

    $wupin_img=$_POST["wupin_img"];

 $user_name=$_POST["user_name"];

$wupin_time=$_POST["wupin_time"];

 $wupin_guoqi=$_POST["wupin_guoqi"];

//查询所属大类的id号

$sqlbclass="select * from ershou_class  where class_name='$class_name'";

              $resultbclass=mysql_query($sqlbclass);

                while($infobclass=mysql_fetch_array($resultbclass))

                    { $class_cid=$infobclass["class_cid"];}

//根据大类的id号 查询出大类名称

       $sqlbclass1="select * from ershou_class  where cid='$class_cid'";

              $resultbclass1=mysql_query($sqlbclass1);

                while($infobclass1=mysql_fetch_array($resultbclass1))

                    { $bclass_name=$infobclass1["class_name"];}

$sqlup = "INSERT INTO ershou_wupin SET

bclass_name='$bclass_name',

wupin_name='$wupin_name',

class_name='$class_name',

wupin_nr='$wupin_nr',

user_name='$user_name',

wupin_guoqi='$wupin_guoqi',

wupin_time=NOW()";

   if(@mysql_query($sqlup)) {

    msg("增加成功!","#ff0000");

echo '<meta http-equiv ="Refresh" content = "1 ; URL=wupin_manager.php">';

   }

   else {

      echo"<p>Error: ".mysql_error()."</p>";

   }

}?>

3.窗口如下图:

4.1.4密码找回

实现找回密码,大意丢失密码的拥护根据所须填写注册时的问题答案,就能更改密码。

1.步骤:

(1)填写用户名;

(2)填写答案跟新密码;

(3)提交密码。

2.主要代码如下:

<?

  $user_name1=$_POST["user_name"];//前页隐藏表单提交过来的的当前用户名

  $user_angser2=$_POST["user_angser"];

  $user_name1=trim($user_name1);

  $user_angser2=trim($user_angser2);

  $user_angser1=md5_5($user_angser2);//填写的答案进行加密  以去和数据库的值对比

  $user_pass2=$_POST["user_pass1"];//读取新密码

  $user_pass2=trim($user_pass2);

  $user_pass1=md5_5($user_pass2);//加密

      $sql="select * from ershou_user WHERE user_name='$user_name1'";

  $result  =  mysql_query($sql)  or  die(mysql_errno().":  ".mysql_error()."\n");  

         $rs=mysql_fetch_object($result);

  $user_angser=$rs->user_angser;

  if($user_angser!=$user_angser1){//数据库答案与输入的不相同 就提示

  echo '<tr bgcolor="#f3f3f3">

      <td height="50" align="center">答案错误!请<a href="user_repw.php"><font color="#ff0000">返回</font></a></td></tr>';}

//输入的答案正确和输入了新密码就提交修改的用户密码

  elseif($user_angser1==$user_angser)   

   {

    $sqlup="UPDATE ershou_user SET user_pass='$user_pass1' where user_name='$user_name1'";

      if(@mysql_query($sqlup)) {

   echo '<img src="images/success.gif" border="0" />';

                 msg("修改成功,返回登录","#ff0000");

           echo '<meta http-equiv ="Refresh" content = "1 ; URL=user_login.php">';

                  }

              else {

                 echo"<p>Error: ".mysql_error()."</p>";

                   }

}     

   ?>

3.主要窗口如下:

4.1.5数据库连接代码

<?

######MySQL数据库信息######

$DBhost = "localhost";          //主机名

$DBuser = "root";           //用户名

$DBpass = "";           //密码

$DBname = "ershou";      //数据库名

mysql_connect($DBhost,$DBuser,$DBpass) or die("无法连接到数据库!");

mysql_query("SET NAMES GBK");

mysql_select_db ($DBname);

?>

4.2创建界面

1.首页:

网站首页是用户进入系统的第一个界面,因此,简洁、友好、清晰醒目是设计时要考虑的风格。样式如图所示:

 

5系统测试

5.1本地服务器测试

本系统是基于Windows平台,在PHP、MYSQL、Apache的环境下运行的;启动Apache应用服务器,打开Internet Explorer,在URL地址中输入http://localhost,即可打开系统首页。经过测试,本系统已经能够顺利完成系统要求的基本功能,达到预期目标。

5.2远程服务器测试

在Linux、PHP、MYSQL、Apache的环境下;用户远程访问此系统,页面会出现乱码。就此问题经过如下分析,并给出解决方案:

系统显示信息时出现了中文文字显示的问题。系统文件乱码的出现是由于编码(charset)设置错误,导致浏览器以错误的编码来解析。

此系统测试时遇到的主要是数据库连接编码,指的是进行数据库操作时以哪种编码与数据库传输数据,由于Linux操作系统上数据库采用UTF8编码,而网页的页面申明编码是GB2312。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:

Mysql_query ("SET NAMES GBK");

来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。

此问题解决后,继续测试系统。能够顺利完成系统要求的基本功能,系统在远程服务器上运行成功。

结    论

经过几个月来的工作,本人综合运用以前所学的网站开发及数据库方面的基础知识,终于完成了校园二手信息系统的基本功能。该系统采用B/S结构,前端界面使用PHP,数据库采用MySQL来进行开发。经过测试试用,基本满足用户需求,实现了用户登录,找回密码,发布信息,搜索信息等功能。系统性能良好,工作正常,具有较强的可移植性,可维护性和安全性。

通过对校园二手信息网站的开发,本人对PHP和MySQL都有了更深刻的了解,对其优越性和方便灵活性有了更深的体会。第一次完整地经历了一次项目开发,使得本人对软件开发及项目管理的过程有了实际的感受。

本文的主要工作有:

1) 描述了当前C2C模式的网站的广阔前景及其相比于B2C模式的优越性所在,对网站的开发模式进行了简单分析和总结,指出了采用PHP + Apache + MySQL模式进行开发的优越性;

2) 模拟了校园二手信息网站的开发需求,提出了比较详细的解决方案,阐明了系统的功能模块的划分及相互之间的关系,并详细描述了每个模块的实现过程或者实现方法。

本系统也有一些不尽人意的地方,比如需求分析并没有非常细致全面,离真正的商业软件还有一定的差距;源代码未进行优化和加密;界面未进行美术加工;这些都有待今后的完善。

通过本次毕业设计,我充分体会到理论与实践之间的重要联系。在实践的过程中我学到了很多的知识,对PHP程序语言和MY SQL数据库技术有了进一步的了解运用也更为熟练。同时我也发现了自己许多不足之处,有待在将来的工作中进一步的学习,能够掌握和运用更多的知识。

参考文献

[1]数字文化.PHP4交互式网页数据库实战手册[M].北京:清华大学出版社,2001。

[2]邱兆民.彻底研究php网络资料库[M].北京:电子工业出版社,2001。

[3]李立功,赵杨.MySql程序设计与数据库管理[M]. 北京:科学出版社,2001。

[4]周浩. PHP4与电子商务网站开发实战[M].北京:人民邮电出版社,2001。

[5] Qin Tao, Zeng Wenyu. Competente en el desarrollo de aplicaciones PHP5 [M]. Beijing: Prensa Popular de Correos y Telecomunicaciones, 2007.

[6] (EE. UU.) Ullman, traducido por Chen Zongbin y otros. Tutorial básico de PHP y MySQL [M]. Beijing: Prensa Popular de Correos y Telecomunicaciones, 2007.

[7] (Estados Unidos) Rasmus Lerdorf, Kevin Tatroe. Traducido por Chen Hao. Programación PHP [M]. Pekín: Electronic Industry Press, 2007.

[8] Chen Xiangyang, Chen Guoyi. Diseño y desarrollo de sistema de página web PHP5+MySQL [M]. Pekín: Electronic Industry Press, 2007.


gracias

El final de esta defensa del diseño de graduación es también el final de mi vida universitaria. Aquí, me gustaría expresar mi más sincero agradecimiento a los maestros que me han enseñado incansablemente durante los últimos años, y a los estudiantes que me han acompañado a lo largo de estos maravillosos años. En mi camino de crecimiento, te ha acompañado el viento y la lluvia. La finalización exitosa de este artículo se debe a mis supervisores. Sin su guía, sería difícil para mí completar con éxito la última tarea en esta universidad. Al mismo tiempo, agradezco sinceramente a todos los maestros que revisaron los documentos y participaron en la defensa en su apretada agenda.

¡Gracias!

 

Atentos al blogger, el próximo artículo es más emocionante.

¡Tres en uno con un solo clic! ! !

¡Tres en uno con un solo clic! ! !

¡Tres en uno con un solo clic! ! !
¡Gracias por el triple de un clic! ! !

Supongo que te gusta

Origin blog.csdn.net/m0_56073435/article/details/131478315
Recomendado
Clasificación