La conception et le développement du site d'information de seconde main du campus

La conception et le développement du site d'information de seconde main du campus

 

Résumé

Le site d'information sur les biens d'occasion offre une plate-forme en ligne pour les transactions de biens d'occasion. De nos jours, avec le développement et l'amélioration continus du commerce électronique, le campus universitaire a également besoin d'un site Web spécial qui peut fournir aux étudiants des transactions de biens d'occasion afin de publier diverses informations sur les produits de base.

Cette conception a la fonction de commerce électronique général et reflète le style du campus. Les fonctions fournies par le système comprennent l'enregistrement, la recherche d'informations, la publication d'informations, la récupération de mots de passe, etc. La particularité de ce système réside dans l'application de la technologie PHP. Il s'agit d'un langage de script dynamique simple avec un code source ouvert et une vitesse d'exécution rapide. Cette technologie prend également en charge une large gamme de connexions de bases de données, dispose d'un grand nombre de bibliothèques étendues, offre des performances de sécurité élevées et est facile à apprendre et à utiliser.

Cet article présente d'abord la faisabilité et les outils d'application du système, et expose les exigences du système et les avantages de PHP ; puis analyse le système et conçoit la structure de la table de données basée sur la base de données MY SQL utilisée dans le système ; puis Les modules fonctionnels du système sont conçus en détail ; enfin, un résumé est fait pour les lacunes du système en termes d'optimisation du code et de cryptage.

Mots-clés : informations de seconde main ; PHP ; MySQL ; APACHE ; MD5 ; SESSION

1 Présentation

1.1 Contexte du sujet

Avec le développement explosif d'Internet, depuis l'adhésion de la Chine à l'OMC, le commerce électronique s'est également développé rapidement dans le pays, et maintenant divers sites Web de commerce électronique sur Internet se développent rapidement. J'en ai également été profondément affecté lorsque j'étais encore sur le campus et j'ai développé un site Web adapté aux étudiants de l'école, dans l'espoir de fournir des services pratiques pour tout le monde.

En tant qu'étudiant, j'ai une profonde compréhension que des vêtements sur le corps aux livres, papeterie et autres nécessités quotidiennes utilisées par tout le monde, ils seront éliminés après une période d'utilisation. Certains étudiants les jettent simplement, ce qui est très inutile et pollue l'environnement. Certains étudiants ont également pensé à le vendre, mais il était difficile de trouver un acheteur, alors ils l'ont vendu à un produit payant. Il en résulte des choses qui ne peuvent pas être utilisées à leur plein potentiel.

Afin de résoudre ce gaspillage de ressources, un site Web d'information de seconde main du campus a été développé, s'appuyant sur Internet avec de faibles coûts de transaction. Pour vous fournir une plate-forme de diffusion d'informations peu coûteuse, rapide et efficace. Pendant le développement du nouveau système, suivez strictement les étapes de développement du système et efforcez-vous d'obtenir sa scientificité et sa rationalité dans l'ensemble du processus, de l'investigation du système, de l'analyse, de la conception à la mise en œuvre du système.

1.2 Analyse de faisabilité

La tâche de l'analyse de faisabilité est d'analyser s'il existe une solution réalisable au problème à résoudre techniquement, économiquement, socialement et juridiquement.

1.2.1 Faisabilité technique

Le système adopte la conception du modèle BS et fonctionne sur le réseau de campus des collèges et universités. Les étudiants peuvent accéder à des sites Web d'information de seconde main via des ordinateurs connectés au réseau du campus. Ce système est un système de publication d'informations en mode BS relativement courant, ce qui est techniquement faisable.

1.2.2 Faisabilité économique

Maintenant, le prix de l'ordinateur a été très bas, mais les performances ont fait de grands progrès. Le développement de ce système a permis d'économiser beaucoup de ressources pour tout le monde, ce qui se manifeste principalement dans les aspects suivants :

  • Le fonctionnement de ce système peut remplacer les ventes de déchets et acheter des autocollants, en évitant certains problèmes inutiles ;
  • Le fonctionnement de ce système peut économiser de nombreuses ressources ;
  • Le fonctionnement de ce système peut grandement améliorer la réutilisation des déchets ;
  • Le système actuel peut, entre autres, rendre les documents sensibles plus sûrs.

