phpコア知識ポイント、phpコアポイント
Php: スクリプト言語、ウェブサイト構築、サーバーサイド操作
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 世代)、プラットフォームのサポート(Windows、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)を指定します
ウェブの動作原理: 静的、動的
仮想ホスト構成: vhost 構成を含むドメイン名ベースの仮想ホスト、仮想 vhost ファイル (VirtualHost、ServerName、DocumentRoot) の編集、再起動、hosts ファイルの変更、localhost の再構成
PHPスクリプトの実行: ソースプログラムの読み取り、zendEngine (字句解析、構文解析)、オペコードの生成、オペコードの実行、解釈、コンパイルの違い
PHP ジョブ: スクリプト (サーバーサイドスクリプト、Web サーバーとブラウザが必要)、コマンドラインスクリプト
基本構文: スクリプト言語 (HTML に埋め込み)、PHP 処理 (タグ認識)、タグ (、default、、 はデフォルトではないため、有効にする必要があります。推奨されません)、最後のタグは無視できます (無視することをお勧めします: Ajax リターン、トラフィックを節約)、PHP ステートメント (end)セミコロン付き、最後のは省略可能)追加)
変数: $ 記号、有効な変数名 (文字またはアンダースコアで始まる、大文字と小文字を区別する)、変数の追加、削除、変更 (切断の設定を解除)、命名規則 (キャメルケース、アンダースコア)
定数: 定義、直接使用、機能 (変更不可、大文字と小文字の区別、削除不可、定数値はスカラーのみ可能、変数と同じ名前、$ 不可)、定数判定 (定義)、出力 (定数( ' 定数名'))
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
変数変数
値渡し: 値渡し、参照渡し
データ型: PHP if 型、8 つの主要なデータ型 (整数、浮動小数点、ブール、文字、配列、オブジェクト、リソース、空)、3 つの主要なカテゴリ (スカラー、コンポジット、特殊)
整数型: 10 進数、8 進数 (0)、16 進数 (0x)、指定された 10 進数出力 (printf、%d、%o、%x)、整数値の範囲 (PHP_INT_SIZE、PHP_INT_MAX)、バイト、ビット、基数変換 (から変換) 10 を他のものに変換し、剰余を取り、10 からその他に変換、累乗)、整数オーバーフロー (浮動小数点型)、タイムスタンプ (グリニッジ標準時、時刻、日付)
浮動小数点型: 10 進数出力を保持 (printf(‘%.2f’)、float、double
ブール型: true および false、TRUE、FALSE (0 以外)、ブール値出力は var_dump を使用、FALSE (FALSE、0、0.0、''、'0'、空の配列、null 値)
文字列:一重引用符、二重引用符、差分(解析変数、エスケープ、{}、文字列配列)、区切り文字(頭文字と終了は一行、終了マークトップボックス、解析変数、エスケープ、実用xml)
演算子: 算術演算子 (+、-、、/、%)、代入演算子 (=、+=、-=、*=、/=、%=、.=)、比較演算子 (> 、=、>)
元のコードの補数の補数: 正の元のコードの補数は、補数である負の符号ビットを除いて同じであり、+1 が補数です
フロー制御: シーケンシャル構造、分岐構造(if、ifelse、ifelse[else]、switch[case、break、default])、ループ構造(for、while、dowhile、foreach、Continue、break)
テンプレート構文: タグ構文、分岐構造、ループ構造
関数:メイン関数(コード再利用、モジュラープログラミング)、定義(関数関数名(パラメータリスト))、呼び出し(関数名(パラメータリスト))、定義と呼び出しの間に順序関係なし、仮パラメータ、実パラメータ、パラメータ転送(値渡し、参照渡し、デフォルト値)、戻り値 (割り込み実行を返す、単一の戻り値、複数の戻り値 [参照パラメーターで渡す])、スコープ (グローバル スコープ、ローカル スコープ、変数のスコープ、 -深度分析 [js および PHP]、スーパーグローバル スコープ、$GLOBALS およびグローバル)
匿名関数
疑似タイプ: 混合、数値、コールバック、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、関数 (レイアウト、パブリック ファイルを含む)、ファイル ロードの原則 (非実行のロード、コンパイル済みファイルのロード)、require と include の違い、ファイル リターン (設定ファイル)
終了スクリプト: return、exit、die
読み込みファイルパス: 絶対パス、相対パス(./、../、/)、ファイル読み込みの相対パス問題
文字列関連関数: strlen、substr、strtolower、strtoupper、strrev、strpos、strrpos、strchr、strrchr (ファイルサフィックス名の取得)、trim
時間関連関数: 時間、日付、strtotime、microtime
数学関連関数: abs、floor、ceil、round、rand、mt_rand
配列: 概念、配列を使用する理由 (変数の関連付け)、PHP 配列の機能 (データ型なし、配列の添え字は文字列にすることができます [ループ走査には使用できません]、配列の長さは可変でオーバーフローしません)、配列の定義 (配列、[])、配列を直接エコーすることはできません、配列の長さ (カウント、トラバーサル)、foreach (原則: 代入 + ポインターの下への移動)
二次元配列: 定義、構文、二次元配列の走査、関連する二次元配列、走査
Each+list: each(文法)、list(文法、インデックス配列要素のみ取得可能、インデックス順に値が代入される)、eachとlistを組み合わせて配列を走査する、eachとforeachの違い(それぞれの原則、それぞれの原則)
配列関連関数: key、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、stripslashes、5.3 より前の magic_quotes_gpc、get_magic_quotes_gpc)、パブリック関数 ($_POST の array_walk_recursive エスケープ)
配列アルゴリズム: 並べ替え (バブル、挿入、選択、クイックソート)、検索 (カスタム検索、二分法)
フォーム値の転送:ウェブサイトの目的(データ管理:収集、並べ替え、保存、公開)、収集(フォームの実装)、データ転送(URL、フォーム)、値の転送方法(取得、投稿)
データ受信: $_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 ダウンロード (href='use.zip'、欠点: 単純なファイル形式、ファイルのフルパスが公開される)、PHP (header("Content-type: application/octet-stream")、header( "Content- Disposition:attachment;filename=ファイル名" )、出力ファイルの内容)
パート2
0Mysql 拡張ライブラリ、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)
登録成功ジャンプ機能、ページング機能(一回取得、ページ単位で取得)
HTTP プロトコル: ハイパーテキスト転送プロトコル、b/s アーキテクチャ プロジェクトに従った基本プロトコル、ブラウザとサーバーの通信の基本原理 (接続要求 (TCP/IP プロトコル)、接続が成功し、ブラウザが要求を送信し、サーバーはリクエストを処理し、ブラウザは結果を処理し、接続を閉じる)、HTTP プロトコルの 2 つの部分(リクエスト、レスポンス)、URL、機能(クライアント/サーバー モードをサポート、シンプルで高速 [リクエスト メソッドとパスのみ]、柔軟) [任意のデータ]、コネクションレス [各コネクションは 1 つのリクエストのみを処理]、ステートレス [トランザクション処理にはメモリ容量がありません])
HTTPリクエスト:
4つの部分(リクエスト行、リクエストヘッダー、空行、リクエストボディ)
リクエストライン (リクエストメソッド、リクエストファイル、プロトコル/バージョン)
リクエストヘッダー (host、accept-encoding、referer、connection、accept- language、cookie、user-agent、accept、content-length (post)、if-modified-since (get)、content-type (post))
空白行
リクエストボディ(リクエストデータの投稿)
telnetシミュレーションリクエスト
HTTPレスポンス:
4つの部分(ステータス行、レスポンスヘッダー、空行、レスポンスボディ)、
ステータス行 (プロトコル/バージョン、ステータス コード、ステータスの説明)、
レスポンスヘッダー(サーバー、日付、最終更新日、コンテンツの長さ、コンテンツタイプ、場所、更新、コンテンツエンコーディング、キャッシュ制御)、
空行、
レスポンスボディ(コンテンツ)、ヘッダーはそれ以前に出力できません、ヘッダーはCookieを設定します
関数呼び出し前に出力できない関数: session_start、setcookie、header、output_buffering
一般的に使用される応答ステータス情報:
1XX (サーバーはリクエストを受信し、処理を継続します)、
2XX(成功、200)、
3XX(リダイレクト、302リダイレクト、304無修正)、
4XX(リクエストエラー、404が見つからない、403が禁止)、
5XX(サーバーエラー、502無効な応答)
PHP でシミュレートされた応答とリクエスト:
レスポンス(ジャンプ、リフレッシュ、画像送信、ダウンロード(application/octet-stream、content-disposition:attachment;filename)、
リクエスト (fsockopen、fwrite、feof、fgets、get リクエスト、post リクエスト)
オブジェクト指向:プロセス指向(操作プロセス)とオブジェクト指向(操作主体)、oop(ソフトウェア設計アーキテクチャの考え方)
基本概念: クラス(オブジェクトの抽象化)、オブジェクト(クラス/クラス型(カスタムデータ型)のインスタンス化)、インスタンス化、メンバー(クラス内の変数、関数、定数)
文法操作:
クラスの定義、
インスタンス化 (新規、括弧あり、括弧なし)、
強制変換(オブジェクト)、stdClass(空クラス)、
アクセス変更修飾子 (var、public、protected、private、difference)、
オブジェクトアクセスメンバー(->)、
クラスにはメンバーが 3 つだけあります (プロパティ、メソッド、定数はエコーできません)、
属性で定義される値は固定値でなければなりません プライベート属性へのアクセス方法(メソッド、$this)
メモリの説明: クラス、オブジェクト、メソッド、属性 (スペース使用量から分割、メモリ以外の部分)
マジックメソッド: コンストラクター (初期化)、デストラクター (リソースの解放、オブジェクトの設定解除)、コンストラクターのプライベート化
コンストラクターメソッド対応:クラス名メソッド
大文字と小文字の区別: プロパティ、配列の添え字、変数
オブジェクトの受け渡し: 参照による受け渡し
オブジェクトの比較: == (同じ属性値を持つ類似のオブジェクト)、=== (同じオブジェクト)
DBクラス:クラスファイルの命名(クラス名.class.php)
自動ロード: オブジェクト、自動ロード (__autoload)、自動ロード原理、自動ロード競合 (spl_autoload_register) をインスタンス化する前にクラス定義が必要です
クラス定数: 定義(const)、メモリ分割、アクセス(クラスアクセス、範囲解決演算子、オブジェクトアクセス(メソッド))、selfキーワード、selfとthisの違い
静的メンバー: 定義 (静的)、プロパティ、メソッド、アクセス (スコープ解決演算子)、静的プロパティと定数へのアクセスの違い
静的メソッドと非静的メソッド ($this) の違い
マジックメソッド: __toString() (エコーオブジェクト)、__clone() (別のオブジェクトにコピー、クローン作成では構築メソッドを使用せず、クローン作成を防止します (プライベート))
単一ケースのパターン: 概念 (クラスにはオブジェクトが 1 つだけある)、理由 (リソースの節約)、原則 (3 つのプライベートと 1 つのパブリック)
ファクトリ パターン: コンセプト (オブジェクトの生成)、理由 (便利な管理)、ファクトリ シングルトン パターン
オブジェクト指向には必ずしもクラス(js)があるわけではありません
Oop の 3 つの主要な機能: カプセル化、継承、ポリモーフィズム
カプセル化: データとデータ操作、クラスの作成プロセス、オブジェクトのプロパティと実装の詳細の非表示 (プライベート化)、外部使用インターフェイスの提供 (読み取りと書き込みの制限)
継承: あるオブジェクトが別のオブジェクトのプロパティとメソッドを直接使用して、コードの重複を削減します
ポリモーフィズム: PHP では利用できない、インターフェースの複数の異なる実装
継承: 構文 (拡張)、継承原則、継承メンバー制御 (保護)、継承アクセス (サブクラスが親クラスにアクセスし、親クラスがサブクラスにアクセス)
継承の競合: オーバーライド、制御レベル (サブクラスは親クラスより弱い)、同じ名前の親クラスのメソッド (親) へのアクセス
PHP単一継承、チェーン継承(多重継承)、継承の利用(テーブルクラスがDBクラスを継承)
特殊クラス: 継承できないクラスと継承のみ可能なクラス、最終クラス、最終メソッド (継承できるがオーバーライドできない)、抽象クラス (インスタンス化できない)、抽象メソッド
プロジェクト設計: 大きなプロジェクト、多くのチーム (インターフェース仕様、抽象クラス仕様)、小規模プロジェクト (未使用)
インターフェース: クラスの構造、構文 (インターフェース)、インターフェース本体 (定数とメソッド、メソッドは実装不可、パブリックのみ)、実装インターフェース (実装) を具体的に規定します。サブクラスはインターフェースのすべてのメソッドを実装し、複数のメソッドを実装する必要があります。インターフェース
インタビューの質問: PHP は多重継承をサポートしていますか?シミュレーションするにはどうすればよいですか?インターフェイスはクラスですか?インターフェースは抽象クラスですか?
PHP オーバーロード: ユーザーが存在しない、または使用できないメンバー属性またはメソッドを操作したときの処理
属性のオーバーロード: __get()、__set()、__isset() (isset および空のときに呼び出される)、__unset() (unset によって呼び出される)
メソッドのオーバーロード: __call()、__callStatic()
オーバーロードの意味: ユーザー操作の条件を制限し、エラーを修正します
オブジェクトの保存と復元: file_put_contents は保存し、file_get_contents は取得します。オブジェクトを直接保存することはできません
シリアル化: シリアル化
デシリアライズ: アンシリアライズ、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)、前処理 (prepare、execute[配列パラメーター]) 、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を模倣して小規模な商品管理およびショッピングシステムを作成します
機能:バックエンドユーザーログイン(フォーム、セッション、Cookie、検証コード)、製品分類管理(Infinitus分類)、製品管理(ファイル処理、サムネイル、透かし処理、ページング、製品バッチ管理、WYSIWYGエディタの使用)、許容時間(フロント製品の閲覧、ショッピングカートのアクション、ユーザー管理など)
プロジェクト設計:プロジェクトマネージャーの視点でプロジェクトを設計(プロジェクトアーキテクチャ(フレームワーク、ソースコード、開発モデル)、コード構造(プロジェクトディレクトリ分割、機能分割))
現在人気の開発モデル: 二次開発、フレームワーク開発
データ アーキテクチャ: データ サイズ、更新頻度、2 つの主要なデータベース キャンプ (SQL、NOSQL)、主要なアーキテクチャ (テーブル、テーブル関数、テーブル構造、テーブル内のデータ関係)
フロントエンドとバックエンド: フロントエンド (ユーザーが閲覧、データを表示)、バックエンド (管理者が閲覧、データ管理)、フロントエンドとバックエンドは機能、アーティストとプログラマーによって分かれています仕事内容ごとに分かれています
プロジェクトのディレクトリ構造、コード分割: プロジェクトはフロントエンドとバックエンドに分かれており、admin はバックエンドのディレクトリです。フロントエンドとバックエンドのパブリック部分はフロントエンド インクルードの下にあり、バックエンドのパブリック ファイル admin/includes はフロントエンドとバックエンドの両方にデフォルトがあります。アクセス入口index.php
プロジェクトのコード設計: データはコアであり、コードはデータにアクセスして管理します。データは mysql に保存され、PHP は db.class.php (インクルードの下) を介してデータベースにアクセスします。パブリック関数は分離されています。クラスでカプセル化 (ファイルアップロード、画像処理、ページング)
バックエンド ユーザー ログイン機能の設計: ログイン フォーム (ログイン、確認コード、ログアウト、パスワードの取得、パスワードの記憶)、admin/templates/login.php、単純なものから複雑なものまで、1 種類のトランザクション リクエストのコード (ログイン: 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、データベース接続情報、2次元配列(区別しやすい)
設定ファイルの読み込み: 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 のヘッダー、js の document.location.href、HTML のリフレッシュ)、ジャンプテンプレート /admin/templates/redirect.php の作成、 /includes/function.php のジャンプ関数 admin_redirect の呼び出し特典にジャンプ機能
ユーザーがログインしているかどうかの確認: 変数判定の定義、パラメータ、セッションデータの取得
セッションメカニズムを有効にする:デフォルトでオフ(php.iniのsession.auto_start)、session_startはオン、$_SESSION(セッションデータにアクセス)、セッションはユーザーのログイン判断を実現します
セッションの原則: session_start() はセッションを開き、セッション ファイルの内容を $_SESSION に読み取ります。スクリプトの最後で、$_SESSION の内容がセッション ファイルに書き込まれ、その後 $_SESSION 変数が解放されます。
セッションサイクル: ブラウザはセッションを閉じて期限切れになり、ブラウザとサーバーのセッションプロセスCookieセッション技術:サーバーはブラウザにデータを保存します、Cookieの原理、セッションとCookieの違い
Cookie の使用: Cookie の設定、Cookie の取得 ($_COOKIE と $_REQUEST)、$_COOKIE の変更 (再アクセス無効)、Cookie 変数の有効期間、セッション無効化の原則、Cookie のクリア (setcookie)、Cookie ディレクトリの区別、Cookie の相互作用ドメイン、偽装クッキー 配列を保存
セッションファイル:ストレージ(php.iniのsession.save_path)
Cookieファイル:ブラウザが指定した保存ディレクトリ、IEとFFの違い、FFでCookieファイルを参照
セッションログインの決定: ユーザーがログインすると、セッションはユーザー情報を記録し、index.php内のセッション情報を決定し、セッションを開くためにファイルを初期化します
クロススクリプトを実現するためにセッションをシミュレートします
フレームレイアウトの背景: ECSHOPの背景レイアウト、index.phpを使用します
Index.php実装:privilege.phpと同じ処理方法、ecshopテンプレートを使用
ログアウト: セッションをクリアし、privilege.php ログインページ、top.php (ターゲット属性) にジャンプします
ユーザー情報表示: $_SESSION、ユーザーの最終ログイン時刻(ログイン後に最終ログイン時刻を変更)
セッションの詳細: $_SESSION は連想配列のみ可能、セッションはオブジェクトを保存可能、セッションの有効期限は Cookie の影響を受ける、セッション ファイルの破棄 (session_destroy、$_SESSION、setcookie)、セッションの階層化 (session.save_path、手動でフォルダーを作成)
Cookie を無効にした後、セッションが使用され (他のメソッドではブラウザーが sessionID を取得できます)、a タグは自動的に sessionID (session.use_trans_id、session.use_only_cookie) を運び、PHP スクリプトによって渡されます (手動で追加、session_id( )、セッション名())
認証コード: 認証コードの意味(悪意のあるリクエスト対策)、原理(Completely Automated Public Turing Test to Tell Computers and Humans Apart (コンピュータと人間を区別する完全自動チューリングテスト)、認証コードの内容を画像上に載せる)、認証コードプロセス (生成、セッションへの保存、画像への追加、ユーザー入力、検証)、ecshop 検証コードとの比較
GDライブラリ: 画像処理拡張機能、GD画像処理プロセス(画像リソース(既存または新規)の作成、画像の操作(画像のトリミング、画像の変更、画像の塗りつぶし、サムネイル、検証コードの書き込み)、保存または出力、リソースの解放)
確認コードの作成: 確認コードの内容を取得し、セッションに確認コードを書き込み、画像に確認コードを書き込み、フォームに確認コードの画像を表示します
カプセル化された検証コードクラス:複雑な検証コードメソッド(ランダムな背景色、ランダムな文字色、ピクセルの追加、干渉線の追加)
プロジェクトアプリケーション検証コード: 検証コード画像を取得するアクションをリクエストし、ユーザーのログインを検証するときに検証コードを使用し、(検証コードクラス内に) 新しい検証コードメソッドを追加し、検証コード画像をクリックして検証コードを変更します(js)
ユーザーのログイン情報の保存: Cookie は記録識別 (ユーザー ID) を保存し、ユーザーがログインしているかどうかを判断し (セッションを判断し、Cookie を判断)、ユーザー ID を通じてユーザー情報を取得する方法を追加します。危険です
商品分類の作成:データテーブルの設計(主キー、カテゴリ名、ソート、親ID)、データの挿入、category.php、商品分類リストインターフェース、接続(メニュー)の変更、商品分類クラス、商品分類の呼び出し方法、テンプレート表示 機密データ
Infinitus 分類: 原則 (トップレベル カテゴリの検索、サブカテゴリの検索)、非再帰実装 (親カテゴリの指定)、再帰 (再帰ポイント、再帰出口)、再帰原則、インデント (レベル識別)、ソートによるソートフィールド
構築されたテーブルの完全名: テーブル名、データベースクラステーブルプレフィックス、テーブル名構造をデータベースクラスに追加、テーブルクラスで使用
フィールド属性に値を割り当てる: テーブル構造を取得するメソッドを追加します(すべてのキー、主キーを取得)
カテゴリファイルアクセス検証: init.php にログイン検証を組み込み、init.php ファイル検証を導入し、検証が必要なリクエストを分離します (ログイン関連は検証を必要としません、$_SERVER['SCRIPT_NAME']、basename()、dir_name() )
分類操作: カテゴリを追加 (フォームの追加、フォームの送信、フォーム データの処理、分類してデータベースに保存)、カテゴリの上位レベルのカテゴリを指定し、配列でデータを受け取り、データを送信します。カテゴリを削除します(ユーザーにプロンプト(js)、カテゴリが削除可能かどうか(最後のレベルかどうか)を判断、カテゴリを削除します)
分類編集機能:処理(ユーザーがメニューをクリックして編集に入り、分類データを表示し、ユーザーが操作を編集し、フォームを送信し、編集データを処理します)
IDを介してデータを取得するメソッドを再カプセル化し(繰り返し、dbクラスに入れる)、フォームに隠しカテゴリIDを追加します
製品分類完了: 製品数量なし、分類リストキャッシュ(判定キャッシュ、更新キャッシュ)、Infinitus分類スケーリング
製品管理: データテーブルの設計 (ecshop をモデルとした)、データ挿入、goods.php、製品リストの改善 (メニュー接続、アクション処理、データオブジェクトの操作、リストテンプレート、アイコン)
ページング:処理(データ表示数の決定、ページ数の決定、制限)、ページングジャンプ(ホームページ、前ページ、次ページ、最終ページ、デジタルページ、ドロップダウンページ)
プロジェクト ページング: 構成ファイルの変更 (各ページに表示されるデータ項目の数)、リスト機能の変更 (ページ番号、ページごとの表示数パラメーター)、リスト機能の変更 (レコード、データ、2 つの合計数の取得)次元配列)、呼び出しリスト関数を変更します
ページング クラス: 個別のページングにはデータ処理 (パラメーター)、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: ソフトウェア設計パラダイム (モデル、ビュー、コントローラー)、入力処理と出力の分離、MVC フレームワーク (機能分割 M、V、C)、PHP コード開発 (ミキシング、表示とロジックの分離、データとロジックの分離)ビジネス ロジック)、アクション (C は 1 種類のトランザクションを処理し、C には複数のアクションが含まれます)、区別 (モジュール モジュール、モデル モデル、テンプレート テンプレート)
セキュリティ自動更新方法:SQL文のつなぎ合わせ、更新、処理(無効フィールドの削除、SQL文のつなぎ合わせ(更新部分、条件)、条件の強制設定(判定条件、自動解析条件)、実行結果の返却)
自動削除: IDに基づいて削除(単一=、配列)、処理(パラメータに引用符を追加、削除条件をつなぎ合わせ、削除結果を返す)
セッションストレージ: メモリへのセッションストレージ、セッションストレージ (セッションストレージメカニズムの変更)、セッションストレージの原則、セッションシステムの変更 (セッション読み取りおよび書き込み関数)、プロセスの変更 (読み取りおよび書き込みメソッドの準備、セッションシステムへの通知 (session_set_save_handler()) )
セッションテーブルの設計: フィールド (セッションID、データ、有効期限)
セッション メソッドが完成しました: 読み取り (セッション ID に基づいたデータベース クエリ)、書き込み (セッション ID、セッション データに基づいたデータの書き込みまたは更新)、オープン (パブリック接続データベース コードの抽出)、データベース接続リソース スコープ、破棄 (セッション ID に基づいたデータの削除) )、リサイクル (設定に従って期限切れのセッションと期限切れフィールドを削除)、セッション設定 (gc_maxlifetime、gc_probobility、gc_divisor)
セッションクラスのカプセル化: コンストラクター(セッションプロセッサーの設定、配列でパラメーターの受け渡し、セッションのオープン、親クラスのコンストラクターのオープン)、各メソッドの改善
セッションメソッドの実行順序(リサイクルする前に読み取る)、読み取りメソッドを変更する(期限切れのデータを読まない、期限切れを判断するために読み取る)、セッションの破棄(書き込みメソッドの実行を停止する)

PHPでは、session_status()またはsession_id()を使用して、セッションが開始されたかどうかを確認できます。 1)session_status()関数を使用します。 php_session_activeが返された場合、セッションが開始されました。 2)SESSION_ID()関数を使用します。空の文字列が返された場合、セッションが開始されます。どちらの方法でもセッション状態を効果的に確認でき、使用する方法を選択することは、PHPバージョンと個人的な好みに依存します。

Sessionsionsionsarevitalinwebapplications、特にコマースプラットフォームの前。

PHPでの同時セッションアクセスの管理は、次の方法で実行できます。1。データベースを使用してセッションデータを保存します。これらの方法は、データの一貫性を確保し、並行性のパフォーマンスを向上させるのに役立ちます。

phpsessionshaveverallimitations:1)storagecconstraintscanleadtoperformanceissues; 2)securityvulnerablesliasitylikessessionfixationAttacksicexist;

負荷分散はセッション管理に影響しますが、セッションの複製、セッションの粘着性、集中セッションストレージで解決できます。 1。セッションレプリケーションサーバー間のセッションデータをコピーします。 2。セッションスティンネスは、ユーザーリクエストを同じサーバーに指示します。 3.集中セッションストレージは、Redisなどの独立したサーバーを使用してセッションデータを保存してデータ共有を確保します。

