PHP Cookie和Session

cookie

cookle常用來識別用戶,可以理解為瀏覽器留下的一種文件,cookie可以分為會話cookie和硬盤cookie兩種,會話cookie生命周期短,瀏覽器關閉即銷毀,硬盤cookie生命周期由開發者設定,可長可短

1.創建cookie

PHP創建cookie使用函數setcookie(name,value,expire,path,domain,secure);

參數:

name:設定cookie的名稱
value:cookie的值
expire:cookie的有效時長,如果不設置則為會話cookie
path:規定 cookie 的服務器路徑
domain:規定 cookie 的域名
secure:規定是否只能通過HTTPS傳輸cookie,默認f

2.讀取cookie

使用$_cookie[]

3.更新cookie

同樣使用setcookie();

4.刪除cookie

把cookie的有效時長設置為負值即可
需要注意:更新和刪除cookie時,path,domain值必須與之前的一致

5.使用cookie實現登錄

思路:

1.最終目標

:將用戶輸入數據與數據庫中數據做比較,如果對比成功,跳轉到主頁,如果用戶直接訪問主頁,彈窗阻止,但如果用戶勾選自動登錄復選框,則第一次登錄成功后,在一段時間內允許直接訪問主頁。

2.實現思路:

1.1 首先如果用戶勾選復選框,登陸時產生一個包含md5加密后的用戶名密碼的硬盤cookie,反之產生一個同樣的內存cookie,主頁調用數據庫中的用戶名,密碼,用同樣的加密方法加密一個密文,與cookie中的value作比較,相同則允許進入,為了方便從數據庫中找到相關用戶,可在登錄cookie的密文值后面加一個明文id,在主頁拆分即可。

登錄前端的html不寫了

