PHPをベースとした画像共有システムの設計と実現

PHPをベースとした画像共有システムの設計と実現

このシステムは、
主に現代社会における情報化の概念から出発し、既存資料の分析、研究、整理を通じて、既存のWEB2.0モデルに基づく画像共有システム開発の実現可能性、緊急性、必要性を判断します。現段階では、WEB2.0をベースとした国内の画像共有システムは始まったばかりであり、この市場にはまだ参入の余地が大きい。その中には、海外ではすでに非常に成熟した写真共有プラットフォームが存在します。WEB2.0時代になり、情報はサーバーリリースからユーザーリリースへと変わりました。つまり、サーバーを介してリソースを収集して公開する以前のモードから、ユーザーを介してリソースを提供するモードに、サーバーが整理、分類、および公開するモードになります。そして、このモデルは、Web サイトのユーザーにとって、従来のモデルよりもはるかに魅力的です。
この文書は、PHP および Ajax フレームワークに基づく環境で MVC 開発モデルを使用して、完全に機能する画像アップロードおよび画像管理システムを完成させ、画像の便利な追加、削除、分類を実現する方法を詳細に説明することを目的としています。主にユーザーとその写真の管理を実現し、関連する個人設定の変更を実現します。さらに、システムには、写真をアップロードするためのより直観的な進行状況表示が必要であり、写真の表示には、より親しみやすい表示効果が使用されます。

キーワード: モデル ビュー コントローラー、画像共有、Ajax

概要
このシステムは主に現代社会の情報化に端を発しています。存在情報の分析、調査、再編を踏まえ、WEB2.0をベースとした画像共有システムのオーダーフォーム開発の導入の急務とその必要性を検討しました。現段階で、WEB2.0をベースとした国内の画像共有システムはまだ完成していません。進行中。この分野への参加は広がっていますが、同時に、成熟した画像共有システムがすでに長い間存在しています。WEB2.0時代には情報公開のスタイルがサーバー公開からユーザー公開へ、つまりサーバー公開からユーザー提供へとなり、この場合サーバーは調整・整理・再公開だけで済みます。さらに、このモデルでは、Web サイトがユーザーにとってより使いやすくなります。
この論文では主に、完全に機能する写真のアップロードと写真管理システムを開発する方法について説明します。このシステムでは、写真やカテゴリの追加、削除が簡単に行えます。バックステージ管理では、主にユーザーと写真の管理とユーザー情報の変更を実装します。このシステムでは、画像のアップロードが直感的に表示されるため、画像の表示がユーザーにとって分かりやすいものである必要があります。

キーワード: MVC。写真の共有; アヤックス

目次 論文
総ページ数:36ページ

1 はじめに 1
2 システム概要 1
3 全体設計 2
3.1 システム要件分析 2
3.1.1 画像アップロード方法 2
3.1.2 ユーザーアップロード画像形式 2
3.1.3 分類 2
3.1.4 画像管理 2
3.1. 5 画像表示 3
3.1. 6 クエリ機能 3
3.1.7 ユーザー管理 3
3.2 全体構成 3
3.3 画像共有システムプロセス 3
3.4 画像共有システムモジュール機能紹介 5
3.4.1 ユーザーインターフェースサブモジュール部門 5
3.4.2 管理バックグラウンドサブモジュール部門 7
4 スキーム選定 8
4.1 方式比較 8
4.1.1 システムモード比較 8
4.1.2 プログラム言語比較 8
4.2 方式選定 9
4.3 システム技術基盤 9
4.4 開発環境構築 9
5 実装技術とデータ構造 12
5.1 システムアーキテクチャ設計 12
5.1.1 ネットワークアーキテクチャ 12
5.1.2 システムロジックサーバー 12
5.2 システム処理フロー 13
5.2.1 MVC ベースの Smartemplate アーキテクチャ 13
5.2.2 SmartTemplate の技術概要 14
5.2.3 SmartTemplate と HTML テンプレートの関係 15
5.3 データベース設計 18
5.3.1 フロントエンド ユーザー向けの主要なデータベース テーブル構造の設計 21
5.3.2 管理バックグラウンド データベース テーブル構造の設計 22
6 特別な問題の解決策 24
6.1 コード化けの問題 24
6.2 動的アップロード進行状況の表示 24
6.3 画像のランダムバッチアップロードの問題 25
7 結果テストとパフォーマンス分析 29
7.1 操作モジュールの組み合わせ 29 7.2
システムログインインターフェース 29
7.3 モジュール適用例 30
7.4 システムの既存の問題 33
7.4.1 バッチの URL パラメータ漏洩アップロード接続 33
7.4.2 一括アップロード ページのソース コード内のコールバック スクリプトによりユーザー ID が漏洩する 33
7.4.3 正常に戻ることができない 33
7.5 改善提案 34
結論 34
参考文献 34
謝辞 35
声明 36

1 はじめ
に 少し前の WEB2.0 の隆盛により、BS 全体の開発方向と WEB 運用形態は徐々に別の方向に変化し始めました。AJAX を再利用することで、ユーザーの WEB エクスペリエンスが大幅に向上します。部分的なページ更新方法により、ユーザーがページにアクセスする時間が大幅に短縮されます。また、ユーザーはエクスペリエンスを向上させながらコンテンツ プロバイダーに参加できるようになります。従来のWEBシステムでは、Webサイトに必要なリソースを収集し、公開するために必ずWebサイト管理者などが存在していましたが、WEB2.0の台頭により、共有や経験が徐々にWebシステムの発展において重要な位置を占めるようになりました。ウェブサイト。その結果、Web サイトは以前の集中的な公開モードから、ユーザーがリソースを提供し、Web サイトがそれらを整理して公開するモードに徐々に変化してきました。最も一般的なものは、BLOG と WIKI です。中でも写真共有は大きな発展の可能性を秘めた方向です。まず、中国でデジタルカメラを所有する人の数は着実に増加していますが、現時点ではこの市場の可能性に気づいているウェブサイトは多くありません。ユーザーは写真を撮るとき、撮った写真を簡単に共有できる場所を探します。しかし、今日の従来の Web サイトは、操作が複雑すぎたり、共有に不便だったりします (たとえば、163 では外部接続された画像がサポートされていないため、サーバーの負荷は明らかに軽減されますが、ユーザー エクスペリエンスは大幅に低下します)。想像してみてください。ユーザーがアルバム内の特定の写真を友人に直接見せたい場合、そのアルバムを相手にも接続する必要があり、相手はアルバム内でその写真を見つけた後でのみその写真を見ることができます。さらに、163 にある写真は、デジタル写真用に特別に整理および分類されていない、つまり、多数はありますが正確ではありません。リソースの非効率的な使用につながります。現在、中国ではこの分野の Web サイトはそれほど多くはありませんが、海外では Flikre: www.flikre.com、Bababian: www.bababian.com などの比較的よく知られた Web サイトがあります。このうち、Baba Change は基本的に FLIKRE リビジョンをモデルとしています。これまでのところ、市場にはまだ介入の余地が比較的大きい。
現在の観点から、写真共有システムが現在解決する必要がある主な問題は、ユーザーが写真をより速くアップロードできるようにする方法です。画像をより高速に表示する方法。その中で、システム開発に影響を与える主な問題は、1. 市場競争、2. ソフトウェアの使いやすさと安定性、3. 時間制限です。市場の一部はすでに初期の競合他社に奪われているため、使用可能なWebサイトシステムをできるだけ短期間で開発する必要があります。システムは当初 2 つの部分に分かれており、1 つは WEB インターフェイスとしての WEB エンドであり、もう 1 つは C/S モードを介してローカル画像をリモートアップロードするためのクライアント ツールです。
2. システム概要
ユーザー投稿による写真共有を実現するためには、まずユーザーのアップロード効率を向上させ、ユーザーのアップロード体験やユーザーの閲覧が便利かどうかが重要となります。一般的な画像共有 Web サイトは、単一のアップロード ページを通じてファイルをアップロードし、表示形式も単一であるため、ユーザーが使用したり閲覧したりするのは不便です。WEB2.0 では、ユーザー エクスペリエンスを向上させるための多数のコントロールが誕生し、写真の共有が従来の形式よりも美しく、より人間味のあるものになりました。
優れたユーザー エクスペリエンスに加えて、優れたシステム サポートも必要です。単なるプログラムではなく、ユーザーのニーズに応じて継続的に拡張できるビジネスプラットフォームと開発プロセス。この卒業プロジェクトは、比較的成熟したフレームワークを使用し、現在の WEB2.0 のニーズと特性に従って書かれています。
WEB2.0 の成熟したフレームワーク インターフェイスを適用すると、現在の高可用性アプリケーションの開発と設計を大幅にスピードアップできます。ユーザーの視点からアプリケーションを設計できるようになります。設計のプレッシャーとリスクを大幅に軽減します。システムは、さまざまな方法でユーザーの写真をアップロードおよび管理できます。また、より一般的なビジュアル フレームワークを使用して画像のプレゼンテーションを実現し、ユーザー エクスペリエンスを大幅に向上させます。
3 全体設計
3.1 システム要件分析
画像共有では 3 つの側面を考慮する必要があります: 1. ユーザーが写真をアップロードする方法、2. ユーザーがアップロードできる写真の種類、3. これらの写真を表示する方法。さらに、画像の簡単な構成と統計も実現する必要があります。
したがって、画像をアップロードするユーザーと画像を閲覧するユーザーがシステム サービスの主な対象であり、システムの機能には次の要件が提示されます。 3.1.1 画像アップロードをサポートする方法 画像アップロードでは、最も使用されるページ フォーム モードをサポートする必要があり
ます
。現在。そして簡単に加工できます。
さらに、クライアント モードをサポートすることが最善です。また、ユーザーがクライアントをインストールすることなく、WEB上に写真を一括アップロードする機能を実装する必要があります。
3.1.2 ユーザーが画像をアップロードするためにサポートされている形式
1 つは JPEG で、もう 1 つは PNG です。現在、ほとんどのデジタル カメラは画像の保存に JPEG 形式を使用していますが、著作権の問題を考慮して、PNG 形式の画像もサポートする必要があります。
3.1.3 分類画像がアップロードされる
、画像のラベルと画像が配置されているタスクに従って、画像は自動的に分類され、画像タスクの削除、追加、削除が行われます。 、画像タグを追加および削除します。同時に、写真管理では、ユーザーはアップロードした写真をより直感的な方法で表示できます。3.1.5 画像プレゼンテーションエンドユーザーが閲覧できるように直感的に表示できる必要があります。3.1.6 クエリ機能ユーザーは、自分のカテゴリの下にある写真とタスクの下にある写真の総量を知る必要があり、ユーザーはさまざまな状況に応じて自分のカテゴリとタスクの下にある写真の統計を作成する必要があるため、システムはそれを行う必要があります。分類、タスク、ラベルの複数条件組み合わせクエリ機能も備えています。3.1.7 システムはマルチユーザーシステムであるため、システムバックグラウンドにはユーザーの追加、削除、照会などのユーザー管理機能も必要です。また、ユーザーの写真の表示と削除、ユーザー カテゴリの表示と削除、ユーザー ラベルの表示と削除も可能です。









図 3-1 画像共有システムの機能モジュール図 画像共有
システムは、ユーザーインターフェースとバックグラウンド管理の 2 つの部分で構成されます。管理者が利用できる機能です。3.3 画像共有システムのプロセス画像共有システムのプロセスの設計思想は次のとおりです。1. ユーザー(ここでは主にシステムを直接使用するエンドユーザーを指します。バックグラウンドで管理機能を持つユーザーは除きます)は、次のとおり適切な画像を選択します。独自の画像形式に変換し、システムの処理側にアップロードします。2. システムは、ユーザーがアップロードした画像を受信した後、システムが現在アップロードを許可している画像の種類に応じて、ユーザーがアップロードしたファイルがシステムの要件を満たしているかどうかを判断し、割り当てられたラベルを決定する必要があります。ユーザーがアップロードした画像をアップロードし、アップロードした画像の設定に基づいて画像を分類し、形式を変更します。このときの画像はシステムに保存されている最後の画像ではありません。画像はカットされた形式で保存されています。システム設定に従って変更されます。(これは、画像形式を統一し、出力処理を容易にし、画像を保存する際の処理インターフェースを統一するために行われます。) 3. 画像が正常に追加された後、アップロードされた画像はユーザーが存在するフォルダーに直接キャッシュされます。アップロード日に従って整理され、同時に画像のコピーがデータベースに保存されます。4. 写真が保存されると、アップロードされた写真が同時に最前面に表示され、設定されたラベルに写真が追加され、タスクに応じて写真がバッチで表示されます。5. ユーザーはユーザー管理コンソールで現在のすべての写真を管理でき、写真を削除するときは、単一​​の写真、カテゴリ、ラベル、およびタスクごとに写真を削除できます。6. アップロードされた写真は、ユーザーが写真を閲覧できるリンクを通じて、第三者ユーザーに直接提供して閲覧することができます。または、システムによって生成された接続を通じて表示するために、サードパーティ ユーザーに直接送信します。










7. バックグラウンド管理者は、システムが提供する機能を通じて、管理ユーザーを直接追加および変更できます。ユーザーに特定の機能を与える必要がある場合、バックグラウンドユーザーの詳細設定を変更することでユーザー権限を変更できます。
8. 管理者は、ユーザーのアップロードした写真を削除する必要がある場合、統合された写真管理インターフェイスを通じてユーザーの写真、分類、ラベル、およびタスクを削除することもできます。
画像共有システムのフローチャートは以下の通りです。

図 3-2 画像共有システムのフローチャート
3.4 画像共有システムモジュールの機能紹介 画像
共有システムは主に画像の追加と削除、画像タグの追加と削除の機能を完成させます。複数のユーザーの管理やバックグラウンドでのユーザーの写真の管理も可能です。以下にサブモジュールの分割と各モジュールの機能紹介を記載します。
3.4.1 ユーザーインターフェースのサブモジュール分割

図 3-3 ユーザーインターフェースのサブモジュール構造図