Le système est donc économiquement viable.

1.2.3 Faisabilité de l'exploitation

Le système est un petit système de gestion de l'information, qui consomme très peu de ressources, et l'ordinateur général peut répondre aux exigences, qu'il soit matériel ou logiciel.Par conséquent, le système est réalisable en fonctionnement.

1.2.4 Faisabilité juridique

Le système est purement conçu pour un usage privé, et il n'y a pas de contrat, de responsabilité et d'autres aspects qui entrent en conflit avec la loi pendant le processus de développement. Ce système est donc juridiquement réalisable.

2 Introduction aux bases théoriques

2.1 Technologie PHP

2.1.1 Introduction  à PHP

PHP est un langage de script simple, orienté objet, interprété, sécurisé, très performant, indépendant de l'architecture, portable et dynamique. PHP a un mot-clé Class similaire à Java. Comme aucune machine virtuelle n'est requise, la vitesse est 5 fois plus rapide que Java. PHP devient rapidement un langage de script standard, polyvalent et orienté objet. PHP peut être utilisé non seulement pour développer des applications Web, mais également pour développer des applications ordinaires.

PHP est l'abréviation de Hypertex tPre-Processor (Hypertext Preprocessor), qui est un langage de script HTML côté serveur. PHP est syntaxiquement similaire à C et peut s'exécuter sur les serveurs Web Apache, Netscape/iPlanet et Microsoft IIS. PHP est un outil qui vous permet de créer des pages Web dynamiques. Les pages Web utilisant PHP ne sont pas différentes des pages HTML ordinaires, et vous pouvez les créer et les modifier de la même manière. PHP vous permet d'écrire des scripts simples directement dans des fichiers HTML, ce qui est très similaire à JavaScript. La différence est que PHP ne dépend pas du navigateur et est un langage côté serveur, tandis que JavaScript est un langage côté client intégré au HTML. Conceptuellement, PHP est similaire au produit LiveWirePro de Netscape, à l'ASP de Microsoft et au JSP de Sun Microsystem.

1. La force de PHP réside dans :

PHP est une technologie de pointe. D'autres technologies, telles que PERL, Python, VB Script et ASP, sont relativement anciennes et inférieures. Même Java/JSP est sous PHP. Ses caractéristiques sont les suivantes :

  • Compatibilité : le programme PHP5.0 est compatible avec l'ancienne version ;
  • Facile à apprendre et à utiliser : la syntaxe de PHP est similaire à C et Per, donc ceux qui ont une expérience en programmation peuvent commencer rapidement ;
  • Open source : le code source PHP et les fichiers compilés peuvent être téléchargés gratuitement ;
  • Extensible : les utilisateurs peuvent ajouter des modules pour étendre les fonctions du moteur PHP ;
  • Multiplateforme : les programmes PHP peuvent être exécutés sur plusieurs plates-formes d'exploitation et serveurs Web majeurs.
  • Prise en charge de plusieurs bases de données : PHP prend en charge plus de dix bases de données et il est assez facile d'écrire des programmes pour accéder aux données de la base de données.

PHP est le meilleur car il est orienté objet et absorbe l'essence de C/C++/Java/PERL. PHP peut remplacer PERL, Python, Java, C, C++, AWK, Unix Shell Script, Visual Basic et d'autres langages. PHP s'exécute directement et est écrit en C. PHP peut s'exécuter sur divers serveurs Web tels qu'Apache et Microsoft IIS. PHP est si facile à utiliser que vous pouvez l'utiliser pour développer très rapidement des sites Web très complexes en très peu de temps.

Le plus grand avantage de PHP est que PHP lui-même est entièrement écrit en langage C, de sorte qu'il peut fonctionner sur diverses plates-formes, telles que BeOS, UNIX, MS Windows, Apple Macintosh, IBMOS/2 et d'autres systèmes d'exploitation. Le code PHP développé sous Windows peut également être utilisé sous UNIX/Linux sans aucune modification.

2. Processus d'exécution de la page Web PHP

