日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP基本整理3

發布時間:2024/4/15 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP基本整理3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

會話控制(cookie和session)

簡介

Cookie是存儲在客戶端瀏覽器中的數據,我們通過Cookie來追蹤與存儲用戶數據。一般情況下,Cookie通過HTTP headers從服務器端返回到客戶端。session是將用戶的會話數據存儲在服務端,沒有大小限制,通過一個session_id進行用戶識別,PHP默認情況下session id是通過cookie來保存的,因此從某種程度上來說,seesion依賴于cookie。但這不是絕對的,session id也可以通過參數來實現,只要能將session id傳遞到服務端進行識別的機制都可以使用session。

PHP通過setcookie函數進行Cookie的設置,任何從瀏覽器發回的Cookie,PHP都會自動的將他存儲在$_COOKIE的全局變量之中,因此我們可以通過$_COOKIE['key']的形式來讀取某個Cookie值。

Cookie經常用來: 存儲用戶的登陸信息,購物車等,且在使用會話Session時通常使用Cookie來存儲會話id來識別用戶,Cookie具備有效期,有效期結束之后,會自動從客戶端刪除。

設置Cookie

PHP中設置Cookie的最常用方法是使用setcookie函數:
setcookie(name,value,expire,path,domain);

  • name:Cookie名,可以通過$_COOKIE['name']進行訪問
  • value:Cookie的值
  • expire:過期時間,默認為零,表示瀏覽器關閉即失效
  • path:如果路徑設置為'/',則整個網站都有效。如果設置成'/path',那么就只在/path及其子路徑/path/demo等下有效,根目錄下就都不到cookie的值
  • domain:默認整個域名都有效

示例代碼:

$value = 'test'; setcookie("TestCookie",$value); setcookie("TestCookie",$value,time()+3600); setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //設置路徑與域

tip:如果是刪除cookie,只需要把expire設置成當前時間之前,cookie就自動失效了,這樣設計是為了簡化http頭。
setcookie("TestCookie",'',time()-1);
占坑:php設置cookie還有用setrawcookie和header直接設置兩種方法

使用session

  • 首先執行session_start方法開啟session,然后用全局變量$_SESSION進行session的讀寫
session_start(); $_SESSION['test'] = time(); var_dump($_SESSION);
  • session會自動對要設置的值進行encode和decode,因此session可以支持任意數據類型,數組和對象都是可以的。
session_start(); $_SESSION['ary']=array('name'=>'jobs'); $_SESSION['OBJ']=new stdClass(); var_dump($_SESSION);
  • 刪除session的方法是unset函數,刪除后session就會從$_SESSION中去除,無法再訪問。如果調用session_destroy,會刪除掉所有數據,但是session_id仍然存在,而且這種刪除是下次訪問的時候$_SESSION才為空,如果要立即刪除$_SESSION,就使用unset。
session_start(); $_SESSION['name']='jobs'; $_SESSION['time']=time(); unset($_SESSION['name']); session_destroy();

tip:可以用session存儲多種類型的數據,故用session存儲用戶登陸信息,購物車數據等很好。和cookie對比的話,cookie需要進行格式化和加密存儲,session存儲在服務器端很安全。還有,cookie只支持字符串類型。
看一個實例做個簡單了解,加密解密函數不太懂,將就看一下。

<?php session_start(); //假設用戶登錄成功獲得了以下用戶數據 $userinfo = array('uid' => 10000,'name' => 'spark','email' => 'spark@imooc.com','sex' => 'man','age' => '18' ); header("content-type:text/html; charset=utf-8");/* 將用戶信息保存到session中 */ $_SESSION['uid'] = $userinfo['uid']; $_SESSION['name'] = $userinfo['name']; $_SESSION['userinfo'] = $userinfo;//* 將用戶數據保存到cookie中的一個簡單方法 */ $secureKey = 'imooc'; //加密密鑰 $str = serialize($userinfo); //將用戶信息序列化 //用戶信息加密前 $str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB)); //用戶信息加密后 //將加密后的用戶數據存儲到cookie中 setcookie('userinfo', $str);//當需要使用時進行解密 $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB); $uinfo = unserialize($str); echo "解密后的用戶信息:<br>"; print_r($uinfo);

