php pdo はデータベース、phppdo データベースを操作します
PHP5 では POD 拡張機能が追加され、異なるデータベースが同じメソッド名を使用してデータベース接続の問題を解決します。
PDO の特徴:
パフォーマンス。 PDO は、既存のデータベースの拡張における成功と失敗について最初から学びました。 PDO のコードはまったく新しいため、PHP 5 の最新機能を活用するためにパフォーマンスをゼロから再設計する機会があります。
能力。 PDO は、RDBMS の固有の機能に簡単にアクセスできるようにしながら、基盤として一般的なデータベース機能を提供するように設計されています。
シンプルです。 PDO は、データベースの操作を簡単にするように設計されています。 API はコードに強制的に組み込まれることはなく、各関数呼び出しが何を行うのかを明確にします。
実行時に拡張可能。 PDO 拡張機能はモジュール式であるため、PHP プログラム全体を再コンパイルまたは再インストールすることなく、実行時にデータベース バックエンドのドライバーを読み込むことができます。たとえば、PDO_OCI 拡張機能は、PDO 拡張機能の代わりに Oracle データベース API を実装します。 MySQL、PostgreSQL、ODBC、Firebird 用のドライバーもあり、さらに多くのドライバーが開発中です。
PDOのインストール
PHP の phpinfo() 関数を通じて、PDO 拡張機能がインストールされているかどうかを確認できます。
1. Unix/Linux システムに PDO をインストールします
Unix または Linux では、次の拡張機能を追加する必要があります:
extension=pdo.so
2. Windowsにpdo
PDO とすべての主要なドライバーは共有拡張機能として PHP とともに配布されており、それらを有効にするには、php.ini ファイルを編集して次の拡張機能を追加するだけです:
拡張子=php_pdo.dll
さらに、以下に対応するさまざまなデータベース拡張機能があります:
リーリー php.ini を開き、上記のすべての行の前にあるセミコロンを削除します。
これらの構成を設定した後、PHP または Web サーバーを再起動する必要があります。
次に、pdo を使用する例として mysql を使用します。 リーリー
pdo の詳細な紹介を見てみましょう:
1. 事前定義された定数: 注: リクエストされたクラスに属性が存在しない場合、__set() マジック メソッドが呼び出されます PDO::ATTR_DRIVER_NAME:を使用した例: 2.PDOクラス:
PDO::PARAM_BOOL (整数)
はブールデータ型を表します。
PDO::PARAM_NULL (整数)
SQL の NULL データ型を表します。
PDO::PARAM_INT (整数)
SQL の整数型を表します。
PDO::PARAM_STR (整数)
SQL の CHAR、VARCHAR、またはその他の文字列型を表します。
PDO::PARAM_LOB (整数)
SQL のラージ オブジェクト データ型を表します。
PDO::PARAM_STMT (整数)
はレコードセットのタイプを表します。現在、どのドライバーでもサポートされていません。
PDO::PARAM_INPUT_OUTPUT (整数)
パラメータをストアドプロシージャのINOUTパラメータとして指定します。この値は、明示的な PDO::PARAM_* データ型とビットごとの OR 演算する必要があります。
PDO::FETCH_LAZY (整数)
取得方法を指定し、結果セットの各行をオブジェクトとして返します。このオブジェクトの変数名は列名に対応します。 PDO::FETCH_LAZY は、アクセス用のオブジェクト変数名を作成します。 PDOStatement::fetchAll() では無効です。
PDO::FETCH_ASSOC (整数)
取得方法を指定し、対応する結果セットの各行を列名でインデックス付けされた配列として返します。結果セットに同じ名前の複数の列が含まれている場合、PDO::FETCH_ASSOC は列名ごとに 1 つの値のみを返します。
PDO::FETCH_NAMED (整数)
取得方法を指定し、対応する結果セットの各行を列名でインデックス付けされた配列として返します。結果セットに同じ名前の複数の列が含まれている場合、PDO::FETCH_ASSOC は各列名の値を含む配列を返します。
PDO::FETCH_NUM (整数)
取得方法を指定し、対応する結果セットの各行を列 0 から始まる列番号でインデックス付けされた配列として返します。
PDO::FETCH_BOTH (整数)
取得方法を指定し、対応する結果セットの各行を列0から始まる列番号と列名でインデックス付けされた配列として返します。
PDO::FETCH_OBJ (整数)
取得方法を指定し、結果セットの各行を列名に対応する属性名を持つオブジェクトとして返します。
PDO::FETCH_BOUND (整数)
取得方法を指定し、TRUE を返し、結果セットの列値を PDOStatement::bindParam() または PDOStatement::bindColumn() メソッドを通じてバインドされた PHP 変数に割り当てます。
PDO::FETCH_COLUMN (整数)
取得方法を指定し、結果セットの次の行から必要な列を返します。
PDO::FETCH_CLASS (整数)
取得メソッドを指定し、要求されたクラスの新しいインスタンスを返し、クラス内の対応する属性名に列をマップします。
PDO::FETCH_INTO (整数)
取得方法を指定し、要求されたクラスの既存のインスタンスを更新し、クラス内の対応する属性名に列をマッピングします。
PDO::FETCH_FUNC (整数)
完全にカスタマイズされた方法でオンザフライでデータを処理できます。 (PDOStatement::fetchAll() でのみ有効)。
PDO::FETCH_GROUP (整数)
値ごとにグループ化して返します。通常は、PDO::FETCH_COLUMN または PDO::FETCH_KEY_PAIR とともに使用されます。
PDO::FETCH_UNIQUE (整数)
一意の値のみを受け取ります。
PDO::FETCH_KEY_PAIR (整数)
2 つの列を含む結果セットを配列に取得します。最初の列はキー名、2 番目の列は値です。 PHP 5.2.3 以降で利用可能です。
PDO::FETCH_CLASSTYPE (整数)
最初の列の値に基づいてクラス名を決定します。
PDO::FETCH_SERIALIZE (整数)
PDO::FETCH_INTO に似ていますが、オブジェクトをシリアル化された文字列として表します。 PHP 5.1.0 以降で利用可能です。 PHP 5.3.0 以降、このフラグが設定されている場合、クラスのコンストラクターは呼び出されません。
PDO::FETCH_PROPS_LATE (整数)
プロパティを設定する前にコンストラクターを呼び出します。 PHP 5.2.0 以降で利用可能です。
PDO::ATTR_AUTOCOMMIT (整数)
この値が FALSE の場合、PDO はデータベース接続でトランザクションを開始するために自動コミットを無効にしようとします。
PDO::ATTR_PREFETCH (整数)
アプリケーションの速度とメモリ使用量のバランスをとるためにプリフェッチ サイズを設定します。すべてのデータベースとドライバーの組み合わせがプリフェッチ サイズの設定をサポートしているわけではありません。プリフェッチ サイズを大きくするとパフォーマンスが向上しますが、メモリの消費量も増加します。
PDO::ATTR_TIMEOUT (整数)
データベースへの接続のタイムアウト秒を設定します。
PDO::ATTR_ERRMODE (整数)
このプロパティの詳細については、「エラーとエラー処理」セクションを参照してください。
PDO::ATTR_SERVER_VERSION (整数)
これは読み取り専用のプロパティであり、PDO に接続されているデータベース サービスのバージョン情報を返します。
PDO::ATTR_CLIENT_VERSION (整数)
これは読み取り専用のプロパティであり、PDO ドライバーによって使用されるクライアント ライブラリのバージョン情報を返します。
PDO::ATTR_SERVER_INFO (整数)
これは読み取り専用のプロパティです。 PDO が接続されているデータベース サービスに関するメタ情報を返します。
PDO::ATTR_CONNECTION_STATUS (整数)
PDO::ATTR_CASE (整数)
PDO::CASE_* のような定数を使用して、列名の大文字と小文字を強制的に指定します。
PDO::ATTR_CURSOR_NAME (整数)
使用するカーソルの名前を取得または設定します。スクロール可能なカーソルや位置指定された更新を使用する場合に非常に便利です。
PDO::ATTR_CURSOR (整数)
カーソルの種類を選択します。 PDO は現在、PDO::CURSOR_FWDONLY と PDO::CURSOR_SCROLL をサポートしています。スクロール可能なカーソルが実際に必要でない限り、通常は PDO::CURSOR_FWDONLY です。
PDO::ATTR_DRIVER_NAME (文字列)
ドライバー名を返します。
<?php
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
echo "Running on mysql; doing something mysql specific here\n";
}
?>
PDO::ATTR_ORACLE_NULLS (integer)
在获取数据时将空字符串转换成 SQL 中的 NULL 。
PDO::ATTR_PERSISTENT (integer)
请求一个持久连接,而非创建一个新连接。关于此属性的更多信息请参见 连接与连接管理 。
PDO::ATTR_STATEMENT_CLASS (integer)
PDO::ATTR_FETCH_CATALOG_NAMES (integer)
将包含的目录名添加到结果集中的每个列名前面。目录名和列名由一个小数点分开(.)。此属性在驱动层面支持,所以有些驱动可能不支持此属性。
PDO::ATTR_FETCH_TABLE_NAMES (integer)
将包含的表名添加到结果集中的每个列名前面。表名和列名由一个小数点分开(.)。此属性在驱动层面支持,所以有些驱动可能不支持此属性。
PDO::ATTR_STRINGIFY_FETCHES (integer)
PDO::ATTR_MAX_COLUMN_LEN (integer)
PDO::ATTR_DEFAULT_FETCH_MODE (integer)
自 PHP 5.2.0 起可用。
PDO::ATTR_EMULATE_PREPARES (integer)
自 PHP 5.1.3 起可用。
PDO::ERRMODE_SILENT (integer)
如果发生错误,则不显示错误或异常。希望开发人员显式地检查错误。此为默认模式。关于此属性的更多信息请参见 错误与错误处理 。
PDO::ERRMODE_WARNING (integer)
如果发生错误,则显示一个 PHP E_WARNING 消息。关于此属性的更多信息请参见 错误与错误处理。
PDO::ERRMODE_EXCEPTION (integer)
如果发生错误,则抛出一个 PDOException 异常。关于此属性的更多信息请参见 错误与错误处理。
PDO::CASE_NATURAL (integer)
保留数据库驱动返回的列名。
PDO::CASE_LOWER (integer)
强制列名小写。
PDO::CASE_UPPER (integer)
强制列名大写。
PDO::NULL_NATURAL (integer)
PDO::NULL_EMPTY_STRING (integer)
PDO::NULL_TO_STRING (integer)
PDO::FETCH_ORI_NEXT (integer)
在结果集中获取下一行。仅对可滚动游标有效。
PDO::FETCH_ORI_PRIOR (integer)
在结果集中获取上一行。仅对可滚动游标有效。
PDO::FETCH_ORI_FIRST (integer)
在结果集中获取第一行。仅对可滚动游标有效。
PDO::FETCH_ORI_LAST (integer)
在结果集中获取最后一行。仅对可滚动游标有效。
PDO::FETCH_ORI_ABS (integer)
根据行号从结果集中获取需要的行。仅对可滚动游标有效。
PDO::FETCH_ORI_REL (integer)
根据当前游标位置的相对位置从结果集中获取需要的行。仅对可滚动游标有效。
PDO::CURSOR_FWDONLY (integer)
创建一个只进游标的 PDOStatement 对象。此为默认的游标选项,因为此游标最快且是 PHP 中最常用的数据访问模式。
PDO::CURSOR_SCROLL (integer)
创建一个可滚动游标的 PDOStatement 对象。通过 PDO::FETCH_ORI_* 常量来控制结果集中获取的行。
PDO::ERR_NONE (string)
对应 SQLSTATE '00000',表示 SQL 语句没有错误或警告地成功发出。当用 PDO::errorCode() 或 PDOStatement::errorCode() 来确定是否有错误发生时,此常量非常方便。在检查上述方法返回的错误状态代码时,会经常用到。
PDO::PARAM_EVT_ALLOC (integer)
分配事件
PDO::PARAM_EVT_FREE (integer)
解除分配事件
PDO::PARAM_EVT_EXEC_PRE (integer)
执行一条预处理语句之前触发事件。
PDO::PARAM_EVT_EXEC_POST (integer)
执行一条预处理语句之后触发事件。
PDO::PARAM_EVT_FETCH_PRE (integer)
从一个结果集中取出一条结果之前触发事件。
PDO::PARAM_EVT_FETCH_POST (integer)
从一个结果集中取出一条结果之后触发事件。
PDO::PARAM_EVT_NORMALIZE (integer)
在绑定参数注册允许驱动程序正常化变量名时触发事件。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック









