国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 後端開發(fā) php教程 PHP札記(PHP高級篇)

PHP札記(PHP高級篇)

Jun 13, 2016 pm 12:17 PM
mysql mysqli nbsp session

PHP筆記(PHP高級篇)

高級篇中將涉及數(shù)據(jù)庫的使用以及Cookie和Session會話,提高PHP的開發(fā)效率和運行效率

?

PHP程序員需要掌握的MySQL操作

  • 為項目設計表
  • 使用SQL語句
  • MySQL的目錄結構
    • data目錄中存放的是庫文件
    • bin目錄中存放的是MySQL管理命令
    • *.ini文件記錄的是MySQL的配置

連接MySQL DB:

  • mysql -h sql地址 -u 用戶名 -p密碼,如mysql -h localhost -u root -p123456
  • 安全的方法:先輸入“mysql -h sql地址 -u 用戶名 -p”,回車,再輸入密碼

?數(shù)據(jù)定義語言(DDL)

  • 定義:用來創(chuàng)建數(shù)據(jù)庫中的各種對象-----表、視圖、索引、同義詞、聚簇等
  • SQL語句
    • 創(chuàng)建數(shù)據(jù)庫
    • <span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">DATABASE</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">IF NO EXISTS</span><span style="color: #ff0000;">]</span> DatabaseName
    • 創(chuàng)建表
    • <span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">TABLE</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">IF NOT EXISTS</span><span style="color: #ff0000;">]</span><span style="color: #000000;"> TableName (colname1 type </span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">property</span><span style="color: #ff0000;">]</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">index</span><span style="color: #ff0000;">]</span><span style="color: #000000;">,colname2 type </span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">property</span><span style="color: #ff0000;">]</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">index</span><span style="color: #ff0000;">]</span><span style="color: #000000;">,...)[tableType] [tableCharSet];</span>
      • 修改表
        • alter table 操作
      • 數(shù)據(jù)類型
        • 數(shù)值型
          • UNSIGNED:指定為無符號存儲
          • 整型
            • TINYINT 1 Byte?(-128,127) (0,255) 小整數(shù)值?
              SMALLINT 2 Byte (-32 768,32 767) (0,65 535) 大整數(shù)值?
              MEDIUMINT 3 Byte (-8 388 608,8 388 607) (0,16 777 215) 大整數(shù)值?
              INT或INTEGER 4 Byte (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整數(shù)值?
              BIGINT 8 Byte (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數(shù)值?
          • 浮點型
            • FLOAT 4 字節(jié) (-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,3.402 823 466 E+38)?
            • DOUBLE 8 字節(jié) (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 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 二進制形式的長文本數(shù)據(jù)?
            TEXT 0-65 535Byte 長文本數(shù)據(jù)?
            MEDIUMBLOB 0-16 777 215Byte 二進制形式的中等長度文本數(shù)據(jù)?
            MEDIUMTEXT 0-16 777 215Byte 中等長度文本數(shù)據(jù)?
            LOGNGBLOB 0-4 294 967 295Byte 二進制形式的極大文本數(shù)據(jù)?
            LONGTEXT 0-4 294 967 295Byte 極大文本數(shù)據(jù)
          • CHAR的處理速度比較快,VARCHAR具有可變大小
          • 二進制保存主要用于保存非文本文件
          • ENUM,枚舉類型,最多能存儲65535個值,一個字段只能存一個值
          • SET,集合類型,最多可存儲64個值,一個值段可存多個值
        • 日期型
          • DATE 3Byte?1000-01-01/9999-12-31 YYYY-MM-DD 日期值?
            TIME 3Byte '-838:59:59'/'838:59:59' HH:MM:SS 時間值或持續(xù)時間?
            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 混合日期和時間值,時間戳

      ※任何數(shù)據(jù)類型以字符串的形式存入,都可以自動轉換類型

      ※將時間保存為php時間戳,方便運算

      數(shù)據(jù)字段屬性

      • unsigned:設置該字段為無符號數(shù)值,只能是數(shù)值型
      • zerofill:設置該字段的記錄的值未達到指定位數(shù)時,用“0”填充,只能是數(shù)值型
      • auto_increment:設置該字段的值自動增長,也可設定自定義值,需要同時設定索引或主鍵,只能是數(shù)值型
      • null和not null:設置該字段是否允許為空,建議設定為非空,配合default使用
      • default:設置該字段的默認值,若不輸入,使用默認值

      索引

      • 優(yōu)點:
        • 提高查詢速度
      • 缺點:
        • 創(chuàng)建和維護成本比較高
        • 占用資源
      • 主鍵索引(primary key):索引值必須唯一,每張表只有一個
      • 唯一索引(unique):索引值必須唯一,但一張表可以有多個
      • 常規(guī)索引(index):最基本的索引,沒有太多的限制
      • 全文索引(filltext):只能在MyISAM上使用,表越大,效果越好,但速度較慢
      • 創(chuàng)建和使用,可查看MySQL索引類型一覽表 讓MySQL高效運行起來

      數(shù)據(jù)表類型及存儲位置

      • MySQL可以針對不同的存儲引擎需求可以選擇最優(yōu)的存儲引擎
      • 數(shù)據(jù)表類型即存儲引擎
      • 使用type或engine關鍵字指定表類型
      • 常用的表類型
        • MyISAM
          • 強調快速讀取操作
          • 對一些功能不支持(事務)
        • InnoDB
          • 支持一些MyISAM不支持的功能
          • 不支持全文索引
            • 占用空間比較大
              功能 MyISAM InnoDB
              事務處理 不支持 支持
              數(shù)據(jù)行鎖定 不支持 支持
              外鍵約束 不支持 支持
              表空間占用 相對較小 較大
              全文索引 支持 不支持

      MySQL默認字符集

      • 推薦utf8
      • 字符集:用來定義MySQL存儲字符串的方式
        • 使用character set關鍵字指定字符集
      • 校對規(guī)則:對規(guī)則定義了比較字符串的方式
        • 使用collate指定校對規(guī)則

      數(shù)據(jù)操作語言(DML)

      • 主要有三種形式:
        • 1) 插入:INSERT
          • insert into tablename[(字段列表)] values(值列表1)[,(值列表2)...]
            • 表名后面,若有字段列表,則值列表與字段列表一一對應,若沒有字段列表,則值列表與表中的字段一一對應
        • 2) 更新:UPDATE
          • update tablename set 字段名='值' [條件]
        • 3) 刪除:DELETE
          • delete from tablename [條件]
        • 可以使用運算符,包括算術運算符、邏輯運算符、比較運算符、位運算符

      數(shù)據(jù)查詢語言(DQL)

      • 基本結構是由SELECT[ALL|DISTINCT]子句,F(xiàn)ROM子句,WHERE
        • 子句組成的查詢塊:
          • SELECT
          • FROM
          • [WHERE/GROUP BY/ORDER BY]
        • DISTINCT表示不顯示重復的記錄
        • 使用as關鍵字,可為字段名起別名,用于可能產生歧義的字段名

      數(shù)據(jù)控制語言(DCL)

      • 定義:用來授予或回收訪問數(shù)據(jù)庫的某種特權,并控制數(shù)據(jù)庫操縱事務發(fā)生的時間及效果,對數(shù)據(jù)庫實行監(jiān)視等。

      MySQL內置函數(shù)

      • 位置:select語句,及子句where order by having 中,update delete語句及子句
      • 函數(shù)中可以將字段名當作變量來用,變量的值就是該列對應的所有值
      • 常用
        • 字符串函數(shù)
          • concat:把傳入的參數(shù)連接成一個字符串
          • 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中用字符串b替換所有的字符串a
          • strcmp(s1,s2):如果S1比S2小,返回-1;如果S1比S2大則返回1;如果相等則返回0(比較的是ASCII碼)

          • substring(str,x,y) 返回字符串str中從位置x起,長度為y的子字符串
        • 數(shù)值函數(shù)
          • abs(x):返回絕對值
          • ceil(x):返回大于x的最小整數(shù)
          • floor(x):返回小于x的最大整數(shù)
          • mod(x,y):返回x與y的模
          • rand():返回0-1之間的隨機數(shù)
          • round(x,y):返回參數(shù)x的y位小數(shù)的四舍五入結果
          • truncate(x,y):返回數(shù)字x截斷為y位小數(shù)的結果
        • 日期函數(shù)
          • curdate():返回當前年月日
          • curtime():返回當前時分秒
          • now():返回當前日期
          • unix_timestamp(time):返回unix時間戳
          • from_unixtime():將Unix時間戳轉換為日期
          • week():返回時間戳的周
          • year():返回時間戳的年
          • hour():返回時間戳的小時
          • minute():返回時間戳的分鐘
          • month():返回時間戳的月
          • date_format(time,"%Y-%m-%d %H:%i:%s"):格式化返回時間
        • 流程控制函數(shù)
          • if(value,t,f):如果value值為true,返回t,如果value值為false,返回f
          • ifnull(value1,value2):如果value1為空,則返回value2,如果value1不為空,返回value1
          • case?
            ??????? when value1 then value2
            ??????? when value3 then value4
            ? ? ? ? ......
            ??????? else fault END?
            • 當value1為true,返回value2,當value3位true,返回value4,以此類推,否則返回fault
            • 其他用法:mysql 語句case when
        • 其他函數(shù)
          • database():返回數(shù)據(jù)庫名
          • version():返回MySQL版本
          • user():返回MySQL的用戶
          • inet_aton(ip):將IP轉換為網(wǎng)路字節(jié)序
          • inet_nton():將網(wǎng)絡字節(jié)序轉為IP
          • password():MySQL用戶密碼加密
          • md5(str):將字符串加密

      PHP操作數(shù)據(jù)庫

      • 連接數(shù)據(jù)庫
        • mysql_connect(IP,user,psw):IP為數(shù)據(jù)庫地址,user為用戶名,psw為用戶密碼,連接成功,返回數(shù)據(jù)庫資源,連接失敗,返回false
      • 選擇庫
        • mysql_select_db($dbname,[$res]):$dbname為庫名稱;$res為連接數(shù)據(jù)庫是返回的資源,若不添加該參數(shù),則默認為最近創(chuàng)建的數(shù)據(jù)庫資源
      • SQL語句輸入
        • mysql_query():執(zhí)行SQL語句,若語句有返回結果集,則函數(shù)執(zhí)行成功返回結果集,若語句沒有返回結果集,函數(shù)執(zhí)行成功返回true
      • 解決錯誤
        • mysql_errno():返回錯誤號
        • mysql_error():返回錯誤信息
      • 關閉數(shù)據(jù)庫資源
        • mysql_close():關閉數(shù)據(jù)庫資源,不使用參數(shù),默認關閉開啟的資源(推薦)
      • 函數(shù)
        • mysql_insert_id():返回自動增長的id,若沒有設置AUTO_INCREMENT,則返回false
        • mysql_affected_rows():獲取受影響的行數(shù)
      • 從結果集中取出數(shù)據(jù)
        • mysql_fetch_row($result):從結果集中取得一條數(shù)據(jù),返回索引數(shù)組
        • mysql_fetch_assoc($result):從結果集中取得一條數(shù)據(jù),返回關聯(lián)數(shù)組
        • mysql_fetch_array($result):從結果集中取得一條數(shù)據(jù),返回索引數(shù)組和關聯(lián)數(shù)組
        • mysql_fetch_object($result):從結果集中取得一條數(shù)據(jù),返回對象
        • mysql_data_seek($result,$row):將指針移動到指定位置
      • 從結果集中獲取字段
        • mysql_num_rows($result):獲取結果集的字段數(shù)
        • mysql_num_fields($result):獲取結果集的列數(shù)
        • mysql_field_name($result):獲取結果集的字段名

      mysqli操作數(shù)據(jù)庫

      • PHP5以后的新添加的功能都是面向對象的,所以mysqli是以對象的形式添加的
      • mysqli優(yōu)點
        • 表示改進
        • 功能增加
        • 效率大大增加
        • 更穩(wěn)定
      • mysqli擴展提供的三個類
        • mysqli:和連接有關的類
          • 構造方法
            • mysqli([$host?[, $username?[, $passd[, $dbname?[,$port [, $socket?]]]]]]?)
            • 連接成功返回對象,失敗返回false
          • 查看連接失敗信息
            • connect_errno():返回連接錯誤號碼
            • connect_error():返回連接錯誤信息
          • SQL語句輸入
            • query(sql):執(zhí)行SQL語句,若語句有返回結果集,則函數(shù)執(zhí)行成功返回結果集對象mysqli_result,若語句沒有返回結果集,函數(shù)執(zhí)行成功返回true
          • 方法
            • affected-rows():返回影響行數(shù)
            • errno():返回錯誤號
            • error():返回錯誤信息
            • insert_id():返回自動增長的id
          • 關閉資源
            • close():關閉連接
        • mysqli_result:表達對數(shù)據(jù)庫的查詢所返回的結果集
          • 屬性:
            • $num_rows:結果集中記錄數(shù)
            • $field_count:結果集中字段數(shù)
            • $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():移動字段指針
            • 執(zhí)行多條SQL語句
              • multi_query(sql1[;sql2]):可執(zhí)行多條sql語句,語句間用“;”隔開,若有多個結果集,則均會被返回
              • next_result():返回multi_query()的下一個結果集
              • more_results():檢查是否含有下一個結果集
        • mysqli_stmt:預處理類
          • 優(yōu)點:
            • mysqli和mysqli_result能完成的功能,mysqil_stmt都能完成
            • 效率比較高,執(zhí)行多條相同的sql語句,只有數(shù)據(jù)不同的話,不用重復傳語句,直接傳數(shù)據(jù)即可
            • 防止sql注入,因為出入的數(shù)據(jù)只會當做值類使用,不會當做可執(zhí)行語句
          • 創(chuàng)建對象
            • 創(chuàng)建好mysqli對象后,使用該對象的stmt_init()方法初始化mysqli_stmt對象
          • 準備并發(fā)送語句
            • 語句中的參數(shù)值要使用占位符“?”代替
              • 使用mysqli_stmt中的prepare($sql)方法將語句發(fā)送到服務器準備
              • 不用創(chuàng)建mysqli_stmt對象,直接使用mysqli中的prepare($sql)準備sql語句,并返回mysqli_stmt對象
          • 給占位符傳值(綁定參數(shù))
            • 使用bind_param($type,$var1[,$var2...])綁定參數(shù)
              • $type可以為i、d、s、b,分別代表integer、double、string和二進制資源
              • $type中的類型個數(shù)要與占位符相同,$var個數(shù)也要與占位符個數(shù)相同
            • 給變量$var賦值
          • 執(zhí)行sql語句
            • 沒有結果集返回
              • 使用execute()方法執(zhí)行插入的參數(shù),返回boolean類型
            • 有結果集返回
              • 使用bind_result($var1[,$var2...])綁定結果集
                • 使用fetch()執(zhí)行語句,每次獲取一條結果,并傳遞到bind_result()中的變量
                • 使用store_result()執(zhí)行語句,將所有結果一次性取出,返回結果集,再用fetch()獲取每一條記錄
              • result_matedate()返回結果集,用于獲取字段信息
              • 使用result_free()釋放結果集
          • 關閉資源
            • 使用close()方法關閉
          • 函數(shù)
            • mysqli和mysqli_result支持函數(shù),mysqli_stmt基本都支持
      • 事務處理
        • 建立表
          • 表類型為MyISAM不支持事務功能,需要建立InnoDB類型的表
        • 關閉自動提交
          • autocommit():參數(shù)為0或false時,關閉自動提交
        • 提交事務
          • commit():提交事務(多條執(zhí)行后的sql語句)
        • 回滾事務
          • rollback():回滾事務(多條已執(zhí)行的sql語句)
      • 其他方法
        • set_charset($string):設置取出字符集

      PDO

      • 優(yōu)點:
        • 更換數(shù)據(jù)庫時,不用更改代碼
      • 缺點:
        • 效率不如mysql和mysqli高
      • 三個類
        • PDO:代表 PHP 和數(shù)據(jù)庫服務之間的一個連接
          • 創(chuàng)建PDO對象
            • dpo($dsn,$username,$passd[,$array]):$dsn連接mysql數(shù)據(jù)庫時,設置為'mysql:host=ip:port;dbname=$string',$array為調優(yōu)參數(shù)
            • DSN(data source name)數(shù)據(jù)源:包括主機位置、庫名和不同數(shù)據(jù)庫所需驅動
            • 可用getattribute($attribute)查看屬性,使用setattribute($attribute,$value)設置屬性
          • 執(zhí)行sql語句
            • query($string):執(zhí)行有結果集返回的語句,返回預處理對象PDOStatement
            • exec($string):執(zhí)行對表有影響的語句,返回被影響行數(shù)
          • 設計錯誤報告
            • 使用setAttribute()設置錯誤報告模式
            • ERRMODE_SILENT:不顯示錯誤,開發(fā)人員自行檢查錯誤
              • errorCode:返回錯誤號碼
              • errorInfo:返回錯誤信息數(shù)組
            • ERRMODE_WARNING:發(fā)生錯誤,顯示一個E_WARNING消息
            • ERRMODE_EXCEPTION:發(fā)生錯誤,拋出PDOException異常
          • 事務處理
            • 使用setAttribute(),設置開啟事務處理,關閉自動提交
            • 使用commit()提交已執(zhí)行的sql語句
            • 使用rollback()回滾已執(zhí)行的sql語句
        • PDOStatement:代表一條預處理語句,并在該語句被執(zhí)行后代表一個相關的結果集
          • 作用
            • 準備一條語句
            • 處理結果集
          • 準備并發(fā)送語句
            • 語句中的參數(shù)值可使用占位符“?”
            • 占位符“:占位符名字”代替
            • 使用PDO::prepare($sql)方法將語句發(fā)送到服務器準備,返回PDOStatement對象,存儲結果集
          • 給占位符傳值(綁定參數(shù))
            • 使用bind_param($key,$value)綁定參數(shù)
              • “?”占位符
                • $key設置為索引號,
                • $value設置為傳送值
              • 名字占位符
                • $key設置為鍵名
                • $value設置為傳送值
          • sql語句執(zhí)行
            • 使用execute()方法執(zhí)行已綁定參數(shù)的語句
            • 使用execute($array),$array數(shù)組中添加參數(shù),避免綁定參數(shù)
          • 記錄獲取
            • 使用fetch()獲取結果集中的每一條記錄,返回索引和關聯(lián)混合數(shù)組
              • 參數(shù)為PDO::FETCH_ASSOC,返回關聯(lián)數(shù)組
              • 參數(shù)為PDO::FETCH_NUM,返回索引數(shù)組
              • 參數(shù)為PDO::FETCH_BOTH,返回索引關聯(lián)混合數(shù)組
            • fetchAll()獲取結果集的每一條記錄,返回二維數(shù)組
            • 使用setFatchMode()設置獲取模式,就可以避免每次獲取都要設置模式
          • 字段獲取
            • columnCount()獲取字段數(shù)
            • getColumnMeta()返回結果集中一列的元數(shù)據(jù)
        • PDOException:代表一個由 PDO 產生的錯誤。在自己的代碼不應拋出一個 PDOException 異常
          • 使用try catch捕獲各種異常,包括連接異常、sql語句異常等

      mamcache/memcached

      • 一個高性能的分布式的內存對象緩存系統(tǒng)。通過在內存中維護一個巨大的hash表,維護內存中的數(shù)據(jù)
      • 工作原理
        • PHP第一次查詢數(shù)據(jù)時,會將數(shù)據(jù)存儲在mamcache中,下次查詢時,先訪問mamcache。
      • 安裝  
        • Linux下安裝
          • 基于libevent事件,所以必須先安裝libevent庫

        • Windows下安裝
          • 默認端口11211
      • memcache命令
      Command Description Example
      get Reads a value get mykey
      set Set a key unconditionally set mykey 0 60 5
      add Add a new key add newkey 0 60 5
      replace Overwrite existing key replace key 0 60 5
      append Append data to existing key append key 0 60 15
      prepend Prepend data to existing key prepend key 0 60 15
      incr Increments numerical key value by given number incr mykey 2
      decr Decrements numerical key value by given number decr mykey 5
      delete Deletes an existing key delete mykey
      flush_all Invalidate specific items immediately flush_all
      Invalidate all items in n seconds flush_all 900
      stats Prints general statistics stats
      Prints memory statistics stats slabs
      Prints memory statistics stats malloc
      Print higher level allocation statistics stats items
      ? stats detail
      ? stats sizes
      Resets statistics stats reset
      version Prints server version. version
      verbosity Increases log level verbosity
      quit Terminate telnet session quit

      PHP中使用memcache

      • 類:memcache
      • 連接:memcache::connect($host,$port)
      • <span style="color: #008080;">1</span> <span style="color: #000000;">php</span><span style="color: #008080;">2</span>     <span style="color: #800080;">$memcache</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Memcache;</span><span style="color: #008080;">3</span>     <span style="color: #800080;">$memcache</span>->connect("localhost",11211) or <span style="color: #0000ff;">die</span>("could not connect");
      • 其他方法
        • add:添加數(shù)據(jù)
        • set/replace:修改數(shù)據(jù)
        • get:獲取數(shù)據(jù)
        • delete:刪除數(shù)據(jù)
        • ......
      • 何時使用memcache
        • 數(shù)據(jù)庫中讀出來的數(shù)據(jù),方便下次使用
        • 會話控制中使用
      • 技巧
        • 用sql語句作為key
        • 用md5()修改sql語句,使sql語句變短,便于保存
      • 會話控制:面向連接的可靠的連接方式,通過會話控制,判斷用戶的登錄行為

        • cookie技術
          • 服務器給客戶端的一個文件,通過客戶端的這個文件,保存用戶信息,服務器根據(jù)文件,區(qū)分用戶
          • 設置cookie
            • setcookie($key,$value,$time):頭信息,不能有任何輸出
          • 獲取cookie
            • 使用全局數(shù)組$_COOKIE[]獲取cookie內容
          • 刪除cookieti
            • 用setcookie設置$value為空或不設置,$time設置為0或不設置
        • session技術
          • 在服務器中保存用戶數(shù)據(jù),會產生一個SessionID,可使用cookie和url傳遞該id
          • session配置
            • 配置服務器端的php.ini
          • 開啟會話
            • session_start():讓php的核心程序將和session有關的內建環(huán)境變量預先載入到內存中
              • 開啟一個會話
                • 基于cookie的session,使用該函數(shù)不能有任何輸出
              • 返回已開啟的會話
          • 設置和獲取session
            • 使用$_SESSION[]設置和獲取session
            • session_id()獲取和設置session的id
          • 刪除session
            • $_SESSION=array();將session設置為空數(shù)組
            • 刪除cookie中的session
            • session_destory():銷毀session
          • 基于url傳遞sessionid,設置url的參數(shù)為session_name,session_start()后,會自動尋找該參數(shù)
          • 常量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()函數(shù)
          • session_set_save_handler(open(),close(),read(),write(),destroy(),gc()):可自定義session文件的存儲路徑及存儲方式等
            • 使用該函數(shù)定義了各個方法,像往常一樣使用session
            • open():在執(zhí)行session_start()時,被調用
            • close():在執(zhí)行session_write_close()時,被調用
            • read():在調用open()后,被調用
            • write():腳本結束時和session_write_close()執(zhí)行時,被調用
            • destroy():當session使用session_destroy()或者session_regenerate_id()被銷毀時,被調用
            • gc():由session.gc_probability和session.gc_divisor決定,任何時候軍可能被調用?
            • 具體用法
            • 將Session寫入數(shù)據(jù)庫
            • 將Session寫入Memcache

        至此,PHP的基礎學習算是完成了,需要多做多學,方能提高!

本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用mySQL中的mysqldump執(zhí)行邏輯備份 使用mySQL中的mysqldump執(zhí)行邏輯備份 Jul 06, 2025 am 02:55 AM

mysqldump是用於執(zhí)行MySQL數(shù)據(jù)庫邏輯備份的常用工具,它生成包含CREATE和INSERT語句的SQL文件以重建數(shù)據(jù)庫。 1.它不備份原始文件,而是將數(shù)據(jù)庫結構和內容轉換為可移植的SQL命令;2.適用於小型數(shù)據(jù)庫或選擇性恢復,不適合TB級數(shù)據(jù)快速恢復;3.常用選項包括--single-transaction、--databases、--all-databases、--routines等;4.恢復時使用mysql命令導入,並可關閉外鍵檢查以提升速度;5.建議定期測試備份、使用壓縮、自動化調

如何在PHP中設置和獲取會話變量? 如何在PHP中設置和獲取會話變量? Jul 12, 2025 am 03:10 AM

要設置和獲取PHP中的會話變量,首先必須始終在腳本頂部調用session_start()以啟動會話。 1.設置會話變量時,使用$_SESSION超全局數(shù)組為特定鍵賦值,如$_SESSION['username']='john_doe';可存儲字符串、數(shù)字、數(shù)組甚至對象,但避免存儲過多數(shù)據(jù)以免影響性能。 2.獲取會話變量時,需先調用session_start(),然後通過鍵訪問$_SESSION數(shù)組,如echo$_SESSION['username'];建議使用isset()檢查變量是否存在以避免錯誤

實施交易和了解MySQL中的酸性 實施交易和了解MySQL中的酸性 Jul 08, 2025 am 02:50 AM

MySQL支持事務處理,使用InnoDB存儲引擎可確保數(shù)據(jù)一致性和完整性。 1.事務是一組SQL操作,要么全部成功,要么全部失敗回滾;2.ACID屬性包括原子性、一致性、隔離性和持久性;3.手動控制事務的語句為STARTTRANSACTION、COMMIT和ROLLBACK;4.四種隔離級別包括讀未提交、讀已提交、可重複讀和串行化;5.正確使用事務需注意避免長時間運行、關閉自動提交、合理處理鎖及異常。通過這些機制,MySQL可實現(xiàn)高可靠與並發(fā)控制。

計算MySQL中的數(shù)據(jù)庫和表尺寸 計算MySQL中的數(shù)據(jù)庫和表尺寸 Jul 06, 2025 am 02:41 AM

要查看MySQL數(shù)據(jù)庫和表的大小,可直接查詢information_schema或使用命令行工具。 1.查看整個數(shù)據(jù)庫大?。簣?zhí)行SQL語句SELECTtable_schemaAS'Database',SUM(data_length index_length)/1024/1024AS'Size(MB)'FROMinformation_schema.tablesGROUPBYtable_schema;可獲取所有數(shù)據(jù)庫的總大小,也可加WHERE條件限定具體數(shù)據(jù)庫;2.查看單個表大小:通過SELECTta

