PHP ノート (高度な PHP)

WBOY
リリース: 2016-06-23 13:37:07
オリジナル
1246 人が閲覧しました

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

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

  • プロジェクト用のテーブルの設計
  • SQL ステートメントの使用
  • MySQL ディレクトリ構造
  • データ ディレクトリにはライブラリ ファイルが保存されます
  • bin ディレクトリには MySQL 管理コマンドが保存されます
  • *.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 ステートメント
  • データベースの作成
  • CREATE DATABASE [IF NO EXISTS] DatabaseName
    ログイン後にコピー

  • テーブルの作成
  • CREATE TABLE [IF NOT EXISTS] TableName (colname1 type [property] [index],colname2 type [property] [index],...)[tableType] [tableCharSet];
    ログイン後にコピー

  • Modify表
  • Alterテーブル操作
  • Dataタイプタイプ-numericType
  • unsigned:unsigned Storage
  • inintegerタイプとして指定されている。 (-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 3) 51E+38) 0、(1.175 494 351 E-38、3.402 823 466 E+38)

    DOUBLE 8 バイト (1.797 693 134 862 315 7 E+308、2.225 073 85 8 507 201 4 E -308)、 (2.225 073 858 507 201 4 E-308、1.797 693 134 862 315 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 中長テキストデータ
  • LOGNG BLOB 0 -4 294 967 295Byte 非常に大きいバイナリ形式のテキスト データ
  • LONGTEXT 0-4 294 967 295Byte 非常に大きなテキスト データ

    CHAR の処理速度が速く、VARCHAR は可変サイズです

    バイナリ保存は主に非テキスト ファイルの保存に使用されます

    ENUM、列挙型、可能最大 65535 個の値を保存できます。1 つのフィールドには 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 ではなく null: このフィールドを設定します。空は許可されていますが、空以外に設定し、デフォルトで使用することをお勧めします

    default: このフィールドのデフォルト値を設定します。入力されていない場合は、デフォルト値を使用します
  • インデックス
  • 利点:
  • 改善クエリ速度
  • 短所:
  • 作成コストと保守コストが比較的高い

    リソースを占有する
  • 主キーインデックス (主キー): インデックス値は一意である必要があり、テーブルごとに 1 つだけ存在します
  • 一意のインデックス (一意) : インデックス値は一意である必要がありますが、テーブルには複数のインデックスを含めることができます
  • 通常のインデックス (インデックス): 多くの制限のない、最も基本的なインデックス
  • フルテキスト インデックス (filltext): MyISAM でのみ使用できます。テーブルを作成すると、効果は向上しますが、速度は遅くなります
  • 作成して使用すると、MySQL を効率的に実行するために MySQL インデックス タイプのリストを表示できます
  • データ テーブルのタイプと保存場所
  • MySQL は、さまざまなストレージ エンジンのニーズに合わせて最適なストレージ エンジンを選択できます
  • データ テーブル タイプはストレージ エンジンです
  • タイプまたはエンジン キーワードを使用してテーブル タイプを指定します
  • 一般的に使用されるテーブル タイプ
  • MyISAM
  • 高速性を重視読み取り操作
  • 一部の関数 (トランザクション) をサポートしていません
  • InnoDB
  • MyISAM がサポートしていない一部の関数をサポートしています
  • フルテキストインデックスをサポートしていません
  • より多くのスペースを必要とします
    関数 MyISAM InnoDB
    事務処理 サポートされません サポートされる
    データ行ロック サポートされない サポートされる
    外部キー制約 サポートされていません サポートされています
    テーブルスペースが占有されています 比較的小さい 大きい
    全文インデックス サポートされている サポートされていない
  • MySQL のデフォルトの文字セット

  • 推奨 utf8
  • 文字セット: MySQL が文字列を保存する方法を定義するために使用されます
  • 文字セット キーワードを使用して文字セットを指定します
  • 校正ルール: ルールは文字列を比較する方法を定義します
  • Collat​​e を使用して照合規則を指定します
  • データ操作言語 (DML)

  • 主な形式は 3 つあります:
  • 1) 挿入: INSERT
  • insert into tablename[(field list)] names(value list 1)[,(value list 2 )...]
  • テーブル名の後にフィールド リストがある場合、値のリストはフィールド リストに 1 対 1 で対応します。フィールド リストがない場合、値のリストは のフィールドに対応します。テーブルを 1 対 1 で
  • 2) 更新: UPDATE
  • update tablename set field name = 'value' [条件]
  • 3) 削除: DELETE
  • delete from tablename [条件]
  • あなた算術演算子、論理演算子、比較演算記号、ビット演算子などの演算子を使用できます
  • データクエリ言語 (DQL)

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

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

  • 位置: select ステートメント、および句 where order by getting、update delete ステートメントと句
  • フィールド名は関数内で変数として使用でき、変数の値はすべて列 Value に対応する値
  • よく使用される
  • 文字列関数
  • concat: 受信パラメータを文字列に連結します
  • insert(str,x,y,insert): str の x 位置から開始して、 y の長さの文字列を挿入
  • lower(str),upper(str): 文字列を大文字と小文字に変換します
  • left(str,x) right(str,x) str の左 (右) の x 文字を返します, x が null の場合、null を返します
  • lpad(str,n,pad) rpad(str,n,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): 数値の結果を返します (time): UNIX タイムスタンプを返します
  • from_unixtime(): Unix タイムスタンプを日付に変換します
  • week(): 週を返しますtimestamp
  • year(): タイムスタンプの年を返します
  • hour(): タイムスタンプの時間を返します
  • minut(): タイムスタンプの分を返します
  • 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 を返します
  • case
  • 。 value3 ビットが true の場合、value4 を返します。 on、そうでない場合は、fault を返します
  • その他の使用法: 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 はライブラリ名です。このパラメータが追加されていない場合、デフォルトは最近作成されたデータベース リソース
  • SQL ステートメント入力
  • mysql_query(): SQL ステートメントを実行します。ステートメントが結果セットを返す場合、関数は正常に実行され、ステートメントが結果セットを返さない場合、関数が実行されます。成功して true を返す
  • エラーの解決
  • mysql_errno(): エラー番号を返す
  • mysql_error(): エラーメッセージを返す
  • データベースリソースを閉じる
  • mysql_close(): データベースリソースを閉じ、パラメータを使用せず、開いているリソースを閉じるデフォルト (推奨)
  • Function
  • mysql_insert_id(): AUTO_INCREMENT が設定されていない場合は、自動的に増加する ID を返し、false を返します
  • 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 ]]]]]] )
  • Return接続に成功した場合はオブジェクト、失敗した場合は false
  • 接続失敗情報を表示
  • connect_errno(): 接続エラー番号を返す
  • connect_error(): 接続エラー情報を返す
  • SQL文入力
  • query(sql): SQL文を実行、ステートメントが結果セットを返す場合、関数は正常に実行され、結果セット オブジェクト mysqli_result を返します。ステートメントが結果セットを返さない場合、関数は正常に実行され、true を返します
  • Method
  • 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 ステートメント";"で区切って実行可能set
  • mysqli_stmt: 前処理クラス
  • 利点:
  • mysqli と mysqli_result は、mysqil_stmt が完了できる関数を完了できます
  • データのみが異なる場合、複数の同一の 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 を送信しますステートメント
  • 実行された SQL ステートメントをロールバックするには、rollback() を使用します
  • PDOStatement: 準備されたステートメントを表し、ステートメントの実行後の関連する結果セットを表します
  • 関数
  • ステートメントを準備します
  • 結果セットを処理します
  • Prepareそしてステートメントを送信します
  • ステートメント内のパラメーター値は、プレースホルダー "?" を説明するために使用できます
  • プレースホルダー ":プレースホルダー名" は、
  • PDO::prepare($sql) を使用します準備のためにステートメントをサーバーに送信し、PDOStatement オブジェクトを返し、結果セットを保存するメソッド
  • 値をプレースホルダー (バインドパラメータ) に転送する
  • パラメータをバインドするには、bind_param($key,$value) を使用します
  • "?" プレースホルダー
  • $key はインデックス番号に設定され、
  • $value は送信された値に設定されます
  • name プレースホルダー
  • $key はキー名に設定されます
  • $value は送信された値に設定されます
  • sqlステートメントの実行
  • バインドされたパラメータStatementを実行するにはexecute()メソッドを使用します
  • execute($array)を使用し、$array配列にパラメータを追加し、パラメータのバインドを回避します
  • レコード取得
  • fetch() を使用して結果セット内の各レコードを取得し、インデックスと関連する混合配列を返します
  • パラメータは PDO::FETCH_ASSOC で、連想配列を返します
  • パラメータは PDO::FETCH_NUM で、インデックス配列を返します
  • パラメータは PDO::FETCH_BOTH で、インデックス連想混合配列を返します
  • fetchAll() は結果セットの各レコードを取得し、2 次元の配列を返します
  • 取得モードを設定するには setFatchMode() を使用して、毎回モードを設定しないようにします取得するときは
  • フィールドの取得
  • columnCount() でフィールドの数を取得します
  • getColumnMeta() は結果セット内の列のメタデータを返します
  • PDOException: PDO によって生成されたエラーを表します。独自のコードで PDOException 例外をスローしないでください
  • 接続例外、SQL ステートメント例外などを含むさまざまな例外をキャッチするには、try catch を使用してください。
  • mamcache/memcached

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

  • Windows下インストール
  • 默认口口11211
  • memcacheコマンド
  • コマンド説明例 set無条件にキーを設定set mykey 0 60 5add新しいキーを追加add newkey 0 60 5replace既存のキーを上書きreplace key 0 60 5追加既存のキーにデータを追加 append key 0 60 15prepend既存のキーにデータを追加しますprepend key 0 60 15incr数値キーの値を指定された数値だけ増分しますincr mykey 2デク数値キーの値を指定された数値だけデクリメントしますdecr mykey 5delete既存のキーを削除しますdelete mykeyflush_allf lush_alln 内のすべての項目を無効にする秒flush_all 900stats一般統計を出力statsメモリ統計を出力統計スラブを出力メモリを出力統計stats mallocより高いレベルの割り当て統計を出力します統計項目統計詳細統計サイズ統計をリセット統計をリセットバージョンプリントサーバーのバージョンバージョン冗長性ログレベルを上げる冗長性quitTelnetセッションを終了するquit
    get 値を読み取る get mykey
    特定の項目をすぐに無効化します

    PHP中使用memcache

  • 类:memcache
  • 连接:memcache::connect($host,$port)
  • 1 <?php2     $memcache = new Memcache;3     $memcache->connect("localhost",11211) or die("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的基础学习算是完成了,需要多做多学,方能提高!

    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート