PHP ノート (高度な PHP)、PHP ノート_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:57:58
オリジナル
896 人が閲覧しました

PHP ノート (上級 PHP)、PHP ノート

上級では、PHP の開発と運用効率を向上させるためのデータベース、Cookie、セッションの使用について説明します

PHP プログラマーがマスターする必要がある MySQL 操作

  • プロジェクトのテーブルを設計する
  • SQL ステートメントを使用する
  • MySQL ディレクトリ構造
    • データディレクトリにはライブラリファイルが保存されます
    • MySQL 管理コマンドは bin ディレクトリに保存されます
    • *.ini ファイルは MySQL の構成を記録します

MySQL DB に接続します:

  • mysql -h SQL アドレス -u ユーザー名 -p パスワード (mysql -h localhost -u root -p123456 など)
  • 安全な方法: 最初に「mysql -h SQL address -u username -p」と入力し、Enter キーを押してからパスワードを入力します

データ定義言語 (DDL)

  • 定義: データベース内にさまざまなオブジェクト (テーブル、ビュー、インデックス、シノニム、クラスターなど) を作成するために使用されます。
  • SQL文
    • データベースを作成する
    • リーリー
    • テーブルを作成する
リーリー
  • テーブルを変更する
    • テーブル操作を変更する
  • データ型
    • 数値型
      • UNSIGNED: 未署名のストレージとして指定されます
      • 整数整形
        • TINYINT 1 バイト (-128, 127) (0, 255) 小さい整数値
          SMALLINT 2 バイト (-32 768, 32 767) (0, 65 535) 大きい整数値
          MEDIUMINT 3 バイト (-8 388 608, 8) 388 607) (0, 16 777 215) 大きな整数値
          INT または INTEGER 4 バイト (-2 147 483 648, 2 147 483 647) (0, 4 294 967 295) 大きな整数値
          BIGINT 8 バイト (-9 233 372 036 854 775 808, 9 223 372 036 854 775 807) (0, 18 446 744 073 709 551 615) 最大整数値
      • 浮動小数点型
        • FLOAT 4 バイト (-3.402 823 466 E+38、1.175 494 351 E-38)、0、(1.175 494 351 E-38、3.402 823 466 351 E+38) 0、(1.175 494 351 E-38、 02 823 466 E+38)
        • DOUBLE 8 バイト (1.797 693 134 862 315 7 E+308、2.225 073 858 507 201 4 E-308)、0、(2.225 073 858 507 201 4 E-308、1.797 693 134 2 3 15 7 E+308) 0、(2.225 073 858 507 201 4 E-308、1.797 693 134 862 315 7 E+308)
    • キャラクタータイプ
      • CHAR 0-255Byteの固定長文字列、
        VARCHAR 0-255Byteの可変長文字列、長さは指定する必要があります
        TINYBLOB 0-255Byteの255文字を超えないバイナリ文字列
        TINYTEXT 0-255Byteの短いテキスト文字列
        BLOB 0-65 535Byteバイナリ形式の長いテキストデータ
        TEXT 0-65 535Byte 長いテキストデータ
        MEDIUMBLOB 0-16 777 215Byte バイナリ形式の中長テキストデータ
        MEDIUMTEXT 0-16 777 215Byte 中長テキストデータ
        LOGNGBLOB 0-4 294 967 295Bytesバイナリ形式の非常に大きなテキスト データ
        LONGTEXT 0-4 294 967 295Byte 非常に大きなテキスト データ
      • CHAR はより高速に処理され、VARCHAR は可変サイズです
      • バイナリ保存は主に非テキストファイルの保存に使用されます
      • ENUM (列挙型) は最大 65535 個の値を保存でき、フィールドには 1 つの値のみを保存できます
      • コレクション型のSETは最大64個の値を保存でき、1つの値セグメントに複数の値を保存できます
    • 日付タイプ
      • DATE 3Byte 1000-01-01/9999-12-31 YYYY-MM-DD 日付値
        TIME 3Byte '-838:59:59'/'838:59:59' HH:MM:SS 時間値または期間
        YEAR 1Byte 1901/2155 YYYY 年の値
        DATETIME 8Byte 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 日付と時刻の混合値
        TIMESTAMP 8Byte 1970-01-01 00:00:00/2037 年のいつか YYYYMMDD HHMMSS 混合日付と時刻の値、タイムスタンプ