ユーザー インターフェイス サブモジュール - パスワード変更
パスワード変更は、ユーザー インターフェイス サブモジュールの一部として、主にユーザー パスワード変更の作業を完了します。実行プロセスは次のとおりです。ユーザーがメイン インターフェイスにログインした後、ナビゲーション バーのパスワード変更をクリックし、ユーザー パスワードを変更するためのインターフェイスに移動します。現在使用しているパスワードと変更したパスワードを入力し、変更したパスワードをもう一度入力し、最後にこの操作の確認コードを入力します (ユーザーの便宜のため、確認コードはバックグラウンドで自動的に入力されています)。上記の操作が完了したら、ユーザーは「送信」をクリックしてパスワードを変更します。
ユーザーが変更されたコンテンツを送信すると、ページ内のコードはまず、ユーザーが 2 回変更したパスワードが一致しているかどうかをチェックします。パスワードが一致していない場合は、パスワードが一致していないことを示すプロンプトがユーザーに表示されます。チェックに合格すると、情報がバックグラウンド システムに送信されます。バックグラウンド システムはまず検証コードが同じかどうかを判断し、同じであれば、ユーザーが入力した現在のパスワード ハッシュがデータベース内のパスワード ハッシュと一致するかどうかを比較します。2 つのハッシュが一致すると、バックグラウンド システムはユーザーの現在のパスワードをユーザーの変更されたパスワードに変更します。ユーザーが検証コードを入力しないか、検証コードが間違っている場合、現在のユーザーのパスワード ハッシュはデータベース内のパスワード ハッシュに対応できず、システムは対応するエラー プロンプトを表示します。そして、ユーザーに再度入力するように依頼します。
ユーザー インターフェイス サブモジュール - 画像のアップロード
画像をアップロードするには、ユーザーがシステムにログインした後、ナビゲーション バーの [画像のアップロード] をクリックして画像アップロード機能ページに入ります。この時点で、ユーザーはアップロードする単一の画像を選択することも、ニーズに応じて複数の画像をバッチで直接アップロードすることもできます。1) 単一ページのアップロード: このアップロードでは、ユーザーはシステム要件を満たさない画像をフィルタリングする必要があります。現在のシステムは JPEG と PNG のみをサポートしています。画像形式が要件を満たしていない場合、システムはエラー メッセージを表示します。ユーザーが選択した画像の形式が正しい場合、[アップロード開始] をクリックすると、システムは画像情報を設定するためのダイアログ ボックスをポップアップ表示します。ユーザーは画像の種類を選択し、画像のラベルを設定し、画像情報を設定する必要があります。写真の名前とその他の情報。すべての設定が完了したら、「アップロード用に送信」をクリックすると、ユーザーの写真がシステムにアップロードされ始めます。2) 複数の画像をバッチで直接アップロード: ユーザーが [バッチ アップロード] タブをクリックすると、システムは、この機能には JAVA ランタイム サポートが必要であることを示すプロンプト (名前、説明、分類、タグ、その他の情報) を表示します。次に、バッチアップロードインターフェイスに移動します。具体的な操作手順は一括アップロードページで詳しく解説しています。
ユーザー インターフェイス サブモジュール - 画像の管理 画像を管理する
には、ユーザーがシステムにログインした後、ナビゲーション バーの [画像のアップロード] をクリックして画像管理ページに入ります。
ページは上段、中段、下段に分かれており、タスク、カテゴリー、タグごとに分類されたユーザー画像の一覧となっています。このリストでは、ユーザーはタスク、カテゴリ、またはラベルに従って画像をバッチで操作できます。同時に、この機能ページでは、カテゴリ、タスク、ラベルを削除することもできます。
3.4.2 管理背景サブモジュール分割

図 3-4 管理バックグラウンド サブモジュールの構造図
管理バックグラウンド サブモジュール - システム管理
バックグラウンド管理の重要な部分として、システム管理は主に現在のシステムの環境変数と一部の説明情報を設定するために使用されます。これらの設定は主に、バックグラウンド管理者がシステムを保守し、システムを初期化するときに決定されます。設定完了後、システムの性能問題やシステム移行以外の場合は、設定した情報を保持することができます。
この関数は、システムがシステム環境変数を展開するためのより便利な方法を提供します。システムのドメイン名の変更やその他のシステム環境情報の変更など、システムの一般的な設定を後から変更したり、システムの簡単な移行を容易にするのに便利です。
システムの各設定はシステム情報テーブルに記録され、本モジュールの変更はシステム情報テーブルにフィードバックされます。
バックグラウンド管理サブモジュール - 管理者管理
管理者管理は主に、現在のシステムのバックグラウンド機能を操作できるユーザーを設定し、そのユーザーがバックグラウンドでどの機能を使用できるかを設定するために使用されます。この機能により、バックグラウンド管理がより柔軟になり、アクセス許可を便利に管理できるようになります。さらに、特定の機能の運用を専門とするマネージャーを設置することも可能で、管理の煩雑さを簡素化します。
この機能は、システム管理チームを拡張するための便利な方法を提供します。中期および後期段階で特定の要件を満たすために特定の機能の管理を容易にするために、その機能を専任担当者に割り当てることができます。
同時に、このモジュールは管理者情報を変更する機能も提供します。管理者にとって、さまざまな機能を切り替えたり、既存の権限を変更したりするのに便利です。
管理バックグラウンドサブモジュール - ユーザー管理
ユーザー管理は、現在のシステムに正常に登録されており、本システムの写真共有機能を使用するユーザーを管理するために使用されます。システムの登録は、フォアグラウンドで提供される登録ページにユーザーを登録するだけでなく、ユーザー管理権限を持つバックグラウンド管理者がバックグラウンドで追加することもできます。ユーザーは自身の管理パネルで自分の情報を変更できるほか、管理者は本モジュールのユーザー編集機能を通じてユーザー情報を変更できます。同時に、検索機能を通じて特定のユーザー名のユーザーを見つけることができるため、操作が必要なユーザーをより迅速に見つけることができます。
背景サブモジュールの管理-画像管理
画像管理は、現システムに正常に登録されているユーザがアップロードした画像を管理し、本システムの画像共有機能を利用するために使用される。
このモジュールでは、バックグラウンド管理者は、ユーザーがアップロードした写真を単一のユーザーに従って管理できます。ユーザーの写真を管理するためのインターフェイスは、ユーザー フロントエンドの管理インターフェイスと同じです。さらに、ユーザー管理と同様に、バックグラウンド管理者も特定のユーザー名を検索してユーザーをすばやく見つけ、そのユーザーがアップロードした写真を管理できます。
ユーザーが写真をアップロードする過程で、ユーザーの誤操作により、ユーザーがアップロードした写真が分類またはラベル付けされない場合がありますが、この場合、管理者は写真クリーニング機能を使用してこれらの写真をクリーンアップすることができます。冗長性や不正確なデータによって引き起こされるシステムの不安定性や統計データのエラーを回避します。
4 スキームの選択
4.1 スキームの比較
4.1.1 システムモードの比較
現在、開発モードには主に C/S 構造と B/S 構造が含まれます。C
/S 構造、つまり Client/Server (クライアント/サーバー) 構造は、有名なソフトウェアシステムクライアントとサーバーに合理的にタスクを割り当てることでシステムの通信オーバーヘッドを軽減し、双方のハードウェア環境の利点を最大限に活用できるシステム構成です。
B/S 構造、つまり Browser/Server (ブラウザ/サーバー) 構造は、インターネット技術の台頭により C/S 構造が変更または改良された構造です。この構造では、ユーザーインターフェイスは完全にWWWブラウザを通じて実現され、ビジネスロジックの一部はフロントエンドで実現されますが、主要なビジネスロジックはサーバーサイドで実現されます。B/S構造とは、成熟化・普及が進んでいるブラウザ技術を利用し、複雑な専用ソフトウェアが必要であった強力な機能を実現し、開発コストを削減する、全く新しいソフトウェアシステム構築技術です。
4.1.2 プログラミング言語の比較
現在人気のあるプログラミング言語は、ASP、JSP、および PHP です。
ASP の正式名は Active Server Pages です。これは、動的で対話型の高性能 WEB サービス アプリケーションを生成および実行できる WEB サーバー側の開発環境です。ASP は、独自の開発言語としてスクリプト言語 VBScript (Java スクリプト) を使用します。
JSP は、Sun によって発売された新世代の Web サイト開発言語 Java Server Page です。Serverlet と JavaBean のサポートにより、JSP は強力なサイト プログラムを完成させることができます。
PHP (「PHP: Hypertext Preprocessor」) は、広く使用されているオープン ソースの多目的スクリプト言語であり、特に Web 開発に適しており、HTML に埋め込むことができます。
これら 3 つはすべて、HTML コード内に特定のプログラム コードを混合し、言語エンジンにプログラム コードを解釈して実行させる機能を提供します。ただし、JSP コードはサーブレットにコンパイルされ、Java 仮想マシンによって解釈および実行されます。このコンパイル操作は、JSP ページが初めてリクエストされたときにのみ実行されます。PHP、ASP、JSPの環境では、主にHTMLコードで情報の表示形式を記述し、プログラムコードで処理ロジックを記述します。通常の HTML ページは Web サーバーにのみ依存しますが、PHP、ASP、および JSP ページでは、プログラム コードを分析して実行するために追加の言語エンジンが必要です。プログラムコードの実行結果はHTMLコードに再埋め込まれ、ブラウザにまとめて送信されます。PHP、ASP、および JSP はどちらも Web サーバー指向のテクノロジーであり、クライアント ブラウザーには追加のソフトウェア サポートは必要ありません。
ただし、ASP や JSP と比較すると、PHP は導入が容易で、開発が迅速で、柔軟に使用できるという特徴があります。PHPはJSPに比べて複雑な処理が少ないため、実行速度もJSPよりもある程度高速であり、中小規模のシステムの迅速な開発に適しています。
4.2 プログラムの選択
要約すると、システム開発オプションは次のとおりです。
この画像共有システムは、主なプログラム開発言語として PHP と JavaScript を使用し、smarttemplate + 独立したバックグラウンド管理テンプレートと mysql データベースのフレームワークを採用しています。B/S構造を採用。システムインターフェースは美しく、コンテンツが豊富で、ユーザーとのインタラクションが非常にうまく実現されています。
4.3 システム技術プラットフォーム
開発環境: WindowsServer2013 Datacenter Edition SP1、MySql 4.2、Apache2、
開発ツール: ZendStudio、DreamweaverMX、PhotoShop、Notepad、
システム アーキテクチャ: PHP+Smarttemplate+JavaScript+MySql4.2、
開発言語: PHP5。
4.4 開発環境のセットアップインターネットからダウンロードしたファイルを解凍するように
PHP 5 を設定し、次の操作が必要です: php.ini ファイルを開いて次の内容を変更します: max_execution_time = 600; max_input_time = 600; memory_limit = 16M post_max_size = 20M file_uploads = オン、upload_max_filesize = 20M、default_socket_timeout =ユーザーが大きすぎる画像をアップロードすることによる PHP 処理タイムアウトを回避するための 60 を超えるオプション。register_globals = オフmagic_quotes_gpc = オン