處理MySQL中的角色集和校正問題 處理MySQL中的角色集和校正問題 Jul 08, 2025 am 02:51 AM

字符集和排序規(guī)則問題常見於跨平臺遷移或多人開發(fā)時,導致亂碼或查詢不一致。核心解決方法有三:一要檢查並統(tǒng)一數(shù)據(jù)庫、表、字段的字符集為utf8mb4,通過SHOWCREATEDATABASE/TABLE查看,用ALTER語句修改;二要在客戶端連接時指定utf8mb4字符集,在連接參數(shù)或執(zhí)行SETNAMES中設置;三要合理選擇排序規(guī)則,推薦使用utf8mb4_unicode_ci以確保比較和排序準確性,並在建庫建表時指定或通過ALTER修改。

在MySQL中設置異步主要復制複製 在MySQL中設置異步主要復制複製 Jul 06, 2025 am 02:52 AM

要設置MySQL的異步主從復制,請按以下步驟操作:1.準備主服務器,啟用二進制日誌並設置唯一server-id,創(chuàng)建複製用戶並記錄當前日誌位置;2.使用mysqldump備份主庫數(shù)據(jù)並導入到從服務器;3.配置從服務器的server-id和relay-log,使用CHANGEMASTER命令連接主庫並啟動複製線程;4.檢查常見問題,如網(wǎng)絡、權限、數(shù)據(jù)一致性及自增沖突,並監(jiān)控複製延遲。按照上述步驟操作可確保配置正確完成。