PHP est différent des pages Web traditionnelles. Lorsqu'une page Web HTML générale est chargée, elle transfère directement toutes les pages Web sur l'ordinateur de l'utilisateur, mais exécute le programme sur l'ordinateur de l'utilisateur pour afficher le contenu ; PHP est tout le contraire. Son L'objectif principal est de développer des pages Web côté serveur du site Web. Les programmeurs peuvent permettre au site Web d'interagir avec les visiteurs via le contrôle du programme, puis de concevoir des pages Web dynamiques attrayantes. Par exemple : connexion des membres, page Web d'authentification des données, etc. Comme indiqué ci-dessous:

2.1.2 Installer PHP

1. Téléchargez le programme d'installation de PHP http://www.php.net/downloads.php. La dernière version est PHP5.1. Il existe deux façons d'installer PHP sous Windows, l'une est l'installation du code source et l'autre est EXE mode d'installation, double-cliquez pour installer. Cet article parle principalement du processus d'installation du code source.

Téléchargez "PHP-5.0.3-Win32.rar". Décompressez ensuite le fichier RAR téléchargé vers c:\php

2. Copiez c:\php\php5ts.dll vers c:\windows\system32. (Parfois, pour plus de commodité, cliquez sur Search *.dll dans le dossier PHP pour copier tous les dossiers recherchés dans system32) Copiez c:\php\php.ini-recommended (ou php.ini-dist ) pour c:\windows\php. ini puis ouvrez c:\windows\php.ini pour modifier les emplacements suivants :

Si c'est sur un serveur de production, vous n'avez pas besoin de modifier les deux lignes suivantes

error_reporting=E_ALL & ~E_NOTICE