上記のオプションは、ユーザーが悪意を持って送信するのを防ぐためのものです。
extension_dir = "D:\PHP\PHP\ext"
上記のオプションは、PHP の拡張機能が配置されるフォルダーを設定するために使用されます。
extension=php_mbstring.dll
この拡張機能は、長い文字セットをサポートするために使用されます。
extension=php_exif.dll
この拡張機能は、PHP が画像の EXIF 情報を読み取ることをサポートするために使用されます。
extension=php_gd2.dll
この拡張子は、PHP が画像を操作し、検証コードを生成するために使用されます。
extension=php_mysql.dll
extension=php_mysqli.dll 上記の 2 つの項目は、PHP の MYSQL サポートに使用されます
extension=php_sockets.dll
この拡張機能は、PHP の SOCKET サポートに使用され、主にアップロード中にアップロードの進行状況を表示する UPU ライブラリをサポートするために使用されます
Apache 2.0
ネットワークからダウンロードしたファイルを解凍し、次の操作が必要です。
1) Apache の設定ファイルを変更します。
解凍したルート ディレクトリの下の conf ディレクトリに入ります。httpd.conf ファイルを開き、次の内容を変更します。
実行タイムアウトを設定します。 タイムアウト 300
リスニング ポート 80 を設定します。 リッスン 80
APACHE を有効にして PHP をサポートします。
LoadModule php5_module d:/php/php/php5apache2.dll
URL 書き換え機能を有効にします: LoadModule rewrite_module modules/mod_rewrite.so
WEB サービスのルート ディレクトリを設定します: DocumentRoot "E:\web"
URL 書き換えの有効範囲を設定します:
オプション FollowSymLinks
AllowOverride ALL