SESSIONLOCKINGISATECHNIQUESTOESUREAUSER'SSESSIONREMAINSEXCLUSIVETOONEUSATIME.ITISCRUCIALFORPREVENTINGDATACORTIONANDSECURITYBREACHESINMULTI-USERAPPLICATIONS.SESSIONLOCKINGISISIMPLEMENTEDUSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGROCKINGSMECHANISMなど

PHPセッションの代替品には、Cookie、トークンベースの認証、データベースベースのセッション、Redis/Memcachedが含まれます。 1.Cookiesは、クライアントにデータを保存することによりセッションを管理します。 2.トークンベースの認証はトークンを使用してユーザーを検証します。これは非常に安全ですが、追加のロジックが必要です。 3.Databaseベースのセッションは、データベースにデータを保存します。これは、スケーラビリティが良好ですが、パフォーマンスに影響を与える可能性があります。 4. Redis/Memcachedは分散キャッシュを使用してパフォーマンスとスケーラビリティを向上させますが、追加のマッチングが必要です

SessionHijackingとは、ユーザーのSessionIDを取得してユーザーになりすましている攻撃者を指します。予防方法には、次のものが含まれます。1)HTTPSを使用した通信の暗号化。 2)SessionIDのソースの検証。 3)安全なSessionID生成アルゴリズムの使用。 4)SessionIDを定期的に更新します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ホットトピック









