PHP のコア知識ポイント

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:28:29921ブラウズ

PHP のコア知識ポイント

PHP: スクリプト言語、Web サイト構築、サーバー側の操作

PHP の定義: サーバー側の HTML スクリプト/プログラミング言語。シンプルなオブジェクト指向であり、解釈可能、堅牢、安全、非常に高性能、アーキテクチャに依存しない、移植可能な動的スクリプト言語。これは、オープンソースで広く使用されている多目的スクリプト言語であり、特に Web 開発に適しており、HTML に埋め込むことができます。その構文は C、Java、Perl に似ており、習得が簡単です。この言語を使用すると、Web 開発者は動的に生成される Web ページを迅速に作成できます。

PHP の紹介: Rasmus Lerdorf 開発の歴史 (1994: 1.0 パーソナル Perl、1996: 2.0C ボトムレイヤー、1998: 3.0zendEngine、2000: 4.0session 出力バッファなど、2004: 5.0zend エンジン第 2 世代) )、プラットフォーム サポート (ウィンドウ、Linux、UNIX)、データベース サポート (Sqlserver、mysql、Oracle、Access)、開発環境 (Apache2、mysql、php)

サーバー: ソフトウェア、共通サービス (HTTP、FTP、 MySQL、telnet など)

ソフトウェア構造: cs、bs、PHP ステータス

Web アクセス: IP、ドメイン名、ホスト、ドメイン名サーバー、Web サイト、Web アクセス

オリジナルデータ保存:phpファイル、データベースファイル

Webサーバー構築:

Wamp、lamp、Apacheインストール(www.apache.org)

MySQLインストール

PHP インストール (中国語パスなし、CMD は php.exe -f、VC6 および VC9 を実行)、構成 (Apache が PHP モジュールをロード: LoadModule php5_module "PHP5apachedll path"; PHP 処理を追加: AddType application/x-httpd-php .php; php 設定ファイルの読み込み: Windows、Apache 設定ファイルは PHPIniDir "PHP 設定ファイルのパス" を読み込みます。PHP タイムゾーンの設定: date.timezone)

PHP 操作データベース: PHP は MySQL 拡張機能を開き、拡張子を指定します。ディレクトリ (extension_dir)

Web 動作原理: 静的、動的

仮想ホスト構成: vhost 構成を含むドメイン名仮想ホストに基づいて、仮想 vhost ファイル (VirtualHost、ServerName、DocumentRoot) を編集します。再起動、hosts ファイルの変更、localhost の再構成

PHP スクリプトの実行: ソース プログラムの読み取り、zendEngine (字句解析、構文解析)、オペコードの生成、オペコードの実行、解釈、および相違点のコンパイル

PHP 作業: スクリプト (サービスサイドスクリプト、Web サーバーとブラウザが必要)、コマンドラインスクリプト

基本構文: スクリプト言語 (HTML に埋め込み)、PHP 処理 (タグ認識)、タグ ( デフォルト、、<%asp tag%>デフォルトではないため、有効にする必要があります。推奨されません)、最後のタグは無視できます (無視することをお勧めします: Ajax リターン、トラフィックの節約)、PHP ステートメント (セミコロンで終了、最後のタグは省略可能)

変数: $ 記号、有効な変数名(文字またはアンダースコアで始まり、大文字と小文字が区別されます)、変数の追加、削除および変更チェック (切断の設定解除)、命名規則 (キャメルケース、下線)

定数: 定義 (define)、直接使用、機能 (変更不可、大文字と小文字を区別、削除不可、定数値はスカラーのみ、命名は変数と同じ、$なし)、定数判定(定義済み)、出力(constant('定数名'))

PHP コメント: 行コメント、ブロック コメント

定義済み変数: $ _POST、$_GET、$_REQUEST、$_FILES、$_SESSION、$_COOKIE、$GLOBALS、$_SERVER、$_ENV

定義済み定数: __FILE__、__LINE__、__DIR__、__FUNCTION__、__METHOD__、PHP_OS、PHP_VERSION、PHP_INT_SIZE、PHP_INT_MAX

変数 variable

値の受け渡し: 値の受け渡し、参照の受け渡し

データtype: PHP if 型、8 つの主要なデータ型 (整数、浮動小数点、ブール型、文字型、配列型、オブジェクト型、リソース型、空の型)、3 つの主要なカテゴリ (スカラー、コンポジット、特殊)

整数型: 10 進数、8 進数 (0)、16 進数 (0x)、16 進数出力の指定 (printf、%d、%o、%x)、整数値範囲 (PHP_INT_SIZE、PHP_INT_MAX)、バイト、ビット、基数変換 (10 から 10 へ)その他、剰余反転を除く、その他 10 に変換、べき乗)、整数オーバーフロー (浮動小数点型)、タイムスタンプ (グリニッジ標準時、時刻、日付)

浮動小数点型: 10 進出力を保持 (printf('% .2f')、float、double

ブール型: true および false、TRUE、FALSE (0 以外)、ブール値出力は var_dump を使用、FALSE (FALSE, 0, 0.0, '', '0' 、空の配列、null 値)

文字列: 一重引用符、二重引用符、差分 (解析変数、エスケープ、{}、文字列配列)、区切り文字 (最初のマークと終了は 1 行にあり、終了マークは上部のボックス) 、解析変数、エスケープ、実用的なアプリケーション /=、%=、.=)、比較演算子 (>、<、>=、<=、==、===、!=、!==)、エラー抑制子 (@)、自己操作演算子 ( 、 --)、文字列演算子 (.)、三項演算子 (?) :)、論理演算子 (&&and、||or、!)、ビット演算子 (&、|、^、~、<<、>>)

元のコードの補数 : 次の 2 の補数正の元のコードは、1

の補数である負の符号ビットを除いて同じです。

フロー制御: シーケンシャル構造、分岐構造 (if、ifelse、ifelse[else]、switch[case、break、default])、ループ構造 (for、while、dowhile、foreach、 continue、break)

テンプレート構文:タグ構文、分岐構造、ループ構造

関数:main関数(コード再利用、モジュラープログラミング)、定義(関数関数名(パラメータリスト))、呼び出し(関数名(パラメータリスト)) ))、定義と呼び出しの間に順序関係なし、仮パラメータ、実パラメータ、パラメータの受け渡し(値渡し、参照渡し、デフォルト値)、戻り値(戻り値の実行中断、単一の戻り値、複数の戻り値[渡し参照パラメーターによる])、スコープ (グローバル スコープ、ローカル スコープ、変数のスコープ、詳細な分析 [js および PHP]、スーパー グローバル スコープ、$GLOBALS およびグローバル)

匿名関数

pseudo 型:mixed、number、callback、void、

データ型変換:int、integer、bool、Boolean、float、string、array、object、自動変換(値変換)

データ型 判定:is_bool、is_float、is_integer、is_object、is_array、is_string、is_resource、is_scalar、is_null、is_numeric、gettype、settype

参照ファイル:require、include、require_once、include_once、role(レイアウト、パブリック含む)ファイル)、ファイルロードの原理(ロードは非実行、コンパイルされたファイルがロードされます)、require と include の違い、ファイルリターン(設定ファイル)

終了スクリプト: return、exit、die

ロードファイルパス: 絶対パス、相対パス (./、../、/)、ファイルロードの相対パス問題

文字列関連関数: strlen、substr、strto lower、strtoupper、strrev 、 strpos 、 strrpos、 strchr、 strrchr (ファイル サフィックス名を取得)、trim

時間関連関数: time、date、strtotime、microtime

数学関連関数: abs、floor、ceil、 Round、rand、mt_rand

配列: 概念、配列を使用する理由 (変数の関連付け)、PHP 配列の特性 (データ型なし、配列の添字は文字列にすることができます [ループトラバーサルには使用できません]、配列の長さは可変であり、オーバーフローしません)、配列定義 (配列、[])、配列を直接エコーすることはできません、配列の長さ (カウント、トラバーサル)、foreach (原則: 代入ポインターは下に移動します) )

2 次元配列: 定義、構文、2 次元配列走査、関連する 2 次元配列、走査

各リスト: each (構文)、リスト (構文、インデックス配列のみ)要素を取得でき、値はインデックス順に割り当てられます)、 each と list の組み合わせは配列を横断します、 each と foreach (foreach 原則、each 原則) の違い

配列関連関数: キー、current、next、prev、end、reset、array_keys、array_values、データ構造シミュレーション (array_shift、array_unshift、array_push、array_pop)、文字列分割 (explode、implode)、array_walk_recursive (コールバック関数、アドレスで渡されます)

配列操作: 、array_merge

配列比較: ==、= ==

その他の関数: range、array_rand、shuffle

SQL インジェクション: 原則、解決策 (addslashes、ストリップスラッシュ、magic_quotes_gpc5.3 以前、get_magic_quotes_gpc)、パブリック関数 (array_walk_recursive から $_POST への転送 意味)

配列アルゴリズム: ソート (バブル、挿入、選択、クイックソート)、検索 (カスタム検索、二分法)

フォーム値の転送:ウェブサイト 目的(データ管理:収集、並べ替え、保存、公開)、収集(フォーム実装)、データ転送(URL、フォーム)、値転送方法(get、post) )

データ受信: $_GET、$_POST、$_REQUEST、データ処理、$_REQUEST が信頼できない (override、request_order、variables_order)

クリック動作判定: isset($_POST[' submit'])/empty()

自動 グローバル変数の設定: register_gloabals5.3

チェック ボックスの使用法: []、データベースへの入力 (文字の結合)、チェック ボックスの情報の表示 (チェック済み) 、一括削除