中国語サポートを設定します:
AddLanguage zh-CN 。 zh-cn
AddLanguage zh-TW .zh-tw
AddLanguage zh-cn .cn
デフォルト言語を設定します。
AddDefaultCharset GB2312
デフォルトのインデックス ページを設定します。
DirectoryIndexindex.htmlindex.html.varindex.htmindex.php
PHP ファイルを解析するための APACHE を設定します
。AddType application/x-httpd-php .php
2) APACHE をサービスとしてインストールします。
コマンド ラインを入力し、APACHE フォルダーの下の BIN フォルダーに移動し、次のコマンドを実行します。
apache -k install
3) APACHE サーバーを起動します
。次のコマンド:
net start apache2
mysql インストール
1) インターネットからダウンロードした MYSQL を解凍し、その構成ファイルを次のように変更します。
default-character-set=utf8 //システム全体が UTF-8 を使用するため、データベースも均一にエンコードされます key_buffer_size
=20M
max_allowed_pa​​cket=15M //上記の設定は、データベースに格納されている大量の情報データを処理するために使用されます。
2) MySQLInstanceConfig.exe を実行して MYSQL を初期化します。
3) MYSQL サービスをインストールします。
mysql d-nt.exe –install を実行して、MYSQL プロセスをシステム サービスとして実行します。
4) MYSQLADMINを使用してMYSQL管理者を管理します
PHPMYADMINの設定
phpmysdminの設定ファイルを見つけて、以下の箇所を修正します。
cfg ['サーバー'] [cfg['サーバー'][c f g [サーバー___' ][i]['host'] = 'localhost';//localhost に設定します (デバッグ専用)
cfg [ ' Servers ' ] [ cfg['Servers'][c f g [サーバー___' ][i]['port'] = '3306';//MySQL ポート
cfg ['Servers'] [cfg['Servers'][c f g [サーバー___' ][i]['connect_type'] = 'tcp';//MySQL との接続方法を設定
cfg ['Servers'] [cfg['Servers'][c f g [サーバー___' ][i]['compress'] = FALSE;//送信に圧縮プロトコルを使用する
cfg [ ' Servers ' ] [ cfg['Servers'][c f g [サーバー___' ][i]['auth_type'] = 'config';//PHP インストール モードが Apache の場合、http と cookie が使用できます。PHP インストール モードが CGI の場合、cookie が使用できます。デフォルトは config cfg です。 [ ' サーバー
' ] [cfg['サーバー'][c f g [サーバー___' ][i]['user'] = 'root';//MySQL 接続ユーザー
cfg ['Servers'] [cfg['Servers'][c f g [サーバー___' ][i]['password'] = '';//MySQL 接続パスワード
5 実装技術とデータ構造
5.1 システム アーキテクチャ設計
5.1.1 ネットワーク アーキテクチャ ネットワーク
アーキテクチャ システム全体は次のとおりです。

図 5-1 画像共有システムのネットワーク構成図
5.1.2 システム論理サーバー
論理的には、使用されるサーバーは 3 種類に分類でき、各種類のサーバーは異なる機能を持ちます。
Web サーバー: このサーバーは Web 公開を実行し、操作インターフェイスを提供します。一般ユーザーの業務の(Webページ)も、処理後に生成されたデータベースクエリを通じてユーザーの操作パラメータをデータベースサーバーに返し、同時に解析と再コード後の結果によって生成されたデータをWebページを通じてユーザーに返します。フロントエンド。同時に、WEB サーバーはユーザー要求を解析し、ユーザーが表示できる Web ページを動的に生成する役割も果たします。
データベース サーバー: MySQL データベース システムがこのサーバーにインストールされており、データベース システムの設計は主にこのサーバー用に行われます。システム内で使用されるオリジナルデータやその他の構造データはすべてここに保管され、ユーザーや管理者による情報の追加、変更、削除はすべて最終的にサーバーに反映されます。同時に、サーバーはWEBサーバー経由で送信されたクエリリクエストを処理し、クエリ結果をアプリケーションサーバーに返す必要があります。
5.2 システム処理の流れ
本システムはB/SモードとSmartemplate構造を採用しており、利用者はインターネットブラウザをインストールするだけで他のソフトウェアをインストールする必要はありません。システムの処理フローを次の図に示します。

図 5-2 システムの処理フロー
5.2.1 MVC ベースの Smartemplate アーキテクチャ
本システムは、MVC ベースのアーキテクチャを使用して実装されています。モデルはビジネス ロジックを実装する PHP 解析スクリプトで構成され、コントローラーは SmartTemplate によって実現され、ビューは SmartTemplate 形式のタグを含む HTML ファイルのセットで構成されます。次の図は、ワークフローを簡単に説明しています。

図 5-3 ユーザー要求に応じたワークフロー
MVC は、アプリケーションの入力、処理、出力の分離を強制する設計パターンです。MVC では、アプリケーションをモデル、ビュー、コントローラーの 3 つのコア モジュールに分割し、それらの関係を次の図に示します。

図 5-4 MVC 設計パターン
5.2.2 SmartTemplate 技術の概要
このシステムを作成する過程では、多数の SmartTemplate 技術が使用されますが、SmartTemplate 技術について私の理解を次のように表現します
。 -scale WEB アプリケーション: サーバー側で呼び出されて実行される PHP ライブラリ。SmartTemplate 自体はプロトコルに依存しません。
SmartTemplate を理解するには、まずテンプレート エンジンがどのように機能するかを理解する必要があります。
通常のテンプレート エンジンの動作: PHP スクリプトは HTML テンプレートを指定し、動的コンテンツを指定して表示します。テンプレート パーサーは、テンプレート内のすべてのプレースホルダーを割り当てられたコンテンツに置き換えて、ユーザーに表示します。
SmartTemplate はテンプレートのコンパイルと同様に機能し、テンプレートを実行可能な PHP スクリプトに変換し、後で再利用できるように保存します。新しいテンプレートを初めて使用するとき、テンプレート内のすべてのプレースホルダーは、指定されたコンテンツを出力する単純な PHP コード要素に置き換えられます。たとえば、テンプレート スニペット

{タイトル}

、に変換されます

<?php echo $TITLE; ?>

コンテンツを正しい変数に割り当てれば、テンプレート分析の必要はなくなります。プログラムが行う必要があるのは、コンパイルされたテンプレート自体をインクルードして実行することだけです。このキャッシュ方法により、テンプレート エンジンの実行時間を大幅に短縮できます。
5.2.3 SmartTemplate と html テンプレートの関係
システムの移植性を高め、ソースコードを変更することなく Windows、NT、UNIX、Linux 環境でシステムを実行できるようにするために、PHP テクノロジが使用されます。WEB ベースのソフトウェア システムを開発し、PHP スクリプト ツールを使用し、PHP ダイナミック ライブラリを使用してデータベースにアクセスし、一部のオブジェクトのプロパティとメソッドを PHP クラス ライブラリにカプセル化し、クライアント インターフェイスは HTML と JavaScript で完成させ、サーバー側のアプリケーション処理を実行します。 PHP スクリプト + SmartTemplate エンジンを使用して実装できます。
HTML テンプレートは主に最終表示ページを定義するために使用され、PHP スクリプトは主に多数のロジック処理を完了するために使用され、SmartTemplate は処理されたデータを HTML テンプレートに動的にカプセル化し、最終的に表示されるページに使用されます。 PHP エンドで解析された後、顧客に送信されます。つまり、カプセル化および解析された HTML テンプレートは主にフロントエンド ユーザーに送信するために使用され、PHP スクリプトは主にユーザーのリクエストに応答し、リクエストの論理処理を完了すると同時に、次のように機能します。コントローラーであり、応答、トランザクション処理を担当します。
SmartTemplate 自体にはビジネス処理ロジックはなく、単に PHP スクリプトによって定義されたオブジェクトを取得し、事前定義された HTML テンプレートに動的コンテンツを挿入します。
PHP スクリプトは、SmartTemplate に必要な変数とオブジェクトを作成し、ユーザーの動作に応じてどの HTML テンプレートを処理してユーザーに送信するかを決定します。
実際の開発プロセスでは、多くの場合、最初に HTML テンプレートが開発され、その後、動的に生成する必要がある HTML テンプレートの部分が、事前定義された SmartTemplate タグに置き換えられます。この利点は、HTML のページ パフォーマンス機能を最大限に活用し、ページ パフォーマンスにおける PHP スクリプトの不足を回避し、開発サイクルを大幅に短縮できることです。
プログラム コード内の HTML テンプレートから最終的なページ オブジェクトへの変換は次のとおりです:
1. まず、HTML 編集ツールを使用して HTML ページを開発します
… …. …. ….

画像の検索: 

図 5-5 画像共有システムのデータベース設計構造図
上図は、システム設定テーブル(setting)、管理者操作記録テーブル(adminlog)、管理者情報テーブル(admin_info)、画像の 12 個のデータテーブルの要件に従って設計されています。キャッシュ記録テーブル (hash_cache)、サムネイル テーブル (photothumbs)、画像テーブル (photo)、ユーザー グループ テーブル (group_setting)、ユーザー情報テーブル (member_info)、ユーザー ログイン記録テーブル (loginlog)、画像分類テーブル (sort_setting )、ユーザー アップロードアルバム テーブル (job) とタグ テーブル (tags_setting)。
表は主に次のセクションに分かれています。

管理者関連テーブル:
図 5-6 管理者関連テーブル
システム設定テーブル:
図 5-7 システム設定テーブル

ユーザーグループ設定表
図 5-8 ユーザーグループ設定表
写真情報テーブル
図 5-9 写真情報テーブル
アルバムとレーベル分類表
図 5-10 アルバム分類とレーベル分類表

5.3.1 フロントエンド ユーザー向けの主なデータベース テーブル構造の設計
ユーザー アップロード アルバム テーブル (ジョブ) は、ユーザーがアップロードした一連の写真の基本情報を保存するために使用されます。
表 5-1 ジョブ テーブル
名前 タイプ 説明
job_id BIGINT( 11) 番号
記事 MEDIUMTEXT アルバムの内容説明
Article_title TINYTEXT アルバム タイトル
Article_info TINYTEXT アルバム紹介
著者 varchar(40) 著者
著者名 BIGINT(11) 著者 ID
sort_id BIGINT(11) カテゴリ ID
album_id BIGINT(11) アルバム ID
ヒット数 mediaint(7)クリック数
Replies mediaint(7) Replies_page
Mediumint(7) 返信ページ番号
Lastpost BIGINT(11) 最終返信
Lastposter varchar(30) 最終返信者
Lastposterid BIGINT(11) 最終返信ユーザー ID
Posttime BIGINT(11) Post time
Hidden int(2) )
Isparseurl int(2) を非表示にするかどうか
。 ユーザーの IP を公開するために Ipaddress varchar(16)を引用するかどうか。
ユーザー情報テーブル (member_info) は、写真をアップロードするユーザーの詳細情報に使用されます。これは、写真テーブルと 1 対多の関係になります。 表 5-2 member_info テーブル 名前 タイプ 説明 Id BIGINT(
11
)
User番号
reg_time BIGINT(11) 登録時刻
名前 varchar(32) ユーザー名
photo_album_name varchar(32) 画像名
Blog_album_describe BLOB(100) 説明
Gander char(1) 性別
Pwd varchar(64) ユーザー パスワード
Gid mediaint(6) ユーザー グループ ID
Email varchar(64) ユーザーメールボックス
5.3 .2 管理バックグラウンドデータベーステーブル構造の設計システム設定テーブル(設定)は、システム
の基本的な設定情報を格納するために使用されます) 設定の説明値 TEXT 設定値の型 varchar(20) 設定の種類






管理者操作記録テーブル (adminlog) は、管理者の操作記録をバックグラウンドで保存するために使用されます。
表 5-4 adminlog テーブル
名前 タイプ 説明
Adminlogid int(5) レコード番号
Uid BIGINT(11) 管理者番号
user_name varchar(32) 管理者名
アクションvarchar(50) 操作の名前
Script varchar(255) 操作によって呼び出されるスクリプト
Date int(10) 操作が実行された時刻
Ipaddress varchar(16) 操作を実行した管理者の IP アドレス
管理者情報テーブル( admin_info) は、管理者の基本情報を格納するために使用されます (システムの複雑さを軽減するために、管理者の権限と管理者の情報は同じテーブルに直接書き込まれ、分割されません)表 5-5 admin_info
テーブル
名前 タイプ 説明
Aid BIGINT(11) 管理者番号
admin_name varchar(32) 管理者名
Pwd varchar(64) 管理者パスワード
Gid mediaint(6) 管理者グループ ID (予約済み)
can_admin int(1)システム管理権限
can_user int(1) ユーザー管理権限
can_category int(1) カテゴリ管理権限
can_setting int(1) 設定管理を行う権限

6 特殊な問題への解決策
このシステムの設計・開発中にも多くの問題に遭遇しましたが、より特殊な問題の分析と解決策を以下に示します: 6.1 文字化けの問題 設計中に文字化けの問題に遭遇しまし

。 。ページ間の行き来で漢字が文字化けする データベースから直接データを追加した場合は文字化けはしませんが、バックグラウンド管理からデータを追加した場合、追加成功後に表示ページに文字化けが発生します。この問題は、開発プラットフォームが WINDOWS であり、WINDOWS のデフォルトのエンコード形式が GB2312 であるにもかかわらず、動作環境が UTF-8 環境であることが原因であり、文字化けを避けるためには開発環境全体の文字エンコードを変更する必要があります。統一: 1
まず、データベース内のエンコーディングを統一します。
データベースを作成してデータベースにクエリを実行するときは、最初にエンコーディングを UTF-8 に設定します。
SET CHARACTER_SET_CLIENT = utf8、
CHARACTER_SET_CONNECTION = utf8、CHARACTER_SET_DATABASE = utf8

CHARACTER_SET_RESULTS = utf8、
CHARACTER_SET_SERVER = utf8、
COLLATION_ CONNECTION = utf8_general_ci,
COLLATION_DATABASE = utf8_general_ci,
COLLATION_SERVER = utf8_general_ci,
AUTOCOMMIT=1";
2. HTML テンプレートの HEADER 部分でエンコード標準を指定します。

3. PHP 出力の前に、HEADER コンテンツで使用される文字ストリーム エンコードを宣言します。
header('Content-Type: text/html; charset=utf-8');
6.2 アップロードの進行状況の動的な表示
フォームを介したアップロードには欠陥があり、現在のファイルがどれだけアップロードされたかを動的に表示できません。 。このように、ユーザが比較的大きな画像をアップロードする場合、アップロードに費やした時間やブラウザがタイムアウトするかどうかをユーザが判断することは非常に不便である。解決策: 検索した結果、JAVASCRIPT および PHP SOCKET ライブラリを通じてアップロードの進行状況を動的に生成する PHP ライブラリ、UGiA PHP UPLOADER を見つけました。このライブラリの使用方法は非常に簡単で、呼び出し方法については以下で詳しく説明します: 呼び出し方法
:
1. upu/misc/upu.js の場合、varbasePath = "/upload/upu/"; をパスに変更します。 Web サイトのルート ディレクトリを基準とした upu の相対パス
2. 次に、アップロード フォームを含むページにそれを追加します。

、ここ

upu/misc/upu.js は upu.js のパスで、ラベルに
οnsubmit="return upuInit(this)"を追加します。 3. POST を使用して
、ファイルのアップロード後に処理されたページ内のフォーム データを取得します。 4. upu /temp一時ファイルをアップロードするための保存ディレクトリ、upu / files はファイルの保存ディレクトリであり、upu.class.php ではこの 2 つのディレクトリを指定することができます。5. < form > には属性 enctype = "multipart / form − data " が必要で、action はファイルが正常にアップロードされた後の処理ページです。つまり、< form > は通常の考え方に従って完全に記述できます。唯一の違いは、 onsubmit = " returnupu I nit ( this ) " を追加する必要があることです。 6. アップロードが成功したら、_POST を使用してフォーム データを取得できます。 4. upu/temp は一時アップロード用の保存ディレクトリです。ファイル、upu/files はファイルの格納ディレクトリであり、upu.class.php には 2 つのディレクトリを指定できます。5. <form> には enctype="multipart/form-data" の属性が必要です。アクションは、ファイルが正常にアップロードされた後の処理ページです。つまり、<form> は完全に次に従って記述できます。通常の考え方ですが、唯一の違いは、οnsubmit="return upuInit(this)" を追加する必要があることです。 6. アップロードが成功したら、次のコマンドを使用できます。Pフォーム データを取得するためのOST 4. up p u / t e m p は、一時ファイルをアップロードするための保存ディレクトリですup p u / filesファイル保存ディレクトリですこれら2 つのディレクトリは、up u . c l a ss . phpで指定できます5.<フォまたはメートル>エンクタイプ_ _ _ _ _ _=マルチパート/フォーミュラ_ _ _ _ _ _ _d a ta "この属性、a c t i o n、ファイルが正常にアップロードされた後の処理ページです。つまり、<フォまたはメートル>通常の考え方に従って書くだけで十分です。唯一の違いは、送信追加する必要があることです。=" re t u r n u p u I ni t ( th i s ) "6.アップロードが成功したら、 _POST を使用してフォーム データを取得できます。通常のフォームであれば
$ で直接取得できます。 _POST['フォーム名'] 値がファイルの場合、次のような配列を返します。
POST [ ' フォーム名 ' ] = A array ( [ filename ] = > [ clientpath ] = > [ savepath ] = > [ filetype ] = > [ filesize ] = > [ extension ] = > ) 6.3 任意に画像をバッチでアップロードする 一般問題点 フォームアップロードモードでは、ファイルアップロードを提供するフォームを動的に生成し、自由に追加することができますが、ユーザーに多大な不便をもたらし、バックグラウンド処理が複雑になります。既存のオブジェクトをバックグラウンドで処理し、単一ファイル処理のインターフェースを使用して、一括アップロードの問題を自由に実現します。具体的な比較の結果、最終的に写真の一括アップロードの中間処理として juupload のアプレット ライブラリが選択されました。同時に、アップロードされたファイルをバッチで処理するには、アップロードされたファイルを処理するためのコールバック スクリプトを手動で記述する必要があります。具体的な実装原理は次のとおりです。後のファイルのアップロードを処理するためのコールバック スクリプト。このコールバック スクリプトを通じて、アップロードされたイメージを _POST['フォーム名'] = Array ( [filename] => [clientpath] => [savepath] => [filetype] => [filesize] => に準拠するように手動で構築できます。 [拡張子] => ) 6. 3 画像のランダム一括アップロードの問題 一般的なフォームアップロードモードでは、ファイルアップロード用のフォームを動的に生成し、任意に追加することができますが、ユーザーに多大な不便をもたらし、バックグラウンド処理が複雑になります。 、したがって、最良の方法は、ランダムなバッチアップロードの問題を実現するために、バックグラウンドで単一ファイルを処理するための既存のインターフェイスを使用することです。具体的な比較の結果、画像をバッチでアップロードするための中間プロセスとして juupload のアプレット ライブラリが最終的に選択されました。同時に、アップロードされたファイルをバッチで処理するには、アップロードされたファイルを処理するためのコールバック スクリプトを手動で記述する必要があります。具体的な実装原理は次のとおりです。後のファイルのアップロードを処理するためのコールバック スクリプト。このコールバック スクリプトを通じて、アップロードされた画像をセクション 5.2 の要件を満たすように手動で構築できます。POST ['フォーム] _=配列( [ファイル] _ _ _ _ _ _=>[クライアントパス] _ _ _ _ _ _ _=>[パス保存] _ _ _ _ _=>[ファイルタイプ] _ _ _ _ _ _=>[ファイル] _ _ _ _ _=>[拡張] _ _ _ _ _ _ _ _=>) 6.3写真のランダム一括アップロード 一般的なフォームアップロードモードでは、ファイルアップロード用のフォームを動的に生成し、任意に追加することができますが、ユーザーに多大な不便をもたらし、バックグラウンド処理が複雑になるため、それが最善です。 最善の方法は、ランダムなバッチアップロードの問題を解決するために、バックグラウンドで単一ファイルを処理するための既存のインターフェイスを使用することです。具体的な比較の結果、画像を一括アップロードするための中間処理としてjuploadアプレットライブラリが最終的に選択されました同時に、アップロードされたファイルをバッチで処理するには、アップロードされたファイルを処理するためのコールバック スクリプトを手動で記述する必要があります。具体的な実装原理とおりですアップロードされたファイルを処理するスクリプト。このコールバック スクリプトを通じて、アップロードされた画像をセクション5.2の_POST[フォーム名] 変数に準拠するように手動で構築できます。
具体的なコードは次のとおりです。

<?php include_once('../sys.php'); function message_sender($can_save){ // jupload にエラー応答を送信 // 形式は API バージョンに依存 switch(php_sapi_name()) { case 'cgi': case 'cgi-fcgi': $sz_htstatus = 'Status: '; 壊す; デフォルト: $sz_htstatus = 'HTTP/1.0: '; 壊す; } // 偽のエラー メッセージ // jupload が != 200 ステータス コードを取得した場合、エラー メッセージを出力します if (!$can_save) { $sz_message='406 このファイルを保存することはできません'; } else { $sz_message='200 JUpload はアップロードされました'; ヘッダー($sz_htstatus.$sz_message); } //未登陆の直接退出 $result = $_GET['jid']; もしも (!is_numeric($result) || $result <= 0) { message_sender(false); 終了(0); $_SESSION['job_title'] = $_GET['job_title']; $_SESSION['job_cat'] = $_GET['job_cat']; $_SESSION['ジョブコンテンツ'] = $_GET['ジョブコンテンツ']; $_SESSION['job_tags'] = $_GET['job_tags']; $_SESSION['jid'] = $_GET['jid']; $_SESSION['uid'] = $_GET['uid']; $uptp = $_SESSION['job_title'] 。'|' $_SESSION['job_cat'] 。"|" $_SESSION['ジョブコンテンツ'] 。"|" $_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/files/'; $_POST['FileUp']['clientpath'] = $objekt['name']; $_POST['FileUp']['filesize'] = $objekt['size']; $_POST['FileUp']['filename'] = ベース名($objekt['name']); $_POST['FileUp']['filetype'] = $objekt['type']; $ext =explode('.',basename($objekt['name'])); $ext = $ext[(count($ext) - 1)]; $_POST['FileUp']['extension'] = $ext; $_POST['FileUp']['savepath'] = $save_path 。sha1(basename($objekt['name']) . time()) . mt_rand(100,999) 。「。」$ext; // それらを upu ディレクトリに移動します if (!file_exists($_POST['FileUp']['savepath'])) { move_uploaded_file($objekt['tmp_name'],

このうち、UPU 配列セグメントの構築は、アップロードされたファイルを構築するためのコードです。このコードにより、バックグラウンド処理は、コンテンツを処理するためのスクリプトを別途書き直すことなく、後続の処理を直接実行できます。
以下は、アップロードされた画像を処理するためのスクリプトです (画像処理全体は別のクラスに抽象化されていますが、コードが多すぎるため省略されています) $pic_info
= $_POST['uptp'];
picinfo =explode ( ′ ∣ ′ , pic_info = 爆発 ('|',p i c私はンフォ_ _=エクスプロー( _ _ _ _ _'pic_info、4);
pictitle = トリム ( pic_title = トリム(p i c_=トリム( pic_info [ 0]);
piccat = トリム ( pic_cat = トリム(p i ccああ_=トリム( pic_info [ 1 ] );
picdes = トリム ( pic_des = トリム(p i cdエス=t r im ( pic_info[2]);
//ここでの TAG は配列であることに注意してください
pictags =explode ( ' , ' , トリム ( pic_tags =explode(',',trim(p i cああ_ _=エクスプロー( _ _ _ _「、t r im ( pic_info[3]));
//ユーザーIDはアルバムID
$album_id =SESSION [ ' uid ' ] ; if ( _SESSION['uid']; if (Sエスアイオン[ _あなたはです」] ;_i f ( album_id == '') { $album_id = $_GET['uid'];}//ファイルのアップロード処理photo = getphotoobj ( photo = get_photo_obj(



写真_ _ _ _=ゲット_ _pホット_ _ _ああbj ( _POST['FileUp'],$db_settings,'DGBN_B6.TTF',80,80);
//アップロードされたファイルの物理パスを取得
$result =photo − > savepic ( photo->save_pic(写真_ _ _ _>大丈夫_ _ _pi c ( db_settings、piccat、pic_cat、p i cca t jid 、albumid 、 '' 、 album_id 、''、アルバム_ _ _ _私はd 「」 pic_title 、picdes 、 true 、 true ) ; if ( pic_des,true,true); もしも (p i cdエス本当です_ _) ; _ _ _i f ( result < 0) { if ($with_error_exit) { show_normal_mesR('不正な画像です 画像の種類は次のとおりです:' . $_POST['FileUp']['filetype'],'不正な画像','画像アップロード') ;このうち有効な情報を抽出するコードです。7 結果テストとパフォーマンス分析7.1 操作モジュール結合システムは、ビジネス要件に応じて、対応するモジュール操作権限とデータベース操作権限、つまり関連する役割を割り当て、付与されたモジュールとデータベース操作権限は、メニューフレーム構造とページを通じてユーザー操作プラットフォームを形成します組み合わせと操作インターフェイス。7.2 システムログインインターフェース











図 7-1 システムログインインターフェース 図
7.3 モジュール適用例

図 7-2 ユーザーのホームページ

図 7-3 検索結果ページ

図 7-4 画像管理インターフェイス

図 7-5 ユーザー情報変更インターフェース

図 7-6 画像アップロード インターフェイス

図 7-7 画像の一括アップロード インターフェイス

図 7-8 アップロード画像情報設定画面

図 7-9 画像アップロード プロセス インターフェイス
7.4 システムに存在する問題
時間と経験が限られているため、システムにはまだいくつかの問題があり、教師による批判と修正が必要です。
7.4.1 バッチ アップロード接続の URL パラメータの漏洩
バッチ画像アップロード接続によりアルバム ID が公開されるため、ユーザーは違法な手段で存在しないアルバムを作成したり、この URL を使用して挿入ポイントをテストしてセキュリティを制限したりすることができます
。ここで送信される JID は数値である必要があります。
7.4.2 バッチ アップロード ページのソース コード内のコールバック スクリプトによりユーザー ID が漏洩するバッチ
アップロード ページでは、バッチ アップロード コントロールがコールバック PHP スクリプトを呼び出します (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
この接続からユーザー ID の機密情報を直接取得できます。
この情報を SESSION 経由で渡すようにしてください。
7.4.3 正常に戻れない
ユーザーが写真を管理している場合、特定のカテゴリやアルバムの最後の写真を削除すると、正規のページに正しく戻れなくなります。ユーザーが写真を削除すると、自動的に前のページに戻りますが、カテゴリまたはアルバムの下に写真がないため、カテゴリまたはアルバムは存在しません(ユーザーがデザイン中に最後の写真を削除すると、カテゴリまたはアルバム) は、
ユーザーがどのページに戻るか、ホームページに直接移動するかを選択できるようにすることで、このアプローチを変更しようとしています。
7.5 改善のための提案
現在のシステムに存在するさまざまな問題の中には、将来のニーズに合わせて現在のアーキテクチャ設計を変更する必要があるものもあります。同時に、システムのインターフェイスも再設計する必要があり、現在のページはアクティブ レイヤー構造に基づいているため、一部のレイヤーは固定位置を使用しているため、プログラム生成の柔軟性が低下し、インターフェイス テンプレートの変更が必要になります。
同時に、システム ホームページの生成時間が長すぎるため、データベースからの読み取りの代わりにファイル バッファリングが使用される可能性があります。
結論
現在、集中的かつ秩序ある卒業プロジェクトを経て、画像システムの主要な機能が完全に実現されています。システムインターフェースはシンプルで操作が簡単で、機能が充実しており、ユーザー自己登録、写真アップロード、写真管理、写真分類、写真タグ、管理分類、管理タグ、バックグラウンドユーザー管理、システム管理の機能を実現しています。 、写真共有の機能を実現するための基本スキル。ただし、画像を一括アップロードする場合、HTTPパケットの最大数の制限により一度にすべての画像を送信できないことや、画像管理時のタグやカテゴリーの削除など、改善すべき点もいくつかあります。ユーザーにとってはあまり明確ではありません。さらに、このシステムはバックグラウンド管理者にとってより便利な統計機能を提供していません。
このシステムの設計と開発は、教師のリーダーシップの下でのソフトウェア開発会社の設計と開発モードを指します。このシステムの需要分析を通じて、概要設計、詳細設計、コーディング、テストといった各部分の検討と実践を行います。システムの設計段階が決定的な役割を果たしており、設計段階の良し悪しが将来のシステムの品質に直結することを実感しました。要件が正確であるかどうかは、最終的なシステムがユーザーの要件を満たせるかどうかに影響し、概要設計のデータ構造の設計はデータベースの設計が優れているかに影響します。コーディング段階で実装します。詳細設計で関連するクラスの設計や関数の定義を行うことでコーディングの段階に入ることができ、コーディングが当たり前になります。
このシステムを実現するにあたり、これまで学んだことにはまだまだ不足があることを痛感しましたが、システム実現の過程で具体的なプロジェクトに向けて身につけるべき能力を多く得ることができたので、これは大いに活用すべきだと考えています。今後の作業に役立ちます。比較的大きな助けになります。
参考文献
[1] Chen Hao. PHP プログラミング [M]. 北京: Electronics Industry Press, 2012.
[2] Shao Yu. PHP および MYSQL WEB 開発 [M]. 北京: Mechanical Industry Press、2012.
[3] DAVID LANE [米国]. PHP & MYSQL WEB データベース アプリケーション開発ガイド [M]. 南京: 東南大学出版局、2006 年。
[4] MIHAI BUCICA [米国]、AJAX および PHP WEB 開発 [M]、北京: People's Posts and Telecommunications Press、2011 年。
[5] PETER MOLDING [英語]. PHP Technology Insider [M]. 北京: China Water Conservancy and Hydropower Press、2013.
[6] NARAMORE [US]. PHP5、APACHE、MYSQL ネットワーク開発 [M]. 北京: Electronic Industry Press、2012.

謝辞
この記事は、先生方の熱心なご配慮とご指導のもとに完成させたものであり、先生方の深い知識と厳格な学問スタイルは、私に多大な恩恵を与え、このプロジェクトを無事に完了する上で大きな役割を果たしました。ここに彼に心からの感謝の意を表したいと思います。
チェン先生には、長い間、辛抱強く細心の注意を払って私たちを指導し、重要な知識を補ってくれて、本当に感謝しています。同時に、先生はシステムの論理関係を詳細に分析することも手伝ってくれましたし、ガオ先生はプログラム設計で多くの助けを与えてくれたので、問題の分析と解決に非常に役立ちました。また、論文を完成させるまでに、他の先生方や多くのクラスメートの熱心なご支援をいただきましたこと、心より感謝申し上げます。
このグループに良い学習環境を提供してくださった学校指導者の皆様のおかげで、グループのメンバーの相互協力と助けにより、卒業プロジェクトは無事に完了しました。

おすすめ

転載: blog.csdn.net/ambiguous__/article/details/130919447