<?phpheader("Content-type: text/html; charset=utf-8");
$usename=$_POST['usename']; //接受用戶名
$passname=$_POST['pass'];//接受密碼
$autologin=$_POST['check'];//接受是否自動登錄
echo $autologin;
//接入數據庫
$host = '127.0.0.1';
$user = 'root';
$pass = 'root';
$port=3306;
$link=@mysqli_connect("$host","$user","$pass","t2","3306");
@mysqli_set_charset($link,"utf8");
mysqli_select_db($link,'yonghu');//選擇數據表
$sql="select id,username,password from yonghu WHERE username='{$usename}'&&password='{$passname}'";
$result=mysqli_query($link,$sql);
if(mysqli_num_rows($result)==1)
{//如果用戶選擇自動登錄,則cookle類型設置為硬盤cookleif($autologin==1){$row=mysqli_fetch_assoc($result);setcookie('usename',$usename,strtotime("+1 hours"));//加密操作$son="zeianquan";$key=md5($usename.$passname.$son).":".$row['id'];setcookie('key',$key,strtotime("+1 hours"));}//否則,將cookle設置為會話cookleelse{setcookie('$usename',$usename);}exit("<script>alert('登錄成功!');location.href='gerenjianjie.php';</script>");
}
else
{exit('用戶名或密碼錯誤.<a href="Untitled-2.php">重新注冊</a>');
}
?>
<?php
header("Content-type: text/html; charset=utf-8");
if(!isset($_COOKIE['usename']))
{exit("<script>alert('請首先登錄1!');location.href='dengluhouduan.php';</script>");
}
if(isset($_COOKIE['key'])) {$key = $_COOKIE['key'];
//找到cookle中的用戶id ,與數據庫中做對比,如果有,判斷key是否正確,否則返回登錄$resarr = explode(":", $key);$useid = end($resarr);
//接入數據庫$host = '127.0.0.1';$user = 'root';$pass = 'root';$port = 3306;$link = @mysqli_connect("$host", "$user", "$pass", "t2", "3306");@mysqli_set_charset($link, "utf8");mysqli_select_db($link, 'yonghu');//選擇數據表$sql = "select * from yonghu WHERE id=$useid";$result = mysqli_query($link, $sql);
//用戶id存在,做進一步校驗if (mysqli_num_rows($result) == 1) {
//校驗思路:首先從數據庫獲取用戶名,密碼,用相同的辦法加密,看密文與cookle中的是否相同$row = mysqli_fetch_assoc($result);$usename_t = $row['username'];$password_t = $row['password'];$file=$row['file'];$key = "zeianquan";$key_t = md5($usename_t.$password_t.$key);if ($key_t!= $resarr[0]){exit("<script>alert('請首先登錄2!');location.href='dengluhouduan.php';</script>");}}else {exit("<script>alert('請首先登錄3!');location.href='dengluhouduan.php';</script>");}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title><?php echo $usename_t?>的主頁</title>
</head>
<body >
這是主頁!!!!!!
</body>
</html>

session

session識別用戶的,他與cookie的不同在于Cookie保存在客戶端瀏覽器中,而Session保存在服務器上,因此,session的工作原理是為每個訪客創建一個UID,一般通過cookie保存,或者通過URL傳導。
1.開始session
session_start();
必須位于HTML標簽之前
2.設置數據
$_session['name']=.........或者$-session=$var;

3.生命周期
可使用cookie設置

setcookie(session_name,session_id,expire);

4。用戶禁用cookie后,可以使用URL傳遞UID
比如用一個超鏈接

<a href="####".session_id.>

session

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457702.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

瀏覽器渲染機制

1. 明白瀏覽器渲染的目的 可訪問性&#xff08;Accessability&#xff09;、加載性能和重構靈活性一直是前端工程師們關心的主題。 其中加載性能與瀏覽器的渲染機制深深掛鉤&#xff0c;弄明白瀏覽器背后的渲染機制&#xff0c;才能在日常的前端的開發中明白如何進行性能優化。…

java中List Set Map使用

Testpublic void run(){ArrayList<String> list new ArrayList<String>();list.add( "美女");list.add( "帥哥");list.add( "芙蓉姐姐" );for (int i 0; i < list.size(); i) {String strlist.get(i);System. out.println(str);…

python免費開源工具推薦_年薪200萬的程序員,推薦這10大Python免費開源工具!

原標題&#xff1a;年薪200萬的程序員&#xff0c;推薦這10大Python免費開源工具&#xff01;毫無疑問&#xff0c;Python是最流行的語言之一&#xff0c;其成功的原因之一是它為科學計算提供了廣泛的報道。 在這里&#xff0c;我們仔細研究用于機器學習和數據科學的十大Python…

通過Yeoman快速搭建AngularJS webapp應用的實踐

這里主要記錄關于使用yeoman快速構建angluarJS的前端應用的實踐&#xff1a; 安裝node、yeoman等過程略去 1、首頁我們可以在公共的腳手架中找到自己想要的腳手架&#xff0c;官方腳手架庫的地址 Yeoman generators: http://yeoman.io/generators/ 這里我們選擇官方團隊出的ang…

[Objective-C]編程藝術 筆記整理

看了《禪與 Objective-C 編程藝術》&#xff0c;發現不少平時不注意的或注意但沒有系統總結的東西&#xff0c;特此記錄一下。 這次沒有整理完&#xff0c;后續更新會結合手里的一些其他資料整理。 新博客wossoneri.com傳送門 完整的介紹看這兩個鏈接Google開源項目風格指南禪與…

python大數據工程師 培訓_大數據工程師學習之路

大數據的作用&#xff1a;發現過去事件的特征預測未來最優化選擇職位劃分&#xff1a;數據產品經理數據分析師->商業敏感性&#xff0c;產品經理的助手數據研發工程師數據挖掘工程師/數據科學家需要準備的技術知識&#xff1a;Linux操作系統與網絡編程&#xff1a;進程/線程…

python序列

python序列 列表 python變量不存放值&#xff0c;之存放值的引用&#xff0c;所以列表中元素可以是不同類型 1.常用方法 1.1 增加元素 append,在末尾插入元素 extend&#xff0c;將一個列表整體插入到尾部 insert&#xff0c;將某個元素插入到特定位 /*&#xff0c;拼合…

前端資源(11)

移動端API 地址99移動端知識集合 https://github.com/jtyjty99999/mobileTech移動端前端開發知識庫 https://github.com/AlloyTeam/Mars移動前端的一些坑和解決方法&#xff08;外觀表現&#xff09; http://caibaojian.com/mobile-web-bug.html【原】移動web資源整理 http://w…

win10使用Composer-Setup安裝Composer以及使用Composer安裝Yii2最新版

1&#xff1a;下載 ca-bundle.crt和cacert.pem(見導航欄——文件) 將這兩個文件放在php目錄下 2:php.ini中添加上述兩個文件的路徑 curl.cainfoC:/xampp/php/ca-bundle.crtopenssl.cafileC:/xampp/php/ca-bundle.crt 寫到最后一行就可以 3&#xff1a;下載Composer-Setup.exe h…

python離群點檢測方法分幾類_數據分析 第五篇:離群點檢測

離群點(outlier)是指和其他觀測點偏離非常大的數據點&#xff0c;離群點是異常的數據點&#xff0c;但是不一定是錯誤的數據點。確定離群點對于數據分析會帶來不利的影響&#xff0c;比如&#xff0c;增大錯誤方差、影響預測和影響正態性。從散點圖上可以直觀地看到離群點&…

計算機網絡TCP/IP

TCP/IP原理 看《圖解TCP/IP》時做的筆記&#xff0c;記錄一些感覺重要的東西…還沒完&#xff0c;正在學&#xff0c;慢慢寫 1.計算機網絡的發展 2.OSI參考模型 3.傳輸方式分類 4.地址及網絡的構成 5.TCP/IP協議的出現 6.TCP/IP分層模型及通信示例 7.數據鏈路層1 8.數…

hive求差集和交集

2019獨角獸企業重金招聘Python工程師標準>>> 用的要求總數和統計數&#xff1a; 總數的概念是利用安卓ID&#xff0c;就以為這把兩個月前的安卓ID統統的統計一遍&#xff0c;如果沒有出現&#xff0c;恰好在今天出現了&#xff0c;那么當前的這個用戶就是新增的…

python靜態方法可以被繼承嗎_python 類的繼承 實例方法.靜態方法.類方法的代碼解析...

這篇文章主要介紹了python 類的繼承 實例方法.靜態方法.類方法的代碼解析,文中通過示例代碼介紹的非常詳細&#xff0c;對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下dt{}class Denglu:def register(self,name,psd):if name.isalnum() and psd.isalnum():i…

漸變色--瀏覽器兼容性

說明&#xff1a; 1.360兼容模式效果不好 2.可以直接用不同瀏覽器打開這個頁面查看效果 <!DOCTYPE html><html><head lang"en"> <meta charset"UTF-8"> <title></title> <style> body{ …

如何學習前端 轉載

作者&#xff1a;小不了鏈接&#xff1a;https://zhuanlan.zhihu.com/p/23265155來源&#xff1a;知乎著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。 鑒于時不時&#xff0c;有同學私信問我&#xff08;老姚&#xff0c;下同&#xff09;怎…

tcp前4字節消息長度_網絡基礎篇之TCP

?網絡分層什么是 TCP TCP 是面向連接的、可靠的、基于字節流的傳輸層通信協議。- 面向連接&#xff1a;通過三次握手建立一對一的連接&#xff08; UDP 協議 可以一個主機同時向多個主機發送消息&#xff0c;即一對多&#xff09;&#xff1b;- 可靠的&#xff1a;通過序號、校…

使用Servlet實現用戶注冊

1、用戶注冊頁面代碼 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&q…

年輕人的第一篇V語言筆記

V語言極限學習 我聽說V語言看文檔半小時就能完全掌握&#xff1f;&#xff1f;&#xff1f;&#xff1f;以我的智商一小時掌握不了我就給各位科普一下廣告法&#xff1f;&#xff1f;&#xff1f; 宇宙慣例hello world // first v code fn main(){printIn("hello world…

android studio運行手機時出錯怎么解決_小程序 android ios h5解決方案

你現在開發android,ios,小程序用什么工具&#xff0c;怎么開發的&#xff1f;還在單個端的開發嗎&#xff1f;今天我們主要討論的是一次開發多端使用的技術&#xff0c;也是這兩年比較流行的開發方向。現在的終端太多了&#xff0c;app兩個端android和ios,小程序有微信&#xf…

Android SDK上手指南:應用程序數據

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請標明出處。 https://blog.csdn.net/chaoyu168/article/details/52996965 在本系列教程當中&#xff0c;我們將學習如何從零開始進行Android SDK開發。我們已經熟悉了Android應用程序的結構與基本組成元素&#xff0c;…