※文字列形式で保存されているデータ型は自動変換可能です

※時間を計算しやすいようにphpタイムスタンプとして保存しておくと

データフィールドの属性

  • unsigned: このフィールドを符号なしの値に設定します。これは数値型のみにすることができます
  • zerofill: このフィールドのレコードの値が指定された桁数に達しない場合、数値型のみ可能な「0」で埋めます
  • auto_increment: このフィールドの値を自動的に増加させるように設定します。同時にインデックスまたは主キーを設定する必要があります。
  • null および not null: フィールドを空にすることを許可するかどうかを設定します。空でない値に設定し、デフォルトで使用することをお勧めします。
  • デフォルト: このフィールドのデフォルト値を設定します。入力しない場合は、デフォルト値が使用されます。
  • インデックス
  • 利点:
    • クエリ速度の向上
  • 短所:
    • 作成コストと維持コストが比較的高い
    • リソースを占有しています
  • 主キー: インデックス値は一意である必要があり、テーブルごとに 1 つだけ存在します
  • 一意のインデックス (一意): インデックス値は一意である必要がありますが、テーブルには複数の
  • を持つことができます
  • 通常のインデックス: あまり多くの制限がない最も基本的なインデックス
  • 全文インデックス (filltext): MyISAM でのみ使用できます。テーブルが大きいほど効果は高くなりますが、速度は遅くなります。
  • 作成して使用するには、MySQL インデックス タイプのリストを表示して、MySQL を効率的に実行できます
データテーブルの種類と保存場所

    MySQL は、さまざまなストレージ エンジンのニーズに合わせて最適なストレージ エンジンを選択できます
  • データテーブルタイプはストレージエンジンです
  • タイプまたはエンジンキーワードを使用してテーブルタイプを指定します
  • 一般的に使用されるテーブルの種類
    • マイサム
      • 高速読み取り操作を重視
      • 一部サポートしていない機能(トランザクション)
    • InnoDB
      • MyISAM がサポートしていない一部の機能をサポートします
      • 全文インデックス作成はサポートしていません
        • かなりスペースを取る
        • 特徴マイサムInnoDBトランザクション処理サポートされていませんサポートデータ行ロックサポートされていませんサポート外部キー制約サポートされていませんサポートテーブルスペースが占有されています比較的小さいもっと大きく全文インデックスサポートサポートされていません

          MySQL のデフォルト文字セット

          • utf8推奨
          • 文字セット: MySQL が文字列を保存する方法を定義するために使用されます
            • 文字セットキーワードを使用して文字セットを指定します
          • 校正ルール: ルールは文字列の比較方法を定義します。
            • 照合を使用して校正ルールを指定します

          データ操作言語 (DML)

          • 主な形式は 3 つあります。
            • 1) 挿入: INSERT
              • テーブル名[(フィールドリスト)]に挿入 value(値リスト1)[,(値リスト2)...]
                • テーブル名の後にフィールドリストがある場合、値リストはフィールドリストと1対1で対応します。フィールドリストがない場合、値リストはテーブル内のフィールドと1対1で対応します。
            • 2) アップデート: UPDATE

              • update tablename set field name='value' [条件]
            • 3) 削除: 削除

              • テーブル名[条件]から削除
            • 算術演算子、論理演算子、比較演算子、ビット演算子などの演算子を使用できます
          データクエリ言語 (DQL)

            基本構造はSELECT[ALL|DISTINCT]句、FROM句、WHEREで構成されています
            • 句で構成されるクエリ ブロック:
              • <フィールドリスト>を選択
              • FROM
              • [WHERE/GROUP BY/ORDER BY]
            • DISTINCT とは、重複したレコードを表示しないことを意味します
            • 曖昧さを引き起こす可能性があるフィールド名のエイリアスを作成するには、as キーワードを使用します
          データ制御言語 (DCL)

            定義: データベースにアクセスするための特定の権限の付与または取り消し、データベース操作トランザクションの時間と効果の制御、データベースの監視などに使用されます。
          MySQL 組み込み関数

            位置: select ステートメントと句 where order by have、update delete ステートメントと句
          • フィールド名は関数内で変数として使用でき、変数の値は列に対応するすべての値になります
          • よく使われる
            • 文字列関数
              • concat: 受信パラメータを文字列に連結します
              • insert(str,x,y,insert): str の x 位置から開始して、y 長さの文字列を insert に置き換えます
              • lower(str),upper(str): 文字列を大文字、小文字に変換します
              • left(str,x) right(str,x) は、str の左 (右) にある x 文字を返します。x が null の場合、null を返します
              • lpad(str,n,pad) rpad(str,n,pad) Pad を使用して、文字列 str を左端 (右) から全長 n になるまでパディングします
              • trim(str),ltrim(str),rtrim(str) 左右両側のスペースを削除します
              • replace(str,a,b) は、文字列 str 内のすべての文字列 a を文字列 b に置き換えます
              • strcmp(s1,s2): S1 が S2 より小さい場合は -1 を返し、S1 が S2 より大きい場合は 1 を返し、等しい場合は 0 を返します (比較は ASCII コードです)。
              • substring(str,x,y) は、文字列 str 内の位置 x から始まる長さ y の部分文字列を返します
            • 数値関数
              • abs(x): 絶対値を返します
              • ceil(x): x より大きい最小の整数を返します
              • floor(x): x 未満の最大の整数を返します
              • mod(x,y): x と y の係数を返します
              • rand(): 0-1 の間の乱数を返します
              • round(x,y): パラメータ x の丸め結果を小数点以下 y 桁に返します
              • truncate(x,y): 数値 x を小数点以下 y 桁に切り捨てた結果を返します
            • 日付機能
              • curdate(): 現在の年、月、日を返します
              • curtime(): 現在の時、分、秒を返します
              • now(): 現在の日付を返します
              • unix_timestamp(time): UNIX タイムスタンプを返します
              • from_unixtime(): Unix タイムスタンプを日付に変換します
              • week(): タイムスタンプの週を返します
              • year(): タイムスタンプの年を返します
              • hour(): タイムスタンプの時間を返します
              • minutes(): タイムスタンプの分を返します
              • month(): タイムスタンプの月を返します
              • date_format(time,"%Y-%m-%d %H:%i:%s"): フォーマットされた戻り時間
            • プロセス制御機能
              • if(value,t,f): 値が true の場合は t を返し、値が false の場合は f を返します
              • ifnull(value1,value2): value1 が空の場合は value2 を返し、value1 が空でない場合は value1 を返します
              • 値 1 の場合、値 2 の場合
                値 3 の場合、値 4 の場合
                ...

                value1 が true の場合は value2 を返し、value3 が true の場合は value4 を返し、それ以外の場合は false を返します
                  その他の使用法: mysql ステートメント case when
              • その他の機能
            • database(): データベース名を返します
              • version(): MySQL バージョンを返します
              • user(): MySQL ユーザーを返します
              • inet_aton(ip): IP をネットワークバイトオーダーに変換します
              • inet_nton(): ネットワークのバイトオーダーを IP に変換します
              • password(): MySQL ユーザーパスワードの暗号化
              • md5(str): 文字列を暗号化します
            PHP動作データベース

          データベースに接続する

            mysql_connect(IP,user,psw): IP はデータベース アドレス、user はユーザー名、psw はユーザーのパスワードです。接続が成功した場合はデータベース リソースが返され、接続が失敗した場合は false が返されます。
            • ライブラリを選択
          • mysql_select_db($dbname,[$res]): $dbname はライブラリ名、$res はデータベースへの接続によって返されるリソースです。このパラメーターが追加されない場合、デフォルトは最近作成されたデータベース リソースです
            • SQL文入力
          • mysql_query(): SQL ステートメントを実行します。ステートメントが結果セットを返す場合、関数は正常に実行され、結果セットを返します。ステートメントが結果セットを返さない場合、関数は正常に実行され、true を返します。
            • エラーを解決する
            mysql_errno(): エラー番号を返します
          • mysql_error(): エラー情報を返す
            • データベースリソースを閉じる
            mysql_close(): データベースリソースを閉じます。パラメータは使用されず、開いているリソースはデフォルトで閉じられます (推奨)
            • 機能
            mysql_insert_id(): AUTO_INCREMENT が設定されていない場合は、自動的に増加する ID を返します
          • mysql_affected_rows(): 影響を受ける行の数を取得します
            • 結果セットからデータを取得する
            mysql_fetch_row($result): 結果セットからデータを取得し、インデックス配列を返します
          • mysql_fetch_assoc($result): 結果セットからデータを取得し、連想配列を返します
            • mysql_fetch_array($result): 結果セットからデータの一部を取得し、インデックス配列と連想配列を返します
            • mysql_fetch_object($result): 結果セットからデータを取得し、オブジェクトを返します
            • mysql_data_seek($result,$row): 指定された位置にポインターを移動します
            • 結果セットからフィールドを取得する
            mysql_num_rows($result): 結果セット内のフィールドの数を取得します
          • mysql_num_fields($result): 結果セット内の列の数を取得します
            • mysql_field_name($result): 結果セットのフィールド名を取得します
            • mysqli操作データベース
            • PHP5以降に新しく追加された機能は全てオブジェクト指向なので、mysqliはオブジェクトの形で追加されます
            • mysqliの利点
              • 改善を意味します
              • 機能追加
              • 効率が大幅に向上します
              • より安定した
            • mysqli 拡張機能によって提供される 3 つのクラス
              • mysqli: 接続に関連するクラス
                • 施工方法
                  • mysqli([$host[, $username [, $passd[, $dbname [,$port [, $socket ]]]]] )
                  • 接続が成功した場合はオブジェクトが返され、失敗した場合は false が返されます
                • 接続障害情報を表示する
                  • connect_errno(): 接続エラー番号を返します
                  • connect_error(): 接続エラー情報を返します
                • SQL文入力
                  • query(sql): SQL ステートメントを実行します。ステートメントが結果セットを返す場合、関数の実行は正常に結果セット オブジェクト mysqli_result を返します。ステートメントが結果セットを返さない場合、関数の実行は true を返します。
                • 方法
                  • affected-rows(): 影響を受ける行の数を返します
                  • errno(): エラー番号を返します
                  • error(): エラー情報を返します
                  • insert_id(): 自動的に増加する ID を返します
                • リソースを閉じる

                  • close(): 接続を閉じます
              • mysqli_result: データベースへのクエリによって返された結果セットを表します
                • プロパティ:
                  • $num_rows: 結果セット内のレコードの数
                  • $field_count: 結果セット内のフィールドの数
                  • $current_field: 現在の列の位置を取得します
                • 方法:
                  • 処理記録
                    • fetch_row(): mysql_fetch_row() と一致します
                    • fetch_assoc(): mysql_fetch_assoc() と一致します
                    • fetch_array(): mysql_fetch_array() と一致します
                    • fetch_object(): mysql_fetch_object() と一致します
                    • data_seek(): mysql_data_seek() と一致します
                    • free(): 結果セットを解放します
                  • 処理フィールド
                    • fetch_field(): 列情報をフェッチし、オブジェクトとして返します
                    • fetch_fields(): すべての列情報をフェッチし、オブジェクトとして返します
                    • field_seek(): フィールドポインタを移動します
                  • 複数の SQL ステートメントを実行する
                    • multi_query(sql1[;sql2]): 複数の SQL ステートメントを実行できます。ステートメントは「;」で区切られ、複数の結果セットがある場合はすべて返されます。
                    • next_result(): multi_query() の次の結果セットを返します
                    • more_results(): 次の結果セットが含まれているかどうかを確認します
              • mysqli_stmt: 前処理クラス
                • 利点:
                  • Mysqil_stmt は、mysqli と mysqli_result が完了できるすべての関数を完了できます
                  • データが異なるだけであれば、複数の同一の SQL ステートメントを実行でき、ステートメントを繰り返す必要がなく、データを直接送信できます。
                  • 受信データと送信データは実行可能ステートメントではなく値クラスとしてのみ使用されるため、SQL インジェクションを防止します
                  オブジェクトを作成する
                • mysqli オブジェクトを作成した後、オブジェクトの stmt_init() メソッドを使用して mysqli_stmt オブジェクトを初期化します
                  明細書を準備して送信する
                • ステートメント内のパラメーター値はプレースホルダー「?」に置き換える必要があります。
                  • mysqli_stmt の prepare($sql) メソッドを使用して、準備のためにステートメントをサーバーに送信します
                    • mysqli_stmt オブジェクトを作成する必要はありません。mysqli で prepare($sql) を直接使用して SQL ステートメントを準備し、mysqli_stmt オブジェクトを返します
                  プレースホルダーに値を渡す(パラメータをバインド)
                • bind_param($type,$var1[,$var2...]) を使用してパラメータをバインドします
                  • $type は i、d、s、b で、それぞれ整数、倍精度、文字列、バイナリのリソースを表します
                    • $type の型の数はプレースホルダーの数と同じでなければならず、$var の数はプレースホルダーの数と同じでなければなりません
                    変数 $var に値を代入します
                  SQL文を実行する
                • 結果セットは返されませんでした
                  • execute()メソッドを使用して、挿入されたパラメータを実行し、ブール型を返します
                    結果セットが返される
                  • bind_result($var1[,$var2...]) を使用して結果セットをバインドします
                    • fetch() を使用してステートメントを実行し、毎回 1 つの結果を取得して、bind_result() の変数に渡します
                      • store_result() を使用してステートメントを実行し、すべての結果を一度に取得し、結果セットを返し、次に fetch() を使用して各レコードを取得します
                      result_matedate() はフィールド情報を取得するために使用される結果セットを返します
                    • result_free()を使用して結果セットを解放します
                  リソースを閉じる
                • close()メソッドを使用して閉じます
                  機能

                • mysqli と mysqli_result は関数をサポートしており、mysqli_stmt は基本的にそれらをサポートしています
              トランザクション処理
            • テーブルを作成する
              • テーブルタイプはMyISAMであり、トランザクション関数をサポートしていません。InnoDBタイプのテーブルを作成する必要があります。
                • 自動送信をオフにする
              • autocommit(): パラメータが 0 または false の場合、自動コミットはオフになります
                • トランザクションを送信する
              • commit(): トランザクションを送信します (複数の SQL ステートメントを実行します)
                • トランザクションのロールバック
              • rollback(): トランザクションのロールバック (複数の SQL ステートメントの実行)
              • その他の方法
            • set_charset($string): 文字セットを設定および取得します
              PDO
              • 利点:
                • データベースを変更する場合、コードを変更する必要はありません
              • 短所:
                • mysql や mysqli ほど効率的ではありません
              • 3つのカテゴリー
                • PDO: PHP とデータベース サービス間の接続を表します
                  • PDOオブジェクトの作成
                    • dpo($dsn,$username,$passd[,$array]): $dsn が mysql データベースに接続すると、「mysql:host=ip:port;dbname=$string」に設定され、$array はチューニングパラメータ
                    • DSN (データ ソース名) データ ソース: ホストの場所、ライブラリ名、さまざまなデータベースに必要なドライバーを含む
                    • getattribute($attribute) を使用して属性を表示し、setattribute($attribute,$value) を使用して属性を設定できます
                  • SQL文を実行する
                    • query($string): 結果セットを返すステートメントを実行し、前処理オブジェクト PDOStatement を返します
                    • exec($string): テーブルに影響を与えるステートメントを実行し、影響を受けた行の数を返します
                  • デザインのバグレポート
                    • setAttribute() を使用してエラー報告モードを設定します
                    • ERRMODE_SILENT: エラーを表示しません。開発者は自分でエラーを確認できます
                      • errorCode: エラー番号を返します
                      • errorInfo: エラー情報の配列を返します
                    • ERRMODE_WARNING: エラーが発生し、E_WARNING メッセージが表示されます
                    • ERRMODE_EXCEPTION: エラーが発生し、PDOException がスローされました
                  • トランザクション処理
                    • setAttribute() を使用してトランザクション処理を有効にし、自動送信をオフにします
                    • commit() を使用して、実行された SQL ステートメントを送信します
                    • rollback()を使用して、実行されたSQL文をロールバックします
                • PDOStatement: 準備されたステートメントを表し、ステートメントが実行された後の関連する結果セットを表します。
                  • 機能
                    • 声明を準備する
                    • 結果セットの処理
                  • 明細書を準備して送信する
                    • ステートメント内のパラメーター値にはプレースホルダー「?」を使用できます
                    • プレースホルダー「:プレースホルダー名」の代わりに
                    • PDO::prepare($sql) メソッドを使用して、準備のためにステートメントをサーバーに送信し、PDOStatement オブジェクトを返し、結果セットを保存します
                  • プレースホルダーに値を渡す(パラメータをバインド)
                    • bind_param($key,$value) を使用してパラメータをバインドします
                      • 「?」
                        • $key はインデックス番号に設定されます。
                        • $valueは送信値に設定されます
                      • 名前のプレースホルダー
                        • $key はキー名に設定されます
                        • $valueは送信値に設定されます
                  • SQL文の実行
                    • バインドされたパラメータを持つステートメントを実行するには、execute() メソッドを使用します
                    • パラメータのバインドを避けるために、execute($array) を使用して $array 配列にパラメータを追加します
                  • レコード取得
                    • fetch() を使用して結果セット内の各レコードを取得し、インデックスと関連付けの混合配列を返します
                      • パラメータはPDO::FETCH_ASSOCで、連想配列が返されます
                      • パラメータはPDO::FETCH_NUMで、インデックス配列が返されます
                      • パラメータはPDO::FETCH_BOTHで、インデックス連想混合配列が返されます
                    • fetchAll() は結果セットの各レコードを取得し、2 次元配列を返します
                    • 取得するたびにモードを設定する必要がないように、setFatchMode() を使用してフェッチ モードを設定します
                  • フィールド取得
                    • columnCount() はフィールドの数を取得します
                    • getColumnMeta() は結果セット内の列のメタデータを返します
                • PDOException: PDO によって生成されたエラーを表します。独自のコードは PDOException 例外をスローしてはなりません
                  • Try catch を使用して、接続例外、SQL ステートメント例外などのさまざまな例外をキャッチします。

              mamcache/memcached

              • 高性能分散メモリオブジェクトキャッシュシステム。メモリ内に巨大なハッシュ テーブルを維持することで、メモリ内のデータを維持します
              • 仕組み
                • PHP が初めてデータをクエリするとき、データは mamcache に保存され、次回クエリするときは最初に mamcache にアクセスします。
              • インストール
                • Linux でのインストール
                  • libevent イベントに基づいているため、最初に libevent ライブラリをインストールする必要があります

                • Windows下インストール
                  • 默认口口11211
              • memcache コマンド
          コマンド 説明
          ゲット 値を読み取る マイキーを取得
          セット 無条件でキーを設定します マイキーを0 60 5に設定します
          追加 新しいキーを追加します 新しいキーを追加 0 60 5
          交換 既存のキーを上書きします キーを交換 0 60 5
          追加 既存のキーにデータを追加する キーを追加 0 60 15
          プリペンド 既存のキーにデータを追加します キーを先頭に追加 0 60 15
          増加 数値キーの値を指定された数値だけインクリメントします マイキー2を追加
          デク 数値キーの値を指定された数値だけデクリメントします デクラマイキー5
          削除 既存のキーを削除します マイキーを削除
          すべてフラッシュ 特定のアイテムをすぐに無効化します すべてフラッシュ
          n秒以内にすべてのアイテムを無効化します フラッシュオール900
          統計 一般的な統計を出力します 統計
          メモリ統計を出力します 統計スラブ
          メモリ統計を出力します 統計malloc
          より高いレベルの割り当て統計を出力する 統計項目
          統計の詳細
          統計サイズ
          統計をリセットします 統計リセット
          バージョン プリントサーバーのバージョン。 バージョン
          冗長 ログレベルを上げる 冗長
          やめて Telnetセッションを終了する やめて

          PHP中使用memcache

          • 类:memcache
          • 连接:memcache::connect($host,$port)
          • <span>1</span> <?<span>php
            </span><span>2</span>     <span>$memcache</span> = <span>new</span><span> Memcache;
            </span><span>3</span>     <span>$memcache</span>->connect("localhost",11211) or <span>die</span>("could not connect");
            ログイン後にコピー
          • 其他方法
            • add:添加数据
            • set/replace:修改数据
            • get:获取数据
            • delete:删除数据
            • ......
          • 何时使用memcache
            • 数据库中读出来的数据,方便下次使用
            • 会话控制中使用
          • 技巧
            • 用sql语句作为key
            • 用md5()修改sql语句,使sql语句变短,便于保存

          会话控制:面向连接的可靠的连接方式,通过会话控制,判断用户的登录行为

          • cookie技术
            • 服务器给客户端的一个文件,通过客户端的这个文件,保存用户信息,服务器根据文件,区分用户
            • 设置cookie
              • setcookie($key,$value,$time):头信息,不能有任何输出
            • 获取cookie
              • 使用全局数组$_COOKIE[]获取cookie内容
            • 删除cookieti
              • 用setcookie设置$value为空或不设置,$time设置为0或不设置
          • session技术
            • 在服务器中保存用户数据,会产生一个SessionID,可使用cookie和url传递该id
            • session配置
              • 配置服务器端的php.ini
            • 开启会话
              • session_start():让php的核心程序将和session有关的内建环境变量预先载入到内存中
                • 开启一个会话
                  • 基于cookie的session,使用该函数不能有任何输出
                • 返回已开启的会话
            • 设置和获取session
              • 使用$_SESSION[]设置和获取session
              • session_id()获取和设置session的id
            • 删除session
              • $_SESSION=array();将session设置为空数组
              • 删除cookie中的session
              • session_destory():销毁session
            • 基于url传递sessionid,设置url的参数为session_name,session_start()后,会自动寻找该参数
            • 常量SID,当用户关闭cookie时,该常量表示session_name和session_id;当用户开启cookie时,该常量为空
            • 设置php.ini中的session.use_trans_sid=1,会使页面跳转(超链接、header、表单)后面自动添加SID
          • session高级技术
            • php.ini中,session的设置
              • session_name:设置存在cookie以及SID中的session_name
              • session.use_trans_sid:设置SID是否开启,开启后,可自动添加SID
              • session.save_path:设置session文件的保存位置,如果不设置,则不生成session文件
              • session.gc_maxlifetime:设置session文件有效时间,超过该时间session未刷新,session文件将失效
              • session.gc_probability和session.gc_divisor结合使用,定义session垃圾回收概率,算法为session.gc_probability/session.gc_divisor
              • session.use_cookie:设置session写入到cookie中
              • session.cookie_path:设置哪些文件的session写入到cookie中
              • session.cookie_lifetime:设置session的生命周期
              • session.save_handler:设置session写入方式及位置,当值为user时,可使用session_set_save_handler()函数
            • session_set_save_handler(open(),close(),read(),write(),destroy(),gc()):可自定义session文件的存储路径及存储方式等
              • 使用该函数定义了各个方法,像往常一样使用session
              • open():在执行session_start()时,被调用
              • close():在执行session_write_close()时,被调用
              • read():在调用open()后,被调用
              • write():脚本结束时和session_write_close()执行时,被调用
              • destroy():当session使用session_destroy()或者session_regenerate_id()被销毁时,被调用
              • gc():由session.gc_probability和session.gc_divisor决定,任何时候军可能被调用 
              • 具体用法
              • 将Session写入数据库
              • 将Session写入Memcache

          至此,PHP的基础学习算是完成了,需要多做多学,方能提高!

          www.bkjia.comtruehttp://www.bkjia.com/PHPjc/980026.htmlTechArticlePHP笔记(PHP高级篇),php笔记 高级篇中将涉及数据库的使用以及Cookie和Session会话,提高PHP的开发效率和运行效率 PHP程序员需要掌握的MyS...
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート