Conception et réalisation d'un système de partage d'images basé sur PHP

Conception et réalisation d'un système de partage d'images basé sur PHP

Résumé
Ce système part principalement du concept d'informatisation dans la société moderne, et à travers l'analyse, la recherche et l'arrangement des matériaux existants, il détermine la faisabilité, l'urgence et la nécessité de développer un système de partage d'images basé sur le mode WEB2.0 existant. A ce stade, le système domestique de partage d'images basé sur le WEB2.0 vient de démarrer, et il reste encore beaucoup de marge d'intervention sur ce marché. Parmi eux, dans les pays étrangers, il existe déjà des plateformes de partage d'images très matures. À l'ère du WEB2.0, les informations ont changé d'une version serveur à une version utilisateur. C'est-à-dire qu'à partir du mode précédent de collecte et de publication de ressources via le serveur jusqu'à la fourniture de ressources via l'utilisateur, le serveur organise, classe et publie le mode. Et ce modèle est beaucoup plus attrayant pour les utilisateurs d'un site Web que le modèle traditionnel.
Cet article vise à expliquer en détail comment utiliser le modèle de développement MVC dans un environnement basé sur le framework PHP et Ajax pour compléter un système de téléchargement et de gestion d'images entièrement fonctionnel, et pour réaliser l'ajout, la suppression et la classification pratiques des images. est principalement Réaliser la gestion des utilisateurs et de leurs photos ; réaliser la modification des paramètres personnels pertinents. De plus, le système doit disposer d'un affichage de progression plus intuitif pour le téléchargement d'images, et la présentation des images utilise un effet d'affichage plus convivial.

Mots-clés : modèle-vue-contrôleur ; partage d'images ; Ajax

Abstrait
Ce système embarque principalement l'informatisation de la société moderne. Sur la base de l'analyse des informations d'existence, de la recherche et de la réorganisation, nous avons considéré l'urgence et la nécessité de mettre en œuvre un formulaire de commande développant un système de partage d'images basé sur WEB2.0. Au stade actuel, le système de partage d'images national basé sur WEB2.0 est juste en cours. Il y a beaucoup à faire dans ce domaine, en même temps, un système de partage d'images mature à bord existe déjà depuis longtemps. Dans la période WEB2.0, le style de publication d'informations est passé de la publication de serveur à la publication d'utilisateurs. En d'autres termes, il est passé d'informations de publication de serveur à des informations fournissant des utilisateurs, et dans ce cas, les serveurs n'ont besoin que de coordonner, trier et republier. De plus, dans ce modèle, un site Web est beaucoup plus convivial pour l'utilisateur.
Cette thèse décrit principalement comment développer un système de téléchargement et de gestion d'images entièrement fonctionnel. Ce système peut facilement ajouter, supprimer des images et des catégories. Dans la gestion des coulisses, il s'agit principalement de mettre en œuvre la gestion des utilisateurs et des images et de modifier les informations des utilisateurs. Dans ce système, le téléchargement d'images s'affiche de manière intuitive et l'image doit être affichée de manière conviviale.

Mots clés : MVC ; Partage d'images ; Ajax

Table des matières
Le nombre total de pages du document : 36 pages

1 Introduction 1
2 Vue d'ensemble du système 1
3 Conception générale 2
3.1 Analyse des exigences du système 2
3.1.1 Méthodes de téléchargement d'images 2
3.1.2 Formats d'image de téléchargement par l'utilisateur 2
3.1.3 Classification 2
3.1.4 Gestion des images 2
3.1.5 Affichage des images 3
3.1. 6 Fonction d'interrogation 3
3.1.7 Gestion des utilisateurs 3
3.2 Structure générale 3
3.3 Processus du système de partage d'images 3
3.4 Introduction à la fonction du module du système de partage d'images 5
3.4.1 Division du sous-module de l'interface utilisateur 5
3.4.2 Division du sous-module d'arrière-plan de gestion 7
4 Schéma Sélection 8
4.1 Comparaison des schémas 8
4.1.1 Comparaison des modes système 8
4.1.2 Comparaison des langages de programme 8
4.2 Sélection des schémas 9
4.3 Plate-forme technologique du système 9
4.4 Construction de l'environnement de développement 9
5 Technologie de mise en œuvre et structure des données 12
5.1 Conception de l'architecture du système 12
5.1.1 Réseau architecture 12
5.1.2 Serveur logique système 12
5.2 Flux de traitement du système 13
5.2.1 Architecture Smarttemplate basée sur MVC 13
5.2.2 Présentation technique de SmartTemplate 14
5.2.3 Relation entre SmartTemplate et le modèle html 15
5.3 Conception de la base de données 18
5.3.1 Conception de la structure de la table de la base de données principale pour les utilisateurs frontaux 21
5.3.2 Conception de la structure de la table de la base de données d'arrière-plan de gestion 22
6 Solutions aux problèmes particuliers 24
6.1 Problème de code brouillé 24
6.2 Dynamique affichage de la progression du téléchargement 24
6.3 Problèmes avec le téléchargement aléatoire d'images par lots 25
7 Test des résultats et analyse des performances
29 7.1 Combinaison de modules de fonctionnement 29 7.2
Interface de connexion au système 29
7.3 Exemple d'application de module 30
7.4 Problèmes existants dans le système 33
7.4.1 Fuite de paramètres d'URL du lot connexion de téléchargement 33
7.4.2 Le script de rappel dans le code source de la page de téléchargement en masse laisse échapper l'ID utilisateur 33
7.4.3 Impossible de revenir normalement 33
7.5 Suggestions d'amélioration 34
Conclusion 34
Références 34
Remerciements 35
Déclaration 36

1 Introduction
Avec la montée en puissance de WEB2.0 il y a quelque temps, toute la direction de développement de BS et le mode de fonctionnement WEB ont progressivement commencé à changer dans une autre direction. Avec la réutilisation d'AJAX, l'expérience WEB de l'utilisateur est grandement améliorée. Sa méthode de rafraîchissement partiel de la page réduit considérablement le temps passé par les utilisateurs à visiter la page. Et cela permet aux utilisateurs de participer aux fournisseurs de contenu tout en améliorant leur expérience. Dans le système WEB traditionnel, il y a toujours un administrateur de site Web ou une personne similaire pour collecter les ressources nécessaires au site Web et publier ces ressources.Cependant, avec l'essor du WEB2.0, le partage et l'expérience occupent progressivement une place importante dans le développement de le site Web. En conséquence, le site Web est progressivement passé du mode de publication centralisé précédent à un mode dans lequel les utilisateurs fournissent des ressources et le site Web les organise et les publie. Les plus courants sont BLOG et WIKI. Parmi eux, le partage d'images est une direction à fort potentiel de développement. Tout d'abord, le nombre de personnes possédant des appareils photo numériques en Chine augmente à un rythme régulier, mais actuellement, peu de sites Web ont remarqué le potentiel de ce marché. Lorsque les utilisateurs prennent une photo, ils recherchent un endroit où ils peuvent facilement partager la photo qu'ils ont prise. Cependant, les sites Web traditionnels d'aujourd'hui sont soit trop compliqués à utiliser, soit peu pratiques à partager. Par exemple, 163 ne prend pas en charge les images connectées en externe. Bien que cela puisse évidemment réduire la charge sur le serveur, cela réduit considérablement l'expérience utilisateur. Imaginez, lorsqu'un utilisateur veut montrer directement à un ami une certaine image dans l'un de ses albums, il doit également connecter son album à l'autre partie, puis l'autre partie ne peut la voir qu'après avoir trouvé cette image dans l'album. De plus, les photos sur 163 ne sont pas spécialement organisées et classées pour les photos numériques, c'est-à-dire qu'elles sont nombreuses mais peu précises. conduit à une utilisation inefficace des ressources. Actuellement, il n'y a pas beaucoup de sites qui émergent dans ce domaine en Chine, et il en existe des relativement connus à l'étranger, tels que : Flikre : www.flikre.com, Bababian : www.bababian.com, etc. Parmi eux, Baba Change est essentiellement calqué sur la révision de FLIKRE. Jusqu'à présent, le marché dispose encore d'un espace d'intervention relativement important.
Du point de vue actuel, le principal problème que le système de partage d'images doit résoudre maintenant est de savoir comment permettre aux utilisateurs de télécharger des images plus rapidement. Comment afficher les images sous une forme plus rapide. Parmi eux, les principaux problèmes affectant le développement du système sont les suivants : 1. Concurrence sur le marché, 2. Convivialité et stabilité du logiciel, 3. Limite de temps. Puisqu'une partie du marché a déjà été saisie par les premiers concurrents, il est nécessaire de développer un système de site Web utilisable dans les plus brefs délais. Le système est initialement divisé en deux parties, l'une est l'extrémité WEB en tant qu'interface WEB, et l'autre est un outil client pour le téléchargement à distance d'images locales via le mode C/S.
2. Vue d'ensemble du système
Pour réaliser le partage d'images au moyen de la soumission de l'utilisateur, la première chose est d'améliorer l'efficacité du téléchargement de l'utilisateur, et si l'expérience de téléchargement de l'utilisateur et la navigation de l'utilisateur sont pratiques. Un site Web général de partage d'images télécharge des fichiers via une seule page de téléchargement, et le formulaire d'affichage est unique, ce qui n'est pas pratique à utiliser et à visualiser pour les utilisateurs. Sous WEB2.0, un grand nombre de contrôles pour améliorer l'expérience utilisateur sont nés, rendant le partage d'images plus beau et plus humanisé que les formes traditionnelles.
Et en plus d'avoir besoin d'une bonne expérience utilisateur, il a également besoin d'un bon support système. Pas seulement un programme, mais une plate-forme commerciale et un processus de développement qui peuvent être continuellement étendus en fonction des besoins des utilisateurs. Ce projet de fin d'études est écrit selon les besoins et les caractéristiques du WEB2.0 actuel, en utilisant le framework relativement mature.
L'application de l'interface de cadre mature dans WEB2.0 peut considérablement accélérer le développement et la conception des applications actuelles à haute disponibilité. Et être capable de concevoir une application du point de vue de l'utilisateur. Réduisez considérablement la pression et le risque de conception. Le système peut télécharger et gérer les photos des utilisateurs de différentes manières. Et il utilise le cadre visuel le plus populaire pour réaliser la présentation des images, ce qui améliore considérablement l'expérience utilisateur.
3 Conception globale
3.1 Analyse des exigences du système
Trois aspects doivent être pris en compte dans le partage d'images : 1. Comment les utilisateurs doivent télécharger des images ; 2. Quels types d'images les utilisateurs peuvent télécharger ; 3. Comment afficher ces images. En outre, une organisation et des statistiques simples des images doivent également être réalisées.
Par conséquent, les utilisateurs qui téléchargent des images et les utilisateurs qui parcourent les images sont les principales cibles des services système, et les exigences suivantes sont mises en avant pour les fonctions du système : 3.1.1
Façons de prendre en charge le téléchargement d'images
Le téléchargement d'images doit prendre en charge le mode cadeau. Et il peut être traité facilement.
De plus, il est préférable de prendre en charge le mode client. Et il est nécessaire de mettre en œuvre le téléchargement par lots d'images sur le WEB sans que l'utilisateur n'installe le client.
3.1.2 Formats pris en charge pour le téléchargement d'images par les utilisateurs
L'un est JPEG et l'autre est PNG La plupart des appareils photo numériques utilisent désormais le format JPEG pour enregistrer les images, mais compte tenu des problèmes de droits d'auteur, la prise en charge des images au format PNG devrait également être fournie.
3.1.3 Classification Une fois
l'image téléchargée, l'image sera automatiquement classée en fonction de l'étiquette et de la tâche de l'image en fonction de l'étiquette de l'image et de la tâche où se trouve l'image.Et supprimer, ajouter et supprimer des tâches d' image , ajouter et supprimer des balises d'image. Dans le même temps, dans la gestion des images, les utilisateurs peuvent visualiser leurs images téléchargées de manière plus intuitive. 3.1.5 Présentation de l'image Elle doit pouvoir être affichée de manière intuitive pour que les utilisateurs finaux puissent la voir. 3.1.6 Fonction de requête Les utilisateurs doivent connaître le nombre total d'images sous leurs propres catégories et les images sous les tâches, et parce que les utilisateurs peuvent avoir besoin de faire des statistiques sur leurs propres catégories et images sous les tâches selon différentes situations, le système devrait donc ont également une fonction de requête de combinaison multi-conditions pour la classification, la tâche et l'étiquette. 3.1.7 Étant donné que le système est un système multi-utilisateurs, l'arrière-plan du système doit également comporter des fonctions de gestion des utilisateurs. La gestion des utilisateurs comprend les fonctions suivantes : ajout, suppression et requête d'utilisateurs. Et afficher et supprimer des images d'utilisateurs ; afficher et supprimer des catégories d'utilisateurs ; afficher et supprimer des étiquettes d'utilisateurs.









3.2 Structure globale
Le schéma de structure des principaux modules fonctionnels du système de partage d'images est le suivant :
Figure 3-1 Schéma des modules fonctionnels du système de partage d'images Le
système de partage d'images comprend deux parties : l'interface utilisateur et la gestion de l'arrière-plan. est une fonction disponible pour les administrateurs.
3.3 Processus du système de partage d'images
L'idée de conception du processus du système de partage d'images est la suivante :
1. Les utilisateurs (se réfèrent ici principalement aux utilisateurs finaux qui utilisent directement le système, à l'exclusion des utilisateurs avec des fonctions de gestion en arrière-plan) sélectionnent les images appropriées en fonction à leurs propres formats d'image et les télécharger vers le côté traitement du système.
2. Une fois que le système a reçu l'image téléchargée par l'utilisateur, il doit juger si le fichier téléchargé par l'utilisateur répond aux exigences du système en fonction du type d'image actuellement autorisé à être téléchargé par le système, déterminer l'étiquette attribuée par l'utilisateur à l'image téléchargée et basée sur les paramètres de l'image téléchargée Classer les images et changer le format. L'image à ce moment n'est pas la dernière image stockée dans le système. L'image est stockée dans un format qui a été coupé et modifié en fonction des paramètres système. (Ceci est fait pour unifier le format d'image, faciliter le traitement de sortie et unifier l'interface de traitement lorsque l'image est stockée.) 3.
Une fois l'image ajoutée avec succès, l'image téléchargée est directement mise en cache dans le dossier où se trouve l'utilisateur, et organisés en fonction de la date de téléchargement, et en même temps enregistrer une copie de l'image dans la base de données.
4. Une fois les images stockées, les images téléchargées seront affichées au premier plan en même temps, et les images seront ajoutées à l'étiquette définie, et les images seront affichées par lots en fonction des tâches.
5. Les utilisateurs peuvent gérer toutes les images actuelles dans la console de gestion des utilisateurs.Lorsque les utilisateurs suppriment des images, ils peuvent supprimer des images par image unique, catégorie, étiquette et tâche.
6. Les images qui ont été téléchargées peuvent être directement fournies aux utilisateurs tiers pour être visualisées via le lien permettant aux utilisateurs de visualiser les images. Ou envoyez-le directement à un utilisateur tiers pour qu'il le visualise via la connexion générée par le système.
7. L'administrateur d'arrière-plan peut ajouter et modifier directement les utilisateurs de gestion via les fonctions fournies par le système. Lorsqu'il est nécessaire d'attribuer une fonction spécifique à un utilisateur, l'autorisation de l'utilisateur peut être modifiée en modifiant les paramètres détaillés de l'utilisateur en arrière-plan.
8. Lorsque l'administrateur doit supprimer l'image téléchargée d'un utilisateur, il peut également supprimer l'image, la classification, l'étiquette et la tâche de l'utilisateur via l'interface de gestion d'image unifiée.
L'organigramme du système de partage d'images est le suivant :

Figure 3-2 Organigramme du système de partage d'images
3.4 Présentation des fonctions du module du système de partage d'images Le
système de partage d'images complète principalement les fonctions d'ajout et de suppression d'images et d'ajout et de suppression de balises d'images. Ainsi que la gestion de plusieurs utilisateurs et la gestion des images d'utilisateurs en arrière-plan. Ce qui suit est la division des sous-modules et l'introduction de la fonction de chaque module.
3.4.1 Division des sous-modules de l'interface utilisateur

Figure 3-3 Schéma de la structure du sous-module de l'interface utilisateur

Sous-module de l'interface utilisateur - modification du mot de passe
La modification du mot de passe, dans le cadre du sous-module de l'interface utilisateur, complète principalement le travail de modification du mot de passe de l'utilisateur. Le processus d'exécution est le suivant : une fois que l'utilisateur s'est connecté à l'interface principale, cliquez sur la modification du mot de passe dans la barre de navigation et accédez à l'interface de modification du mot de passe de l'utilisateur. Entrez le mot de passe actuellement utilisé et le mot de passe modifié et répétez le mot de passe modifié une fois, et enfin remplissez le code de vérification pour cette opération (pour la commodité de l'utilisateur, le code de vérification a été automatiquement rempli en arrière-plan). Une fois les opérations ci-dessus terminées, l'utilisateur clique sur Soumettre pour modifier le mot de passe.
Lorsque l'utilisateur soumet le contenu modifié, le code de la page vérifie d'abord si les mots de passe modifiés deux fois par l'utilisateur sont cohérents. S'ils sont incohérents, l'utilisateur sera averti que les mots de passe sont incohérents. Lorsque la vérification est réussie, les informations sont soumises au système d'arrière-plan. Le système d'arrière-plan juge d'abord si les codes de vérification sont identiques, et s'ils sont identiques, il comparera si le hachage de mot de passe actuel entré par l'utilisateur est cohérent avec le hachage de mot de passe dans la base de données. Lorsque les deux hachages sont cohérents, le système d'arrière-plan modifie le mot de passe actuel de l'utilisateur en mot de passe modifié de l'utilisateur. Si l'utilisateur n'entre pas le code de vérification ou si le code de vérification est erroné, le hachage du mot de passe de l'utilisateur actuel ne peut pas correspondre au hachage du mot de passe dans la base de données et le système affichera une invite d'erreur correspondante. Et demandez à l'utilisateur de le remplir à nouveau.
Sous-module d'interface utilisateur - télécharger des images
Pour télécharger des images, une fois que l'utilisateur s'est connecté au système, cliquez sur Télécharger une image dans la barre de navigation pour accéder à la page de fonction de téléchargement d'image. À ce stade, l'utilisateur peut sélectionner une seule image à télécharger ou télécharger directement plusieurs images par lots en fonction de ses besoins. 1) Télécharger une seule page : ce téléchargement nécessite que l'utilisateur filtre les images qui ne répondent pas aux exigences du système. Le système actuel ne prend en charge que les formats JPEG et PNG. Si le format d'image ne répond pas aux exigences, le système affichera un message d'erreur. Lorsque le format de l'image sélectionné par l'utilisateur est correct et clique sur "Démarrer le téléchargement", le système affiche une boîte de dialogue pour définir les informations sur l'image, demandant à l'utilisateur de sélectionner le type d'image, de définir l'étiquette de l'image et le nom de l'image et d'autres informations. Lorsque tout est configuré, cliquez sur "Soumettre pour téléchargement", et la photo de l'utilisateur commencera à être téléchargée sur le système. 2) Téléchargez plusieurs images directement par lots : l'utilisateur clique sur l'onglet "Téléchargement par lots" et le système indique que cette fonction nécessite le support d'exécution JAVA. Nom, description, classification, balises et autres informations. Ensuite, vous serez transféré vers l'interface de téléchargement par lots. Les étapes de fonctionnement spécifiques sont expliquées en détail sur la page de téléchargement par lots.
Sous-module de l'interface utilisateur—Gérer les images
Pour gérer les images, une fois que l'utilisateur s'est connecté au système, cliquez sur Télécharger des images dans la barre de navigation pour accéder à la page de gestion des images.
La page est divisée en parties supérieure, centrale et inférieure, qui sont la liste des images d'utilisateurs classées selon les tâches, les catégories et les balises. Dans cette liste, les utilisateurs peuvent opérer sur des images par lots selon des tâches, des catégories ou des étiquettes. Dans le même temps, dans cette page de fonction, vous pouvez également supprimer des catégories, des tâches et des étiquettes.
3.4.2 Division du sous-module d'arrière-plan de gestion