(碼一下,讀一遍手冊之后再來自行補充)

PHP異常處理

PHP支持異常處理,異常處理是面向對象一個重要特性,PHP代碼中的異常通過throw拋出,異常拋出之后,后面的代碼將不會再被執行。異常拋出被用于在遇到未知錯誤,或者不符合預先設定的條件時,通知客戶程序,以便進行其他相關處理,不至于使程序直接報錯中斷。

異常處理類

PHP有較多異常處理類,其中Exception是所有異常處理的基類。Exception具有幾個基本屬性和方法:

  • message 異常消息內容
  • code 異常代碼
  • file 拋出異常的文件名
  • line 拋出異常在該文件的行數

常用方法有:

  • getTrace 獲取異常追蹤信息
  • getTraceAsString 獲取異常追蹤信息的字符串
  • getMessage 獲取出錯信息

也可以自己繼承Exception來建立自定義異常處理類
看一下代碼示例就理解了:

//自定義的異常類,繼承了PHP的異常基類Exception class MyException extends Exception {function getInfo() {return '自定義錯誤信息';} }try {//使用異常的函數應該位于 "try" 代碼塊內。如果沒有觸發異常,則代碼將照常繼續執行。但是如果異常被觸發,會拋出一個異常。throw new MyException('error');//這里規定如何觸發異常。注意:每一個 "throw" 必須對應至少一個 "catch",當然可以對應多個"catch" } catch(Exception $e) {//"catch" 代碼塊會捕獲異常,并創建一個包含異常信息的對象echo $e->getInfo();//獲取自定義的異常信息echo $e->getMessage();//獲取繼承自基類的getMessage信息 }

tip:碼一下,未完待續

數據庫操作

安裝插件的話主流數據庫基本都支持。LAMP用的是MySQL和PHP嘛,所以PHP和MySQL是好基友,簡單了解一下PHP操作MySQL

直接碼函數就行了,大部分操作插入刪除什么的得會一些基本的MySQL的語句,可以回顧一下MySQL的整理.

<?php /** header();* 這一行規定html的編碼方式*/header("Content-type:text/html;charset=utf-8"); /******** mysqli_connect* 作用:建立數據庫的連接* 參數:ip地址,數據庫用戶名,密碼* 返回值:1.連接成功時返回mysql鏈接標識符* 2.連接失敗返回false*******/if($con=mysqli_connect('localhost','root','')){echo 'success 成功'.'<br>';}else{echo 'fail'.'<br>';}/******* mysqli_select_db()* 作用:選擇數據庫* 參數:mysql鏈接標識符,數據庫名* 返回值:1.成功返回true* 2.返回失敗false******/if(mysqli_select_db($con,'test')){echo 'yes<br>ok';}else{echo 'no';} /******** mysqli_query()* 作用:執行sql命令* 參數:mysql鏈接標識符,sql命令* 規定傳輸數據的類型* 返回值:1.insert情況下,成功true* 2.insert情況下,失敗false* 3.select情況下,執行成功返回資源標識符,即返回的信息地址*******/mysqli_query($con,'set names utf8');mysqli_query($con,$sql);$query = mysqli_query($con,'select * from test');mysqli_fetch_row($con,$query);//讀取一行,以數組形式返回出來,前一條讀到最后了的話,再次執行返回空//返回的是一個以為索引數組,每一個下標與數據庫里的字段排序相對應//全讀出的寫法,用個whilewhile($row=mysqli_fetch_row($query)){print_r($row);} /*********mysqli_error* 作用:返回上一個MySQ操作產生的文本錯誤信息* 參數:(可選mysql標識符)* 返回值:文本錯誤信息********/echo mysqli_error(); /********* mysqli_close();* 作用:關閉數據庫* 參數:********/mysqli_close($con); ?>

轉載于:https://www.cnblogs.com/ustc-rjgc2017/p/8183789.html

總結

以上是生活随笔為你收集整理的PHP基本整理3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。