ファイルアップロード: 概念、問題点 (ブラウザ側、サーバー側)、プロセス (フォームポスト、enctype='multipart/form-data'、PHP 構成 file_uploads、構成項目の説明 (file_uploades、upload_max_filesize、 post_max_size、upload_tmp_dir))、ファイルのアップロード プロセス (ファイルのローカル選択)、送信、サーバーの一時ディレクトリへのファイルの送信、一時ファイルのエスケープ)

PHP 処理: $_FILES、$_FILES の説明、ファイルの移動 (コピー、 move_uploaded_file)、ファイル タイプの確認 (MIME)、ファイル名の変更 (一意、識別可能)

アップロード関数パッケージ

ファイル操作: 理由 (頻繁に変更されないデータの保存)少量のデータでは、構成ファイル、トラフィック統計、静的 Web ページの生成、ファイルのダウンロードが行われます。 。 。 )

ディレクトリ操作: opendir、readdir、rewinddir、closedir、scandir

scandir 関数関数のカスタマイズ実装

ファイル判定: file_exists、is_dir、is_file、mkdir、rmdir、 getcwd、chdir、ファイルのアップロードは月次分類で管理されます

出力フォルダー内のすべてのファイルとサブフォルダーをループします: 静的変数、関数再帰 (原則、再帰ポイント、再帰終了)

ファイル操作:読み取りおよび書き込み、PHP5 (file_get_contents、file_put_contents[FILE_APPEND、FILE_USE_INCLUDE_PATH]、配列ファイル)、PHP4 (fopen、Mode[r、r、w、w、a、a]、fgetc、fgets、fread、fputs、fwrite、fclose 、 fseek)

ファイル関連の機能: コピー、リンク解除、名前変更、filemtime、filesize、fileperms

ファイルのダウンロード: html ダウンロード (a href='use.zip'、短所: 単純なファイル形式、ファイルのフルパスが公開される)ファイル) 、PHP (header("Content-type: application/octet-stream")、header("Content-Disposition:attachment; filename=filename" )、出力ファイルの内容)

パート 2

0 Mysql 拡張ライブラリ、PHP は mysql を操作します

MySQL データベースを操作するための PHP のメイン拡張ライブラリ: mysql (プロセス指向)、mysqli (プロセス指向およびオブジェクト指向)、pdo (オブジェクト指向)

mysql 拡張ライブラリを構成します: php.ini が拡張機能をロードし、拡張パスを構成します extension_dir

PHP 操作 mysql: 原則、

データベースに接続します(mysql_connect[host,user,pass,new_link])、

接続を閉じる (mysql_close)、

データベースを選択する (mysql_select_db)、

SQL を送信する (mysql_query,異なるタイプの SQL の戻り値は異なります)、

結果セット リソースの解析 (mysql_num_rows の結果セット行数、結果セット データを取得するための mysql_fetch シリーズ、結果セット ポインター、結果セットの走査)

その他の関連関数: 影響を受ける行数 (mysql_affected_rows)、新しいデータの ID (mysql_insert_id )、結果セット ポインターの設定 (mysql_data_seek)

登録成功ジャンプ関数、ページング関数 (1 回取得、取得)ページごと)

HTTP プロトコル: ハイパーテキスト送信プロトコル、B/S アーキテクチャ プロジェクトに従う基本プロトコル、ブラウザとサーバーの通信の基本原則 (接続の要求 (TCP/IP プロトコル) )、接続の成功、ブラウザの送信リクエスト、サーバーの処理リクエスト、ブラウザの処理結果、接続の終了)、HTTP プロトコルの 2 つの部分 (リクエスト、レスポンス)、URL、機能 (クライアント/サーバー モードのサポート、シンプルで高速なリクエスト メソッドのみ)およびパス]、柔軟な [任意のデータ]、コネクションレス [各接続は 1 つのリクエストのみを処理します]、なし ステータス [トランザクション処理にはメモリがありません])

HTTP リクエスト:

4 つの部分 (リクエスト行) 、リクエストヘッダー、空行、リクエストボディ)

リクエスト行 (リクエストメソッド、リクエストファイル、プロトコル/バージョン)

リクエストヘッダー (ホスト、accept-encoding、referer、connection、accept- language、cookie、user-agent、accept、content-length (post)、if-modified-since (get)、content-type (post))

空行

リクエスト本文 ( post リクエスト データ)

Telnet シミュレーション リクエスト

HTTP 応答:

4 つの部分 (ステータス行、応答ヘッダー、空行、応答本文)、

ステータス行 (プロトコル/バージョン、ステータス コード、ステータスの説明)、

応答ヘッダー (サーバー、日付、最終更新日、コンテンツの長さ、コンテンツ タイプ、場所、更新、コンテンツ エンコーディング、キャッシュ制御) )、

空行、

レスポンスボディ (content )、ヘッダーはその前に出力できません、ヘッダーは Cookie を設定します

関数呼び出しの前に出力できない関数: session_start、setcookie 、header、output_buffering

共通の応答ステータス情報:

1XX (サーバーはリクエストを受信して​​処理を継続)、

2XX (成功、200)、

3XX (リダイレクト、302 リダイレクト、304 変更なし)、

4XX (リクエスト エラー、404 見つからない、403 禁止)、

5XX (サーバー エラー、502 無効な応答)

PHP シミュレーションの応答とリクエスト:

応答 (ジャンプ、更新)、画像の送信、ダウンロード (アプリケーション/オクテットストリーム、コンテンツの配置: 添付ファイル; ファイル名)、

リクエスト(fsockopen、fwrite、feof、fgets、get リクエスト、post リクエスト)

オブジェクト指向: プロセス指向 (操作プロセス) とオブジェクト指向 (操作主体)、oop (ソフトウェア設計アーキテクチャのアイデア)

基本概念: クラス (オブジェクトの抽象化)、オブジェクト (クラスのインスタンス化/クラス型 (カスタム データ型))、インスタンス化、メンバー (クラス内の変数、関数、定数)

構文操作:

クラスの定義 (クラス)、

インスタンス化 (新規、括弧あり、括弧なし)、

キャスト (オブジェクト)、stdClass (空) class)、

アクセス修飾子修飾子 (var、public 、protected、private、difference)、

オブジェクト アクセス メンバー (->)、

メンバーは 3 つだけですクラス内 (プロパティ、メソッド、定数はエコーできません)、

属性によって定義される値は固定値である必要があります。 プライベート属性 (メソッド、$this) にアクセスする方法

。メモリの説明: クラス、オブジェクト、メソッド、属性 (領域使用量から分割、メモリ以外の分割)

マジック メソッド: コンストラクター (初期化)、デストラクター (リソースの解放、オブジェクトの設定解除)、コンストラクターのプライベート化

コンストラクター メソッドの互換性: クラス名メソッド

大文字と小文字を区別する: 属性、配列添字、変数

オブジェクトの受け渡し: 参照の受け渡し

オブジェクトの比較: == (類似オブジェクト同じ属性値)、=== (同じオブジェクト)

DB クラス: クラス ファイルの名前付け (クラス名.class.php)

自動ロード: インスタンス化する前にクラス定義が必要ですオブジェクト、自動ロード (__autoload)、自動ロード原理、自動ロード競合 (spl_autoload_register)

クラス定数: 定義(const)、メモリ除算、アクセス(クラスアクセス、範囲解決演算子、オブジェクトアクセス(メソッド))、selfキーワード、selfとthisの差分

静的メンバ: 定義( static )、プロパティ、メソッド、アクセス (スコープ解決演算子)、静的プロパティと定数のアクセスの違い

静的メソッドと非静的メソッドの違い ($this)

マジック メソッド: __toString( ) (エコー オブジェクト)、__clone() (別のオブジェクトにコピーされ、クローン作成では構築メソッドが使用されず、クローン作成が防止されます (プライベート))

シングル ケース モード: 概念 (クラスにはオブジェクトが 1 つだけあります) )、理由 (リソースの節約)、原則 (3 つのプライベートと 1 つのパブリック)

ファクトリ パターン: コンセプト (オブジェクトの生成)、理由 (便利な管理)、ファクトリ シングルトン パターン

オブジェクト指向である必要はない クラス(js)がある

Oop の 3 つの主要な機能: カプセル化、継承、ポリモーフィズム

カプセル化: データとデータ操作、クラスを作成するプロセス、オブジェクトのプロパティと実装の詳細を非表示にし (プライベート化)、外部インターフェイスを提供します (読み取りと書き込みが制限されます)

継承: 1 つのオブジェクトが別のオブジェクトのプロパティとメソッドを直接使用し、コードの重複を削減します

ポリモーフィズム: 複数のインターフェース さまざまな実装方法、PHP には

継承はありません: 構文 (拡張)、継承原則、継承メンバー制御 (保護)、継承アクセス (サブクラスが親クラスにアクセスし、親クラスがサブクラスにアクセス)

継承の競合: オーバーライド、制御レベル (サブクラスは親クラスより弱い)、同じ名前の親クラス メソッドへのアクセス (親)

PHP 単一継承、チェーン継承 (多重継承)、継承の使用 (テーブルクラスは DB クラスを継承します)

特殊クラス: 継承できないクラスと継承のみ可能なクラス、final クラス、final メソッド (継承できますがオーバーライドできません)、抽象クラス (インスタンス化できない)、抽象メソッド

プロジェクト設計: 大規模プロジェクト、多数のチーム (インターフェイス仕様、抽象クラス仕様)、小規模プロジェクト (未使用)

インターフェイス: 構造と構文を具体的に規定クラス (インターフェース) 、インターフェース本体 (定数とメソッド、メソッドは実装できない、パブリックのみ)、インターフェース (実装) を実装、サブクラスはインターフェースのすべてのメソッドを実装する必要がある、複数のインターフェースを実装する

インタビューの質問: ありますPHPは多重継承をサポートしていますか?シミュレーションするにはどうすればよいですか?インターフェイスはクラスですか?インターフェースは抽象クラスですか?

PHP オーバーロード: ユーザーが存在しない、または使用できないメンバー属性またはメソッドを操作した場合の処理​​

属性のオーバーロード: __get()、__set()、__isset() (呼び出された場合は isset および空)、 __unset() (呼び出しの解除)

メソッドのオーバーロード: __call()、__callStatic()

オーバーロードの意味: ユーザー操作の条件制限、エラー修正

オブジェクトの保存と復元: file_put_contents は保存され、file_get_contents は取得されますが、オブジェクトを直接保存することはできません

シリアル化: Serialize

逆シリアル化: unserialize、PHP_Incomplete_Class、使用不可元のオブジェクト (リソースの解放)、クラス ファイルの導入によって元のオブジェクトが取得でき、クラスが自動的にロードされ、データベース接続が失敗します

オブジェクトの保存と復元: __wakeup()、__sleep()

オブジェクトの判定:instanceof、継承されたオブジェクトはサブクラスと親クラスの両方に属します

オブジェクトには次のメソッドが含まれます: class_exists、interface_exists、method_exists、get_class (オブジェクトのクラス名を取得)、get_parent_class (オブジェクトのクラス名を取得)親クラス名)

オブジェクト トラバーサル: 属性トラバーサル、通常の foreach トラバーサル、クラス内 foreach トラバーサル ($this)、クラス内固有の属性トラバーサル (イテレーター事前定義インターフェイス)

[PDO]:PDO、関数(便利)移植)、原理、設定(拡張)

PDOの主なクラス:PDO(データベース接続、SQL送信)、PDOStatement(結果セット、前処理)、PDOException (PDO 例外処理)

PDO クラス: コンストラクター (DSN データ ソース、ユーザー名、パスワード)、オブジェクトの破棄 (提供されていない、設定解除、null)、SQL の実行 (結果セットなし exec (追加、削除、変更) 、lastInsertId; 結果セット PDOStatement クエリ)、エラー処理 (errorCode、errorInfo)

PDOStatement クラス: 関連関数 (rowCount、columnCount)、結果セットの走査 (fetch[FETCH_ASSOC、FETCH_NUM、FETCH_BOTH、FETCH_OBJ、FETCH_BOUND) ]、bindColumn、fetchAll、fetchColumn、fetchObject、setFetchMode)、前処理 (準備、[配列パラメーター] の実行、bindParam [推奨、最初にバインドしてから割り当てます]、bindValue [推奨しません、最初に割り当ててからバインド、毎回バインドします] )、トランザクション処理 (beginTransaction、commit、rollBack)

PDO 属性設定: setAttribute、getAttribute、属性名と値 (PDO::ATTR_AUTOCOMMIT (1,0)、PDO::ATTR_CASE (PDO::CASE_LOWER、 PDO::CASE_UPPER、PDO::CASE_NATURAL)、PDO::ATTR_ERRMODE (PDO::ERRMODE_SILENT、PDO::ERRMODE_WARNING、PDO::ERRMODE_EXCEPTION)、PDO::ATTR_PERSISTENT (TRUE、FALSE))

PDOException クラス: try-catch-throw

リフレクション: リフレクション リフレクション メカニズム、リフレクション (ReflectionClass::export(class))、リフレクション クラス内部 (new ReflectionClass(class)、getConstants、getProperties、isStatic、getMethods)

Ecshop のインストール : 仮想ホスト、gd ライブラリ拡張、データベースの構成、バックエンド管理者の構成、テスト データのインストール、バックエンドへのアクセス

ショッピング システム: ecshop を模倣して小規模な商品管理とショッピングシステム

機能:バックエンドユーザーログイン(フォーム、セッション、クッキー、検証コード)、商品分類管理(Infinitus分類)、商品管理(ファイル処理、サムネイル、透かし処理、ページング、商品バッチ管理、WYSIWYGエディター使用)、時間許可 (フロントエンド製品の閲覧、ショッピング カートのアクション、ユーザー管理など)

プロジェクトの設計: プロジェクト マネージャーの観点からプロジェクトを設計します (プロジェクト アーキテクチャ (フレームワーク、ソース コード、開発モデル)、コード構造 (プロジェクト ディレクトリ分割、機能分割)

現在一般的な開発モデル: 二次開発、フレームワーク開発

データ アーキテクチャ: データ サイズ、更新頻度 2 つの主要なデータベース キャンプ (SQL、NOSQL) , 主なアーキテクチャ (テーブル、テーブル関数、テーブル構造、テーブル内のデータ関係)

フロントエンドとバックエンド: フロントエンド (ユーザーが見る、データを表示する)、バックエンド (管理者が見る、データを管理する)、フロントエンドとバックエンドは機能別に分けられ、アーティストとプログラマは作業内容に応じて分けられます。

プロジェクトのディレクトリ構造、コード分割: プロジェクトはフロントエンドとバックエンドに分かれており、admin はフロントエンドとバックエンドのパブリック部分です。フロントエンド インクルード、バックエンド パブリック ファイル admin/includes、フロントとバックエンド デフォルトのアクセス入口があります。index.php

プロジェクト コード設計: データがコアであり、データはデータにアクセスして管理するためのコードです。 mysql、PHP は db.class.php (インクルードの下) ロジックを通じてデータベースにアクセスします。パブリック関数はクラス (ファイル アップロード、画像処理、ページング) でカプセル化されます。

バックエンド ユーザー ログイン関数の設計:ログイン フォーム (ログイン、確認コード、終了、パスワードの取得、パスワードの記憶)、admin /templates/login.php、コードの種類は単純なものから複雑なものまであり、PHP ファイル (ログイン: admin/privilege.php) を要求します。

バックグラウンドプロジェクトの初期化: 実行環境 (エラーレベル、エラー表示)、基本的なディレクトリ定数、設定ファイルシステム、パブリックコード (自動ロード関数、ジャンプなど)、admin/includes/init.php

Admin/includes/init.php: エンコード設定 (ヘッダー)、ディレクトリ定数 (__DIR__ 、バックスラッシュ処理、ROOT_DIR、ADMIN_DIR、INCLUDE_DIR、ADMIN_INCLUDE_DIR、ADMIN_TEMPLATE_DIR)、5.3 下位バージョンのディレクトリ定数 (__FILE__)

設定ファイルシステム: /config/config.php、データベース接続情報、二次元配列 (識別しやすい)

ロード設定ファイル: admin/includes/init.php、設定ファイルディレクトリ定数、設定ファイルのグローバリゼーション ($GLOBALS['config'])

実行環境設定: ini_set () (error_reporting、display_errors)、エラー レベルの関係

ログイン インターフェイス: ecshop から取得、js ファイル、画像ファイル、cssファイル

ログイン機能:privilege.phpの実装、初期化ファイルの導入、login.phpファイルの導入、アクション(判別アクション)、if分岐判定アクション

ユーザーログインフォーム設計: requestprivilege.php、デザイン隠しフィールドact、$_REQUEST (GPC、request_order、variables_order)

ユーザー情報の検証: デザイン管理者テーブル(ライブラリ、テーブル、フィールド(id、ユーザー名、パスワード、登録時刻、最後)ログイン時間と IP))、データの挿入、検証のためにユーザーが送信したデータの受信、データベース操作 (DB クラスを使用、テーブルごとに 1 つのクラス (/includes/adminTable.class.php))

テーブルクラス設計: DB クラス、属性 (table_name、fields) を継承

テーブル クラスの呼び出しを確認: 自動的にロード (/includes/function.php)、初期化ファイルでパブリック関数ライブラリが導入され、テーブル オブジェクトがインスタンス化されます (パスデータベース接続情報に入力し、データベースに接続します)、インスタンス化メソッドを変更します (db クラスの構成ファイルを自動的に呼び出します)、ユーザーを使用します。名前とパスワードでユーザーを確認します (ユーザー情報を正しく取得し、エラーの場合は FALSE を返します)。 、ユーザーのパスワードを変更します (md5 暗号化)

動作原理分析: ユーザーが検証結果の取得をリクエストします

検証結果の処理: インターフェイスジャンプ 転送 (PHP ではヘッダー、ドキュメントでは document.location.href) js、HTML で更新)、ジャンプ テンプレート /admin/templates/redirect.php を作成し、ジャンプ関数 admin_redirect が /includes/function.php のジャンプ関数を呼び出します。権限

Verifyユーザーがログインしているかどうか: 変数判定の定義、パラメータの取得、セッション データ

セッション メカニズムを有効にする: デフォルトで閉じられています (php.ini の session.auto_start)、session_start Open、$_SESSION (セッション データにアクセス)、セッションはユーザーのログイン判定を実現します

セッションの原則: session_start() はセッションを開き、セッション ファイルの内容を $_SESSION に読み取ります。 スクリプトの最後に、$_SESSION の内容がセッション ファイルに書き込まれます。 $_SESSION 変数

セッション サイクル: ブラウザはセッションを閉じ、セッションは無効になります。ブラウザとサーバーのセッション プロセスは

Cookie セッション テクノロジー: サーバーはブラウザにデータを保存します。Cookie の原則、セッションと Cookie の違い

Cookie の使用法: Cookie の設定、Cookie の取得 ($_COOKIE と $_REQUEST)、$_COOKIE の変更 (再アクセスには無効)、Cookie 変数の有効期間、セッション無効化の原則、Cookie のクリア ( setcookie)、Cookie ディレクトリの区別、Cookie クロスドメイン、Cookie の配列を偽装保存

セッション ファイル: ストレージ (php.ini の session.save_path)

Cookie ファイル: で指定されたストレージ ディレクトリブラウザ、IE と FF の違い、FF ビュー Cookie ファイル

セッションログインの決定: ユーザーがログインすると、セッションはユーザー情報を記録し、index.php 内のセッション情報を決定し、ファイルを初期化して、セッション

は、クロススクリプト

フレームワークを実装するセッションをシミュレートします。 レイアウトの背景: ECSHOP の背景レイアウト、index.php

を使用します。

Index.phpの実装:ecshopテンプレートを使用したprivilege.phpと同じ処理方法

ログアウト:セッションをクリアし、privilege.phpのログインページ、top.php(ターゲット属性)にジャンプ

ユーザー情報の表示: $_SESSION、ユーザーの最終ログイン時刻 (ログイン後に最終ログイン時刻を変更します)

セッションの深さ: $_SESSION は連想配列のみ、セッションはオブジェクトを保存できます、セッションの有効期限が影響を受けます Cookie の影響、セッション ファイルの破棄 (session_destroy、$_SESSION、setcookie)、セッションの階層化 (session.save_path、手動でフォルダーを作成)

Cookie を無効にした後のセッションの使用状況 (ブラウザーに許可する他の方法)タグはセッション ID (session.use_trans_id、session.use_only_cookie) を自動的に運び、PHP スクリプトによって渡されます (手動で追加、session_id()、session_name())

検証コード: 検証コードの意味 (悪意のある) リクエスト)、原則 (Completely Automated Public Turing Test to Tell Computers and Humans Apart (コンピュータと人間を区別する完全自動チューリング テスト)、画像上に検証コードの内容を記載) 、検証コードプロセス (生成、セッションへの保存、画像への追加、ユーザー入力、検証)、ecshop 検証コードの比較

GD ライブラリ: 画像処理拡張機能、GD 画像処理プロセス (画像リソースの作成 (既存またはnew)、画像の操作 (画像のトリミング、画像の変更、画像の塗りつぶし、サムネイル、検証コードの書き込み)、保存または出力、リソースの解放)

検証コードの作成: 検証コードの内容を取得し、検証コードをに書き込みますセッション、認証コードを画像に書き込み、認証コード画像をフォームに表示

カプセル化された認証コードクラス:複雑な認証コードメソッド(ランダムな背景色、ランダムな文字色、ピクセルの追加、干渉線の追加)

プロジェクト アプリケーション検証コード: 検証コード画像を取得するリクエスト アクション、ユーザー ログインの検証時に検証コードを使用、新しい検証コード メソッド (検証コード クラス内) を追加、検証コード画像をクリックして検証コードを変更(js)

ユーザーのログイン情報の保存: Cookie 保存記録の識別 (ユーザー ID)、ユーザーがログインしているかどうかの判断 (セッションの判断、Cookie の判断)、ユーザー ID を通じてユーザー情報を取得するメソッドを追加、危険性

製品分類の作成: データ テーブルの設計 (主キー、分類名、並べ替え、親 ID)、データの挿入、category.php、製品分類リスト インターフェイス、接続の変更 (メニュー) 、製品分類クラス、製品分類のメソッドの呼び出し、テンプレート表示分類データ

Infinitus 分類: 原則 (最上位カテゴリの検索、サブカテゴリの検索)、非再帰実装 (親カテゴリの指定)、再帰(再帰ポイント、再帰出口)、再帰原則、インデント (レベル識別)、ソートフィールドに従ったソート

構造 テーブルの完全名: テーブル名、DB クラステーブルプレフィックス、DB クラスにテーブル名構造を追加、テーブルクラスで

を使用してフィールド属性に値を割り当てます: テーブル構造を取得するメソッドを追加します (すべてのキー、主キーを取得)

カテゴリ ファイルのアクセス検証: init にログイン検証を置きます.php、init.php ファイルの検証を導入し、検証が必要な個別のリクエスト (ログイン関連は検証を必要としない、$_SERVER['SCRIPT_NAME']、basename()、dir_name( ; 分類を削除できるかどうかを判断する (削除可能かどうか)最後のレベル)、分類の削除)

分類編集機能: プロセス (ユーザーはメニューをクリックして編集に入り、分類データを表示し、ユーザーは操作を編集し、フォーム、データの編集処理)

ID を使用してデータ取得メソッドを再カプセル化 (繰り返し、DB クラスに入れる)、非表示のカテゴリ ID をフォームに追加

完全な製品分類: 製品数量なし、カテゴリーリストキャッシュ(判定キャッシュ、更新キャッシュ)、Infinitusカテゴリースケーリング

商品管理:データテーブル設計(ecshopをモデル化)、データ挿入、goods.php、商品リスト改善(メニュー接続、アクション処理、データオブジェクトの操作、リストテンプレート、アイコン)

ページング:処理(データ表示数の決定、ページ数の決定、制限)、ページングジャンプ(ホームページ、前ページ、次ページ、最終ページ、デジタル ページ、ドロップダウン ページ)

プロジェクト ページング: 設定ファイルの変更 (各ページに表示されるデータの数)、リスト機能の変更 (ページ番号、ページごとの表示番号パラメータ)、リスト機能の変更(レコード数、データ、2次元配列の総数を取得)、List関数の呼び出しを変更

Pagingクラス:データ処理なしの個別ページング(パラメータ)、HTML(タグ、ID)

商品の削除:処理方法(ごみ箱)、削除フラグの追加(データテーブルの変更)、削除処理(確認(js)、削除フラグの変更、リスト関数の変更、リストの更新)

ごみ箱の操作:ページング表示 (設定ファイル、ページングクラス使用)、復元

新製品: 処理 (接続、アクション、テーブルメソッド、テンプレート、タブ関数)

重複挿入関数:新しい挿入メソッド (DB クラス、配列情報の検証、配列アセンブリ SQL、挿入結果を返す)、挿入関数

を呼び出す

ファイルのアップロード: post、enctype (multipart/form-data)、$_FILES (ファイル データ、フィールドの説明、エラーの説明を特別に受信します (0 問題なし、1 サイズを超えています、2 サイズを超えています、3 は部分的にアップロードされています、 4 アップロードされていません、6 一時フォルダーがありません、7 一時フォルダーへのファイル書き込みエラー))、ファイルアップロード原則 (PHP サーバー)、一時ファイルの移動 (move_uploaded_file)、ファイル検証 (サイズ、タイプ、名前変更、strrchar)

画像アップロードクラス:設定ファイル(アップロードサイズ、アップロードタイプ(文字列)、アップロードパス)、アップロード命名ルール(重複禁止、元のサフィックス維持、識別しやすい(プレフィックス))、ファイルアップロード処理(エラー判定、ファイルサイズ)判定、ファイルタイプ判定、名前の変更、アップロードが成功したかどうか、新しいファイル名を返す)、ファイル処理が失敗した場合でも、商品はアップロードされます(エラープロンプト)

商品挿入プロセスのレビュー:収集フォームデータ、初期値(クリック数)設定)、アップロードファイル判定、サムネイル判定、モデル呼び出し、データ挿入

サムネイル作成:処理(画像リソース(元画像、対象画像)、加工(採用、コピー)、保存または出力、リソース解放)、サンプリング(矩形領域判定)

パッケージサムネール作成:データ取得(元画像サイズ、対象画像サイズ、関数タイプ使用) 、サムネイル比率(アスペクト比)、サムネイル作成プロセスの調整(元の画像の幅と高さ、サムネイルの最大サイズの計算、サムネイルのサイズの決定)、画像リソース(元の画像、サムネイル)の作成、サンプルとコピー、出力の保存、リソースの破棄)

サムネイルフィラー:サムネイルのサイズは固定(足りない部分を埋める、サムネイルの背景を作成) メリットとデメリット(デザイン表示に便利、元の画像と不一致)

ウォーターマーク制作:画像上のロゴ、2種類(テキスト、画像)、基本処理(元画像、ウォーターマーク画像、結合)

プロジェクトウォーターマーク:設定ファイル、詳細処理(元画像リソースの取得) 、透かし画像リソースの決定、透かし画像リソースの取得、画像の幅と高さの取得、透かし位置の決定、透かし位置の計算、結合結果の決定、保存、透かし画像の名前を返す)、アップロードされた画像の名前の変更

MVC: ソフトウェア設計モデル (Model、View、Controller)、入力処理と出力の分離、MVC フレームワーク (機能分割 M、V、C)、PHP コード開発 (混合、表示、およびロジックの分離、データ ロジックとビジネス ロジックの分離)、アクション (C はトランザクションのタイプを処理し、C には複数のアクションが含まれます)、区別 (モジュール、モデル、テンプレート)

自動安全更新メソッド: SQL ステートメントをつなぎ合わせます。更新、処理(無効フィールドのクリーンアップ、SQL文のつなぎ合わせ(更新部分、条件)、強制条件設定(判定条件、自動解析条件)、実行結果返却)

自動削除:IDに基づいて削除(単一 =、配列入力)、プロセス (パラメーターに引用符を追加、削除条件を結合、削除結果を返す) )

セッション ストレージ: セッション ストレージをメモリに、セッション ストレージ (セッション ストレージを変更)

セッション テーブルの設計: フィールド (sessionID、セッション ID、データ、有効期限)

セッションメソッドの改善: 読み取り (sessionID データベースクエリに基づく)、書き込み (sessionID、セッションデータに基づくデータの書き込みまたは更新)、オープン (パブリック接続データベースコードの抽出)、データベース接続リソーススコープ、破棄 (セッション ID に基づいてデータを削除)、リサイクル (期限切れのセッション、設定に従って期限切れのフィールドをクリーンアップ)、セッション設定 (gc_maxlifetime、gc_probobility、gc_divisor)

セッション クラスのカプセル化: コンストラクター (セッション プロセッサーの設定、パラメータを配列で渡す、セッションを開く、親クラスのコンストラクターを開く)、各メソッドの改善

セッションメソッドの実行順序(リサイクル前に読み取る)、読み取りメソッドの変更(期限切れのデータを読み込まない、期限切れを読み取る)、セッションの破棄(write メソッドの実行を停止)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。