display_errors = On (ici pour modifier l'invite d'erreur de PHP, OFF signifie pas d'invite, certaines informations de non-erreur de lien de base de données seront également sorties comme informations d'erreur par PHP, il est recommandé de l'utiliser pour fermer le serveur Web !)

Indique le dossier où se trouve la bibliothèque d'extension PHP.

extension_dir="c:\php\ext

Les deux suivants sont des délais d'attente : généralement 60-120.

max_execution_time=90

max_input_time=90

post_max_size=8M (6-10M est le meilleur)

upload_max_filesize=8M (taille maximale de la pièce jointe de téléchargement)

default_socket_timeout=90 (heure de port 60-120)

session.gc_maxlifetime=3600 (durée de survie par défaut de la session, secondes)

session.save_path="c:\php\sessiondata" (répertoire de stockage de session)

extension=php_mysql.dll (prend en charge la base de données MySQL)

extension=php_gd2.dll (prend en charge la génération d'images en couleurs vraies)

3. Vérifiez l'installation

Écrivez quelques lignes de code dans le Bloc-notes :

< ?

phpinfo();

?>

Enregistrez-le en tant que fichier phpinfo.php dans le répertoire racine du site Web. Lancez ensuite le navigateur, visitez http://localhost/phpinfo.php , si vous voyez l'écran suivant, cela prouve que l'installation de PHP est réussie !

Figure 2 Page d'informations PHP

2.2 Introduction à MySQL

MySQL est une base de données semi-commerciale très appréciée des membres de la communauté Linux. MySQL est exécuté sur la plupart des plates-formes Linux (i386, Sparc, etc.) et sur quelques plates-formes non Linux ou même non Unix.

2.2.1 Introduction à MySQL

1. Mise en place

La plupart des principaux formats de packages (RPM, DBE, TGZ, RAR) sont disponibles sur le site MySQL. L'installation au format RAR ne pose pas beaucoup de problèmes et ne nécessite pas de configuration initiale ; décompressez directement et exécutez le fichier d'installation à installer. Le démon MySQL (mysqld) consomme très peu de mémoire et n'est chargé sur le processeur que lors de l'exécution de vraies requêtes, ce qui signifie que pour les petites bases de données, MySQL peut être utilisé assez facilement sans compromettre les autres fonctions du système qui ont trop d'impact.

2. Type de données

Il est bon que les champs prennent en charge un grand nombre de types de données. Les entiers communs, les nombres à virgule flottante, les chaînes et les nombres sont exprimés en plusieurs longueurs et prennent en charge les types BLOB (Binary Large Object) de longueur variable. Les champs entiers sont représentés par l'option d'auto-incrémentation et les champs date/heure sont également bien représentés.

3. Compatibilité SQL

Il manque également certaines fonctionnalités SQL courantes, pas de sous-sélections (requêtes dans des requêtes). Voir (View) a également disparu. Bien sûr, la plupart des sous-requêtes peuvent être réécrites avec de simples clauses de jointure, mais il est parfois plus facile de réfléchir avec deux requêtes imbriquées qu'avec une seule grosse jointure. Encore une fois, les vues cachent simplement la clause where au programmeur, mais c'est une autre commodité à laquelle les programmeurs s'attendent.

4. Procédures stockées et déclencheurs

MySQL n'a pas de langage de procédure stockée, ce qui est la plus grande limitation pour les programmeurs habitués aux bases de données d'entreprise. Les commandes SQL multi-instructions doivent être coordonnées via le code côté client, qui dans ce cas est activé par un langage de requête assez robuste et la possibilité de verrouiller et de déverrouiller les tables côté client pour permettre l'exécution de plusieurs instructions.

5. Intégrité référentielle

L'un des principaux défauts de MySQL est l'absence d'un mécanisme RI standard ; cependant, les créateurs de MySQL ne sont pas indifférents aux souhaits de ses utilisateurs et ont fourni quelques solutions de contournement. L'un d'eux est la prise en charge des index uniques. L'absence de contraintes Rule (une limite de plage fixe sur un champ donné) est compensée par un grand nombre de types de données. Ne vous contentez pas de fournir des contraintes de vérification (restrictions sur la valeur d'un champ par rapport à un autre champ dans la même ligne), des clés étrangères et la fonctionnalité de "suppression en cascade" souvent associée à RI. Fait intéressant, l'analyseur SQL tolère la syntaxe de ces instructions lorsque ces fonctionnalités ne sont pas prises en charge. Le but est de transférer facilement la base de données vers MySQL. C'est une bonne idée et cela laisse la porte ouverte à une prise en charge future de cette fonctionnalité ; cependant, ceux qui n'ont pas lu attentivement la documentation peuvent être confondus avec le fait que ces fonctionnalités existent réellement.

6. Sécurité

Mon plus gros reproche avec MySQL est son système de sécurité, son seul inconvénient est qu'il est complexe plutôt que standard, et il ne change que lorsque vous appelez mysqladmin pour relire les privilèges des utilisateurs. Les instructions SQL GRANT/REVOKE habituelles n'étaient pas prises en charge jusqu'aux versions récentes, mais au moins elles le sont maintenant. Les auteurs de MySQL ont largement documenté son système de sécurité spécifique, mais il nécessite un processus d'apprentissage qui peut ou non être possible autrement.

7. Sauvegarde et restauration, importation/exportation de données

L'absence de cohérence référentielle appliquée simplifie considérablement la sauvegarde et la restauration, et l'import/export de données à lui seul peut parfaitement répliquer cette fonctionnalité. La commande LOAD DATA INFILE offre une grande flexibilité dans l'importation des données. La commande Select INTO réalise la fonction équivalente d'exportation de données. De plus, étant donné que MySQL n'utilise pas de partitions brutes, toutes les données de la base de données peuvent être enregistrées avec une sauvegarde du système de fichiers. L'activité de la base de données peut être enregistrée. Contrairement aux journaux de base de données habituels (qui stockent les modifications d'enregistrement ou les images d'enregistrement avant/après), MySQL enregistre les instructions SQL réelles. Cela permet à la base de données d'être restaurée au point précédant l'échec, mais n'autorise pas les opérations de validation et de restauration.

8. Connectivité

La bibliothèque client MySQL est une bibliothèque en langage C avec une structure client/serveur, ce qui signifie qu'un client peut interroger une base de données résidant sur une autre machine. Cependant, la véritable force de MySQL réside dans les "wrappers" de langage dans la bibliothèque, dont Perl, Pathon et PHP ne sont que quelques-uns. Le serveur Web d'Apache possède également de nombreux modules tels que les fichiers d'accès aux répertoires, etc. qui permettent à diverses informations de configuration Apache (telles que les fichiers d'accès aux répertoires) d'utiliser MySQL, et l'API est simple, cohérente et complète.

2.2.2 Moteur de base de données

MyISAM met l'accent sur les opérations de lecture rapide, ce qui est la principale raison pour laquelle MySQL est si favorisé par le développement Web : un grand nombre d'opérations de données dans le développement Web sont des opérations de lecture. Par conséquent, la plupart des fournisseurs d'hébergement Web et des fournisseurs de plates-formes Internet (fournisseur de présence Internet, IPP) n'autorisent que l'utilisation du format MyISAM.

Le format de stockage MyISAM est le type par défaut dans MySQL depuis la version 3.23, et il présente les caractéristiques suivantes :

  • Si le système d'exploitation lui-même autorise des fichiers plus volumineux, le fichier est plus volumineux que la méthode de stockage ISAM.
  • Les données sont stockées dans un format little-endian-first indépendant de la machine. Cela signifie que les tables peuvent être copiées d'une machine à une autre même si elles ont des architectures différentes.
  • Les valeurs d'index numériques occupent moins d'espace de stockage car elles sont stockées en gros octets en premier. Les valeurs d'index changent rapidement dans l'octet de poids faible, de sorte que l'octet de poids fort est plus facile à comparer.
  • AUTO_INCREMENT gère mieux les tables que ISAM.
  • Réduction de plusieurs limites d'index. Par exemple, vous pouvez indexer des colonnes contenant des valeurs NULL, et vous pouvez également indexer des colonnes de types BLOB et TEXT.

Pour améliorer la vérification de l'intégrité des tables, chaque table a un indicateur qui est défini après que la table a été vérifiée par myisamchk. La vérification des tables qui n'ont pas été modifiées depuis la vérification précédente peut être ignorée avec myisamchk-fast, ce qui rend cette tâche administrative plus rapide. Il y a aussi un indicateur dans la table qui indique si la table a été fermée normalement. Si le serveur s'arrête de manière incorrecte, ou si la machine plante, cet indicateur peut être utilisé pour détecter quelles tables doivent être vérifiées au démarrage du serveur.

2.3 Présentation d'Apache

Apache est le serveur Web numéro un utilisé dans le monde et il peut fonctionner sur presque toutes les plates-formes informatiques largement utilisées.

Apache est dérivé du serveur httpd NCSA. Après plusieurs révisions, il est devenu l'un des logiciels de serveur Web les plus populaires au monde. Apache est tiré de la prononciation de "un serveur inégal", ce qui signifie un serveur plein de correctifs. Parce qu'il s'agit d'un logiciel libre, les gens continuent à développer de nouvelles fonctions, de nouvelles fonctionnalités et à modifier ses défauts d'origine. Apache se caractérise par sa simplicité, sa rapidité et ses performances stables, et il peut être utilisé comme serveur proxy.

À l'origine, il n'était utilisé que pour les petits réseaux Internet ou expérimentaux, puis s'est progressivement étendu à divers systèmes Unix, en particulier le support de Linux est assez parfait. Apache propose une variété de produits pouvant prendre en charge la technologie SSL et prendre en charge plusieurs hôtes virtuels. Apache est une structure basée sur les processus. Les processus consomment plus de ressources système que les threads et ne conviennent pas aux environnements multiprocesseurs. Par conséquent, lorsqu'un site Web Apache se développe, c'est généralement pour augmenter le serveur ou développer les nœuds du cluster au lieu d'ajouter processeur. A ce jour, Apache reste le serveur Web le plus utilisé au monde, avec une part de marché d'environ 60 %. De nombreux sites Web célèbres dans le monde tels que Amazon.com, Yahoo !, W3 Consortium, Financial Times, etc. sont tous des produits d'Apache. Son succès réside dans son code open source, une équipe de développement ouverte et la prise en charge d'applications multiplateformes. (peut fonctionner sur presque toutes les plates-formes système Unix, Windows, Linux) et sa portabilité.

Le serveur Apache possède les fonctionnalités suivantes :

  • Prend en charge le dernier protocole de communication HTTP/1.1 ;
  • Possède un processus de configuration basé sur des fichiers simple mais puissant ;
  • Prise en charge de l'interface de passerelle commune ;
  • Prise en charge des hôtes virtuels basés sur IP et sur nom de domaine ;
  • Prend en charge plusieurs méthodes d'authentification HTTP ;
  • Module de traitement Perl intégré ;
  • Module de serveur proxy intégré ;
  • Prise en charge de la surveillance en temps réel de l'état du serveur et des journaux de serveur personnalisés ;
  • Prise en charge des inclusions côté serveur (SSI) ;
  • Prend en charge la couche de socket sécurisée (SSL);
  • Assurer le suivi des sessions utilisateur ;
  • Prend en charge Fast CGI;
  • Les servlets Java sont pris en charge par des modules tiers.

3 Analyse du système et conception de la base de données

3.1 Analyse des exigences fonctionnelles du système

Selon l'analyse fonctionnelle du système général de commerce électronique, le système est divisé en deux modules : administrateur et utilisateur. Le module d'administrateur système comprend : la gestion de la configuration du système, la gestion des informations sur les membres, la gestion des actualités du site Web, la gestion des informations sur les articles, la gestion de l'administrateur, la gestion du journal de connexion. Le module utilisateur comprend : une connexion sécurisée, la récupération du mot de passe, la requête d'informations, la publication d'informations, l'enregistrement des membres, la catégorie d'articles, la gestion des informations sur les articles et la modification des informations sur les membres. Les non-membres qui viennent d'accéder au site Web peuvent parcourir et rechercher des informations sur ce site Web, non seulement des informations de seconde main, mais également des informations populaires. Après vous être inscrit en tant que membre, vous pouvez publier des informations. Ce système tient également compte du fait que les utilisateurs utilisent la méthode exhaustive pour déchiffrer les mots de passe et configure spécialement les journaux de connexion des utilisateurs et des administrateurs pour une compréhension et une prévention rapides.

3.2 Diagramme des relations entre les modules du système

Le diagramme des relations entre les modules établi selon les exigences fonctionnelles du système est le suivant :

Figure 3 Diagramme des relations entre les modules du système

3.3 Diagramme ER du système

Les entités planifiées dans cet exemple basé sur le diagramme de relation de module ci-dessus incluent les administrateurs, les machines d'information d'occasion et les nouvelles, les utilisateurs, les entités membres et les diagrammes ER de chaque entité et leurs descriptions de relation sont les suivantes (la clé primaire est soulignée) :

Le diagramme ER de l'entité distante de super gestion est similaire au diagramme ER de l'entité administrateur, sans attribut d'autorisation (omis).

Le diagramme ER relationnel de chaque entité est décrit comme suit :

Figure 8 Diagramme ER de la relation entre les entités et les entités

3.4 Conception de la base de données

3.4.1 Relation entre les tables de la base de données

Tableau 1 Tableau de la base de données

numéro de série

Tableau de base de données

Contenu de stockage de la base de données

1

ershou_adminstage

Stocker les journaux de connexion pour les administrateurs et les membres

2

ershou_class

Informations de catégorie pour stocker des informations de seconde main

3

ershou_pinglun

Commentaires des membres du magasin sur les informations sur les articles

4

ershou_news

nouvelles de stockage

5

ershou_user

Stocker les informations pertinentes des membres

6

ershou_wupin

Informations sur l'élément stockées pour la publication

7

ershou_manager

Informations sur l'administrateur du magasin

Le diagramme des relations entre les tables de données est le suivant :

3.4.2 Conception détaillée de la structure du tableau de données

Tableau 2 Tableau de profil utilisateur (ershou_user)

numéro de série

nom de domaine

catégorie de champ

illustrer

Remarque

1

nom d'utilisateur

varchar(20)

Nom de compte de l'utilisateur

clé primaire

2

passe d'utilisateur

varchar(20)

Mot de passe du compte de l'utilisateur

3

utilisateur _question

vachar(50)

Récupérer la question du mot de passe

4

utilisateur _angser

vachar(50)

Récupérer la réponse du mot de passe

5

utilisateur _mphone

varchar(12)

téléphone mobile

6

utilisateur _phone

varchar(12)

Téléphone fixe

7

utilisateur _école

varchar(60)

école actuelle

8

utilisateur _email

Varchar(80)

E-mail

9

date_utilisateur

date-heure

Heure d'inscription

dix

utilisateur _qq

Int

Numéro QQ

11

utilisateur _kt

Int

le signe

La valeur par défaut est 0

Tableau 3 Tableau d'informations sur les classes (ershou_class)

numéro de série

nom de domaine

catégorie de champ

illustrer

Remarque

1

nom du cours

varchar(20)

nom du classement

clé primaire

2

class_order

entier

L'ordre des catégories principales marque les catégories mineures comme la valeur par défaut 0

La valeur par défaut est 0

3

class_cid

entier

L'ordre des petites classes marque la classe majeure comme valeur par défaut 0

La valeur par défaut est 0

Tableau 4 Tableau des informations du journal de connexion des utilisateurs et des administrateurs (ershou_adminstage)

numéro de série

nom de domaine

catégorie de champ

illustrer

Remarque

1

nom_du_gestionnaire

varchar(20)

identifiant

clé primaire

2

manager_action

vachar(50)

action de connexion

3

manager_ip

varchar(30)

connexion ip

4

manager_time

date-heure

Heure de connexion

5

manager_state

entier

Statut de connexion

La valeur par défaut est 0

6

manager_if

Int

Déterminez s'il s'agit d'un administrateur ou d'un utilisateur

La valeur par défaut est 0

Tableau 5 Tableau des commentaires (ershou_pinglun)

numéro de série

nom de domaine

catégorie de champ

illustrer

Remarque

1

pid

entier

Identifiant

clé primaire

2

pinglun_wid

entier

ID de l'article

La valeur par défaut est 0

3

nom d'utilisateur

varchar(20)

nom de membre

4

pinglun_nr

varchar(200)

contenu

5

Pinglun_time

date-heure

temps

Tableau 6 Tableau des actualités du site Web (ershou_news)

numéro de série

nom de domaine

catégorie de champ

illustrer

Remarque

1

pas

minuscule(6)

Définir l'identifiant de l'actualité

2

news_title

varchar(100)

définir le titre de l'actualité

3

news_class

varchar(20)

définir une catégorie d'actualités

4

news_ly

varchar(30)

source de nouvelles

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. Maîtrise du développement d'applications PHP5 [M]. Pékin : Presse populaire des postes et télécommunications, 2007.

[6] (États-Unis) Ullman, traduit par Chen Zongbin et d'autres. Tutoriel de base de PHP et MySQL [M]. Pékin : Presse populaire des postes et télécommunications, 2007.

[7] (États-Unis) Rasmus Lerdorf, Kevin Tatroe. Traduit par Chen Hao. Programmation PHP [M]. Pékin : Electronic Industry Press, 2007.

[8] Chen Xiangyang, Chen Guoyi. Développement et conception de systèmes de pages Web PHP5 + MySQL [M]. Pékin : Electronic Industry Press, 2007.


merci

La fin de cette soutenance de diplôme est aussi la fin de ma vie universitaire. Je tiens ici à exprimer mes sincères remerciements aux professeurs qui m'ont inlassablement enseigné ces dernières années, ainsi qu'aux élèves qui m'ont accompagné tout au long de ces merveilleuses années. Sur mon chemin de croissance, vous avez été accompagné par le vent et la pluie. La réussite de cet article est due à mes superviseurs. Sans leurs conseils, il me serait difficile de terminer avec succès le dernier devoir dans cette université. En même temps, je remercie sincèrement tous les enseignants qui ont révisé les articles et participé à la défense dans leur emploi du temps chargé.

Merci!

 

Faites attention au blogueur, le prochain article est plus excitant

Un clic trois en un ! ! !

Un clic trois en un ! ! !

Un clic trois en un ! ! !
Merci pour le triple en un clic ! ! !

Je suppose que tu aimes

Origine blog.csdn.net/m0_56073435/article/details/131478315
conseillé
Classement