Figure 3-4 Schéma structurel du sous-module d'arrière-plan de gestion
Sous-module d'arrière-plan de gestion -
gestion du système En tant que partie importante de la gestion d'arrière-plan, la gestion du système est principalement utilisée pour définir les variables d'environnement du système actuel et certaines informations descriptives. Ces paramètres sont principalement déterminés lorsque l'administrateur d'arrière-plan entretient le système et initialise le système. Une fois le paramétrage terminé, s'il ne s'agit pas d'un problème de performances du système ou d'une migration du système, les informations définies peuvent être conservées.
Cette fonction permet au système de développer plus facilement les variables d'environnement système. Il est commode de modifier les paramètres généraux du système à un stade ultérieur et de faciliter la simple migration du système, comme le changement du nom de domaine du système ou la modification d'autres informations d'environnement du système.
Chaque paramètre du système est enregistré dans la table d'informations système, et la modification de ce module sera renvoyée à la table d'informations système.
Sous-module de gestion en arrière-plan—gestion de l'administrateur
La gestion de l'administrateur est principalement utilisée pour définir les utilisateurs qui peuvent utiliser les fonctions d'arrière-plan du système actuel et définir les fonctions que ces utilisateurs peuvent utiliser en arrière-plan. Cette fonction rend la gestion de l'arrière-plan plus flexible et permet de gérer facilement les autorisations. De plus, il est possible de mettre en place des managers spécialisés dans le fonctionnement d'une certaine fonction, ce qui simplifie la complexité de la gestion.
Cette fonction offre un moyen pratique pour le système d'étendre l'équipe de gestion du système. Afin de faciliter la gestion d'une certaine fonction pour répondre à certaines exigences dans les étapes intermédiaires et tardives, la fonction peut être confiée à une personne dédiée.
Dans le même temps, ce module fournit également la fonction de modification des informations de l'administrateur. Il est pratique pour l'administrateur de basculer entre diverses fonctions et de modifier les autorisations existantes.
Sous-module d'arrière-plan de gestion—gestion des utilisateurs
La gestion des utilisateurs est utilisée pour gérer les utilisateurs qui se sont enregistrés normalement dans le système actuel et utilisent la fonction de partage d'images de ce système. Pour enregistrer le système, les utilisateurs peuvent non seulement s'enregistrer sur la page d'enregistrement fournie par le premier plan, mais peuvent également être ajoutés en arrière-plan par un administrateur d'arrière-plan disposant d'une autorité de gestion des utilisateurs. En plus de permettre aux utilisateurs de modifier leurs propres informations sur leur propre panneau de gestion, les administrateurs peuvent modifier les informations des utilisateurs grâce à la fonction d'édition des utilisateurs de ce module. Dans le même temps, les utilisateurs avec des noms d'utilisateur spécifiques peuvent être localisés grâce à la fonction de recherche, de sorte que les utilisateurs qui doivent être opérés peuvent être trouvés plus rapidement.
Gérer le sous-module d'arrière-plan—gestion des images
La gestion des images est utilisée pour gérer les images téléchargées par les utilisateurs qui se sont enregistrés normalement dans le système actuel et utilisent la fonction de partage d'images de ce système.
Dans ce module, l'administrateur d'arrière-plan peut gérer les images téléchargées par l'utilisateur en fonction d'un seul utilisateur. L'interface de gestion des images utilisateur est la même que l'interface de gestion de l'interface utilisateur. De plus, comme la gestion des utilisateurs, l'administrateur en arrière-plan peut également localiser rapidement un utilisateur en recherchant un nom d'utilisateur spécifique et gérer les images téléchargées par lui.
Pendant le processus de téléchargement d'images par les utilisateurs, les images téléchargées par les utilisateurs peuvent ne pas être classées ou étiquetées en raison d'une mauvaise opération de l'utilisateur. Dans ce cas, l'administrateur peut utiliser la fonction de nettoyage d'image pour nettoyer ces images. Évitez l'instabilité du système ou les erreurs de données statistiques causées par la redondance et des données incorrectes.
4 Sélection du schéma
4.1 Comparaison des schémas
4.1.1 Comparaison des modes système
Actuellement, les modes de développement incluent principalement la structure C/S et la structure B/S :
la structure C/S, c'est-à-dire la structure Client/Serveur (client/serveur), est une système logiciel bien connu La structure du système réduit la surcharge de communication du système en attribuant raisonnablement des tâches au client et au serveur, et peut tirer pleinement parti des avantages de l'environnement matériel aux deux extrémités.
La structure B/S, c'est-à-dire la structure Navigateur/Serveur (navigateur/serveur), est un changement ou une structure améliorée de la structure C/S avec l'essor de la technologie Internet. Dans cette structure, l'interface utilisateur est entièrement réalisée via le navigateur WWW, une partie de la logique métier est réalisée au niveau du front-end, mais la logique métier principale est réalisée côté serveur. La structure B/S utilise la technologie de navigateur de plus en plus mature et populaire pour réaliser des fonctions puissantes qui nécessitaient à l'origine un logiciel spécial complexe, et permet d'économiser des coûts de développement. Il s'agit d'une toute nouvelle technologie de construction de système logiciel.
4.1.2 Comparaison des langages de programmation
Les langages de programmation actuellement populaires sont ASP, JSP et PHP :
Le nom complet d'ASP est Active Server Pages, qui est un environnement de développement côté serveur WEB, qui peut générer et exécuter des applications de service WEB dynamiques, interactives et hautes performances. ASP utilise le langage de script VBScript (script Java) comme son propre langage de développement.
JSP est une nouvelle génération de langage de développement de sites Web, Java Server Page, lancée par Sun. Avec le support de Serverlet et JavaBean, JSP peut compléter de puissants programmes de site.
PHP, ou "PHP : Hypertext Preprocessor", est un langage de script open source polyvalent largement utilisé, particulièrement adapté au développement Web et pouvant être intégré dans HTML.
Tous trois offrent la possibilité de mélanger certains codes de programme dans des codes HTML et de faire en sorte que le moteur de langage interprète et exécute les codes de programme. Mais le code JSP est compilé dans une Servlet et interprété et exécuté par la machine virtuelle Java.Cette opération de compilation ne se produit que lorsque la page JSP est demandée pour la première fois. Dans l'environnement PHP, ASP et JSP, le code HTML est principalement responsable de la description du style d'affichage des informations, tandis que le code du programme est utilisé pour décrire la logique de traitement. Les pages HTML ordinaires ne dépendent que du serveur Web, tandis que les pages PHP, ASP et JSP nécessitent des moteurs de langage supplémentaires pour analyser et exécuter les codes de programme. Le résultat d'exécution du code du programme est réintégré dans le code HTML, puis envoyé au navigateur ensemble. PHP, ASP et JSP sont des technologies orientées serveur Web, et les navigateurs clients ne nécessitent aucune prise en charge logicielle supplémentaire.
Cependant, comparé à ASP et JSP, PHP présente les caractéristiques d'un déploiement facile, d'un développement rapide et d'une utilisation flexible. Il est plus adapté au développement rapide de systèmes de petite et moyenne taille.Comparé à JSP, PHP a un traitement moins compliqué, de sorte que sa vitesse d'exécution est meilleure que JSP dans une certaine mesure.
4.2 Sélection du programme
En résumé, les options de développement du système sont les suivantes :
Ce système de partage d'images utilise PHP et JavaScript comme principal langage de développement de programme, adopte le cadre de smarttemplate + modèle de gestion d'arrière-plan indépendant et la base de données mysql. Adoptez la structure B/S. L'interface du système est belle et riche en contenu, ce qui rend très bien compte de l'interaction avec les utilisateurs.
4.3 Plate-forme technologique système
Environnement de développement : WindowsServer2013 Datacenter Edition SP1, MySql 4.2, Apache2 ;
outils de développement : ZendStudio, DreamweaverMX, PhotoShop, Notepad ;
architecture système : PHP+Smarttemplate+JavaScript+MySql4.2 ;
langage de développement : PHP5.
4.4 Configuration de l'environnement de développement
 Configurez PHP 5
pour décompresser les fichiers téléchargés depuis Internet, puis effectuez les opérations suivantes :
ouvrez le fichier php.ini et modifiez le contenu suivant :
max_execution_time = 600 ;
max_input_time = 600 ;
memory_limit = 16M
post_max_size = 20M
file_uploads = On
upload_max_filesize = 20M
default_socket_timeout =
plus de 60 options pour éviter le délai de traitement PHP dû aux utilisateurs qui téléchargent des images trop volumineuses.
register_globals = Désactivé
magic_quotes_gpc = Activé
Les options ci-dessus visent à empêcher les utilisateurs de soumettre de manière malveillante.
extension_dir = "D:\PHP\PHP\ext"
Les options ci-dessus sont utilisées pour définir le dossier où se trouve l'extension de PHP.
extension=php_mbstring.dll
Cette extension est utilisée pour prendre en charge le jeu de caractères long
extension=php_exif.dll
Cette extension est utilisée pour prendre en charge PHP pour lire les informations EXIF ​​​​des images.
extension=php_gd2.dll
Cette extension est utilisée par PHP pour exploiter les images et générer des codes de vérification.
extension=php_mysql.dll
extension=php_mysqli.dll Les deux éléments ci-dessus sont utilisés pour la prise en charge de PHP pour MYSQL
extension=php_sockets.dll
Cette extension est utilisée pour la prise en charge de PHP pour SOCKET, principalement utilisée pour prendre en charge la bibliothèque UPU qui affiche la progression du téléchargement pendant le téléchargement
Apache 2.0
Décompressez le fichier téléchargé depuis le réseau, puis effectuez les opérations suivantes :
1) Modifiez le fichier de configuration d'Apache :
entrez le répertoire conf sous le répertoire racine du décompresseur. Ouvrez le fichier httpd.conf et modifiez le contenu suivant :
Définissez le délai d'exécution : Timeout 300
Définissez le port d'écoute 80 : Listen 80
Activez APACHE pour supporter PHP :
LoadModule php5_module d:/php/php/php5apache2.dll
Activez la fonction de réécriture d'URL : LoadModule rewrite_module modules/mod_rewrite.so
Définissez le répertoire racine du service WEB : DocumentRoot "E:\web"
Définissez la portée effective de la réécriture d'URL :
Options FollowSymLinks
AllowOverride ALL

Définissez la prise en charge du chinois :
AddLanguage zh-CN . zh-cn
AddLanguage zh-TW .zh-tw
AddLanguage zh-cn .cn
Définir la langue par défaut
AddDefaultCharset GB2312
Définir la page d'index par défaut :
DirectoryIndex index.html index.html.var index.htm index.php
Définir APACHE pour analyser les fichiers PHP :
AddType application/x-httpd-php .php
2) Installez APACHE en tant que service :
entrez la ligne de commande, accédez au dossier BIN sous le dossier APACHE et exécutez la commande suivante :
apache -k install
3) Démarrez le serveur APACHE
Exécutez le commande suivante :
net start apache2
installation de mysql
1) Décompressez le MYSQL téléchargé sur Internet, puis modifiez son fichier de configuration comme suit :

default- character -set=utf8 //Parce que l'ensemble du système utilise UTF-8, la base de données est également encodée de manière uniforme
. .
2) Exécutez MySQLInstanceConfig.exe pour initialiser MYSQL.
3) Installez le service MYSQL
Exécutez mysql d-nt.exe –install pour exécuter le processus MYSQL en tant que service système.
4) Utilisez MYSQLADMIN pour gérer les administrateurs MYSQL
Configuration PHPMYADMIN
Trouvez le fichier de configuration de phpmysdmin et modifiez les endroits suivants.
cfg ['Serveurs'] [cfg['Serveurs'][c f g [ Serveurs____ ][i]['host'] = 'localhost';//Set to localhost (uniquement pour le débogage)
cfg [ ′ Servers ′ ] [ cfg['Servers'][c f g [ Serveurs____ ][i]['port'] = '3306';//port MySQL
cfg ['Serveurs'] [cfg['Serveurs'][c f g [ Serveurs____ ][i]['connect_type'] = 'tcp';//Définir la manière de se connecter à MySQL
cfg ['Servers'] [cfg['Servers'][c f g [ Serveurs____ ][i]['compress'] = FALSE;//Utiliser le protocole de compression pour la transmission
cfg [ ′ Servers ′ ] [ cfg['Servers'][c f g [ Serveurs____ ][i]['auth_type'] = 'config';//Si le mode d'installation PHP est Apache, http et cookie peuvent être utilisés ; si le mode d'installation PHP est CGI, cookie peut être utilisé ; la valeur par défaut est config cfg [ ′ Serveurs
′ ] [cfg['Serveurs'][c f g [ Serveurs____ ][i]['user'] = 'root';//utilisateur de connexion MySQL
cfg ['Servers'] [cfg['Servers'][c f g [ Serveurs____ ][i]['password'] = '';//Mot de passe de connexion MySQL
5 Technologie de mise en œuvre et structure des données
5.1 Conception de l'architecture système
5.1.1 Architecture réseau
L'ensemble de l'architecture réseau du système est le suivant :

Figure 5-1 Diagramme d'architecture réseau du système de partage d'images
5.1.2 Serveur logique du système
Logiquement, les serveurs utilisés peuvent être divisés en trois types, et chaque type de serveur a des fonctions différentes :
Serveur Web : Ce serveur effectue la publication Web et fournit l'interface d'exploitation (page Web) du travail professionnel des utilisateurs ordinaires transmet également les paramètres de fonctionnement de l'utilisateur au serveur de base de données via la requête de base de données générée après le traitement, et renvoie en même temps les données générées par le résultat après analyse et recodage à l'utilisateur via la page Web l'extrémité avant. Dans le même temps, le serveur WEB est également responsable de l'analyse des demandes des utilisateurs et de la génération dynamique de pages Web que les utilisateurs peuvent voir.
Serveur de base de données : le système de base de données MySQL est installé sur ce serveur et la conception du système de base de données est principalement destinée à ce serveur. Toutes les données d'origine et autres données structurelles utilisées dans le système sont stockées ici, et tous les ajouts, modifications et suppressions d'informations par les utilisateurs et les gestionnaires seront éventuellement reflétés sur le serveur. Dans le même temps, le serveur doit traiter la demande de requête transmise via le serveur WEB et renvoyer le résultat de la requête au serveur d'application.
5.2 Flux de traitement du système
Ce système adopte le mode B/S et la structure Smartemplate.Lorsque les utilisateurs utilisent ce système, ils n'ont qu'à installer un navigateur Internet et n'ont pas besoin d'installer d'autre logiciel. Le flux de traitement du système est illustré dans la figure ci-dessous :

Figure 5-2 Flux de traitement du système
5.2.1 Architecture Smartemplate basée sur MVC
Ce système est implémenté à l'aide d'une architecture basée sur MVC. Le modèle est composé de scripts d'analyse PHP qui implémentent la logique métier, le contrôleur est réalisé par SmartTemplate et la vue est composée d'un ensemble de fichiers HTML contenant des balises au format SmartTemplate. La figure ci-dessous décrit brièvement le flux de travail.

Figure 5-3 Workflow en réponse aux demandes des utilisateurs
MVC est un modèle de conception qui impose la séparation de l'entrée, du traitement et de la sortie de l'application. MVC divise l'application en trois modules principaux : modèle, vue et contrôleur. La relation entre eux est illustrée dans la figure suivante :

Figure 5-4 Modèle de conception MVC
5.2.2 Présentation de la technologie SmartTemplate
Dans le processus de création de ce système, un grand nombre de technologies SmartTemplate sont utilisées.Maintenant, j'exprime ma compréhension de la technologie SmartTemplate comme suit :
SmartTemplate est un moteur de modèle qui prend en charge Applications WEB à grande échelle Une bibliothèque PHP qui est appelée et exécutée côté serveur. SmartTemplate lui-même est indépendant du protocole.
Pour comprendre SmartTemplate, vous devez d'abord comprendre le fonctionnement des moteurs de modèles.
Fonctionnement des moteurs de modèles normaux : votre script PHP spécifie un modèle HTML, spécifie un contenu dynamique et l'affiche. L'analyseur de modèle remplace tous les espaces réservés du modèle par le contenu attribué, qui est ensuite affiché à l'utilisateur.
SmartTemplate fonctionne comme la compilation de modèles. Il convertit les modèles en scripts PHP exécutables et les enregistre pour une réutilisation ultérieure. Lorsqu'un nouveau modèle est utilisé pour la première fois, tous les espaces réservés du modèle sont remplacés par de simples éléments de code PHP qui génèrent le contenu spécifié. Par exemple, l'extrait de modèle

{TITRE}

, sera converti en

<?php echo $TITRE ; ?>

. Si vous affectez le contenu à la bonne variable, il n'y aura plus besoin d'analyser le modèle. Tout ce que le programme doit faire est d'inclure et d'exécuter le modèle compilé lui-même. Cette méthode de mise en cache peut réduire considérablement le temps d'exécution du moteur de modèle.
5.2.3 Relation entre SmartTemplate et le modèle html
Afin d'améliorer la portabilité du système et de permettre au système de fonctionner sous les environnements Windows, NT, UNIX et Linux sans modifier le code source, la technologie PHP est utilisée. Développer un système logiciel basé sur WEB, utiliser l'outil de script PHP, utiliser la bibliothèque dynamique PHP pour se connecter à la base de données d'accès, encapsuler certaines propriétés et méthodes d'objet dans la bibliothèque de classes PHP, l'interface client peut être complétée avec HTML et JavaScript, et le traitement des applications côté serveur peut être utilisé script PHP + moteur SmartTemplate à mettre en œuvre.
Le modèle html est principalement utilisé pour définir la page d'affichage finale, tandis que le script PHP est principalement utilisé pour effectuer un grand nombre de traitements logiques, et le SmartTemplate est utilisé pour encapsuler dynamiquement les données traitées dans le modèle html, et la page finale affichée est envoyé au client après avoir été analysé par PHP end. C'est-à-dire que le modèle html encapsulé et analysé est principalement utilisé pour envoyer aux utilisateurs frontaux, tandis que le script PHP répond principalement à la demande de l'utilisateur et complète le traitement logique de la demande.En même temps, il agit comme le responsable du traitement et est responsable du traitement de la réponse.
SmartTemplate lui-même n'a aucune logique de traitement métier, il récupère simplement l'objet défini par le script PHP, puis insère le contenu dynamique dans le modèle html prédéfini.
Le script PHP crée les variables et les objets nécessaires à SmartTemplate, puis décide quel modèle html traiter et envoyer à l'utilisateur en fonction du comportement de l'utilisateur.
Dans le processus de développement proprement dit, le modèle html est souvent développé en premier, puis la partie du modèle html qui doit être générée dynamiquement est remplacée par les balises prédéfinies SmartTemplate. L'avantage est qu'il exploite pleinement les capacités de performance des pages HTML, évite le manque de scripts PHP dans les performances des pages et raccourcit considérablement le cycle de développement.
Voici la conversion du modèle HTML dans le code du programme en objet de page final :
1. Tout d'abord, utilisez l'outil d'édition HTML pour développer la page HTML
… …. …. ….

Rechercher des images : 

Figure 5-5 Diagramme de la structure de conception de la
base de données du système de partage d'images table d'enregistrement de cache (hash_cache), table de vignettes (photothumbs), table d'images (photo), table de groupe d'utilisateurs (group_setting), table d'informations sur l'utilisateur (member_info), table d'enregistrement de connexion d'utilisateur (loginlog), table de classification d'image (sort_setting ), téléchargement d'utilisateur table d'album (job) et table de balises (tags_setting).
Le tableau est principalement divisé dans les sections suivantes :

Tableau relatif à l'administrateur :
Figure 5-6 Tableau relatif à l'administrateur
Tableau des paramètres système :
Figure 5-7 Tableau des paramètres système

Tableau de configuration du groupe d'utilisateurs
Figure 5-8 Tableau de configuration du groupe d'utilisateurs
Tableau d'informations sur l'image
Figure 5-9 Tableau d'informations sur l'image
Tableau de classification des albums et des étiquettes
Figure 5-10 Tableau de classification des albums et des étiquettes

5.3.1 Conception de la structure de la table principale de la base de données pour les utilisateurs frontaux
La table de l'album de téléchargement de l'utilisateur (tâche) est utilisée pour stocker les informations de base d'un lot de photos téléchargées par l'utilisateur.
Tableau 5-1 Table des tâches
Nom Type Description
job_id BIGINT( 11) numéro
Article MEDIUMTEXT Description du contenu de l'album
article_title TINYTEXT Titre de l'album
article_info TINYTEXT Album Introduction
Auteur varchar(40) Auteur
Auteur BIGINT(11) ID de l'auteur
sort_id BIGINT(11) ID de la catégorie
album_id BIGINT(11) ID de l'album
Clics mediumint(7) Clics
Réponses mediumint(7) Réponses
replies_ page mediumint(7) Numéro de page de réponse
Lastpost BIGINT(11) Dernière réponse
Lastposter varchar(30) Dernier répondeur
Lastposterid BIGINT(11) ID utilisateur de la dernière réponse
Posttime BIGINT(11) Heure de publication
Hidden int(2 ) S'il faut cacher
Isparseurl int(2 ) S'il faut citer
Ipaddress varchar(16) pour publier l'IP de l'utilisateur
La table d'informations utilisateur (member_info) est utilisée pour les informations détaillées de l'utilisateur qui télécharge l'image. Il s'agit d'une relation un-à-plusieurs avec la table d'images : Tableau 5-2 table member_info Nom Type Description Id BIGINT(
11
)
Utilisateur number
reg_time BIGINT(11) Heure d'enregistrement
Name varchar(32) Nom d'utilisateur
photo_album_name varchar(32) Nom de l'image
Blog_album_describe BLOB(100) Description
Gander char(1) Sexe
Pwd varchar(64) Mot de passe utilisateur
Gid mediumint(6) ID du groupe d'utilisateurs
E-mail varchar(64) Boîte aux lettres utilisateur
5.3 .2 Conception de la structure de la table de la base de données d'arrière-plan de gestion La table des paramètres système ( setting
) est utilisée pour stocker les informations de configuration de base du système ) Description du paramètre Valeur TEXTE Type de valeur de paramètre varchar(20) Type de paramètre







La table d'enregistrement des opérations de l'administrateur (adminlog) est utilisée pour stocker les enregistrements
des opérations de l' administrateur en arrière-plan . varchar(50) Le nom de l'opération Script varchar(255) Le script appelé par l'opération Date int(10) L'heure à laquelle l'opération a été effectuée Ipaddress varchar(16) L'adresse IP de l'administrateur qui a effectué l'opération Table d'informations sur l'administrateur ( admin_info), qui sert à stocker les informations de base de l'administrateur (afin de réduire la complexité du système, l'autorité de l'administrateur et les informations de l'administrateur sont directement écrites dans la même table, et ne sont pas divisées en Tableau 5-5 Table admin_info Nom Type Description Aid BIGINT(11) Numéro d'administrateur admin_name varchar(32) Nom d'administrateur Pwd varchar(64) Mot de passe administrateur Gid mediumint(6) ID de groupe d'administrateur (réservé) can_admin int(1) Autorisation d'effectuer l'administration du système can_user int(1) Autorisation d'effectuer la gestion des utilisateurs can_category int(1) Autorisation d'effectuer la gestion des catégories

















can_setting int(1) Autorisation d'effectuer la gestion des paramètres

6 Solutions aux problèmes particuliers Au cours
de la conception et du développement de ce système, de nombreux problèmes ont également été rencontrés.L'analyse et les solutions des problèmes les plus particuliers sont décrites comme suit : . Les caractères chinois seront brouillés lors du passage entre les pages. Si vous ajoutez des données directement à partir de la base de données, il n'y aura pas de caractères brouillés, mais si vous ajoutez des données à partir de la gestion en arrière-plan, des caractères brouillés apparaîtront sur la page d'affichage une fois l'ajout réussi. Pour ce problème, la raison est que la plate-forme de développement est sous WINDOWS et que le format d'encodage par défaut de WINDOWS est GB2312, mais l'environnement d'exploitation est l'environnement UTF-8. Pour éviter les caractères brouillés, l'encodage des caractères de l'ensemble de l'environnement de développement doit être unifié : 1 . Tout d' abord, unifiez l'encodage dans la base de données : lors de la création de la base de données et de l'interrogation de la base de données , définissez d'abord l'encodage sur UTF-8 utf8_general_ci, COLLATION_DATABASE = utf8_general_ci, COLLATION_SERVER = utf8_general_ci, AUTOCOMMIT=1" ; 2. Indiquez la norme d'encodage dans la partie HEADER du modèle HTML : 3. Déclarez l'encodage du flux de caractères utilisé dans le contenu HEADER avant la sortie PHP :
















header('Content-Type: text/html; charset=utf-8');
6.2 Affichage dynamique de la progression du téléchargement
Il y a un défaut dans le téléchargement via le formulaire, c'est-à-dire qu'il ne peut pas afficher dynamiquement combien le fichier actuel a été téléchargé . De cette manière, lorsque l'utilisateur télécharge une image relativement grande, il est très gênant pour l'utilisateur de juger du temps passé sur le téléchargement et si le navigateur expire. Solution : Après avoir cherché, j'ai trouvé une bibliothèque PHP qui génère dynamiquement la progression du téléchargement via JAVASCRIPT et la bibliothèque PHP SOCKET : UGiA PHP UPLOADER. La méthode d'utilisation de cette bibliothèque est très simple, et sa méthode d'appel est expliquée en détail ci-dessous :
Méthode d'appel :
1. Pour upu/misc/upu.js, modifiez var basePath = "/upload/upu/" ; pour être le chemin de upu par rapport au répertoire racine du site Web
2. Ajoutez-le ensuite à la page qui contient le formulaire de téléchargement

,ici


upu/misc/upu.js est le chemin de upu.js, puis ajoutez οnsubmit="return upuInit(this)" à l'étiquette 3. Utilisez POST pour obtenir les données du formulaire
dans la page traitée après le téléchargement de votre fichier 4. upu / temp C'est le répertoire de stockage pour le téléchargement des fichiers temporaires et upu / files est le répertoire de stockage des fichiers Ces deux répertoires peuvent être spécifiés dans upu.class.php. 5. < form > doit avoir l'attribut enctype = "multipart / form − data ", et l'action est la page de traitement après le téléchargement réussi du fichier, c'est-à-dire que votre < form > peut être écrit complètement selon la pensée normale , la seule différence est que vous devez ajouter onsubmit = " returnupu I nit ( this ) " 6. Une fois le téléchargement réussi, vous pouvez utiliser _POST pour obtenir les données du formulaire 4. upu/temp est le répertoire de stockage pour le téléchargement temporaire files, et upu/files est le répertoire de stockage des fichiers. Deux répertoires peuvent être spécifiés dans upu.class.php. 5. Il doit y avoir un attribut de enctype="multipart/form-data" dans le <form>, et l'action est la page de traitement après que le fichier est téléchargé avec succès, ce qui signifie que votre <form> peut être écrit complètement selon la pensée normale, la seule différence est que vous devez ajouter οnsubmit="return upuInit(this)" 6. Après avoir téléchargé avec succès, vous pouvez utiliserPOST pour obtenir les données du formulaire 4. u p u / t e m p est le répertoire de stockage pour télécharger les fichiers temporaires ,u p u / f i l es est le répertoire de stockage des fichiers ,Ces deux répertoires peuvent être spécifiés dans up u.cl a ss.php . _ _ 5.<f ou m>e n c t y p e _=" m u lt i p a r t / f ou md a t a " Cet attribut, a c t i o n est la page de traitement après le téléchargement réussi du fichier, c'est-à-dire votre<f ou m>Il suffit d'écrire selon la pensée normale, la seule différence est que vous devez ajouter o n s u bmi t=" re t u r n u p u I ni t ( this ) " 6. Une fois le téléchargement réussi, vous pouvez utiliser _POST pour obtenir les données du formulaire. S'il s'agit d'un formulaire ordinaire, vous pouvez directement l'
obtenir par $ La valeur _POST['form name'], s'il s'agit d'un fichier, renvoie un tableau comme celui-ci
POST [ ′ form name ′ ] = A array ( [ filename ] => [ clientpath ] => [ savepath ] => [ filetype ] => [ filesize ] => [ extension ] => ) 6.3 Télécharger des images par lots à volonté Général En mode de téléchargement de formulaire, bien que le formulaire qui fournit le téléchargement de fichiers puisse être généré dynamiquement et ajouté à volonté, cela apportera beaucoup d'inconvénients à l'utilisateur et rendra le traitement en arrière-plan plus compliqué. Par conséquent, la meilleure façon est d'utiliser le objet existant en arrière-plan. L'interface de traitement de fichier unique est utilisée pour réaliser le problème du téléchargement par lots à volonté. Après une comparaison spécifique, la bibliothèque Applet de juupload a finalement été sélectionnée comme traitement intermédiaire pour le téléchargement par lots d'images. Dans le même temps, afin de traiter les fichiers téléchargés par lots, il est nécessaire d'écrire manuellement un script de rappel pour le traitement des fichiers téléchargés. Le principe de mise en œuvre spécifique est le suivant : Premièrement, après avoir téléchargé un fichier, jupload appellera automatiquement un script de rappel pour traiter les fichiers téléchargés ultérieurement. Grâce à ce script de rappel, l'image téléchargée peut être construite manuellement pour se conformer à _POST['form name'] = Array ( [filename] => [clientpath] => [savepath] => [filetype] => [filesize] => [extension] => ) 6. 3 Le problème du téléchargement aléatoire d'images par lots En mode de téléchargement de formulaire général, bien que le formulaire de téléchargement de fichiers puisse être généré dynamiquement et ajouté à volonté, cela apportera beaucoup d'inconvénients à l'utilisateur et compliquera le traitement en arrière-plan , donc le meilleur La méthode consiste à utiliser l'interface existante pour le traitement de fichiers uniques en arrière-plan pour réaliser le problème du téléchargement aléatoire par lots. Après une comparaison spécifique, la bibliothèque Applet de juupload a finalement été sélectionnée comme processus intermédiaire pour télécharger des images par lots. Dans le même temps, afin de traiter les fichiers téléchargés par lots, il est nécessaire d'écrire manuellement un script de rappel pour le traitement des fichiers téléchargés. Le principe de mise en œuvre spécifique est le suivant : Premièrement, après avoir téléchargé un fichier, jupload appellera automatiquement un script de rappel pour traiter les fichiers téléchargés ultérieurement. Grâce à ce script de rappel, l'image téléchargée peut être construite manuellement pour répondre aux exigences de la section 5.2.POST [' nom du formulaire ]=Tableau ( [ nom de fichier ] _ _ _ _ _=>[ chemin client ] _ _ _ _ _ _ _=>[ sauvegarder le chemin ] _ _ _ _ _=>[ type de fichier ] _ _ _ _ _=>[ fichiers ] _ _ _ _ _=>[ extension ] _ _ _ _ _ _ _ _=>) 6.3 Téléchargement aléatoire d'images par lots En mode de téléchargement de formulaire général, bien que le formulaire de téléchargement de fichiers puisse être généré dynamiquement et ajouté à volonté, cela apportera beaucoup d'inconvénients à l'utilisateur et compliquera le traitement en arrière-plan. c'est mieux La meilleure méthode consiste à utiliser l'interface existante pour le traitement d'un seul fichier en arrière-plan afin de résoudre le problème du téléchargement aléatoire par lots. Après une comparaison spécifique, la bibliothèque Applet de jupload a finalement été sélectionnée comme traitement intermédiaire pour le téléchargement d'images par lots . Dans le même temps, afin de traiter les fichiers téléchargés par lots, il est nécessaire d'écrire manuellement un script de rappel pour le traitement des fichiers téléchargés. Le principe de mise en œuvre spécifique est le suivant : dans un premier temps, j u pl o a d appellera automatiquement un Callback script pour traiter les fichiers téléchargés. Grâce à ce script de rappel, l'image téléchargée peut être construite manuellement pour se conformer à la variable _POST[form name] de la section 5.2 .
Le code spécifique est le suivant :

<?php include_once('../sys.php'); function message_sender($can_save){ // envoie la réponse d'erreur à jupload // le format dépend de la version de l'API switch(php_sapi_name()) { case 'cgi': case 'cgi-fcgi': $sz_htstatus = 'Status: '; casser; par défaut : $sz_htstatus = 'HTTP/1.0 : ' ; casser; } // faux message d'erreur // si jupload obtient le code d'état != 200, il affiche le message d'erreur if (!$can_save) { $sz_message='406 Il n'est pas acceptable d'enregistrer ce fichier'; } else { $sz_message='200 JUpload uploadé ok'; } en-tête($sz_htstatus.$sz_message); } //未登陆的直接退出 $result = $_GET['jid']; si (! est_numérique($résultat) || $result <= 0) { message_sender(false); sortie(0); } $_SESSION['job_title'] = $_GET['job_title'] ; $_SESSION['job_cat'] = $_GET['job_cat'] ; $_SESSION['job_content'] = $_GET['job_content'] ; $_SESSION['job_tags'] = $_GET['job_tags'] ; $_SESSION['jid'] = $_GET['jid'] ; $_SESSION['uid'] = $_GET['uid'] ; $uptp = $_SESSION['job_title'] . '|' . $_SESSION['job_cat'] . "|" . $_SESSION['job_content'] . "|" . $_SESSION['job_tags'] ; //处理APPlet字符集编码问题 $uptp = auto_decoding($uptp); $jid = $_SESSION['jid'] ; //$hash_path = $_GET['hashdir'] ; //$i = 0; foreach($_FILES as $tagname=>$objekt) { //构造UPU数组 $save_path = ROOT_PATH . 'sys/upu/fichiers/' ; $_POST['FileUp']['clientpath'] = $objekt['name'] ; $_POST['FileUp']['filesize'] = $objet['size'] ; $_POST['FileUp']['filename'] = basename($objekt['name']); $_POST['FileUp']['filetype'] = $objet['type'] ; $ext = éclater('.',basename($objet['nom'])); $ext = $ext[(count($ext) - 1)] ; $_POST['FileUp']['extension'] = $ext ; $_POST['FileUp']['savepath'] = $save_path . sha1(nombase($objet['nom']) . temps()) . mt_rand(100,999) . '.' . $ext ; // déplacez-les dans le répertoire upu if (!file_exists($_POST['FileUp']['savepath'])) { move_uploaded_file($objekt['tmp_name'],

Parmi eux, la construction du segment de tableau UPU est le code de construction du fichier téléchargé. Grâce à ce code, le traitement en arrière-plan peut directement effectuer un traitement ultérieur, sans avoir à réécrire le script pour traiter le contenu séparément.
Voici le script de traitement de l'image téléchargée (l'ensemble du traitement de l'image est résumé dans une classe distincte, qui est omise en raison d'un trop grand nombre de codes) $
pic_info = $_POST['uptp'];
picinfo = exploser ( ′ ∣ ′ , pic_info = exploser ('|',pic _ _jen f o=e x pl o d e ( ,pic_info,4);
pictitle = couper ( pic_title = couper(pic _ _tje tl e=trim ( pic_info [0]) ;
piccat = trim ( pic_cat = trim(pic _ _cun t=trim ( pic_info [1 ] );
picdes = trim ( pic_des = trim(pic _ _es=t r im ( pic_info[2]);
//Notez que le TAG ici est un tableau
pictags = exploser ( ′ , ′ , trim ( pic_tags = exploser(',',trim(pic _ _tun g s=e x pl o d e ( ,,t r im ( pic_info[3]));
// L'ID utilisateur est l'ID de l'album
$album_id =SESSION [ ′ uid ′ ] ​​​​; if ( _SESSION['uid']; if (SESSION[ tujed ];i f ( album_id == '') { $album_id = $_GET['uid'] ;}//Traitez le téléchargement du fichierphoto = getphotoobj ( photo = get_photo_obj(



photo _ _ _ _=g e tpchaud _ _ _obj ( _POST['FileUp'],$db_settings,'DGBN_B6.TTF',80,80);
// Récupère le chemin physique du fichier téléchargé
$result =photo −> savepic ( photo->save_pic(p h o t o ->économiser _ _ _pje c ( db_settings,piccat , pic_cat,pic _ _ca t , jid,albumid , ′ ′ , album_id,'',a l b u mje,", pic_title,picdes , vrai , vrai ) ; si (pic_des, vrai, vrai); si (pic _ _es ,vrai , _ _ _vrai ) ; _ _ _i f ( result < 0) { if ($with_error_exit) { show_normal_mesR('Illegal imageYour image type is:' . $_POST['FileUp']['filetype'],'Illegal image','Image upload') ;}elsereturn;}Parmi eux, la partie en gras est le code pour extraire les informations valides du tableau précédemment construit. 7 Test des résultats et analyse des performances7.1 Le système de combinaison de modules d'exploitationattribue l'autorité d'exploitation du module et l'autorité d'exploitation de la base de données correspondantes, c'est-à-dire des rôles connexes en fonction des besoins de l'entreprise, et l'autorisation d'exploitation du module et de la base de données accordée forme une plate-forme d'exploitation utilisateur via la structure et la page du cadre de menu interface de combinaison et d'opération. 7.2 Interface de connexion au système











Figure 7-1 Interface de connexion au système Figure
7.3 Exemple d'application de module

Figure 7-2 Page d'accueil de l'utilisateur

Figure 7-3 Page de résultats de la recherche

Figure 7-4 Interface de gestion des images

Figure 7-5 Interface de modification des informations utilisateur

Figure 7-6 Interface de téléchargement d'images

Figure 7-7 Interface de téléchargement par lot d'images

Figure 7-8 Interface de configuration des informations de téléchargement d'image

Figure 7-9 Interface du processus de téléchargement d'images
7.4 Problèmes existants dans le système
En raison du temps et de l'expérience limités, il existe encore des problèmes dans le système, qui doivent être critiqués et corrigés par l'enseignant.
7.4.1 Fuite des paramètres URL de la connexion de téléchargement par lots La
connexion de téléchargement d'images par lots expose l'ID de l'album, et l'utilisateur peut créer un album inexistant par des moyens illégaux ou utiliser cette URL pour tester le point d'injection et
essayer de limiter la sécurité Le JID soumis ici doit être un nombre .
7.4.2 Le script de rappel dans le code source de la page de téléchargement par lots contient l'ID utilisateur.
Dans la page de téléchargement par lots, le contrôle de téléchargement par lots appellera un script PHP de rappel, URL : http://192.168.0.43/DOJO_pic_share/sys /jupload/jupload .php?jid=11805460158693&job_title=asdf&job_cat=20060810&job_content=sdfas&job_tags=asdfa&uid=1 Vous pouvez
directement obtenir les informations sensibles de l'ID utilisateur à partir de cette connexion.
Essayez de transmettre ces informations via SESSION.
7.4.3 Impossible de revenir normalement
Lorsque l'utilisateur gère des images, lors de la suppression de la dernière image d'une certaine catégorie ou d'un album, il ne peut pas revenir correctement à la page légale. Lorsque l'utilisateur supprime l'image, il reviendra automatiquement à la page précédente, mais comme il n'y a pas d'images sous la catégorie ou l'album, la catégorie ou l'album n'existe pas (car si l'utilisateur supprime la dernière image lors de la conception, il sera supprimés en même temps Les catégories ou albums)
tentent de modifier cette approche en laissant l'utilisateur choisir vers quelle page revenir ou aller directement à la page d'accueil.
7.5 Suggestions d'amélioration
Pour les divers problèmes existant dans le système actuel, certains d'entre eux nécessitent de modifier la conception de l'architecture actuelle pour répondre aux besoins futurs. Dans le même temps, l'interface du système doit également être repensée. La page actuelle étant basée sur la structure des couches actives, certaines couches utilisent des positions fixes, ce qui rend la génération du programme moins flexible et nécessite une modification du modèle d'interface.
Dans le même temps, le temps de génération de la page d'accueil du système est trop long et la mise en mémoire tampon des fichiers peut être utilisée au lieu de lire à partir de la base de données.
Conclusion
À l'heure actuelle, après un projet de fin d'études intense et ordonné, les principales fonctions du système d'image ont été pleinement réalisées. L'interface système est simple, facile à utiliser et possède des fonctions complètes. Elle réalise les fonctions d'auto-enregistrement de l'utilisateur, de téléchargement d'images, de gestion des images, de classification des images, de balises d'image, de classification de gestion, de balises de gestion, de gestion des utilisateurs en arrière-plan et de gestion du système. , et réalise les fonctions de partage d'images. Cependant, certains domaines doivent encore être améliorés, tels que : lors du téléchargement d'images par lots, en raison de la limite du paquet HTTP maximal, toutes les images ne peuvent pas être transmises en même temps, et la suppression des balises et des catégories lors de la gestion des images. n'est pas très clair pour l'utilisateur. De plus, ce système n'a pas fourni de fonction statistique plus pratique pour les administrateurs d'arrière-plan.
La conception et le développement de ce système font référence au mode de conception et de développement de la société de développement de logiciels sous la direction de l'enseignant. Grâce à l'analyse de la demande de ce système, l'étude et la pratique de chaque partie, telles que la conception des grandes lignes, la conception détaillée, le codage et les tests. Cela m'a fait réaliser que l'étape de conception du système joue un rôle décisif.La qualité de l'étape de conception affectera directement la qualité du système à l'avenir. Le fait que les exigences soient exactes aura une incidence sur la capacité du système final à répondre aux exigences de l'utilisateur, et la conception de la structure de données de l'avant-projet aura une incidence sur la supériorité de la conception de la base de données. Si la conception est raisonnable, ce sera relativement facile à implémenter dans l'étape de codage. La conception des classes associées et la définition des fonctions dans la conception détaillée ouvrent la voie à l'étape de codage, faisant du codage une évidence.
Lors de la réalisation de ce système, je me rends pleinement compte qu'il y a encore de nombreuses lacunes dans ce que j'ai appris, et j'ai acquis beaucoup de capacités que je devrais avoir pour des projets spécifiques à partir du processus de réalisation du système, et je crois que cela devrait être utile pour les travaux futurs. Aide relativement importante.
Références
[1] Chen Hao, programmation PHP [M], Pékin, Electronics Industry Press, 2012.
[2] Shao Yu. PHP and MYSQL WEB Development [M]. Pékin : Machinery Industry Press, 2012.
[3] DAVID LANE [États-Unis]. PHP & MYSQL WEB Database Application Development Guide [M]. Nanjing : Southeast University Press, 2006.
[4] MIHAI BUCICA [États-Unis].AJAX et PHP Développement WEB [M].Pékin : Presse populaire des postes et télécommunications, 2011.
[5] PETER MOLDING [Anglais]. PHP Technology Insider [M]. Pékin : China Water Conservancy and Hydropower Press, 2013.
[6] NARAMORE [US]. PHP5, APACHE, développement du réseau MYSQL [M]. Pékin : Electronic Industry Press, 2012.

Remerciements
Cet article a été rédigé sous la direction enthousiaste des enseignants, dont les connaissances approfondies et le style académique rigoureux m'ont beaucoup aidé et ont joué un grand rôle dans la réussite de ce projet. Je tiens ici à lui exprimer mes sincères remerciements !
Merci à Maître Chen pour son aide de longue date qui nous a guidé patiemment et méticuleusement pendant longtemps et nous a aidés à compléter des points de connaissance importants. En même temps, le professeur nous a également aidés à analyser en détail la relation logique du système. Le professeur Gao nous a beaucoup aidés dans la conception du programme, ce qui m'a beaucoup aidé à analyser et à résoudre les problèmes. Au cours du processus de rédaction de la thèse, j'ai également reçu l'aide enthousiaste d'autres enseignants et de nombreux camarades de classe, et je tiens à leur exprimer ma profonde gratitude !
Merci aux chefs d'établissement d'avoir fourni un bon environnement d'apprentissage à ce groupe.Avec la coopération mutuelle et l'aide des membres de ce groupe, le projet de fin d'études a été mené à bien.

Je suppose que tu aimes

Origine blog.csdn.net/ambiguous__/article/details/130919447
conseillé
Classement