php建立登陸模組的四種方式

2021-09-10 03:17:03 字數 3007 閱讀 1570

整理一下用php實現登陸功能的四種技術,這裡我們需要構建乙個login.php頁面,以下是四種實現方法

http認證可以作為乙個簡單的使用者登陸系統,我們可以利用http認證視窗作為面向使用者的登陸視窗,php通過超級全域性變數$_server['php_auth_user']$_server['php_auth_pw']得到使用者輸入的使用者名稱和口令,然後執行sql查詢驗證身份。

**模板如下

<?php

$connect=mysqli_connect('localhost','root','***','datebasename');

if(!isset($_server['php_auth_user'])||!isset($_server['php_auth_pw']))

$name=mysqli_real_escape_string(connect,trim($_server['php_auth_user]));

$pw=mysqli_real_escape_string($connect,trim($_server['php_auth_pw]));

if(empty($name)||empty($pw))

$str="select * from tablename where name='$name' and pw=sha('$pw')";

$re=mysqli_query($connect,$str);

if(mysqli_num_rows($re)==0)

echo 'ok';

?>

這種方法有乙個致命缺陷,就是無法正常登出!http認證是通過以上兩個超級全域性變數實現同一基本域跨頁面識別使用者身份,也就是說,只有當這兩個超級全域性變數銷毀後使用者才能登出,這往往需要使用者關閉瀏覽器視窗或者手動清除http認證的會話。(關閉瀏覽器會銷毀乙個會話裡的資料變數以及http認證)

利用php內建函式setcookie()儲存使用者資訊以及過期日期,利用超級全域性變數$_cookie取出當前使用者資訊。

工作原理:伺服器生成帶有登陸使用者資訊的cookie,通過響應頭髮送給瀏覽器,瀏覽器把這個cookie儲存起來,第二次向伺服器發出請求時把這個cookie打包到請求頭中傳送給伺服器,伺服器接收到這個資訊,識別出使用者已經登陸以及登陸使用者的資訊從而返回相應html頁面。

**模板如下

<?php

$message='';

if(!isset($_cookie['username']))

else

else

}} echo $message;

?><?php

} else

?>

利用cookie儲存當前使用者資訊有幾點好處

使用cookie儲存資訊也有明顯的缺陷

會話session是有別於cookie的另一種臨時儲存資料的手段,只不過它是儲存在服務端。在操作會話變數$_session之前必須呼叫php函式session_start()開啟會話session。

工作原理:瀏覽器向伺服器發出請求,伺服器接收到後呼叫session_start()函式開始乙個會話,首先檢測瀏覽器的請求位址中是否包含會話id資訊或者請求頭中cookie是否儲存了會話id,若沒有,則開啟乙個新的會話,這會產生乙個會話id和乙個對應以id命名的會話檔案,這個檔案儲存在伺服器中,將用來儲存會話變數。若瀏覽器開啟了cookie,則伺服器會向瀏覽器傳送這個會話id,瀏覽器儲存這個id。若沒開啟cookie,也不影響session工作,它將id通過乙個url從乙個指令碼傳遞到下乙個指令碼,cookie只是一種跨多個指令碼保留會話id的優化方法。這樣當瀏覽器發出第二次請求時指令碼會通過以上兩種途徑識別到包含會話id,並判斷該id是否過期,是否被清除,若否,此時將不會新建會話,而是會從伺服器找到乙個對應的會話檔案,此時就可以開始對裡面儲存的會話變數進行操作。

模板**如下

<?php

if(!session_id())

$message='';

if(!isset($_session['username']))

else

else

}} echo $message;

?><?php

} else

?>

利用會話session的優點

會話session也有它的不足

$_session=array();//登出所有相關的會話變數

if(isset($_cookie[session_name()]))

session_destroy();//清除儲存在伺服器的會話id,結束會話

出於安全性等原因,我們常採用會話session儲存登陸使用者資訊,但是這種方法不能在多個會話之間使用,為此,我們可以利用cookie的「永續性」結合session構造更完美的登陸模組

接下的一切都建立在使用者瀏覽器開啟cookie的基礎上,這時我們可以在使用者登陸成功時同時把使用者資訊儲存在cookie和session裡,當瀏覽器關閉後,session裡的資訊刪除了,但是只要還沒過期cookie裡的資訊就還在,可以在再次開啟瀏覽器時用儲存在cookie中的登陸資料重置會話變數

模板**如下

修改登陸**

if(!session_id())

if(isset($_cookie['username']))

$message='';

if(!isset($_session['username']))

else

else

} }echo $message;

?><?php

} else

?>

在每個頁面加上以下**

if(session_id())

if(isset($_cookie['username']))

建立執行緒的四種方式

1.繼承於thread類,重寫run 方法 2.實現runable介面,實現裡面的run 方法 前兩種不用多說 3.使用 futuretask 實現有返回結果的執行緒,可以返回執行緒執行結果 public class test class mycallable implements callable...

建立執行緒的四種方式

class thread00 extends thread class thread01 implements runnable class thread02 implements callable 對以上三種方法進行測試 測試四種建立執行緒的方式 public class newthread 輸出...

建立執行緒的四種方式

首先我們先來了解一下測試thread中的常用方法 一 繼承thread類 二 實現runnable介面 三 實現callable介面 四 使用執行緒池建立 建立執行緒方式一 繼承thread類 繼承thread類建立執行緒的步驟為 1 新建乙個主類,然後再建立乙個類繼承thread的子類。2 重寫t...