使用命令行客戶端連接到MySQL數(shù)據(jù)庫 使用命令行客戶端連接到MySQL數(shù)據(jù)庫 Jul 07, 2025 am 01:50 AM

連接MySQL數(shù)據(jù)庫最直接的方式是使用命令行客戶端。首先輸入mysql-u用戶名-p並正確輸入密碼即可進入交互式界面;若連接遠程數(shù)據(jù)庫,需添加-h參數(shù)指定主機地址。其次,可直接在登錄時切換到特定數(shù)據(jù)庫或執(zhí)行SQL文件,如mysql-u用戶名-p數(shù)據(jù)庫名或mysql-u用戶名-p數(shù)據(jù)庫名

管理MySQL中的角色集和校正 管理MySQL中的角色集和校正 Jul 07, 2025 am 01:41 AM

MySQL中字符集和排序規(guī)則的設置至關重要,影響數(shù)據(jù)存儲、查詢效率及一致性。首先,字符集決定可存儲字符範圍,如utf8mb4支持中文和表情符號;排序規(guī)則控製字符比較方式,如utf8mb4_unicode_ci不區(qū)分大小寫,utf8mb4_bin為二進制比較。其次,字符集可在服務器、數(shù)據(jù)庫、表、列多個層級設置,建議統(tǒng)一使用utf8mb4和utf8mb4_unicode_ci避免衝突。再者,亂碼問題常由連接、存儲或程序端字符集不一致引起,需逐層排查並統(tǒng)一設置。此外,導出導入時應指定字符集以防止轉換錯

See all articles