ホームページ  >  記事  >  バックエンド開発  >  phpに関するよくある質問のまとめ

phpに関するよくある質問のまとめ

WBOY
WBOYオリジナル
2016-06-13 12:29:08992ブラウズ

phpのよくある質問まとめ

1. include と require の違いは何ですか? require と require_once のどちらが効率的ですか?

ページ内に include が 10 回出現すると、PHP はそれを 1 回解釈します。ページ内で require が複数回出現しても解釈されるのは 1 回だけなので、include よりも require の方が実行効率が高くなります。

Php がファイルをインクルードするために require を使用する場合、インクルードされたファイルに構文エラーがあるか、インクルードされたファイルに構文エラーがある場合、インクルードされたファイルは現在のファイルのコンポーネントとして扱われます。存在しません。php スクリプトは実行されなくなり、エラーが表示されます。

Php がファイルをインクルードするために include を使用する場合、インクルードされるファイルに構文エラーがある場合、またはインクルードされるファイルが存在しない場合には、警告が表示されます。スクリプトの実行自体に影響を与えることなく与えられます。

Include はファイルをインクルードするときにそのファイルがインクルードされるかどうかを決定できますが、require は状況に関係なくファイルをインクルードします。

Require は、require_once よりも効率的です。これは、require_once は、ファイルをインクルードするときにファイルがインクルードされているかどうかを判断する必要があるためです。

2. Cookie とセッションの違いは何ですか? Cookie を無効にしてもセッションは正常に使用できますか?セッションのデメリットは何ですか?セッションはサーバー側のどこに存在しますか?共有ですか、それともプライベートですか?

COOKIE はクライアント側に保存され、ユーザーが変更できます。最大値は安全ではありません。 1 つの Cookie に許可されるのは 3k です。 SESSION はサーバー側に保存されます。これは比較的安全で、サイズ制限はありません。

クライアントの Cookie が無効になっている場合、または問題が発生した場合、PHP は自動的にセッション ID を URL に添付して、そのセッション ID を他のユーザー間で使用できるようにします。ページ。ただし、この添付ファイルには特定の条件もあります。つまり、php.ini で「session.use_trans_sid = 1」であるか、コンパイル中に「--enable-trans-sid」オプションがオンになっています。
php.ini ファイル内
session.use_trans_sid=1
session.use_only_cookies=0
session.use_cookies=1
または php プログラム内
ini_set(“session.use_trans_sid ","1");
ini_set("session.use_only_cookies",0);
ini_set("session.use_cookies",1
ブラウザが Cookie を無効にしても、引き続きセッションを使用できます。その後、URL を介して渡すことができ、制限する必要があるページの URL にセッション ID が追加されます。サーバーはセッション ID を取得した後、session_start の前に、取得した ID をユーザーに関連付けることができます。
Cookie には 2 種類あり、1 つはブラウザを閉じると失われます。
1 つは永続的な Cookie です。これは、通常、サーバー側セッションと呼ばれるものです。
クライアントが Cookie を無効にすると、セッションは URL を使用してクライアントと対話することもできます。 Cookie はデータをクライアント ディスクに保存します。サーバー側のメモリに保存されるセッションの欠点: サーバー側で保存されるため、各読み取りがサーバーから読み取られ、サーバー上のリソースが消費されます。デフォルトでは、ファイルパスは php 設定ファイルの session.save_path で指定されます。

>

3. SQL インジェクションを防ぐ方法

1. いくつかの一般的なデータベース操作キーワードを除外します。 、挿入、更新、削除、* など。またはシステム関数でフィルタリングします:addslashes (フィルタリングが必要なコンテンツ)

2. PHP 構成ファイル内

Register_globals. =off;オフ状態に設定 //その結果、登録されたグローバル変数がオフになります。

例: $_POST['user'] を使用して POST フォームの値を受け取ります。 register_globals=on の場合は、$user を直接使用してフォームの値を受け取ります。

3. SQL ステートメントを記述するときは、小さな引用符 (タブ キーの上にある引用符) と一重引用符

を省略しないようにしてください。 4. データベースの名前付けを改善する ヒント: プログラムの特性に従っていくつかの重要なフィールドに名前を付け、推測しにくい名前を使用します

5. SQL の直接公開を避けるために、一般的に使用されるメソッドをカプセル化しますステートメント

6. PHP セーフ モードをオンにする

Safe_mode=on;

7. SQL インジェクションを防止するには、magic_quotes_gpc をオンにします。

Magic_quotes_gpc=off; オンにすると、ユーザーが送信した SQL ステートメントのクエリが自動的に変換されます。 「to」。SQL インジェクションの影響を防ぐのに重要です。

ので、次を有効にします: magic_quotes_gpc=on;

8. エラー メッセージの制御

エラーを閉じる情報を要求し、エラー情報をシステム ログに書き込みます。

9. mysqli または pdo の前処理を使用します。

4. データベースのインデックスにはいくつかの種類がありますが、それは何ですか?インデックスを使用する場合

通常のインデックス、主キー インデックス、一意のインデックス

すべてのデータベースが同じ方法で使用されるわけではありません。 、原則として、列内のデータが頻繁にクエリされる場合にのみ、テーブル上に作成する必要があります。

5. 値による受け渡しと参照なしの値による受け渡しの違い、参照なしで値による受け渡しを使用する必要があるのはどのような場合ですか?

値による受け渡し:関数スコープ内 関数の外では値の変更は無視されます。

参照渡し: 関数のスコープ内での値の変更は、関数の外側でも変更を反映します。

値で渡す場合、PHP は値をコピーする必要があります。大きなオブジェクトや文字列を操作する場合、これは非常に負荷の高い操作になります。参照渡しでは値をコピーする必要がないため、パフォーマンスが向上します。

関数内でソース変数の値を変更する必要がある場合は、参照の受け渡しを使用します。元の変数の値を変更したくない場合は、値の受け渡しを使用します。

6. いくつかの魔法の方法を書き留めて、その効果を説明しますか?

__call() インスタンス化時に存在しないメソッドを呼び出したときに自動的に呼び出されるメソッド

__autoload()まだインスタンス化されていないメソッド 定義されたクラスは、クラス ファイルをロードするメソッドを自動的に呼び出します

7. 配列内の添字の最適なタイプは何ですか?またその理由は何ですか?

数値型の方が処理が速いため、配列の添え字は数値型であることが望ましいです。

8. ++i と i++ のどちらが効率的ですか?またその理由は何ですか?

++i は、i を返すプロセスが 1 つ少ないため、i++ よりも効率的です。

9. magic_quotes_gpc() と magic_quotes_runtime() は何を意味しますか?

Magic_quotes_gpc() が php 設定ファイルにある場合、POST、GET、COOKIE の文字列は ' の前に自動的にエスケープされます。 🎜>

Magic_quotes_runtime() は php の関数で、パラメータが true の場合、データベースから取り出された一重引用符、二重引用符、およびバックスラッシュが自動的にバックスラッシュでエスケープされます。 10. 魔法の方法をいくつか書いて、その効果を説明してください。

__set() は、取得時に未定義変数

__get() に値を代入する際に自動的に呼び出されるメソッドです。未定義の変数 メソッド

__construct() は、変数の値が設定されると自動的に呼び出され、メソッド

__destroy( ) は、クラスがインスタンス化されるときに自動的に呼び出されます。 オブジェクトの破棄時に自動的に呼び出されるメソッド

__unset() 未定義の変数に対して unset() が呼び出されたときに自動的に呼び出されるメソッド

__isset () isset() メソッドが未定義の変数に対して呼び出されたときに自動的に呼び出されるメソッド

__clone() オブジェクトのクローンを作成します

__tostring( )オブジェクトの出力時に自動的に呼び出されるメソッド

11. Echo()、print()、print_r()の違いは何ですか)?

Echo() は複数の値を出力できる PHP 構文ですが、Echo は関数ではないため戻り値がありません。

Print() は PHP の言語構造であり、単一の単純な型の変数値を出力できる関数です。出力されるだけなので、エコーはより正確になります。

Print_r() は、配列やオブジェクトなどの複合型変数の値を出力できる PHP 関数です。

12. Mvc についての理解について話してください

MVC は、MVC の 3 つのコア部分である M モデル、V ビューを強制的に分離する設計パターンです。 , Cコントローラー。

ビューは、ユーザーが表示して操作するインターフェイスです。

モデルは、プログラムのデータ ビジネス ルールです。

コントローラーはユーザーの配列を受け取り、モデルとビューを呼び出してユーザーのニーズを満たします。

MVC を使用する利点: 結合度が低い、再利用性が高い、ライフサイクル コストが低い、開発と展開が迅速である、保守性、拡張性があり、ソフトウェア エンジニアリング管理に役立つ。

MVC の欠点: 明確な定義がなく、完全に理解するのは簡単ではありません。 MVC は小規模プロジェクトには適していません。

13. フレームワークにおける単一入口と複数入口とは何ですか、また単一入口の長所と短所

複数のエントリは、異なるファイルにアクセスすることでユーザー リクエストを完了します。

単一エントリのみの Web プログラムで、すべてのリクエストはスクリプト ファイルに送信されます。

入り口が 1 つあるため、アクセス許可の制御が容易になり、http リクエストのセキュリティ チェックが容易になります。

短所: URL はあまり美しくなく、特に検索エンジンには優しくありません。

14. 「.」でリンクされた文字列を出力する場合、リンクをより効率的にするために他に何を使用できますか?

は . の代わりに使用でき、より効率的です。

15. プロンプト タイプ 200、404、および 502 は何を意味しますか?

200 はリクエストが成功したことを意味します。 、404 はファイルが見つからないことを意味します、502 は内部サーバーエラーです、300 リダイレクト、403 サーバーアクセスが拒否されました、500 内部サーバーエラー

16. これを抽出するカスタム関数を作成します。パスのサフィックス名。

"Www/hello/test.php.html?a=3&b=4"

関数 geturltype($url) {

$info=parse_url($url);

Return end(explode('.',$info['path'] ));

}

17. Memcach についてどのように理解していますか?また、その利点は何ですか?

Memcache は、動的 Web ページを解析し、一定期間内にファイルに保存するキャッシュ テクノロジです。動的 Web ページは、次回アクセスするときにこのファイルを直接呼び出します。データベースに再度アクセスする必要はありません。キャッシュに memcache を使用する利点は、Web サイトのアクセス速度が向上し、同時実行性が高い場合のサーバーへの負荷が軽減されることです。

Memcache の利点: 安定性、シンプルな構成、マルチマシン分散ストレージ、高速

18. Talk Talk php の基本的な理解について

php は、動的 Web サイトの開発に使用されるハイパーテキスト プリプロセッサ (ハイパーテキスト プリプロセスの略) です サーバーサイド スクリプト言語

19. ページに CSS を追加するにはいくつかの方法があります

3 種類: (1) 外部 CSS ファイルの参照 (2) 内部 CSS ファイルの参照 (3) インライン CSS スタイルの参照

20 .PHP は多重継承をサポートしていますか?
サポートされていません。 PHP では単一継承のみが許可されており、キーワード「extends」を使用して親クラスをサブクラスに継承できます。

21. フォームの get 送信メソッドと post 送信メソッドの違いは何ですか?
get は HTTP プロトコルによって送信され、URL を通じて受信されます。パラメータの受け渡し、post はエンティティ データですが、

22.データベース?
トランザクションは、データベース操作の順序付けされたセットの単位です。グループ内のすべての操作が成功した場合、トランザクションは成功したとみなされます。1 つの操作だけが失敗した場合でも、トランザクションは成功とは言えません。すべての操作が完了すると、
トランザクションがコミットされ、その変更が他のすべてのデータベース プロセスに適用されます。操作が失敗した場合、トランザクションはロールバックされ、トランザクション内のすべての操作の効果はキャンセルされます。

23. PHP クラスの protected、public、prtvate、interface、abstract、final、static の意味を説明します。 >protected protected、このクラスとサブクラスで有効

public public、このクラス、サブクラス、およびクラス外で利用可能

private private 、このクラスでのみ有用

interface インターフェイスを定義するときに使用するキーワード

abstract 抽象クラスまたは抽象メソッドを定義するときに使用するキーワード。

final Final で宣言されたメソッドは上書きできず、宣言されたクラスは

static は、静的メソッドまたは静的プロパティを定義するために使用されるキーワードです

24. 高トラフィックおよび高同時実行性の Web サイト ソリューションについて説明します

サーバー ハードウェアがサポートするのに十分であるかどうかを確認します現在のトラフィック

memcache キャッシュ テクノロジを使用して動的データをメモリにキャッシュし、動的ネットワークはデータベースにアクセスせずにこれらのファイルを直接呼び出すことができます

外部からの画像またはファイルのホットリンクを無効にします。 Web サイトでは多くの負荷がかかるため、現時点では、Apache 自体のホットリンクは、

コントロールによって制御できます。大きなファイルのダウンロードは大量のトラフィックを消費し、Web サイトの応答性が低下します。

トラフィック統計ソフトウェアを使用してください。どの場所が大量のトラフィックを消費していないか、どのページを最適化する必要があるかを知る

サブデータベースとサブテーブル

スフィンクス全文インデックスエンジン

25. Linux で圧縮パッケージを作成し、パッケージを解凍します

圧縮: gzip tar -cvfz,zip,bzip2

解凍: Gunzip,tar -zxvf,unzip,bunzip2

26. PHP を使用して書き込みます。クライアントIPとサーバーIPを表示するコード 1点)

$_SERVER["REMOTE_ADDR"]

$_SERVER["SERVER_ADDR"]










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